mirror of
https://github.com/FWGS/xash3d-fwgs.git
synced 2026-08-08 13:21:51 +08:00
ref: more @mittorn's changes on RefAPI
This commit is contained in:
@@ -84,80 +84,6 @@ XASH SPECIFIC - sort of hack that works only in Xash3D not in GoldSrc
|
||||
|
||||
#define HACKS_RELATED_HLMODS // some HL-mods works differently under Xash and can't be fixed without some hacks at least at current time
|
||||
|
||||
#define MAX_STRING 256 // generic string
|
||||
#define MAX_INFO_STRING 256 // infostrings are transmitted across network
|
||||
#define MAX_SERVERINFO_STRING 512 // server handles too many settings. expand to 1024?
|
||||
#define MAX_LOCALINFO_STRING 32768 // localinfo used on server and not sended to the clients
|
||||
#define MAX_SYSPATH 1024 // system filepath
|
||||
#define MAX_PRINT_MSG 8192 // how many symbols can handle single call of Con_Printf or Con_DPrintf
|
||||
#define MAX_TOKEN 2048 // parse token length
|
||||
#define MAX_MODS 512 // environment games that engine can keep visible
|
||||
#define MAX_USERMSG_LENGTH 2048 // don't modify it's relies on a client-side definitions
|
||||
|
||||
#define BIT( n ) ( 1 << ( n ))
|
||||
#define GAMMA ( 2.2 ) // Valve Software gamma
|
||||
#define INVGAMMA ( 1.0 / 2.2 ) // back to 1.0
|
||||
#define TEXGAMMA ( 0.9 ) // compensate dim textures
|
||||
#define SetBits( iBitVector, bits ) ((iBitVector) = (iBitVector) | (bits))
|
||||
#define ClearBits( iBitVector, bits ) ((iBitVector) = (iBitVector) & ~(bits))
|
||||
#define FBitSet( iBitVector, bit ) ((iBitVector) & (bit))
|
||||
|
||||
#ifndef __cplusplus
|
||||
#ifdef NULL
|
||||
#undef NULL
|
||||
#endif
|
||||
|
||||
#define NULL ((void *)0)
|
||||
#endif
|
||||
|
||||
// color strings
|
||||
#define IsColorString( p ) ( p && *( p ) == '^' && *(( p ) + 1) && *(( p ) + 1) >= '0' && *(( p ) + 1 ) <= '9' )
|
||||
#define ColorIndex( c ) ((( c ) - '0' ) & 7 )
|
||||
|
||||
#if defined __i386__ && defined __GNUC__
|
||||
#define GAME_EXPORT __attribute__((force_align_arg_pointer))
|
||||
#else
|
||||
#define GAME_EXPORT
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef XASH_BIG_ENDIAN
|
||||
#define LittleLong(x) (((int)(((x)&255)<<24)) + ((int)((((x)>>8)&255)<<16)) + ((int)(((x)>>16)&255)<<8) + (((x) >> 24)&255))
|
||||
#define LittleLongSW(x) (x = LittleLong(x) )
|
||||
#define LittleShort(x) ((short)( (((short)(x) >> 8) & 255) + (((short)(x) & 255) << 8)))
|
||||
#define LittleShortSW(x) (x = LittleShort(x) )
|
||||
_inline float LittleFloat( float f )
|
||||
{
|
||||
union
|
||||
{
|
||||
float f;
|
||||
unsigned char b[4];
|
||||
} dat1, dat2;
|
||||
|
||||
dat1.f = f;
|
||||
dat2.b[0] = dat1.b[3];
|
||||
dat2.b[1] = dat1.b[2];
|
||||
dat2.b[2] = dat1.b[1];
|
||||
dat2.b[3] = dat1.b[0];
|
||||
|
||||
return dat2.f;
|
||||
}
|
||||
#else
|
||||
#define LittleLong(x) (x)
|
||||
#define LittleLongSW(x)
|
||||
#define LittleShort(x) (x)
|
||||
#define LittleShortSW(x)
|
||||
#define LittleFloat(x) (x)
|
||||
#endif
|
||||
|
||||
|
||||
typedef unsigned int dword;
|
||||
typedef unsigned int uint;
|
||||
typedef char string[MAX_STRING];
|
||||
typedef struct file_s file_t; // normal file
|
||||
typedef struct wfile_s wfile_t; // wad file
|
||||
typedef struct stream_s stream_t; // sound stream for background music playing
|
||||
typedef off_t fs_offset_t;
|
||||
|
||||
typedef void (*setpair_t)( const char *key, const char *value, void *buffer, void *numpairs );
|
||||
|
||||
@@ -610,117 +536,11 @@ int FS_Close( file_t *file );
|
||||
int FS_Getc( file_t *file );
|
||||
fs_offset_t FS_FileLength( file_t *f );
|
||||
|
||||
/*
|
||||
========================================================================
|
||||
|
||||
internal image format
|
||||
|
||||
typically expanded to rgba buffer
|
||||
NOTE: number at end of pixelformat name it's a total bitscount e.g. PF_RGB_24 == PF_RGB_888
|
||||
========================================================================
|
||||
*/
|
||||
#define ImageRAW( type ) (type == PF_RGBA_32 || type == PF_BGRA_32 || type == PF_RGB_24 || type == PF_BGR_24)
|
||||
#define ImageDXT( type ) (type == PF_DXT1 || type == PF_DXT3 || type == PF_DXT5 || type == PF_ATI2)
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PF_UNKNOWN = 0,
|
||||
PF_INDEXED_24, // inflated palette (768 bytes)
|
||||
PF_INDEXED_32, // deflated palette (1024 bytes)
|
||||
PF_RGBA_32, // normal rgba buffer
|
||||
PF_BGRA_32, // big endian RGBA (MacOS)
|
||||
PF_RGB_24, // uncompressed dds or another 24-bit image
|
||||
PF_BGR_24, // big-endian RGB (MacOS)
|
||||
PF_DXT1, // s3tc DXT1 format
|
||||
PF_DXT3, // s3tc DXT3 format
|
||||
PF_DXT5, // s3tc DXT5 format
|
||||
PF_ATI2, // latc ATI2N format
|
||||
PF_TOTALCOUNT, // must be last
|
||||
} pixformat_t;
|
||||
|
||||
typedef struct bpc_desc_s
|
||||
{
|
||||
int format; // pixelformat
|
||||
char name[16]; // used for debug
|
||||
uint glFormat; // RGBA format
|
||||
int bpp; // channels (e.g. rgb = 3, rgba = 4)
|
||||
} bpc_desc_t;
|
||||
|
||||
// imagelib global settings
|
||||
typedef enum
|
||||
{
|
||||
IL_USE_LERPING = BIT(0), // lerping images during resample
|
||||
IL_KEEP_8BIT = BIT(1), // don't expand paletted images
|
||||
IL_ALLOW_OVERWRITE = BIT(2), // allow to overwrite stored images
|
||||
IL_DONTFLIP_TGA = BIT(3), // Steam background completely ignore tga attribute 0x20 (stupid lammers!)
|
||||
IL_DDS_HARDWARE = BIT(4), // DXT compression is support
|
||||
IL_LOAD_DECAL = BIT(5), // special mode for load gradient decals
|
||||
IL_OVERVIEW = BIT(6), // overview required some unque operations
|
||||
} ilFlags_t;
|
||||
|
||||
// goes into rgbdata_t->encode
|
||||
#define DXT_ENCODE_DEFAULT 0 // don't use custom encoders
|
||||
#define DXT_ENCODE_COLOR_YCoCg 0x1A01 // make sure that value dosn't collide with anything
|
||||
#define DXT_ENCODE_ALPHA_1BIT 0x1A02 // normal 1-bit alpha
|
||||
#define DXT_ENCODE_ALPHA_8BIT 0x1A03 // normal 8-bit alpha
|
||||
#define DXT_ENCODE_ALPHA_SDF 0x1A04 // signed distance field
|
||||
#define DXT_ENCODE_NORMAL_AG_ORTHO 0x1A05 // orthographic projection
|
||||
#define DXT_ENCODE_NORMAL_AG_STEREO 0x1A06 // stereographic projection
|
||||
#define DXT_ENCODE_NORMAL_AG_PARABOLOID 0x1A07 // paraboloid projection
|
||||
#define DXT_ENCODE_NORMAL_AG_QUARTIC 0x1A08 // newton method
|
||||
#define DXT_ENCODE_NORMAL_AG_AZIMUTHAL 0x1A09 // Lambert Azimuthal Equal-Area
|
||||
|
||||
// rgbdata output flags
|
||||
typedef enum
|
||||
{
|
||||
// rgbdata->flags
|
||||
IMAGE_CUBEMAP = BIT(0), // it's 6-sides cubemap buffer
|
||||
IMAGE_HAS_ALPHA = BIT(1), // image contain alpha-channel
|
||||
IMAGE_HAS_COLOR = BIT(2), // image contain RGB-channel
|
||||
IMAGE_COLORINDEX = BIT(3), // all colors in palette is gradients of last color (decals)
|
||||
IMAGE_HAS_LUMA = BIT(4), // image has luma pixels (q1-style maps)
|
||||
IMAGE_SKYBOX = BIT(5), // only used by FS_SaveImage - for write right suffixes
|
||||
IMAGE_QUAKESKY = BIT(6), // it's a quake sky double layered clouds (so keep it as 8 bit)
|
||||
IMAGE_DDS_FORMAT = BIT(7), // a hint for GL loader
|
||||
IMAGE_MULTILAYER = BIT(8), // to differentiate from 3D texture
|
||||
IMAGE_ONEBIT_ALPHA = BIT(9), // binary alpha
|
||||
IMAGE_QUAKEPAL = BIT(10), // image has quake1 palette
|
||||
|
||||
// Image_Process manipulation flags
|
||||
IMAGE_FLIP_X = BIT(16), // flip the image by width
|
||||
IMAGE_FLIP_Y = BIT(17), // flip the image by height
|
||||
IMAGE_ROT_90 = BIT(18), // flip from upper left corner to down right corner
|
||||
IMAGE_ROT180 = IMAGE_FLIP_X|IMAGE_FLIP_Y,
|
||||
IMAGE_ROT270 = IMAGE_FLIP_X|IMAGE_FLIP_Y|IMAGE_ROT_90,
|
||||
IMAGE_EMBOSS = BIT(19), // apply emboss mapping
|
||||
IMAGE_RESAMPLE = BIT(20), // resample image to specified dims
|
||||
// reserved
|
||||
// reserved
|
||||
IMAGE_FORCE_RGBA = BIT(23), // force image to RGBA buffer
|
||||
IMAGE_MAKE_LUMA = BIT(24), // create luma texture from indexed
|
||||
IMAGE_QUANTIZE = BIT(25), // make indexed image from 24 or 32- bit image
|
||||
IMAGE_LIGHTGAMMA = BIT(26), // apply gamma for image
|
||||
IMAGE_REMAP = BIT(27), // interpret width and height as top and bottom color
|
||||
} imgFlags_t;
|
||||
|
||||
typedef struct rgbdata_s
|
||||
{
|
||||
word width; // image width
|
||||
word height; // image height
|
||||
word depth; // image depth
|
||||
uint type; // compression type
|
||||
uint flags; // misc image flags
|
||||
word encode; // DXT may have custom encoder, that will be decoded in GLSL-side
|
||||
byte numMips; // mipmap count
|
||||
byte *palette; // palette if present
|
||||
byte *buffer; // image buffer
|
||||
rgba_t fogParams; // some water textures in hl1 has info about fog color and alpha
|
||||
size_t size; // for bounds checking
|
||||
} rgbdata_t;
|
||||
|
||||
//
|
||||
// imagelib
|
||||
//
|
||||
#include "com_image.h"
|
||||
|
||||
void Image_Init( void );
|
||||
void Image_Shutdown( void );
|
||||
void Image_AddCmdFlags( uint flags );
|
||||
@@ -738,7 +558,6 @@ qboolean Image_CustomPalette( void );
|
||||
void Image_ClearForceFlags( void );
|
||||
void Image_SetMDLPointer( byte *p );
|
||||
void Image_CheckPaletteQ1( void );
|
||||
|
||||
/*
|
||||
========================================================================
|
||||
|
||||
|
||||
@@ -20,25 +20,6 @@ GNU General Public License for more details.
|
||||
#include "edict.h"
|
||||
#include "eiface.h"
|
||||
|
||||
// 1/32 epsilon to keep floating point happy
|
||||
#define DIST_EPSILON (1.0f / 32.0f)
|
||||
#define FRAC_EPSILON (1.0f / 1024.0f)
|
||||
#define BACKFACE_EPSILON 0.01f
|
||||
#define MAX_BOX_LEAFS 256
|
||||
#define ANIM_CYCLE 2
|
||||
#define MOD_FRAMES 20
|
||||
|
||||
// remapping info
|
||||
#define SUIT_HUE_START 192
|
||||
#define SUIT_HUE_END 223
|
||||
#define PLATE_HUE_START 160
|
||||
#define PLATE_HUE_END 191
|
||||
|
||||
#define SHIRT_HUE_START 16
|
||||
#define SHIRT_HUE_END 32
|
||||
#define PANTS_HUE_START 96
|
||||
#define PANTS_HUE_END 112
|
||||
|
||||
#define LM_SAMPLE_SIZE 16
|
||||
#define LM_SAMPLE_EXTRASIZE 8
|
||||
|
||||
|
||||
@@ -63,19 +63,6 @@ NOTE: never change this structure because all dll descriptions in xash code
|
||||
writes into struct by offsets not names
|
||||
========================================================================
|
||||
*/
|
||||
typedef struct dllfunc_s
|
||||
{
|
||||
const char *name;
|
||||
void **func;
|
||||
} dllfunc_t;
|
||||
|
||||
typedef struct dll_info_s
|
||||
{
|
||||
const char *name; // name of library
|
||||
const dllfunc_t *fcts; // list of dll exports
|
||||
qboolean crash; // crash if dll not found
|
||||
void *link; // hinstance of loading library
|
||||
} dll_info_t;
|
||||
|
||||
void Sys_Sleep( int msec );
|
||||
double Sys_DoubleTime( void );
|
||||
|
||||
Reference in New Issue
Block a user