DarkPlaces
Game engine based on the Quake 1 engine by id Software, developed by LadyHavoc
 
r_qshader.h
Go to the documentation of this file.
1#ifndef QSHADER_H
2#define QSHADER_H
3
4#include "qtypes.h"
5
6// various flags from shaders, used for special effects not otherwise classified
7// TODO: support these features more directly
8#define Q3TEXTUREFLAG_TWOSIDED 1
9#define Q3TEXTUREFLAG_NOPICMIP 16
10#define Q3TEXTUREFLAG_POLYGONOFFSET 32
11#define Q3TEXTUREFLAG_REFRACTION 256
12#define Q3TEXTUREFLAG_REFLECTION 512
13#define Q3TEXTUREFLAG_WATERSHADER 1024
14#define Q3TEXTUREFLAG_CAMERA 2048
15#define Q3TEXTUREFLAG_TRANSPARENTSORT 4096
16
17#define Q3PATHLENGTH 64
18#define TEXTURE_MAXFRAMES 64
19#define Q3WAVEPARMS 4
20#define Q3DEFORM_MAXPARMS 3
21#define Q3SHADER_MAXLAYERS 8
22#define Q3RGBGEN_MAXPARMS 3
23#define Q3ALPHAGEN_MAXPARMS 1
24#define Q3TCGEN_MAXPARMS 6
25#define Q3TCMOD_MAXPARMS 6
26#define Q3MAXTCMODS 8
27#define Q3MAXDEFORMS 4
28
41typedef int q3wavefunc_t;
42#define Q3WAVEFUNC_USER_COUNT 4
43#define Q3WAVEFUNC_USER_SHIFT 8 // use 8 bits for wave func type
44
66
82
97
108
123
124typedef struct q3shaderinfo_layer_rgbgen_s
125{
127 float parms[Q3RGBGEN_MAXPARMS];
129 float waveparms[Q3WAVEPARMS];
130}
132
133typedef struct q3shaderinfo_layer_alphagen_s
134{
138 float waveparms[Q3WAVEPARMS];
139}
141
142typedef struct q3shaderinfo_layer_tcgen_s
143{
145 float parms[Q3TCGEN_MAXPARMS];
146}
148
149typedef struct q3shaderinfo_layer_tcmod_s
150{
152 float parms[Q3TCMOD_MAXPARMS];
154 float waveparms[Q3WAVEPARMS];
155}
157
173
174typedef struct q3shaderinfo_deform_s
175{
177 float parms[Q3DEFORM_MAXPARMS];
179 float waveparms[Q3WAVEPARMS];
180}
182
183typedef enum dpoffsetmapping_technique_s
184{
188 OFFSETMAPPING_RELIEF // relief
190
197
198typedef struct shader_s
199{
201#define Q3SHADERINFO_COMPARE_START surfaceparms
210 char skyboxname[Q3PATHLENGTH];
212
213 // dp-specific additions:
214
215 // shadow control
219
220 // add collisions to all triangles of the surface
222
223 // kill shader based on cvar checks
225
226 // fake reflection
227 char dpreflectcube[Q3PATHLENGTH];
228
229 // reflection
230 float reflectmin; // when refraction is used, minimum amount of reflection (when looking straight down)
231 float reflectmax; // when refraction is used, maximum amount of reflection (when looking parallel to water)
232 float refractfactor; // amount of refraction distort (1.0 = like the cvar specifies)
233 vec4_t refractcolor4f; // color tint of refraction (including alpha factor)
234 float reflectfactor; // amount of reflection distort (1.0 = like the cvar specifies)
235 vec4_t reflectcolor4f; // color tint of reflection (including alpha factor)
236 float r_water_wateralpha; // additional wateralpha to apply when r_water is active
237 float r_water_waterscroll[2]; // water normalmapscrollblend - scale and speed
238
239 // offsetmapping
242 float offsetbias; // 0 is normal, 1 leads to alpha 0 being neutral and alpha 1 pushing "out"
243
244 // polygonoffset (only used if Q3TEXTUREFLAG_POLYGONOFFSET)
245 float biaspolygonoffset, biaspolygonfactor;
246
247 // transparent sort category
249
250 // gloss
253
254 // rtlighting ambient addition
256#define Q3SHADERINFO_COMPARE_END rtlightambient
257}
259
260typedef struct texture_shaderpass_s
261{
262 qbool alphatest; // FIXME: handle alphafunc properly
265 struct skinframe_s *skinframes[TEXTURE_MAXFRAMES];
266 int blendfunc[2];
271}
273
274#endif
const GLchar * name
Definition glquake.h:601
bool qbool
Definition qtypes.h:9
vec_t vec4_t[4]
Definition qtypes.h:72
#define Q3PATHLENGTH
Definition r_qshader.h:17
#define Q3TCMOD_MAXPARMS
Definition r_qshader.h:25
int q3wavefunc_t
Definition r_qshader.h:41
#define TEXTURE_MAXFRAMES
Definition r_qshader.h:18
#define Q3WAVEPARMS
Definition r_qshader.h:19
#define Q3ALPHAGEN_MAXPARMS
Definition r_qshader.h:23
#define Q3MAXTCMODS
Definition r_qshader.h:26
#define Q3MAXDEFORMS
Definition r_qshader.h:27
#define Q3RGBGEN_MAXPARMS
Definition r_qshader.h:22
q3rgbgen_t
Definition r_qshader.h:68
@ Q3RGBGEN_VERTEX
Definition r_qshader.h:77
@ Q3RGBGEN_LIGHTINGDIFFUSE
Definition r_qshader.h:74
@ Q3RGBGEN_CONST
Definition r_qshader.h:70
@ Q3RGBGEN_COUNT
Definition r_qshader.h:79
@ Q3RGBGEN_WAVE
Definition r_qshader.h:78
@ Q3RGBGEN_IDENTITYLIGHTING
Definition r_qshader.h:73
@ Q3RGBGEN_ONEMINUSENTITY
Definition r_qshader.h:75
@ Q3RGBGEN_IDENTITY
Definition r_qshader.h:69
@ Q3RGBGEN_ONEMINUSVERTEX
Definition r_qshader.h:76
@ Q3RGBGEN_ENTITY
Definition r_qshader.h:71
@ Q3RGBGEN_EXACTVERTEX
Definition r_qshader.h:72
q3deform_t
Definition r_qshader.h:46
@ Q3DEFORM_NORMAL
Definition r_qshader.h:61
@ Q3DEFORM_TEXT3
Definition r_qshader.h:54
@ Q3DEFORM_TEXT5
Definition r_qshader.h:56
@ Q3DEFORM_TEXT0
Definition r_qshader.h:51
@ Q3DEFORM_AUTOSPRITE
Definition r_qshader.h:49
@ Q3DEFORM_PROJECTIONSHADOW
Definition r_qshader.h:48
@ Q3DEFORM_WAVE
Definition r_qshader.h:60
@ Q3DEFORM_TEXT1
Definition r_qshader.h:52
@ Q3DEFORM_TEXT2
Definition r_qshader.h:53
@ Q3DEFORM_NONE
Definition r_qshader.h:47
@ Q3DEFORM_AUTOSPRITE2
Definition r_qshader.h:50
@ Q3DEFORM_COUNT
Definition r_qshader.h:63
@ Q3DEFORM_TEXT7
Definition r_qshader.h:58
@ Q3DEFORM_MOVE
Definition r_qshader.h:62
@ Q3DEFORM_TEXT6
Definition r_qshader.h:57
@ Q3DEFORM_TEXT4
Definition r_qshader.h:55
@ Q3DEFORM_BULGE
Definition r_qshader.h:59
#define Q3SHADER_MAXLAYERS
Definition r_qshader.h:21
dptransparentsortcategory_t
Definition r_qshader.h:192
@ TRANSPARENTSORT_DISTANCE
Definition r_qshader.h:194
@ TRANSPARENTSORT_SKY
Definition r_qshader.h:193
@ TRANSPARENTSORT_HUD
Definition r_qshader.h:195
q3tcmod_t
Definition r_qshader.h:110
@ Q3TCMOD_SCALE
Definition r_qshader.h:114
@ Q3TCMOD_ROTATE
Definition r_qshader.h:113
@ Q3TCMOD_ENTITYTRANSLATE
Definition r_qshader.h:112
@ Q3TCMOD_TRANSFORM
Definition r_qshader.h:117
@ Q3TCMOD_SCROLL
Definition r_qshader.h:115
@ Q3TCMOD_PAGE
Definition r_qshader.h:119
@ Q3TCMOD_TURBULENT
Definition r_qshader.h:118
@ Q3TCMOD_STRETCH
Definition r_qshader.h:116
@ Q3TCMOD_NONE
Definition r_qshader.h:111
@ Q3TCMOD_COUNT
Definition r_qshader.h:120
dpoffsetmapping_technique_t
Definition r_qshader.h:184
@ OFFSETMAPPING_DEFAULT
Definition r_qshader.h:186
@ OFFSETMAPPING_OFF
Definition r_qshader.h:185
@ OFFSETMAPPING_LINEAR
Definition r_qshader.h:187
@ OFFSETMAPPING_RELIEF
Definition r_qshader.h:188
q3tcgen_t
Definition r_qshader.h:99
@ Q3TCGEN_COUNT
Definition r_qshader.h:105
@ Q3TCGEN_VECTOR
Definition r_qshader.h:104
@ Q3TCGEN_NONE
Definition r_qshader.h:100
@ Q3TCGEN_ENVIRONMENT
Definition r_qshader.h:102
@ Q3TCGEN_LIGHTMAP
Definition r_qshader.h:103
@ Q3TCGEN_TEXTURE
Definition r_qshader.h:101
#define Q3TCGEN_MAXPARMS
Definition r_qshader.h:24
q3alphagen_t
Definition r_qshader.h:84
@ Q3ALPHAGEN_LIGHTINGSPECULAR
Definition r_qshader.h:88
@ Q3ALPHAGEN_COUNT
Definition r_qshader.h:94
@ Q3ALPHAGEN_ONEMINUSENTITY
Definition r_qshader.h:89
@ Q3ALPHAGEN_WAVE
Definition r_qshader.h:93
@ Q3ALPHAGEN_ONEMINUSVERTEX
Definition r_qshader.h:90
@ Q3ALPHAGEN_IDENTITY
Definition r_qshader.h:85
@ Q3ALPHAGEN_VERTEX
Definition r_qshader.h:92
@ Q3ALPHAGEN_PORTAL
Definition r_qshader.h:91
@ Q3ALPHAGEN_CONST
Definition r_qshader.h:86
@ Q3ALPHAGEN_ENTITY
Definition r_qshader.h:87
#define Q3DEFORM_MAXPARMS
Definition r_qshader.h:20
q3wavefunc_e
Definition r_qshader.h:30
@ Q3WAVEFUNC_INVERSESAWTOOTH
Definition r_qshader.h:32
@ Q3WAVEFUNC_SAWTOOTH
Definition r_qshader.h:34
@ Q3WAVEFUNC_TRIANGLE
Definition r_qshader.h:37
@ Q3WAVEFUNC_NOISE
Definition r_qshader.h:33
@ Q3WAVEFUNC_COUNT
Definition r_qshader.h:38
@ Q3WAVEFUNC_NONE
Definition r_qshader.h:31
@ Q3WAVEFUNC_SIN
Definition r_qshader.h:35
@ Q3WAVEFUNC_SQUARE
Definition r_qshader.h:36
q3wavefunc_t wavefunc
Definition r_qshader.h:178
q3shaderinfo_layer_tcgen_t tcgen
Definition r_qshader.h:169
q3shaderinfo_layer_alphagen_t alphagen
Definition r_qshader.h:168
q3shaderinfo_layer_rgbgen_t rgbgen
Definition r_qshader.h:167
qbool dpnortlight
Definition r_qshader.h:216
float biaspolygonfactor
Definition r_qshader.h:245
qbool dpnoshadow
Definition r_qshader.h:218
qbool vertexalpha
Definition r_qshader.h:207
float offsetscale
Definition r_qshader.h:241
dptransparentsortcategory_t transparentsort
Definition r_qshader.h:248
vec4_t refractcolor4f
Definition r_qshader.h:233
float r_water_wateralpha
Definition r_qshader.h:236
qbool dpshadow
Definition r_qshader.h:217
qbool lighting
Definition r_qshader.h:206
float reflectmin
Definition r_qshader.h:230
float reflectfactor
Definition r_qshader.h:234
dpoffsetmapping_technique_t offsetmapping
Definition r_qshader.h:240
float specularscalemod
Definition r_qshader.h:251
qbool dpmeshcollisions
Definition r_qshader.h:221
float offsetbias
Definition r_qshader.h:242
vec4_t reflectcolor4f
Definition r_qshader.h:235
int textureflags
Definition r_qshader.h:204
qbool dpshaderkill
Definition r_qshader.h:224
int numlayers
Definition r_qshader.h:205
float specularpowermod
Definition r_qshader.h:252
int surfaceflags
Definition r_qshader.h:203
qbool textureblendalpha
Definition r_qshader.h:208
float refractfactor
Definition r_qshader.h:232
int surfaceparms
Definition r_qshader.h:202
float reflectmax
Definition r_qshader.h:231
float rtlightambient
Definition r_qshader.h:255
q3shaderinfo_layer_rgbgen_t rgbgen
Definition r_qshader.h:267
q3shaderinfo_layer_alphagen_t alphagen
Definition r_qshader.h:268
q3shaderinfo_layer_tcgen_t tcgen
Definition r_qshader.h:269