140 lines
3.7 KiB
C
140 lines
3.7 KiB
C
// Filename:- shader.h
|
|
//
|
|
// stuff specific to shader files only
|
|
|
|
|
|
|
|
#ifndef SHADER_H
|
|
#define SHADER_H
|
|
|
|
#include "R_Common.h"
|
|
|
|
|
|
void ScanAndLoadShaderFiles( void );
|
|
void KillAllShaderFiles(void);
|
|
|
|
const char *R_FindShader( const char *psLocalMaterialName);
|
|
|
|
#if 0
|
|
|
|
#define GLS_SRCBLEND_ZERO 0x00000001
|
|
#define GLS_SRCBLEND_ONE 0x00000002
|
|
#define GLS_SRCBLEND_DST_COLOR 0x00000003
|
|
#define GLS_SRCBLEND_ONE_MINUS_DST_COLOR 0x00000004
|
|
#define GLS_SRCBLEND_SRC_ALPHA 0x00000005
|
|
#define GLS_SRCBLEND_ONE_MINUS_SRC_ALPHA 0x00000006
|
|
#define GLS_SRCBLEND_DST_ALPHA 0x00000007
|
|
#define GLS_SRCBLEND_ONE_MINUS_DST_ALPHA 0x00000008
|
|
#define GLS_SRCBLEND_ALPHA_SATURATE 0x00000009
|
|
#define GLS_SRCBLEND_BITS 0x0000000f
|
|
|
|
#define GLS_DSTBLEND_ZERO 0x00000010
|
|
#define GLS_DSTBLEND_ONE 0x00000020
|
|
#define GLS_DSTBLEND_SRC_COLOR 0x00000030
|
|
#define GLS_DSTBLEND_ONE_MINUS_SRC_COLOR 0x00000040
|
|
#define GLS_DSTBLEND_SRC_ALPHA 0x00000050
|
|
#define GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA 0x00000060
|
|
#define GLS_DSTBLEND_DST_ALPHA 0x00000070
|
|
#define GLS_DSTBLEND_ONE_MINUS_DST_ALPHA 0x00000080
|
|
#define GLS_DSTBLEND_BITS 0x000000f0
|
|
|
|
#define GLS_DEPTHMASK_TRUE 0x00000100
|
|
|
|
#define GLS_POLYMODE_LINE 0x00001000
|
|
|
|
#define GLS_DEPTHTEST_DISABLE 0x00010000
|
|
#define GLS_DEPTHFUNC_EQUAL 0x00020000
|
|
|
|
#define GLS_ATEST_GT_0 0x10000000
|
|
#define GLS_ATEST_LT_80 0x20000000
|
|
#define GLS_ATEST_GE_80 0x40000000
|
|
#define GLS_ATEST_BITS 0x70000000
|
|
|
|
#define GLS_DEFAULT GLS_DEPTHMASK_TRUE
|
|
|
|
#endif
|
|
|
|
typedef struct image_s {
|
|
char imgName[MAX_QPATH]; // game path, including extension
|
|
int width, height; // source image
|
|
int uploadWidth, uploadHeight; // after power of two and picmip but not including clamp to MAX_TEXTURE_SIZE
|
|
GLuint texnum; // gl texture binding
|
|
|
|
struct image_s* next;
|
|
} image_t;
|
|
|
|
|
|
struct shaderCommands_s;
|
|
|
|
|
|
|
|
typedef struct shader_s {
|
|
char name[MAX_QPATH]; // game path, including extension
|
|
|
|
int index; // this shader == tr.shaders[index]
|
|
|
|
qboolean defaultShader; // we want to return index 0 if the shader failed to
|
|
// load for some reason, but R_FindShader should
|
|
// still keep a name allocated for it, so if
|
|
// something calls RE_RegisterShader again with
|
|
// the same name, we don't try looking for it again
|
|
|
|
struct shader_s *next;
|
|
} shader_t;
|
|
|
|
|
|
|
|
typedef byte color4ub_t[4];
|
|
|
|
|
|
typedef unsigned int glIndex_t;
|
|
|
|
typedef struct shaderCommands_s
|
|
{
|
|
glIndex_t indexes[ACTUAL_SHADER_MAX_INDEXES];
|
|
vec4_t xyz[ACTUAL_SHADER_MAX_VERTEXES];
|
|
vec4_t normal[ACTUAL_SHADER_MAX_VERTEXES];
|
|
vec2_t texCoords[ACTUAL_SHADER_MAX_VERTEXES][2];
|
|
int WeightsUsed[ACTUAL_SHADER_MAX_VERTEXES]; // new for MODVIEW, shows vert weighting-count
|
|
int WeightsOmitted[ACTUAL_SHADER_MAX_VERTEXES]; // new for MODVIEW
|
|
/* color4ub_t vertexColors[ACTUAL_SHADER_MAX_VERTEXES];
|
|
int vertexDlightBits[ACTUAL_SHADER_MAX_VERTEXES];
|
|
|
|
stageVars_t svars;
|
|
|
|
color4ub_t constantColor255[ACTUAL_SHADER_MAX_VERTEXES];
|
|
*/
|
|
////////////// shader_t *shader;
|
|
GLuint gluiTextureBind;
|
|
/*
|
|
int fogNum;
|
|
|
|
int dlightBits; // or together of all vertexDlightBits
|
|
*/
|
|
int numIndexes;
|
|
int numVertexes;
|
|
/*
|
|
// info extracted from current shader
|
|
int numPasses;
|
|
void (*currentStageIteratorFunc)( void );
|
|
shaderStage_t **xstages;
|
|
*/
|
|
|
|
// some MODVIEW crap just for ModView surface highlighting (and now surface bolting)...
|
|
//
|
|
ModelHandle_t hModel;
|
|
int iSurfaceNum;
|
|
bool bSurfaceIsG2Tag;
|
|
refEntity_t *pRefEnt; // uberhack alert!
|
|
|
|
} shaderCommands_t;
|
|
|
|
extern shaderCommands_t tess;
|
|
/*shader_t *R_FindShader( const char *name );
|
|
shader_t *R_GetShaderByHandle( qhandle_t hShader );
|
|
*/
|
|
|
|
#endif // #ifndef SHADER_H
|
|
|
|
///////////////// eof //////////////
|