FTEQW
Documentation of the FTE engine source tree.
shader.h
Go to the documentation of this file.
1/*
2Copyright spike. GNU GPL V2. etc.
3Much of this file and the parser derives originally from qfusion by vic.
4
5Quake1 rendering works by:
6Draw everything in depth order and stall lots from switching textures.
7draw transparent water surfaces last.
8
9Quake3 rendering works by:
10generate a batch for every model+shader in the world.
11sort batches by shader sort key, entity, shader.
12draw surfaces.
13
14Doom3 rendering works by:
15generate a batch for every model+shader in the world.
16sort batches by shader sort key, entity, shader.
17depth is drawn (yay alpha masked surfaces)
18for each light+batch
19 draw each bump/diffuse/specular stage. combine to one pass if that ordering is not maintained. switch diffuse/specular if needed
20ambient stages from each batch are added over the top.
21
22FTE rtlight rendering works by:
23generate a batch for every model+shader in the world.
24sort batches by shader sort key, entity, shader.
25draw surfaces. if rtworld_lightmaps is 0 and there's no additive stuff, draw as black, otherwise just scale lightmap passes.
26lights are then added over the top based upon the diffusemap, bumpmap and specularmap, and without any pass-specific info (no tcmods).
27*/
28
29
30#ifndef SHADER_H
31#define SHADER_H
32struct shaderparsestate_s;
33typedef void (shader_gen_t)(struct shaderparsestate_s *ps, const char *name, const void *args);
34
35#define SHADER_TMU_MAX 16
36#define SHADER_PASS_MAX 16
37#define SHADER_MAX_TC_MODS 8
38#define SHADER_DEFORM_MAX 8
39#define SHADER_MAX_ANIMFRAMES 16
40
41typedef enum {
48
49/*
50typedef enum {
51 MF_NONE = 1<<0,
52 MF_NORMALS = 1<<1,
53 MF_TRNORMALS = 1<<2,
54 MF_COLORS = 1<<3,
55 MF_STCOORDS = 1<<4,
56 MF_LMCOORDS = 1<<5,
57 MF_NOCULL = 1<<6,
58 MF_NONBATCHED = 1<<7
59} meshfeatures_t;
60*/
61
62//colour manipulation
63typedef struct
64{
65 enum {
72 SHADER_FUNC_CONSTANT
73 } type; // SHADER_FUNC enum
74 float args[4]; // offset, amplitude, phase_offset, rate
76
77//tecture coordinate manipulation
78typedef struct
79{
80 enum {
82 SHADER_TCMOD_SCALE, //some sorta tabled deformation
83 SHADER_TCMOD_SCROLL, //boring moving texcoords with time
84 SHADER_TCMOD_STRETCH, //constant factor
88 SHADER_TCMOD_PAGE //use a texture atlas. horizontal frames, vertical frames, time divisor
90 float args[6];
91} tcmod_t;
92
93//vertex positioning manipulation.
94typedef struct
95{
96 enum {
105 DEFORMV_TEXT
107 float args[4];
109} deformv_t;
110
111enum
112{
113 /*source and dest factors match each other for easier parsing
114 but they're not meant to ever be set on the shader itself
115 NONE is also invalid, and is used to signify disabled, it should never be set on only one
116 */
119 SBITS_SRCBLEND_ONE = 0x00000002,
129#define SBITS_SRCBLEND_BITS 0x0000000f
130
131 /*must match src factors, just shifted 4*/
134 SBITS_DSTBLEND_ONE = 0x00000020,
144#define SBITS_DSTBLEND_BITS 0x000000f0
145
146#define SBITS_BLEND_BITS (SBITS_SRCBLEND_BITS|SBITS_DSTBLEND_BITS)
147
148 SBITS_MASK_RED = 0x00000100,
149 SBITS_MASK_GREEN = 0x00000200,
150 SBITS_MASK_BLUE = 0x00000400,
151 SBITS_MASK_ALPHA = 0x00000800,
152#define SBITS_MASK_BITS 0x00000f00
153
154 SBITS_ATEST_NONE = 0x00000000,
155 SBITS_ATEST_GT0 = 0x00001000,
156 SBITS_ATEST_LT128 = 0x00002000,
157 SBITS_ATEST_GE128 = 0x00003000,
158#define SBITS_ATEST_BITS 0x0000f000
159#define SBITS_ATEST_SHIFT 12
160
162 SBITS_MISC_NODEPTHTEST = 0x00020000, //strictly speaking, this is NOT the same as 'depthfunc always', which is unfortunate.
163
168#define SBITS_DEPTHFUNC_BITS 0x000c0000
169
170 SBITS_TESSELLATION = 0x00100000,
171 SBITS_AFFINE = 0x00200000,
172 SBITS_MISC_FULLRATE = 0x00400000, //don't use half-rate shading (for text/ui)
173
174 //provided for the backend to hack about with
175 SBITS_LINES = 0x80000000
177
178
179typedef struct shaderpass_s {
181
183
184#ifdef HAVE_MEDIA_DECODER
185 struct cin_s *cin;
186#endif
187
188 unsigned int shaderbits;
189
190 enum {
200
201 enum {
219
220 enum {
231
232 enum {
233 TC_GEN_BASE, //basic specified texture coords
234 TC_GEN_LIGHTMAP, //use loaded lightmap coords
238
239 //these are really for use only in glsl stuff or perhaps cubemaps, as they generate 3d coords.
246
249 vec3_t tcgenvec[2]; //bloat :(
251 tcmod_t tcmods[SHADER_MAX_TC_MODS];
252
254 texid_t anim_frames[SHADER_MAX_ANIMFRAMES];
255 float anim_fps;
256// unsigned int texturetype;
257
258 enum {
259 T_GEN_SINGLEMAP, //single texture specified in the shader
260 T_GEN_ANIMMAP, //animating sequence of textures specified in the shader
261 T_GEN_LIGHTMAP, //world light samples
262 T_GEN_DELUXMAP, //world light directions
263 T_GEN_SHADOWMAP, //light's depth values.
264 T_GEN_LIGHTCUBEMAP, //light's projected cubemap
265
266 T_GEN_DIFFUSE, //texture's default diffuse texture
267 T_GEN_NORMALMAP, //texture's default normalmap
268 T_GEN_SPECULAR, //texture's default specular texture
269 T_GEN_UPPEROVERLAY, //texture's default personal colour
270 T_GEN_LOWEROVERLAY, //texture's default team colour
271 T_GEN_FULLBRIGHT, //texture's default fullbright overlay
272 T_GEN_PALETTED, //texture's original paletted data (8bit)
273 T_GEN_REFLECTCUBE, //dpreflectcube
274 T_GEN_REFLECTMASK, //dpreflectcube mask
275 T_GEN_DISPLACEMENT, //displacement texture (probably half-float or something so higher precision than normalmap.a)
276 T_GEN_OCCLUSION, //occlusion mask (instead of baking it into the texture itself, required for correct pbr)
277
278 T_GEN_CURRENTRENDER,//copy the current screen to a texture, and draw that
279
280 T_GEN_SOURCECOLOUR, //used for render-to-texture targets
281 T_GEN_SOURCEDEPTH, //used for render-to-texture targets
282
283 T_GEN_REFLECTION, //reflection image (mirror-as-fbo)
284 T_GEN_REFRACTION, //refraction image (portal-as-fbo)
285 T_GEN_REFRACTIONDEPTH, //refraction image (portal-as-fbo)
286 T_GEN_RIPPLEMAP, //ripplemap image (water surface distortions-as-fbo)
287
288 T_GEN_SOURCECUBE, //used for render-to-texture targets
289
290#ifdef HAVE_MEDIA_DECODER
291 T_GEN_VIDEOMAP, //use the media playback as an image source, updating each frame for which it is visible
292#endif
293
294#define GBUFFER_COUNT 8
295#define T_GEN_GBUFFERCASE T_GEN_GBUFFER0:case T_GEN_GBUFFER1:case T_GEN_GBUFFER2:case T_GEN_GBUFFER3:case T_GEN_GBUFFER4:case T_GEN_GBUFFER5:case T_GEN_GBUFFER6:case T_GEN_GBUFFER7
296 T_GEN_GBUFFER0, //one of the gbuffer images (deferred lighting).
297 T_GEN_GBUFFER1, //one of the gbuffer images (deferred lighting).
298 T_GEN_GBUFFER2, //one of the gbuffer images (deferred lighting).
299 T_GEN_GBUFFER3, //one of the gbuffer images (deferred lighting).
300 T_GEN_GBUFFER4, //one of the gbuffer images (deferred lighting).
301 T_GEN_GBUFFER5, //one of the gbuffer images (deferred lighting).
302 T_GEN_GBUFFER6, //one of the gbuffer images (deferred lighting).
303 T_GEN_GBUFFER7, //one of the gbuffer images (deferred lighting).
305
306 enum {
312
313 enum {
314 SHADER_PASS_CLAMP = 1<<0, //needed for d3d's sampler states, MUST MATCH IMAGE FLAGS
315 SHADER_PASS_NOMIPMAP = 1<<1, //needed for d3d's sampler states, MUST MATCH IMAGE FLAGS
316 SHADER_PASS_NEAREST = 1<<2, //needed for d3d's sampler states, MUST MATCH IMAGE FLAGS
317 SHADER_PASS_LINEAR = 1<<3, //needed for d3d's sampler states, MUST MATCH IMAGE FLAGS
318 SHADER_PASS_UIPIC = 1<<4, // MUST MATCH IMAGE FLAGS
319 SHADER_PASS_DEPTHCMP = 1<<5, //needed for d3d11's sampler states
320 SHADER_PASS_SRGB = 1<<6, //d3d9 does srgb via samplers. everyone else does it via texture formats
321#define SHADER_PASS_IMAGE_FLAGS_D3D8 (SHADER_PASS_CLAMP|SHADER_PASS_NOMIPMAP|SHADER_PASS_NEAREST|SHADER_PASS_LINEAR|SHADER_PASS_UIPIC)
322#define SHADER_PASS_IMAGE_FLAGS_D3D9 (SHADER_PASS_CLAMP|SHADER_PASS_NOMIPMAP|SHADER_PASS_NEAREST|SHADER_PASS_LINEAR|SHADER_PASS_UIPIC|SHADER_PASS_SRGB)
323#define SHADER_PASS_IMAGE_FLAGS_D3D11 (SHADER_PASS_CLAMP|SHADER_PASS_NOMIPMAP|SHADER_PASS_NEAREST|SHADER_PASS_LINEAR|SHADER_PASS_UIPIC|SHADER_PASS_DEPTHCMP) //NEEDS to be tightly-packed. indexing will bug out otherwise.
324
326
327 //FIXME: remove these
332 SHADER_PASS_ANIMMAP = 1 << 12
334
335#if defined(D3D11QUAKE) || defined(VKQUAKE)
336 void *becache; //cache for blendstate objects.
337#endif
339
340typedef struct
341{
342 texid_t farbox_textures[6];
343 texid_t nearbox_textures[6];
344} skydome_t;
345
346enum{
347 #define PERMUTATION_GENERIC 0
348 #define PERMUTATION_BUMPMAP (1u<<PERMUTATION_BIT_BUMPMAP)
349 PERMUTATION_BIT_BUMPMAP, //FIXME: make argument somehow
350 #define PERMUTATION_FULLBRIGHT (1u<<PERMUTATION_BIT_FULLBRIGHT)
351 PERMUTATION_BIT_FULLBRIGHT, //FIXME: make argument somehow
352 #define PERMUTATION_UPPERLOWER (1u<<PERMUTATION_BIT_UPPERLOWER)
353 PERMUTATION_BIT_UPPERLOWER, //FIXME: make argument somehow
354 #define PERMUTATION_REFLECTCUBEMASK (1u<<PERMUTATION_BIT_REFLECTCUBEMASK)
355 PERMUTATION_BIT_REFLECTCUBEMASK, //FIXME: make argument somehow
356 #ifdef SKELETALMODELS
357 #define PERMUTATION_SKELETAL (1u<<PERMUTATION_BIT_SKELETAL)
359 #else
360 #define PERMUTATION_SKELETAL 0u
361 #endif
362 #define PERMUTATION_FOG (1u<<PERMUTATION_BIT_FOG)
363 PERMUTATION_BIT_FOG, //FIXME: remove (recompile shaders if its enabled).
364 #ifdef NONSKELETALMODELS
365 #define PERMUTATION_FRAMEBLEND (1u<<PERMUTATION_BIT_FRAMEBLEND)
367 #else
368 #define PERMUTATION_FRAMEBLEND 0u
369 #endif
370 #if MAXRLIGHTMAPS > 1
371 #define PERMUTATION_LIGHTSTYLES (1u<<PERMUTATION_BIT_LIGHTSTYLES)
372 PERMUTATION_BIT_LIGHTSTYLES, //FIXME: make argument
373 #else
374 #define PERMUTATION_LIGHTSTYLES 0u
375 #endif
376
379#define PERMUTATIONS (1u<<PERMUTATION_BIT_MAX)
380
382
384{
385 //GLES2 has a limit of 8.
386 //GL2 has a limit of 16.
387 //vendors may provide more.
388 VATTR_VERTEX1=0, //NOTE: read the comment about VATTR_LEG_VERTEX
396 VATTR_BONENUMS=8, /*skeletal only*/
397 VATTR_BONEWEIGHTS=9, /*skeletal only*/
398#if MAXRLIGHTMAPS > 1
405#endif
406
407
408 VATTR_LEG_VERTEX, //note: traditionally this is actually index 0.
409 //however, implementations are allowed to directly alias, or remap,
410 //so we're never quite sure if 0 is enabled or not when using legacy functions.
411 //as a result, we use legacy verticies always and never custom attribute 0 if we have any fixed function support.
412 //we then depend upon gl_Vertex always being supported by the glsl compiler.
413 //this is likely needed anyway to ensure that ftransform works properly and in all cases for stencil shadows.
417
418
421
422typedef struct {
424 SP_BAD, //never set (hopefully)
425
426 /*entity properties*/
428 SP_E_LMSCALE, //lightmap scales
429 SP_E_VLSCALE, //vertex lighting style scales
437 SP_E_L_DIR, /*these light values are non-dynamic light as in classic quake*/
440 SP_E_EYEPOS, /*viewer's eyepos, in model space*/
441 SP_V_EYEPOS, /*viewer's eyepos, in world space*/
443 SP_W_USER, //user-specified blob of data.
444
456
457 SP_RENDERTEXTURESCALE, /*multiplier for currentrender->texcoord*/
458 SP_SOURCESIZE, /*size of $sourcecolour*/
459
461
462 SP_LIGHTRADIUS, /*these light values are realtime lighting*/
471
472 //things that are set immediatly
473 SP_FIRSTIMMEDIATE, //never set
488 union
489 {
490 int ival[4];
491 float fval[4];
492 void *pval;
493 };
494 unsigned int handle;
496
498{
499#if defined(GLQUAKE) || defined(D3DQUAKE)
501 {
502 #ifdef GLQUAKE
503 struct
504 {
508 #endif
509 #ifdef D3DQUAKE
510 struct
511 {
512 void *vert;
513 void *frag;
514 #ifdef D3D9QUAKE
515 void *ctabf;
516 void *ctabv;
517 #endif
518 #ifdef D3D11QUAKE
519 int topology; //D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST
520 void *hull;
521 void *domain;
522 void *geom;
523 void *layouts[2];
524 #endif
526 #endif
527 } h;
528#endif
529#ifdef GLQUAKE
531#endif
532 unsigned int permutation;
533 unsigned int attrmask;
534 unsigned int texmask; //'standard' textures that are in use
535 unsigned int numparms;
537};
538
539typedef struct programshared_s
540{
541 char *name;
542 int refs;
543 unsigned calcgens:1; //calculate legacy rgb/alpha/tc gens
544 unsigned explicitsyms:1; //avoid defining symbol names that'll conflict with other glsl (any fte-specific names must have an fte_ prefix)
545 unsigned tess:1; //has a tessellation control+evaluation shader
546 unsigned geom:1; //has a geometry shader
547 unsigned warned:1; //one of the permutations of this shader has already been warned about. don't warn about all of them because that's potentially spammy.
548 unsigned short numsamplers; //shader system can strip any passes above this
549 unsigned int defaulttextures; //diffuse etc
550
552 unsigned char *cvardata;
553 unsigned int cvardatasize;
554 int shaderver; //glsl version
555 char *preshade; //general prefixed #defines
556 char *shadertext; //the glsl text
557 unsigned char failed[(PERMUTATIONS+7)/8]; //so we don't try recompiling endlessly
558 struct programpermu_s *permu[PERMUTATIONS]; //set once compiled.
559
560#ifdef VKQUAKE
561 qVkShaderModule vert; //for slightly faster regeneration
562 qVkShaderModule frag;
563 qVkPipelineLayout layout; //all permutations share the same layout. I'm too lazy not to.
564 qVkDescriptorSetLayout desclayout;
566#endif
568
569typedef struct {
570 float factor;
571 float unit;
573
574enum
575{
576 LSHADER_STANDARD=0u, //stencil or shadowless
577 LSHADER_CUBE=1u<<0, //has a cubemap filter (FIXME: use custom 2d filter on spot lights)
578 LSHADER_SMAP=1u<<1, //filter based upon a shadowmap instead of stencil/unlit
579 LSHADER_SPOT=1u<<2, //filter based upon a single spotlight shadowmap
580#ifdef LFLAG_ORTHO
581 LSHADER_ORTHO=1u<<3, //uses a parallel projection(ortho) matrix, with the light source being an entire plane instead of a singular point. which is weird. read: infinitely far away sunlight
583#else
584 LSHADER_ORTHO=0, //so bitmasks return false
585 LSHADER_MODES=1u<<3,
586#endif
587
588 LSHADER_FAKESHADOWS=1u<<10, //special 'light' type that isn't a light but still needs a shadowmap. ignores world+bsp shadows.
589};
590enum
591{
592 //low numbers are used for various rtlight mode combinations
593 bemoverride_crepuscular = LSHADER_MODES, //either black (non-sky) or a special crepuscular_sky shader
594 bemoverride_depthonly, //depth masked. replace if you want alpha test.
595 bemoverride_depthdark, //itself or a pure-black shader. replace for alpha test.
596 bemoverride_gbuffer, //prelighting
597 bemoverride_fog, //post-render volumetric fog
600//FIXME: split into separate materials and shaders
602{
603 char name[MAX_QPATH];
604 struct model_s *model;
605 enum {
607 SUF_LIGHTMAP = 1<<0, //$lightmap passes are valid. otherwise collapsed to an rgbgen
608 SUF_2D = 1<<1, //any loaded textures will obey 2d picmips rather than 3d picmips
609 SUR_FORCEFALLBACK = 1<<2//shader fallback is forced, will not load from disk
611 int uses; //released when the uses drops to 0
612 int width; //when used as an image, this is the logical 'width' of the image. FIXME.
615 unsigned int numdefaulttextures; //0 is effectively 1.
617 texnums_t *defaulttextures; //must always have at least one entry. multiple will only appear if the diffuse texture was animmapped.
618 struct shader_s *next;
619 int id;
620
622 material_t *remapto; //render using this material instead. for q3 nonsense.
624
625 byte_vec4_t fog_color;
626 float fog_dist;
628 float portalfboscale; //if we're using texturemaps for portal recursion, this is the scale of the texture relative to the screen.
629
631 deformv_t deforms[SHADER_DEFORM_MAX];
632
634
635 #define SHADER_CULL_FLIP (SHADER_CULL_FRONT|SHADER_CULL_BACK)
636 enum {
637 SHADER_SKY = 1 << 0,
644 SHADER_FLARE = 1 << 7,
645 SHADER_NEEDSARRAYS = 1 << 8, //shader uses deforms or rgbmod tcmods or something that will not work well with sparse vbos
648 SHADER_DEPTHWRITE = 1 << 11, //some pass already wrote depth. not used by the renderer.
650 SHADER_BLEND = 1 << 13, //blend or alphatest (not 100% opaque).
651 SHADER_NODRAW = 1 << 14, //parsed only to pee off developers when they forget it on no-pass shaders.
652
653 SHADER_NODLIGHT = 1 << 15, //from surfaceflags
656 SHADER_HASREFLECTCUBE = 1 << 18, //shader has a T_GEN_REFLECTCUBE pass (otherwise we can skip surf envmaps for better batching)
657 SHADER_HASREFLECT = 1 << 19, //says that we need to generate a reflection image first
658 SHADER_HASREFRACT = 1 << 20, //says that we need to generate a refraction image first
659 SHADER_HASREFRACTDEPTH = 1 << 21, //refraction generation needs to generate a depth texture too.
660 SHADER_HASNORMALMAP = 1 << 22, //says that we need to load a normalmap texture
661 SHADER_HASRIPPLEMAP = 1 << 23, //water surface disturbances for water splashes
662 SHADER_HASGLOSS = 1 << 24, //needs a _spec texture, if possible.
663 SHADER_NOSHADOWS = 1 << 25, //don't cast shadows
664 SHADER_HASFULLBRIGHT = 1 << 26, //needs a fullbright texture, if possible.
665 SHADER_HASDIFFUSE = 1 << 27, //has a T_GEN_DIFFUSE pass
666 SHADER_HASPALETTED = 1 << 28, //has a T_GEN_PALETTED pass
667 SHADER_HASCURRENTRENDER = 1 << 29, //has a $currentrender pass
668 SHADER_HASPORTAL = 1 << 30, //reflection image is actually a portal rather than a simple reflection (must be paired with SHADER_HASREFRACT)
669 SHADER_HASDISPLACEMENT = (int)(1u << 31)
671
673
674 shaderpass_t passes[SHADER_PASS_MAX];
675
677
680 char *genargs;
681
683 {
685 float scalemin;
686 float scalemax;
687 float anglemin;
688 float anglemax;
689 float spacing;
690 float zofs;
691 char modelname[1];
693
695
696#define MATERIAL_FACTOR_BASE 0
697#define MATERIAL_FACTOR_SPEC 1
698#define MATERIAL_FACTOR_EMIT 2
699#define MATERIAL_FACTOR_COUNT 3
700 vec4_t factors[MATERIAL_FACTOR_COUNT];
701
702 //arranged as a series of vec4s
703/* struct
704 {
705 float offsetmappingscale; //default 1
706 float offsetmappingbias; //default 0
707 float specularexpscale; //default 1*gl_specular_power
708 float specularvalscale; //default 1*gl_specular
709 } fragpushdata;
710*/
711};
712
713struct shaderparsestate_s;
715{
718 char name[MAX_QPATH];
719 char *body;
720};
721typedef struct
722{
723 const char *loadername;
724 qboolean (*ReadMaterial)(struct shaderparsestate_s *ps, const char *filename, void (*LoadMaterialString)(struct shaderparsestate_s *ps, const char *script));
725
727#define plugmaterialloaderfuncs_name "MaterialLoader"
730
731extern unsigned int r_numshaders;
732extern unsigned int r_maxshaders;
733extern shader_t **r_shaders;
734extern int be_maxpasses;
735
736
737char *Shader_GetShaderBody(shader_t *s, char *fname, size_t fnamesize);
739int R_GetShaderSizes(shader_t *shader, int *width, int *height, qboolean blocktillloaded);
740shader_t *R_RegisterPic (const char *name, const char *subdirs);
741shader_t *QDECL R_RegisterShader (const char *name, unsigned int usageflags, const char *shaderscript);
743shader_t *R_RegisterShader_Vertex (model_t *mod, const char *name);
744shader_t *R_RegisterShader_Flare (model_t *mod, const char *name);
745shader_t *QDECL R_RegisterSkin (model_t *mod, const char *shadername);
746shader_t *R_RegisterCustom (model_t *mod, const char *name, unsigned int usageflags, shader_gen_t *defaultgen, const void *args);
747//once loaded, most shaders should have one of the following two calls used upon it
748void QDECL R_BuildDefaultTexnums(texnums_t *tn, shader_t *shader, unsigned int imageflags);
749void QDECL R_BuildLegacyTexnums(shader_t *shader, const char *fallbackname, const char *subpath, unsigned int loadflags, unsigned int imageflags, uploadfmt_t basefmt, size_t width, size_t height, qbyte *mipdata, qbyte *palette);
750void R_RemapShader(const char *sourcename, const char *destname, float timeoffset);
751
753void Shader_TouchTextures(void);
754
756cin_t *R_ShaderFindCinematic(const char *name);
757shader_t *R_ShaderFind(const char *name); //does NOT increase the shader refcount.
758
759void Shader_DefaultSkin (struct shaderparsestate_s *ps, const char *shortname, const void *args);
760void Shader_DefaultSkinShell (struct shaderparsestate_s *ps, const char *shortname, const void *args);
761void Shader_Default2D (struct shaderparsestate_s *ps, const char *shortname, const void *args);
762void Shader_DefaultBSPLM (struct shaderparsestate_s *ps, const char *shortname, const void *args);
763void Shader_DefaultBSPQ1 (struct shaderparsestate_s *ps, const char *shortname, const void *args);
764void Shader_DefaultBSPQ2 (struct shaderparsestate_s *ps, const char *shortname, const void *args);
765void Shader_DefaultWaterShader (struct shaderparsestate_s *ps, const char *shortname, const void *args);
766void Shader_DefaultSkybox (struct shaderparsestate_s *ps, const char *shortname, const void *args);
767void Shader_DefaultCinematic (struct shaderparsestate_s *ps, const char *shortname, const void *args);
768void Shader_DefaultScript (struct shaderparsestate_s *ps, const char *shortname, const void *args);
769void Shader_PolygonShader (struct shaderparsestate_s *ps, const char *shortname, const void *args);
770
771void Shader_ResetRemaps(void); //called on map changes to reset remapped shaders.
772void Shader_DoReload(void); //called when the shader system dies.
773void Shader_Shutdown (void);
774qboolean Shader_Init (void);
775void Shader_NeedReload(qboolean rescanfs);
777void Shader_RemapShader_f(void);
778void Shader_ShowShader_f(void);
779
781struct programpermu_s *Shader_LoadPermutation(program_t *prog, unsigned int p);
783
786
787#define BEF_FORCEDEPTHWRITE (1u<<0)
788#define BEF_FORCEDEPTHTEST (1u<<1)
789#define BEF_FORCEADDITIVE (1u<<2) //blend dest = GL_ONE
790#define BEF_FORCETRANSPARENT (1u<<3) //texenv replace -> modulate
791#define BEF_FORCENODEPTH (1u<<4) //disables any and all depth.
792#ifdef HAVE_LEGACY
793#define BEF_PUSHDEPTH (1u<<5) //additional polygon offset
794#endif
795//FIXME: the above should really be legacy-only
796#define BEF_NODLIGHT (1u<<6) //don't use a dlight pass
797#define BEF_NOSHADOWS (1u<<7) //don't appear in shadows
798#define BEF_FORCECOLOURMOD (1u<<8) //q3 shaders default to 'rgbgen identity', and ignore ent colours. this forces ent colours to be considered
799#define BEF_LINES (1u<<9) //draw line pairs instead of triangles.
800#define BEF_FORCETWOSIDED (1u<<10) //more evilness.s
801//#define BEFF_POLYHASNORMALS (1u<<31) //false flag - for cl_scenetries and not actually used by the backend.
802
803typedef struct
804{
805 int fbo;
806 int rb_size[2];
811 unsigned int enables;
812} fbostate_t;
813#define FBO_RB_DEPTH 2
814#define FBO_RB_STENCIL 4
815#define FBO_RESET 8 //resize all renderbuffers / free any that are not active. implied if the sizes differ
816#define FBO_TEX_DEPTH 32 //internal
817#define FBO_TEX_STENCIL 64 //internal
818
819#ifndef __cplusplus //C++ sucks
820typedef struct
821{
822 char *progpath; //path to use for glsl/hlsl
823 char *blobpath; //path to use for binary glsl/hlsl blobs.
824 char *shadernamefmt; //optional postfix for shader names for this renderer FIXME: should probably have multiple, for gles to fallback to desktop gl etc.
825
826 qboolean progs_supported; //can use programs (all but gles1)
827 qboolean progs_required; //no fixed function if this is true (d3d11, gles, gl3core)
828 unsigned int minver; //lowest glsl version usable
829 unsigned int maxver; //highest glsl version usable
830 unsigned int max_gpu_bones; //max number of bones supported by uniforms.
831
832 int hw_bc, hw_etc, hw_astc; //these are set only if the hardware actually supports the format, and not if we think the drivers are software-decoding them (unlike texfmt).
833 qboolean texfmt[PTI_MAX]; //which texture formats are supported (renderable not implied)
834 unsigned int texture2d_maxsize; //max size of a 2d texture
835 unsigned int texture3d_maxsize; //max size of a 3d texture
836 unsigned int texture2darray_maxlayers; //max layers of a 2darray texture
838 qboolean texture_non_power_of_two; //full support for npot
839 qboolean texture_non_power_of_two_pic; //npot only works with clamp-to-edge mipless images.
840 qboolean texture_allow_block_padding; //mip 0 of compressed formats can be any size, with implicit padding.
841 qboolean npot_rounddown; //memory limited systems can say that they want to use less ram.
848 qboolean havecubemaps; //since gl1.3, so pretty much everyone will have this... should probably only be set if we also have seamless or clamp-to-edge.
849 unsigned int stencilbits;
850
851 void (*pDeleteProg) (program_t *prog);
852 qboolean (*pLoadBlob) (program_t *prog, unsigned int permu, vfsfile_t *blobfile);
853 qboolean (*pCreateProgram) (program_t *prog, struct programpermu_s *permu, int ver, const char **precompilerconstants, const char *vert, const char *tcs, const char *tes, const char *geom, const char *frag, qboolean noerrors, vfsfile_t *blobfile);
854 qboolean (*pValidateProgram)(program_t *prog, struct programpermu_s *permu, qboolean noerrors, vfsfile_t *blobfile);
855 void (*pProgAutoFields) (program_t *prog, struct programpermu_s *permu, char **cvarnames, int *cvartypes);
856
857 qboolean showbatches; //print batches... cleared at end of video frame.
860#endif
861
862enum
863{
879#if MAXRLIGHTMAPS > 1
886#endif
887};
888extern const struct sh_defaultsamplers_s
889{
890 const char *name;
891 unsigned int defaulttexbits;
893
894#ifdef GLSLONLY
895 #define gl_config_nofixedfunc true
896#else
897 #define gl_config_nofixedfunc gl_config.nofixedfunc
898#endif
899#ifdef GLESONLY
900 #define gl_config_gles true
901#else
902 #define gl_config_gles gl_config.gles
903#endif
904
905#ifdef VKQUAKE
906qboolean VK_LoadBlob(program_t *prog, void *blobdata, const char *name);
907void VK_RegisterVulkanCvars(void);
908#endif
909
910#ifdef GLQUAKE
911void GLBE_Init(void);
912void GLBE_Shutdown(void);
914void GLBE_DrawMesh_List(shader_t *shader, int nummeshes, mesh_t **mesh, vbo_t *vbo, texnums_t *texnums, unsigned int beflags);
915void GLBE_DrawMesh_Single(shader_t *shader, mesh_t *meshchain, vbo_t *vbo, unsigned int beflags);
916void GLBE_SubmitBatch(batch_t *batch);
919void GLBE_ClearVBO(vbo_t *vbo, qboolean dataonly);
920void GLBE_UpdateLightmaps(void);
921void GLBE_DrawWorld (batch_t **worldbatches);
924qboolean GLBE_SelectDLight(dlight_t *dl, vec3_t colour, vec3_t axis[3], unsigned int lmode);
925void GLBE_Scissor(srect_t *rect);
926void GLBE_SubmitMeshes (batch_t **worldbatches, int start, int stop);
927//void GLBE_RenderToTexture(texid_t sourcecol, texid_t sourcedepth, texid_t destcol, texid_t destdepth, qboolean usedepth);
928void GLBE_RenderToTextureUpdate2d(qboolean destchanged);
929void GLBE_VBO_Begin(vbobctx_t *ctx, size_t maxsize);
930void GLBE_VBO_Data(vbobctx_t *ctx, void *data, size_t size, vboarray_t *varray);
931void GLBE_VBO_Finish(vbobctx_t *ctx, void *edata, size_t esize, vboarray_t *earray, void **vbomem, void **ebomem);
932void GLBE_VBO_Destroy(vboarray_t *vearray, void *mem);
933
934void GLBE_FBO_Sources(texid_t sourcecolour, texid_t sourcedepth);
935int GLBE_FBO_Push(fbostate_t *state);
936void GLBE_FBO_Pop(int oldfbo);
937void GLBE_FBO_Destroy(fbostate_t *state);
938int GLBE_FBO_Update(fbostate_t *state, unsigned int enables, texid_t *destcol, int colourbuffers, texid_t destdepth, int width, int height, int layer);
939
940qboolean GLBE_BeginShadowMap(int id, int w, int h, uploadfmt_t encoding, int *restorefbo);
941void GLBE_EndShadowMap(int restorefbo);
942void GLBE_SetupForShadowMap(dlight_t *dl, int texwidth, int texheight, float shadowscale);
943
944qboolean GLVID_ApplyGammaRamps (unsigned int size, unsigned short *ramps); //called when gamma ramps need to be reapplied
945qboolean GLVID_Init (rendererstate_t *info, unsigned char *palette); //the platform-specific function to init gl state
946void GLVID_SwapBuffers(void);
947char *GLVID_GetRGBInfo(int *bytestride, int *truewidth, int *trueheight, enum uploadfmt *fmt);
948void GLVID_SetCaption(const char *caption);
949#endif
950#ifdef D3D8QUAKE
951void D3D8BE_Init(void);
954void D3D8BE_DrawMesh_List(shader_t *shader, int nummeshes, mesh_t **mesh, vbo_t *vbo, texnums_t *texnums, unsigned int beflags);
955void D3D8BE_DrawMesh_Single(shader_t *shader, mesh_t *meshchain, vbo_t *vbo, unsigned int beflags);
956void D3D8BE_SubmitBatch(batch_t *batch);
959void D3D8BE_ClearVBO(vbo_t *vbo, qboolean dataonly);
961void D3D8BE_DrawWorld (batch_t **worldbatches);
964qboolean D3D8BE_SelectDLight(dlight_t *dl, vec3_t colour, vec3_t axis[3], unsigned int lmode);
965void D3D8BE_VBO_Begin(vbobctx_t *ctx, size_t maxsize);
966void D3D8BE_VBO_Data(vbobctx_t *ctx, void *data, size_t size, vboarray_t *varray);
967void D3D8BE_VBO_Finish(vbobctx_t *ctx, void *edata, size_t esize, vboarray_t *earray, void **vbomem, void **ebomem);
968void D3D8BE_VBO_Destroy(vboarray_t *vearray, void *mem);
969void D3D8BE_Scissor(srect_t *rect);
970
971void D3D8Shader_Init(void);
972void D3D8BE_Reset(qboolean before);
973void D3D8BE_Set2D(void);
974#endif
975#ifdef D3D9QUAKE
976void D3D9BE_Init(void);
979void D3D9BE_DrawMesh_List(shader_t *shader, int nummeshes, mesh_t **mesh, vbo_t *vbo, texnums_t *texnums, unsigned int beflags);
980void D3D9BE_DrawMesh_Single(shader_t *shader, mesh_t *meshchain, vbo_t *vbo, unsigned int beflags);
981void D3D9BE_SubmitBatch(batch_t *batch);
984void D3D9BE_ClearVBO(vbo_t *vbo, qboolean dataonly);
986void D3D9BE_DrawWorld (batch_t **worldbatches);
989qboolean D3D9BE_SelectDLight(dlight_t *dl, vec3_t colour, vec3_t axis[3], unsigned int lmode);
990void D3D9BE_VBO_Begin(vbobctx_t *ctx, size_t maxsize);
991void D3D9BE_VBO_Data(vbobctx_t *ctx, void *data, size_t size, vboarray_t *varray);
992void D3D9BE_VBO_Finish(vbobctx_t *ctx, void *edata, size_t esize, vboarray_t *earray, void **vbomem, void **ebomem);
993void D3D9BE_VBO_Destroy(vboarray_t *vearray, void *mem);
994void D3D9BE_Scissor(srect_t *rect);
995
996void D3D9Shader_Init(void);
997void D3D9BE_Reset(qboolean before);
998void D3D9BE_Set2D(void);
999void D3D9BE_SetViewport(int x, int y, int w, int h);
1000#endif
1001#ifdef D3D11QUAKE
1002void D3D11BE_Init(void);
1003void D3D11BE_Shutdown(void);
1005void D3D11BE_DrawMesh_List(shader_t *shader, int nummeshes, mesh_t **mesh, vbo_t *vbo, texnums_t *texnums, unsigned int beflags);
1006void D3D11BE_DrawMesh_Single(shader_t *shader, mesh_t *meshchain, vbo_t *vbo, unsigned int beflags);
1007void D3D11BE_SubmitBatch(batch_t *batch);
1010void D3D11BE_ClearVBO(vbo_t *vbo, qboolean dataonly);
1012void D3D11BE_DrawWorld (batch_t **worldbatches);
1015qboolean D3D11BE_SelectDLight(dlight_t *dl, vec3_t colour, vec3_t axis[3], unsigned int lmode);
1016
1017qboolean D3D11Shader_Init(unsigned int featurelevel);
1018void D3D11BE_Reset(qboolean before);
1019void D3D11BE_Set2D(void);
1021void D3D11BE_VBO_Begin(vbobctx_t *ctx, size_t maxsize);
1022void D3D11BE_VBO_Data(vbobctx_t *ctx, void *data, size_t size, vboarray_t *varray);
1023void D3D11BE_VBO_Finish(vbobctx_t *ctx, void *edata, size_t esize, vboarray_t *earray, void **vbomem, void **ebomem);
1024void D3D11BE_VBO_Destroy(vboarray_t *vearray, void *mem);
1025void D3D11BE_Scissor(srect_t *rect);
1026
1027qboolean D3D11_BeginShadowMap(int id, int w, int h);
1028void D3D11_EndShadowMap(void);
1029void D3D11BE_SetupForShadowMap(dlight_t *dl, int texwidth, int texheight, float shadowscale);
1030
1031enum
1032{ //these are the buffer indexes
1042#endif
1043
1044//Builds a hardware shader from the software representation
1046
1047void Sh_RegisterCvars(void);
1048#ifdef RTLIGHTS
1049void R_EditLights_DrawLights(void); //3d light previews
1050void R_EditLights_DrawInfo(void); //2d light info display.
1052//
1053#ifdef BEF_PUSHDEPTH
1055#else
1057#endif
1058//Called from shadowmapping code into backend
1059void GLBE_BaseEntTextures(const qbyte *worldpvs, const int *worldareas);
1060void D3D9BE_BaseEntTextures(const qbyte *worldpvs, const int *worldareas);
1061void D3D11BE_BaseEntTextures(const qbyte *worldpvs, const int *worldareas);
1062//prebuilds shadow volumes
1063void Sh_PreGenerateLights(void);
1064//Draws lights, called from the backend
1065void Sh_DrawLights(qbyte *vis);
1066void Sh_GenerateFakeShadows(void);
1067#ifdef RTLIGHTS
1068void Sh_CheckSettings(void);
1069#endif
1070void SH_FreeShadowMesh(struct shadowmesh_s *sm);
1071//frees all memory
1072void Sh_Shutdown(void);
1073//resize any textures to match new screen resize
1074void Sh_Reset(void);
1076#else
1077#define Sh_StencilShadowsActive() false
1078#endif
1079
1081{
1082 char *name;
1084};
1088
1089
1091void CLQ1_DrawLine(shader_t *shader, vec3_t v1, vec3_t v2, float r, float g, float b, float a);
1092void CLQ1_AddOrientedCube(shader_t *shader, vec3_t mins, vec3_t maxs, float *matrix, float r, float g, float b, float a);
1093void CL_DrawDebugPlane(float *normal, float dist, float r, float g, float b, qboolean enqueue);
1094void CLQ1_AddOrientedCylinder(shader_t *shader, float radius, float height, qboolean capsule, float *matrix, float r, float g, float b, float a);
1095void CLQ1_AddOrientedSphere(shader_t *shader, float radius, float *matrix, float r, float g, float b, float a);
1096void CLQ1_AddOrientedHalfSphere(shader_t *shader, float radius, float gap, float *matrix, float r, float g, float b, float a);
1097
1099#endif
qboolean
Definition: api_menu.h:34
vec_t vec3_t[3]
Definition: api_menu.h:40
vec_t vec4_t[4]
Definition: api_menu.h:41
unsigned int width
Definition: bymorphed.h:4
unsigned int height
Definition: bymorphed.h:5
enum @13::coninfomode_e mode
Definition: com_phys_ode.c:695
cvar_t model
Definition: cl_main.c:153
void(QDECL *vgui_frame)(void)
struct cin_s cin_t
Definition: client.h:1695
entity_t * ent
Definition: com_mesh.c:717
trace plane dist
Definition: com_mesh.c:2551
vbo_t vbo
Definition: com_mesh.c:737
dReal dReal radius
Definition: com_phys_ode.c:289
unsigned char qbyte
Definition: common.h:127
s
Definition: execloop.h:53
char filename[64]
Definition: generatebuiltin.c:8
shadersort_t
Definition: gl_model.h:36
unsigned int vert[2]
Definition: gl_shadow.c:1318
GLfloat t
Definition: gl_vidcommon.c:184
static EGLSurface EGLSurface EGLContext ctx
Definition: gl_videgl.c:47
struct @319::xidevinfo::@353 axis[2]
unsigned short ramps[3][256]
static CONST PIXELFORMATDESCRIPTOR *static int
Definition: gl_vidnt.c:222
GLfloat GLfloat v1
Definition: glquake.h:163
GLfloat GLfloat GLfloat v2
Definition: glquake.h:163
GLfloat GLfloat y
Definition: glquake.h:158
GLint GLenum type
Definition: glquake.h:157
GLuint GLcharARB * name
Definition: glquake.h:155
GLint size
Definition: glquake.h:157
GLfloat x
Definition: glquake.h:158
GLdouble GLdouble r
Definition: glquake.h:969
GLfloat GLfloat GLfloat GLfloat w
Definition: glquake.h:158
void * module
Definition: image.c:236
static png_size_t start
Definition: image.c:1419
static png_inforp png_colorp * palette
Definition: image.c:1410
char fname[MAX_QPATH]
Definition: m_mp3.c:160
enum backendmode_e backendmode_t
char ** data
Definition: p_script.c:63
int const void * p
Definition: pr_lua.c:232
int b
Definition: pr_lua.c:242
evalc_t mins
Definition: pr_menu.c:1354
evalc_t maxs
Definition: pr_menu.c:1355
shader_t * shader
Definition: r_2d.c:51
uploadfmt_t fmt
Definition: r_2d.c:48
imageflags
Definition: render.h:435
enum uploadfmt uploadfmt_t
uploadfmt
Definition: screen.h:96
@ PTI_MAX
Definition: screen.h:289
void Shader_PolygonShader(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:7236
void QDECL R_BuildDefaultTexnums(texnums_t *tn, shader_t *shader, unsigned int imageflags)
Definition: gl_shader.c:5954
struct shader_field_names_s shader_attr_names[]
Definition: gl_shader.c:2343
void Shader_Default2D(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:7191
qboolean GLVID_Init(rendererstate_t *info, unsigned char *palette)
Definition: gl_viddroid.c:133
void GLVID_SwapBuffers(void)
Definition: gl_viddroid.c:264
struct programshared_s program_t
batch_t * D3D9BE_GetTempBatch(void)
Definition: d3d_backend.c:3433
qboolean D3D8BE_LightCullModel(vec3_t org, model_t *model)
Definition: d3d8_backend.c:2708
void D3D9BE_ClearVBO(vbo_t *vbo, qboolean dataonly)
Definition: d3d_backend.c:3306
void D3D9BE_BaseEntTextures(const qbyte *worldpvs, const int *worldareas)
Definition: d3d_backend.c:4032
void D3D9BE_DrawMesh_Single(shader_t *shader, mesh_t *meshchain, vbo_t *vbo, unsigned int beflags)
Definition: d3d_backend.c:3676
void CLQ1_AddOrientedCylinder(shader_t *shader, float radius, float height, qboolean capsule, float *matrix, float r, float g, float b, float a)
Definition: cl_ents.c:2461
void R_EditLights_DrawInfo(void)
Definition: gl_rlight.c:1763
void D3D11BE_Scissor(srect_t *rect)
Definition: d3d11_backend.c:3748
void GLBE_SubmitBatch(batch_t *batch)
Definition: gl_backend.c:5154
void D3D8BE_UploadAllLightmaps(void)
Definition: d3d8_backend.c:2703
void GLBE_BaseEntTextures(const qbyte *worldpvs, const int *worldareas)
Definition: gl_backend.c:5670
cvar_t r_skyboxname
Definition: shader.h:1098
void CLQ1_AddOrientedCube(shader_t *shader, vec3_t mins, vec3_t maxs, float *matrix, float r, float g, float b, float a)
Definition: cl_ents.c:2775
void D3D8BE_Init(void)
Definition: d3d8_backend.c:478
void D3D11_UploadLightmap(lightmapinfo_t *lm)
Definition: d3d11_image.c:350
void CLQ1_DrawLine(shader_t *shader, vec3_t v1, vec3_t v2, float r, float g, float b, float a)
Definition: cl_ents.c:2564
void D3D11BE_Shutdown(void)
Definition: d3d11_backend.c:866
shader_t * R_RegisterPic(const char *name, const char *subdirs)
Definition: gl_shader.c:8463
int GLBE_FBO_Update(fbostate_t *state, unsigned int enables, texid_t *destcol, int colourbuffers, texid_t destdepth, int width, int height, int layer)
Definition: gl_backend.c:5818
void Shader_DefaultSkinShell(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:7166
shader_t *QDECL R_RegisterShader(const char *name, unsigned int usageflags, const char *shaderscript)
Definition: gl_shader.c:8470
void D3D9BE_VBO_Finish(vbobctx_t *ctx, void *edata, size_t esize, vboarray_t *earray, void **vbomem, void **ebomem)
Definition: d3d_backend.c:4187
void GLBE_DrawWorld(batch_t **worldbatches)
Definition: gl_backend.c:6318
void D3D11BE_Set2D(void)
Definition: d3d11_backend.c:2813
void D3D9BE_DrawWorld(batch_t **worldbatches)
Definition: d3d_backend.c:4079
batch_t * D3D11BE_GetTempBatch(void)
Definition: d3d11_backend.c:2762
void GLVID_SetCaption(const char *caption)
Definition: gl_vidlinuxglx.c:4502
void VK_RegisterVulkanCvars(void)
Definition: vk_init.c:36
void CLQ1_AddOrientedSphere(shader_t *shader, float radius, float *matrix, float r, float g, float b, float a)
Definition: cl_ents.c:2455
void D3D11BE_Init(void)
Definition: d3d11_backend.c:762
void D3D8BE_DrawMesh_Single(shader_t *shader, mesh_t *meshchain, vbo_t *vbo, unsigned int beflags)
Definition: d3d8_backend.c:2951
void D3D8BE_GenBrushModelVBO(model_t *mod)
Definition: d3d8_backend.c:2403
void GLBE_EndShadowMap(int restorefbo)
Definition: gl_backend.c:1159
void D3D9BE_Scissor(srect_t *rect)
Definition: d3d_backend.c:4211
qboolean VK_LoadBlob(program_t *prog, void *blobdata, const char *name)
Definition: vk_backend.c:509
void GLBE_GenBrushModelVBO(model_t *mod)
Definition: gl_rsurf.c:358
void D3D11BE_SetupForShadowMap(dlight_t *dl, int texwidth, int texheight, float shadowscale)
Definition: d3d11_backend.c:2501
void D3D9BE_Shutdown(void)
void D3D11BE_SelectMode(backendmode_t mode)
Definition: d3d11_backend.c:2463
void GLBE_DrawMesh_Single(shader_t *shader, mesh_t *meshchain, vbo_t *vbo, unsigned int beflags)
Definition: gl_backend.c:5148
cin_t * R_ShaderGetCinematic(shader_t *s)
Definition: gl_shader.c:8223
mfog_t * Mod_FogForOrigin(model_t *wmodel, vec3_t org)
Definition: gl_q2bsp.c:2815
int be_maxpasses
Definition: gl_shader.c:58
void D3D9BE_Reset(qboolean before)
Definition: d3d_backend.c:499
int R_GetShaderSizes(shader_t *shader, int *width, int *height, qboolean blocktillloaded)
Definition: gl_shader.c:8343
void GLBE_PolyOffsetStencilShadow(qboolean foobar)
Definition: gl_backend.c:289
char * GLVID_GetRGBInfo(int *bytestride, int *truewidth, int *trueheight, enum uploadfmt *fmt)
Definition: gl_screen.c:269
void D3D9BE_SetViewport(int x, int y, int w, int h)
Definition: d3d_backend.c:747
void Sh_RegisterCvars(void)
Definition: gl_shadow.c:4305
qboolean D3D11BE_SelectDLight(dlight_t *dl, vec3_t colour, vec3_t axis[3], unsigned int lmode)
Definition: d3d11_backend.c:2484
cvar_t r_fastturb
Definition: renderer.c:158
qboolean GLVID_ApplyGammaRamps(unsigned int size, unsigned short *ramps)
Definition: gl_viddroid.c:294
void D3D11BE_VBO_Finish(vbobctx_t *ctx, void *edata, size_t esize, vboarray_t *earray, void **vbomem, void **ebomem)
Definition: d3d11_backend.c:3741
void Shader_DefaultBSPLM(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:6447
qboolean Sh_StencilShadowsActive(void)
Definition: gl_shadow.c:4290
image_t * Mod_CubemapForOrigin(model_t *wmodel, vec3_t org)
Definition: q1bsp.c:3227
void GLBE_DrawMesh_List(shader_t *shader, int nummeshes, mesh_t **mesh, vbo_t *vbo, texnums_t *texnums, unsigned int beflags)
Definition: gl_backend.c:5098
void Shader_RemapShader_f(void)
Definition: gl_shader.c:8323
void Shader_DefaultCinematic(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:6568
@ bemoverride_fog
Definition: shader.h:597
@ bemoverride_gbuffer
Definition: shader.h:596
@ bemoverride_depthonly
Definition: shader.h:594
@ bemoverride_crepuscular
Definition: shader.h:593
@ bemoverride_depthdark
Definition: shader.h:595
@ bemoverride_max
Definition: shader.h:598
void Shader_DefaultSkybox(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:6584
void D3D9BE_VBO_Begin(vbobctx_t *ctx, size_t maxsize)
Definition: d3d_backend.c:4169
shadertype_t
Definition: shader.h:41
@ SHADER_MD3
Definition: shader.h:45
@ SHADER_BSP_VERTEX
Definition: shader.h:43
@ SHADER_BSP_FLARE
Definition: shader.h:44
@ SHADER_BSP
Definition: shader.h:42
@ SHADER_2D
Definition: shader.h:46
@ SBITS_DSTBLEND_ZERO
Definition: shader.h:133
@ SBITS_DEPTHFUNC_EQUAL
Definition: shader.h:165
@ SBITS_SRCBLEND_ONE_MINUS_SRC_ALPHA
Definition: shader.h:123
@ SBITS_DSTBLEND_ONE_MINUS_SRC_COLOR
Definition: shader.h:142
@ SBITS_SRCBLEND_SRC_ALPHA
Definition: shader.h:122
@ SBITS_SRCBLEND_ONE_MINUS_SRC_COLOR_INVALID
Definition: shader.h:127
@ SBITS_DSTBLEND_ONE_MINUS_SRC_ALPHA
Definition: shader.h:138
@ SBITS_DSTBLEND_SRC_ALPHA
Definition: shader.h:137
@ SBITS_MISC_NODEPTHTEST
Definition: shader.h:162
@ SBITS_ATEST_LT128
Definition: shader.h:156
@ SBITS_ATEST_GT0
Definition: shader.h:155
@ SBITS_DSTBLEND_SRC_COLOR
Definition: shader.h:141
@ SBITS_ATEST_GE128
Definition: shader.h:157
@ SBITS_MASK_ALPHA
Definition: shader.h:151
@ SBITS_SRCBLEND_DST_COLOR
Definition: shader.h:120
@ SBITS_TESSELLATION
Definition: shader.h:170
@ SBITS_DEPTHFUNC_CLOSER
Definition: shader.h:166
@ SBITS_MISC_FULLRATE
Definition: shader.h:172
@ SBITS_LINES
Definition: shader.h:175
@ SBITS_DEPTHFUNC_FURTHER
Definition: shader.h:167
@ SBITS_DSTBLEND_ONE_MINUS_DST_COLOR_INVALID
Definition: shader.h:136
@ SBITS_ATEST_NONE
Definition: shader.h:154
@ SBITS_DSTBLEND_ONE
Definition: shader.h:134
@ SBITS_DSTBLEND_DST_COLOR_INVALID
Definition: shader.h:135
@ SBITS_DSTBLEND_ONE_MINUS_DST_ALPHA
Definition: shader.h:140
@ SBITS_SRCBLEND_ONE
Definition: shader.h:119
@ SBITS_MASK_GREEN
Definition: shader.h:149
@ SBITS_SRCBLEND_SRC_COLOR_INVALID
Definition: shader.h:126
@ SBITS_MASK_BLUE
Definition: shader.h:150
@ SBITS_SRCBLEND_ONE_MINUS_DST_COLOR
Definition: shader.h:121
@ SBITS_SRCBLEND_ONE_MINUS_DST_ALPHA
Definition: shader.h:125
@ SBITS_MISC_DEPTHWRITE
Definition: shader.h:161
@ SBITS_SRCBLEND_ALPHA_SATURATE
Definition: shader.h:128
@ SBITS_DSTBLEND_DST_ALPHA
Definition: shader.h:139
@ SBITS_DSTBLEND_NONE
Definition: shader.h:132
@ SBITS_DSTBLEND_ALPHA_SATURATE_INVALID
Definition: shader.h:143
@ SBITS_SRCBLEND_NONE
Definition: shader.h:117
@ SBITS_AFFINE
Definition: shader.h:171
@ SBITS_MASK_RED
Definition: shader.h:148
@ SBITS_DEPTHFUNC_CLOSEREQUAL
Definition: shader.h:164
@ SBITS_SRCBLEND_DST_ALPHA
Definition: shader.h:124
@ SBITS_SRCBLEND_ZERO
Definition: shader.h:118
void Shader_TouchTexnums(texnums_t *t)
Definition: gl_shader.c:8078
void Shader_TouchTextures(void)
Definition: gl_shader.c:8103
shader_t * R_ShaderFind(const char *name)
Definition: gl_shader.c:8237
cvar_t r_fastsky
Definition: shader.h:1098
void D3D11BE_DrawMesh_List(shader_t *shader, int nummeshes, mesh_t **mesh, vbo_t *vbo, texnums_t *texnums, unsigned int beflags)
Definition: d3d11_backend.c:3168
void SH_FreeShadowMesh(struct shadowmesh_s *sm)
Definition: gl_shadow.c:443
void GLBE_SetupForShadowMap(dlight_t *dl, int texwidth, int texheight, float shadowscale)
Definition: gl_backend.c:1068
qboolean GLBE_SelectDLight(dlight_t *dl, vec3_t colour, vec3_t axis[3], unsigned int lmode)
Definition: gl_backend.c:4270
void D3D11BE_VBO_Destroy(vboarray_t *vearray, void *mem)
Definition: d3d11_backend.c:3744
@ PERMUTATION_BIT_LIGHTSTYLES
Definition: shader.h:372
@ PERMUTATION_BIT_REFLECTCUBEMASK
Definition: shader.h:355
@ PERMUTATION_BIT_FOG
Definition: shader.h:363
@ PERMUTATION_BIT_SKELETAL
Definition: shader.h:358
@ PERMUTATION_BIT_FRAMEBLEND
Definition: shader.h:366
@ PERMUTATION_BIT_MAX
Definition: shader.h:377
@ PERMUTATION_BIT_FULLBRIGHT
Definition: shader.h:351
@ PERMUTATION_BIT_BUMPMAP
Definition: shader.h:349
@ PERMUTATION_BIT_UPPERLOWER
Definition: shader.h:353
struct shaderpass_s shaderpass_t
void D3D9BE_VBO_Destroy(vboarray_t *vearray, void *mem)
Definition: d3d_backend.c:4204
void D3D11BE_DrawMesh_Single(shader_t *shader, mesh_t *meshchain, vbo_t *vbo, unsigned int beflags)
Definition: d3d11_backend.c:3186
void CLQ1_AddSpriteQuad(shader_t *shader, vec3_t mid, float radius)
Definition: cl_ents.c:2617
struct shader_field_names_s shader_field_names[]
void D3D9BE_Set2D(void)
Definition: d3d_backend.c:741
void() shader_gen_t(struct shaderparsestate_s *ps, const char *name, const void *args)
Definition: shader.h:33
void Shader_DefaultScript(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:6433
shader_t * R_RegisterCustom(model_t *mod, const char *name, unsigned int usageflags, shader_gen_t *defaultgen, const void *args)
Definition: gl_shader.c:8521
@ D3D11_BUFF_POS
Definition: shader.h:1033
@ D3D11_BUFF_COL
Definition: shader.h:1034
@ D3D11_BUFF_SKEL
Definition: shader.h:1038
@ D3D11_BUFF_LMTC
Definition: shader.h:1036
@ D3D11_BUFF_NORM
Definition: shader.h:1037
@ D3D11_BUFF_POS2
Definition: shader.h:1039
@ D3D11_BUFF_TC
Definition: shader.h:1035
@ D3D11_BUFF_MAX
Definition: shader.h:1040
qboolean Material_RegisterLoader(void *module, plugmaterialloaderfuncs_t *loader)
Definition: gl_shader.c:308
void Sh_CheckSettings(void)
Definition: gl_shadow.c:3911
void D3D8BE_SubmitBatch(batch_t *batch)
Definition: d3d8_backend.c:2902
void GLBE_ClearVBO(vbo_t *vbo, qboolean dataonly)
Definition: gl_rsurf.c:31
void Shader_DefaultBSPQ1(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:6875
void D3D8BE_DrawMesh_List(shader_t *shader, int nummeshes, mesh_t **mesh, vbo_t *vbo, texnums_t *texnums, unsigned int beflags)
Definition: d3d8_backend.c:2932
void D3D8BE_Scissor(srect_t *rect)
Definition: d3d8_backend.c:3467
void Shader_NeedReload(qboolean rescanfs)
Definition: gl_shader.c:8216
cvar_t r_fog_permutation
Definition: renderer.c:511
void D3D9BE_GenBrushModelVBO(model_t *mod)
Definition: d3d_backend.c:3083
void Sh_PreGenerateLights(void)
Definition: gl_shadow.c:3804
void Shader_Shutdown(void)
Definition: gl_shader.c:4489
void D3D8BE_Reset(qboolean before)
Definition: d3d8_backend.c:427
batch_t * GLBE_GetTempBatch(void)
Definition: gl_backend.c:5655
void D3D11BE_ClearVBO(vbo_t *vbo, qboolean dataonly)
Definition: d3d11_backend.c:2698
void GLBE_SelectEntity(entity_t *ent)
Definition: gl_backend.c:4179
void Shader_ReleaseGeneric(program_t *prog)
Definition: gl_shader.c:4099
void D3D11BE_GenBrushModelVBO(model_t *mod)
Definition: d3d11_backend.c:2662
void D3D11BE_BaseEntTextures(const qbyte *worldpvs, const int *worldareas)
Definition: d3d11_backend.c:3552
void Shader_ResetRemaps(void)
Definition: gl_shader.c:8272
unsigned int r_maxshaders
Definition: gl_shader.c:285
struct shader_field_names_s shader_unif_names[]
Definition: gl_shader.c:2369
void D3D9BE_UploadAllLightmaps(void)
Definition: d3d_backend.c:3416
void D3D11BE_SelectEntity(entity_t *ent)
Definition: d3d11_backend.c:2522
shader_t * R_RegisterShader_Lightmap(model_t *mod, const char *name)
Definition: gl_shader.c:8475
shader_t ** r_shaders
Definition: gl_shader.c:286
void D3D11BE_DrawWorld(batch_t **worldbatches)
Definition: d3d11_backend.c:3649
unsigned int r_numshaders
Definition: gl_shader.c:284
void GLBE_VBO_Destroy(vboarray_t *vearray, void *mem)
Definition: gl_backend.c:6606
void CLQ1_AddOrientedHalfSphere(shader_t *shader, float radius, float gap, float *matrix, float r, float g, float b, float a)
Definition: cl_ents.c:2339
void D3D9BE_DrawMesh_List(shader_t *shader, int nummeshes, mesh_t **mesh, vbo_t *vbo, texnums_t *texnums, unsigned int beflags)
Definition: d3d_backend.c:3657
cin_t * R_ShaderFindCinematic(const char *name)
Definition: gl_shader.c:8263
int GLBE_FBO_Push(fbostate_t *state)
Definition: gl_backend.c:5710
qboolean D3D8BE_SelectDLight(dlight_t *dl, vec3_t colour, vec3_t axis[3], unsigned int lmode)
Definition: d3d8_backend.c:2307
program_t * Shader_FindGeneric(char *name, int qrtype)
Definition: gl_shader.c:2249
void D3D8BE_VBO_Finish(vbobctx_t *ctx, void *edata, size_t esize, vboarray_t *earray, void **vbomem, void **ebomem)
Definition: d3d8_backend.c:3443
shader_t * R_RegisterShader_Flare(model_t *mod, const char *name)
Definition: gl_shader.c:8485
shader_t *QDECL R_RegisterSkin(model_t *mod, const char *shadername)
Definition: gl_shader.c:8490
void D3D8BE_VBO_Destroy(vboarray_t *vearray, void *mem)
Definition: d3d8_backend.c:3460
void GLBE_RenderToTextureUpdate2d(qboolean destchanged)
Definition: gl_backend.c:5682
void D3D8BE_SelectMode(backendmode_t mode)
Definition: d3d8_backend.c:2299
void D3D9BE_SubmitBatch(batch_t *batch)
Definition: d3d_backend.c:3627
void D3D9BE_SelectMode(backendmode_t mode)
Definition: d3d_backend.c:2950
void GLBE_UpdateLightmaps(void)
Definition: gl_backend.c:5565
void Shader_DoReload(void)
Definition: gl_shader.c:8126
void D3D8Shader_Init(void)
Definition: vid_d3d8.c:461
void GLBE_SelectMode(backendmode_t mode)
Definition: gl_backend.c:4034
void BE_GenerateProgram(shader_t *shader)
batch_t * D3D8BE_GetTempBatch(void)
Definition: d3d8_backend.c:2720
qboolean D3D9BE_SelectDLight(dlight_t *dl, vec3_t colour, vec3_t axis[3], unsigned int lmode)
Definition: d3d_backend.c:2958
void GLBE_Init(void)
Definition: gl_backend.c:1570
void GLBE_Shutdown(void)
Definition: gl_backend.c:1543
void D3D8BE_VBO_Begin(vbobctx_t *ctx, size_t maxsize)
Definition: d3d8_backend.c:3425
void R_EditLights_DrawLights(void)
Definition: gl_rlight.c:1816
void GLBE_FBO_Destroy(fbostate_t *state)
Definition: gl_backend.c:5729
void D3D11BE_UploadAllLightmaps(void)
Definition: d3d11_backend.c:2745
qboolean GLBE_LightCullModel(vec3_t org, model_t *model)
Definition: gl_backend.c:4002
void D3D11BE_VBO_Begin(vbobctx_t *ctx, size_t maxsize)
Definition: d3d11_backend.c:3735
qboolean D3D11_BeginShadowMap(int id, int w, int h)
Definition: d3d11_image.c:440
void D3D8BE_ClearVBO(vbo_t *vbo, qboolean dataonly)
Definition: d3d8_backend.c:2624
void D3D9BE_SelectEntity(entity_t *ent)
Definition: d3d_backend.c:2968
void Sh_GenerateFakeShadows(void)
Definition: gl_shadow.c:2809
void Shader_ShowShader_f(void)
Definition: gl_shader.c:8052
qboolean GLBE_BeginShadowMap(int id, int w, int h, uploadfmt_t encoding, int *restorefbo)
Definition: gl_backend.c:1086
void D3D8BE_DrawWorld(batch_t **worldbatches)
Definition: d3d8_backend.c:3344
void Sh_DrawLights(qbyte *vis)
Definition: gl_shadow.c:4066
qboolean D3D11BE_LightCullModel(vec3_t org, model_t *model)
Definition: d3d11_backend.c:2750
void GLBE_SubmitMeshes(batch_t **worldbatches, int start, int stop)
Definition: gl_backend.c:5537
void R_RemapShader(const char *sourcename, const char *destname, float timeoffset)
Definition: gl_shader.c:8286
qboolean Shader_Init(void)
Definition: gl_shader.c:4160
void GLBE_VBO_Data(vbobctx_t *ctx, void *data, size_t size, vboarray_t *varray)
Definition: gl_backend.c:6553
void D3D8BE_SelectEntity(entity_t *ent)
Definition: d3d8_backend.c:2317
void Sh_Shutdown(void)
Definition: gl_shadow.c:97
cvar_t r_skybox_orientation
Definition: shader.h:1098
void Sh_Reset(void)
Definition: gl_shadow.c:86
char * Shader_GetShaderBody(shader_t *s, char *fname, size_t fnamesize)
Definition: gl_shader.c:7937
struct programpermu_s * Shader_LoadPermutation(program_t *prog, unsigned int p)
Definition: gl_shader.c:1423
void Shader_DefaultBSPQ2(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:6809
void D3D11BE_SubmitBatch(batch_t *batch)
Definition: d3d11_backend.c:3142
qboolean D3D11Shader_Init(unsigned int featurelevel)
Definition: d3d11_shader.c:713
void Shader_DefaultWaterShader(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:6804
void D3D11BE_VBO_Data(vbobctx_t *ctx, void *data, size_t size, vboarray_t *varray)
Definition: d3d11_backend.c:3738
void D3D9Shader_Init(void)
Definition: d3d_shader.c:564
const struct sh_defaultsamplers_s sh_defaultsamplers[]
void QDECL R_BuildLegacyTexnums(shader_t *shader, const char *fallbackname, const char *subpath, unsigned int loadflags, unsigned int imageflags, uploadfmt_t basefmt, size_t width, size_t height, qbyte *mipdata, qbyte *palette)
Definition: gl_shader.c:6147
@ S_NORMALMAP
Definition: shader.h:867
@ S_OCCLUSION
Definition: shader.h:876
@ S_FULLBRIGHT
Definition: shader.h:871
@ S_LIGHTMAP1
Definition: shader.h:880
@ S_DELUXEMAP3
Definition: shader.h:885
@ S_DIFFUSE
Definition: shader.h:866
@ S_SPECULAR
Definition: shader.h:868
@ S_REFLECTCUBE
Definition: shader.h:873
@ S_DELUXEMAP1
Definition: shader.h:883
@ S_LOWERMAP
Definition: shader.h:870
@ S_LIGHTMAP3
Definition: shader.h:882
@ S_DELUXEMAP0
Definition: shader.h:878
@ S_UPPERMAP
Definition: shader.h:869
@ S_PROJECTIONMAP
Definition: shader.h:865
@ S_SHADOWMAP
Definition: shader.h:864
@ S_LIGHTMAP0
Definition: shader.h:877
@ S_LIGHTMAP2
Definition: shader.h:881
@ S_DISPLACEMENT
Definition: shader.h:875
@ S_REFLECTMASK
Definition: shader.h:874
@ S_PALETTED
Definition: shader.h:872
@ S_DELUXEMAP2
Definition: shader.h:884
void GLBE_FBO_Sources(texid_t sourcecolour, texid_t sourcedepth)
Definition: gl_backend.c:5705
shaderattribs_e
Definition: shader.h:384
@ VATTR_LMCOORD2
Definition: shader.h:399
@ VATTR_COLOUR2
Definition: shader.h:402
@ VATTR_LEG_TMU0
Definition: shader.h:416
@ VATTR_LMCOORD3
Definition: shader.h:400
@ VATTR_TEXCOORD
Definition: shader.h:391
@ VATTR_BONENUMS
Definition: shader.h:396
@ VATTR_LMCOORD
Definition: shader.h:392
@ VATTR_LMCOORD4
Definition: shader.h:401
@ VATTR_NORMALS
Definition: shader.h:393
@ VATTR_VERTEX1
Definition: shader.h:388
@ VATTR_LEG_VERTEX
Definition: shader.h:408
@ VATTR_COLOUR
Definition: shader.h:390
@ VATTR_TNORMALS
Definition: shader.h:395
@ VATTR_BONEWEIGHTS
Definition: shader.h:397
@ VATTR_LEG_FIRST
Definition: shader.h:419
@ VATTR_LEG_ELEMENTS
Definition: shader.h:415
@ VATTR_COLOUR4
Definition: shader.h:404
@ VATTR_VERTEX2
Definition: shader.h:389
@ VATTR_SNORMALS
Definition: shader.h:394
@ VATTR_COLOUR3
Definition: shader.h:403
@ VATTR_LEG_COLOUR
Definition: shader.h:414
void D3D9BE_VBO_Data(vbobctx_t *ctx, void *data, size_t size, vboarray_t *varray)
Definition: d3d_backend.c:4179
void D3D8BE_VBO_Data(vbobctx_t *ctx, void *data, size_t size, vboarray_t *varray)
Definition: d3d8_backend.c:3435
void GLBE_FBO_Pop(int oldfbo)
Definition: gl_backend.c:5723
void Shader_DefaultSkin(struct shaderparsestate_s *ps, const char *shortname, const void *args)
Definition: gl_shader.c:7081
void D3D8BE_Set2D(void)
Definition: d3d8_backend.c:495
void R_UnloadShader(shader_t *shader)
Definition: gl_shader.c:7476
void R_EditLights_RegisterCommands(void)
Definition: gl_rlight.c:2356
void CL_DrawDebugPlane(float *normal, float dist, float r, float g, float b, qboolean enqueue)
Definition: cl_ents.c:2689
void D3D9BE_Init(void)
Definition: d3d_backend.c:719
void Shader_WriteOutGenerics_f(void)
Definition: gl_shader.c:2301
void D3D8BE_Shutdown(void)
void D3D11_EndShadowMap(void)
Definition: d3d11_image.c:506
void GLBE_VBO_Begin(vbobctx_t *ctx, size_t maxsize)
Definition: gl_backend.c:6529
qboolean D3D9BE_LightCullModel(vec3_t org, model_t *model)
Definition: d3d_backend.c:3421
void GLBE_Scissor(srect_t *rect)
Definition: gl_backend.c:4341
void D3D11BE_Reset(qboolean before)
Definition: d3d11_backend.c:729
@ LSHADER_STANDARD
Definition: shader.h:576
@ LSHADER_MODES
Definition: shader.h:582
@ LSHADER_ORTHO
Definition: shader.h:581
@ LSHADER_FAKESHADOWS
Definition: shader.h:588
@ LSHADER_CUBE
Definition: shader.h:577
@ LSHADER_SMAP
Definition: shader.h:578
@ LSHADER_SPOT
Definition: shader.h:579
void GLBE_VBO_Finish(vbobctx_t *ctx, void *edata, size_t esize, vboarray_t *earray, void **vbomem, void **ebomem)
Definition: gl_backend.c:6576
sh_config_t sh_config
Definition: gl_shader.c:40
shader_t * R_RegisterShader_Vertex(model_t *mod, const char *name)
Definition: gl_shader.c:8480
Definition: gl_model.h:133
Definition: hash.h:11
Definition: cvar.h:59
Definition: shader.h:95
@ DEFORMV_NORMAL
Definition: shader.h:100
@ DEFORMV_WAVE
Definition: shader.h:99
@ DEFORMV_PROJECTION_SHADOW
Definition: shader.h:104
@ DEFORMV_AUTOSPRITE2
Definition: shader.h:103
@ DEFORMV_BULGE
Definition: shader.h:101
@ DEFORMV_NONE
Definition: shader.h:97
@ DEFORMV_AUTOSPRITE
Definition: shader.h:102
@ DEFORMV_MOVE
Definition: shader.h:98
shaderfunc_t func
Definition: shader.h:108
Definition: client.h:315
Definition: render.h:99
Definition: shader.h:804
unsigned int enables
Definition: shader.h:811
int rb_stencil
Definition: shader.h:808
texid_t colour
Definition: shader.h:810
int rb_depth
Definition: shader.h:807
int fbo
Definition: shader.h:805
int rb_depthstencil
Definition: shader.h:809
Definition: merged.h:238
Definition: render.h:375
Definition: gl_model.h:90
Definition: gl_model.h:434
Definition: gl_model.h:972
Definition: vkrenderer.h:439
Definition: shader.h:722
const char * loadername
Definition: shader.h:723
struct sbuiltin_s * builtinshaders
Definition: shader.h:726
Definition: shader.h:569
float factor
Definition: shader.h:570
float unit
Definition: shader.h:571
Definition: shader.h:498
unsigned int texmask
Definition: shader.h:534
unsigned int numparms
Definition: shader.h:535
union programpermu_s::programhandle_u h
int factorsuniform
Definition: shader.h:530
shaderprogparm_t * parm
Definition: shader.h:536
unsigned int permutation
Definition: shader.h:532
unsigned int attrmask
Definition: shader.h:533
Definition: shader.h:540
int refs
Definition: shader.h:542
char * name
Definition: shader.h:541
unsigned explicitsyms
Definition: shader.h:544
qVkPipelineLayout layout
Definition: shader.h:563
struct pipeline_s * pipelines
Definition: shader.h:565
qVkShaderModule vert
Definition: shader.h:561
unsigned int defaulttextures
Definition: shader.h:549
char * preshade
Definition: shader.h:555
struct programpermu_s * permu[PERMUTATIONS]
Definition: shader.h:558
unsigned geom
Definition: shader.h:546
unsigned short numsamplers
Definition: shader.h:548
unsigned tess
Definition: shader.h:545
int shaderver
Definition: shader.h:554
unsigned int cvardatasize
Definition: shader.h:553
unsigned char failed[(PERMUTATIONS+7)/8]
Definition: shader.h:557
qVkShaderModule frag
Definition: shader.h:562
char * shadertext
Definition: shader.h:556
unsigned warned
Definition: shader.h:547
unsigned char * cvardata
Definition: shader.h:552
unsigned int supportedpermutations
Definition: shader.h:551
unsigned calcgens
Definition: shader.h:543
qVkDescriptorSetLayout desclayout
Definition: shader.h:564
Definition: vid.h:42
Definition: shader.h:715
int apiver
Definition: shader.h:717
int qrtype
Definition: shader.h:716
char * body
Definition: shader.h:719
Definition: shader.h:821
qboolean progs_required
Definition: shader.h:827
char * shadernamefmt
Definition: shader.h:824
unsigned int max_gpu_bones
Definition: shader.h:830
char * blobpath
Definition: shader.h:823
qboolean progs_supported
Definition: shader.h:826
unsigned int texturecube_maxsize
Definition: shader.h:837
qboolean env_add
Definition: shader.h:844
qboolean can_mipbias
Definition: shader.h:846
qboolean can_genmips
Definition: shader.h:847
char * progpath
Definition: shader.h:822
qboolean texture_non_power_of_two
Definition: shader.h:838
int hw_astc
Definition: shader.h:832
qboolean texture_allow_block_padding
Definition: shader.h:840
unsigned int texture2darray_maxlayers
Definition: shader.h:836
qboolean can_mipcap
Definition: shader.h:845
qboolean havecubemaps
Definition: shader.h:848
unsigned int stencilbits
Definition: shader.h:849
unsigned int texture2d_maxsize
Definition: shader.h:834
qboolean texture_non_power_of_two_pic
Definition: shader.h:839
unsigned int minver
Definition: shader.h:828
qboolean tex_env_combine
Definition: shader.h:842
unsigned int maxver
Definition: shader.h:829
qboolean nv_tex_env_combine4
Definition: shader.h:843
unsigned int texture3d_maxsize
Definition: shader.h:835
qboolean showbatches
Definition: shader.h:857
qboolean npot_rounddown
Definition: shader.h:841
Definition: shader.h:889
unsigned int defaulttexbits
Definition: shader.h:891
const char * name
Definition: shader.h:890
Definition: shader.h:1081
char * name
Definition: shader.h:1082
int ptype
Definition: shader.h:1083
Definition: shader.h:683
float zofs
Definition: shader.h:690
float scalemin
Definition: shader.h:685
float scalemax
Definition: shader.h:686
float anglemin
Definition: shader.h:687
float anglemax
Definition: shader.h:688
char modelname[1]
Definition: shader.h:691
struct shader_clutter_s * next
Definition: shader.h:684
float spacing
Definition: shader.h:689
Definition: shader.h:602
int id
Definition: shader.h:619
program_t * prog
Definition: shader.h:672
int numpasses
Definition: shader.h:614
shader_gen_t * generator
Definition: shader.h:679
int numdeforms
Definition: shader.h:630
skydome_t * skydome
Definition: shader.h:678
shadersort_t sort
Definition: shader.h:676
@ SHADER_HASGLOSS
Definition: shader.h:662
@ SHADER_NOMARKS
Definition: shader.h:642
@ SHADER_HASRIPPLEMAP
Definition: shader.h:661
@ SHADER_HASREFLECTCUBE
Definition: shader.h:656
@ SHADER_NOMIPMAPS
Definition: shader.h:638
@ SHADER_NODLIGHT
Definition: shader.h:653
@ SHADER_CULL_BACK
Definition: shader.h:641
@ SHADER_HASREFLECT
Definition: shader.h:657
@ SHADER_DEPTHWRITE
Definition: shader.h:648
@ SHADER_BLEND
Definition: shader.h:650
@ SHADER_FLARE
Definition: shader.h:644
@ SHADER_HASLIGHTMAP
Definition: shader.h:654
@ SHADER_HASREFRACTDEPTH
Definition: shader.h:659
@ SHADER_POLYGONOFFSET
Definition: shader.h:643
@ SHADER_SKY
Definition: shader.h:637
@ SHADER_HASNORMALMAP
Definition: shader.h:660
@ SHADER_HASDIFFUSE
Definition: shader.h:665
@ SHADER_NOPICMIP
Definition: shader.h:639
@ SHADER_HASFULLBRIGHT
Definition: shader.h:664
@ SHADER_HASPORTAL
Definition: shader.h:668
@ SHADER_VIDEOMAP
Definition: shader.h:647
@ SHADER_HASREFRACT
Definition: shader.h:658
@ SHADER_NODRAW
Definition: shader.h:651
@ SHADER_HASCURRENTRENDER
Definition: shader.h:667
@ SHADER_HASPALETTED
Definition: shader.h:666
@ SHADER_HASDISPLACEMENT
Definition: shader.h:669
@ SHADER_AGEN_PORTAL
Definition: shader.h:649
@ SHADER_ENTITY_MERGABLE
Definition: shader.h:646
@ SHADER_NEEDSARRAYS
Definition: shader.h:645
@ SHADER_CULL_FRONT
Definition: shader.h:640
@ SHADER_NOSHADOWS
Definition: shader.h:663
@ SHADER_HASTOPBOTTOM
Definition: shader.h:655
float fog_dist
Definition: shader.h:626
texnums_t * defaulttextures
Definition: shader.h:617
vec4_t factors[MATERIAL_FACTOR_COUNT]
Definition: shader.h:700
struct model_s * model
Definition: shader.h:604
enum shader_s::@397 flags
byte_vec4_t fog_color
Definition: shader.h:625
char * genargs
Definition: shader.h:680
int uses
Definition: shader.h:611
rshader_t * bemoverrides[bemoverride_max]
Definition: shader.h:621
struct shader_s * next
Definition: shader.h:618
enum shader_s::@396 usageflags
float defaulttextures_fps
Definition: shader.h:616
polyoffset_t polyoffset
Definition: shader.h:633
material_t * remapto
Definition: shader.h:622
int height
Definition: shader.h:613
unsigned int numdefaulttextures
Definition: shader.h:615
@ SUF_LIGHTMAP
Definition: shader.h:607
@ SUR_FORCEFALLBACK
Definition: shader.h:609
@ SUF_2D
Definition: shader.h:608
@ SUF_NONE
Definition: shader.h:606
shaderpass_t passes[SHADER_PASS_MAX]
Definition: shader.h:674
int width
Definition: shader.h:612
float portaldist
Definition: shader.h:627
float remaptime
Definition: shader.h:623
deformv_t deforms[SHADER_DEFORM_MAX]
Definition: shader.h:631
struct shader_s::shader_clutter_s * clutter
float portalfboscale
Definition: shader.h:628
bucket_t bucket
Definition: shader.h:694
Definition: shader.h:64
@ SHADER_FUNC_INVERSESAWTOOTH
Definition: shader.h:70
@ SHADER_FUNC_TRIANGLE
Definition: shader.h:67
@ SHADER_FUNC_SIN
Definition: shader.h:66
@ SHADER_FUNC_NOISE
Definition: shader.h:71
@ SHADER_FUNC_SAWTOOTH
Definition: shader.h:69
@ SHADER_FUNC_SQUARE
Definition: shader.h:68
Definition: shader.h:179
enum shaderpass_s::@355 rgbgen
tcmod_t tcmods[SHADER_MAX_TC_MODS]
Definition: shader.h:251
vec3_t tcgenvec[2]
Definition: shader.h:249
@ ALPHA_GEN_ENTITY
Definition: shader.h:222
@ ALPHA_GEN_IDENTITY
Definition: shader.h:226
@ ALPHA_GEN_CONST
Definition: shader.h:228
@ ALPHA_GEN_WAVE
Definition: shader.h:223
@ ALPHA_GEN_SPECULAR
Definition: shader.h:225
@ ALPHA_GEN_PORTAL
Definition: shader.h:224
@ ALPHA_GEN_UNDEFINED
Definition: shader.h:221
@ ALPHA_GEN_VERTEX
Definition: shader.h:227
@ RGB_GEN_ENTITY
Definition: shader.h:203
@ RGB_GEN_VERTEX_EXACT
Definition: shader.h:206
@ RGB_GEN_UNKNOWN
Definition: shader.h:212
@ RGB_GEN_IDENTITY_OVERBRIGHT
Definition: shader.h:209
@ RGB_GEN_VERTEX_LIGHTING
Definition: shader.h:205
@ RGB_GEN_ENTITY_LIGHTING_DIFFUSE
Definition: shader.h:214
@ RGB_GEN_TOPCOLOR
Definition: shader.h:215
@ RGB_GEN_CONST
Definition: shader.h:211
@ RGB_GEN_BOTTOMCOLOR
Definition: shader.h:216
@ RGB_GEN_LIGHTING_DIFFUSE
Definition: shader.h:213
@ RGB_GEN_IDENTITY_LIGHTING
Definition: shader.h:208
@ RGB_GEN_WAVE
Definition: shader.h:202
@ RGB_GEN_IDENTITY
Definition: shader.h:210
@ RGB_GEN_ONE_MINUS_VERTEX
Definition: shader.h:207
@ RGB_GEN_ONE_MINUS_ENTITY
Definition: shader.h:204
shaderfunc_t alphagen_func
Definition: shader.h:230
enum shaderpass_s::@357 tcgen
@ PBM_OVERBRIGHT
Definition: shader.h:192
@ PBM_DOTPRODUCT
Definition: shader.h:195
@ PBM_REPLACELIGHT
Definition: shader.h:197
@ PBM_DECAL
Definition: shader.h:193
@ PBM_ADD
Definition: shader.h:194
@ PBM_MODULATE_PREV_COLOUR
Definition: shader.h:198
@ PBM_REPLACE
Definition: shader.h:196
@ PBM_MODULATE
Definition: shader.h:191
struct cin_s * cin
Definition: shader.h:185
enum shaderpass_s::@359 texgen
enum shaderpass_s::@360 stagetype
enum shaderpass_s::@356 alphagen
@ SHADER_PASS_ANIMMAP
Definition: shader.h:332
@ SHADER_PASS_CLAMP
Definition: shader.h:314
@ SHADER_PASS_NOMIPMAP
Definition: shader.h:315
@ SHADER_PASS_DETAIL
Definition: shader.h:329
@ SHADER_PASS_LIGHTMAP
Definition: shader.h:330
@ SHADER_PASS_SRGB
Definition: shader.h:320
@ SHADER_PASS_NEAREST
Definition: shader.h:316
@ SHADER_PASS_VIDEOMAP
Definition: shader.h:328
@ SHADER_PASS_LINEAR
Definition: shader.h:317
@ SHADER_PASS_DEPTHCMP
Definition: shader.h:319
@ SHADER_PASS_NOCOLORARRAY
Definition: shader.h:325
@ SHADER_PASS_UIPIC
Definition: shader.h:318
@ SHADER_PASS_DELUXMAP
Definition: shader.h:331
void * becache
Definition: shader.h:336
unsigned int shaderbits
Definition: shader.h:188
int numMergedPasses
Definition: shader.h:180
shaderfunc_t rgbgen_func
Definition: shader.h:218
texid_t anim_frames[SHADER_MAX_ANIMFRAMES]
Definition: shader.h:254
int numtcmods
Definition: shader.h:250
enum shaderpass_s::@361 flags
enum shaderpass_s::@354 blendmode
@ TC_GEN_SKYBOX
Definition: shader.h:243
@ TC_GEN_NORMAL
Definition: shader.h:240
@ TC_GEN_VECTOR
Definition: shader.h:237
@ TC_GEN_UNSPECIFIED
Definition: shader.h:247
@ TC_GEN_DOTPRODUCT
Definition: shader.h:236
@ TC_GEN_SVECTOR
Definition: shader.h:241
@ TC_GEN_LIGHTMAP
Definition: shader.h:234
@ TC_GEN_WOBBLESKY
Definition: shader.h:244
@ TC_GEN_ENVIRONMENT
Definition: shader.h:235
@ TC_GEN_TVECTOR
Definition: shader.h:242
@ TC_GEN_REFLECT
Definition: shader.h:245
@ TC_GEN_BASE
Definition: shader.h:233
@ T_GEN_GBUFFER2
Definition: shader.h:298
@ T_GEN_SOURCEDEPTH
Definition: shader.h:281
@ T_GEN_GBUFFER4
Definition: shader.h:300
@ T_GEN_RIPPLEMAP
Definition: shader.h:286
@ T_GEN_ANIMMAP
Definition: shader.h:260
@ T_GEN_GBUFFER5
Definition: shader.h:301
@ T_GEN_UPPEROVERLAY
Definition: shader.h:269
@ T_GEN_SOURCECUBE
Definition: shader.h:288
@ T_GEN_LIGHTMAP
Definition: shader.h:261
@ T_GEN_DIFFUSE
Definition: shader.h:266
@ T_GEN_SHADOWMAP
Definition: shader.h:263
@ T_GEN_CURRENTRENDER
Definition: shader.h:278
@ T_GEN_VIDEOMAP
Definition: shader.h:291
@ T_GEN_REFRACTION
Definition: shader.h:284
@ T_GEN_LIGHTCUBEMAP
Definition: shader.h:264
@ T_GEN_LOWEROVERLAY
Definition: shader.h:270
@ T_GEN_REFLECTMASK
Definition: shader.h:274
@ T_GEN_NORMALMAP
Definition: shader.h:267
@ T_GEN_REFLECTION
Definition: shader.h:283
@ T_GEN_GBUFFER0
Definition: shader.h:296
@ T_GEN_SINGLEMAP
Definition: shader.h:259
@ T_GEN_OCCLUSION
Definition: shader.h:276
@ T_GEN_GBUFFER7
Definition: shader.h:303
@ T_GEN_DISPLACEMENT
Definition: shader.h:275
@ T_GEN_SPECULAR
Definition: shader.h:268
@ T_GEN_PALETTED
Definition: shader.h:272
@ T_GEN_GBUFFER6
Definition: shader.h:302
@ T_GEN_GBUFFER1
Definition: shader.h:297
@ T_GEN_FULLBRIGHT
Definition: shader.h:271
@ T_GEN_REFRACTIONDEPTH
Definition: shader.h:285
@ T_GEN_GBUFFER3
Definition: shader.h:299
@ T_GEN_DELUXMAP
Definition: shader.h:262
@ T_GEN_SOURCECOLOUR
Definition: shader.h:280
@ T_GEN_REFLECTCUBE
Definition: shader.h:273
struct programshared_s * prog
Definition: shader.h:182
int anim_numframes
Definition: shader.h:253
float anim_fps
Definition: shader.h:255
@ ST_BUMPMAP
Definition: shader.h:309
@ ST_DIFFUSEMAP
Definition: shader.h:307
@ ST_SPECULARMAP
Definition: shader.h:310
@ ST_AMBIENT
Definition: shader.h:308
Definition: shader.h:422
shaderprogparmtype_e
Definition: shader.h:423
@ SP_M_MODEL
Definition: shader.h:449
@ SP_M_INVMODELVIEW
Definition: shader.h:455
@ SP_LIGHTCUBEMATRIX
Definition: shader.h:468
@ SP_CVAR3F
Definition: shader.h:485
@ SP_E_BOTTOMCOLOURS
Definition: shader.h:435
@ SP_M_PROJECTION
Definition: shader.h:451
@ SP_M_INVMODELVIEWPROJECTION
Definition: shader.h:454
@ SP_LIGHTRADIUS
Definition: shader.h:462
@ SP_CVARF
Definition: shader.h:484
@ SP_M_MODELVIEW
Definition: shader.h:450
@ SP_E_LMSCALE
Definition: shader.h:428
@ SP_M_ENTBONES_MAT4
Definition: shader.h:447
@ SP_E_L_DIR
Definition: shader.h:437
@ SP_E_TOPCOLOURS
Definition: shader.h:434
@ SP_M_ENTBONES_MAT3X4
Definition: shader.h:446
@ SP_LIGHTSCREEN
Definition: shader.h:467
@ SP_E_L_AMBIENT
Definition: shader.h:439
@ SP_CONST4I
Definition: shader.h:478
@ SP_E_COLOURSIDENT
Definition: shader.h:432
@ SP_CVAR4F
Definition: shader.h:486
@ SP_FIRSTIMMEDIATE
Definition: shader.h:473
@ SP_M_ENTBONES_PACKED
Definition: shader.h:445
@ SP_LIGHTCOLOUR
Definition: shader.h:463
@ SP_LIGHTCOLOURSCALE
Definition: shader.h:464
@ SP_E_EYEPOS
Definition: shader.h:440
@ SP_SOURCESIZE
Definition: shader.h:458
@ SP_CONST3F
Definition: shader.h:481
@ SP_M_VIEW
Definition: shader.h:448
@ SP_LIGHTDIRECTION
Definition: shader.h:466
@ SP_CONST3I
Definition: shader.h:477
@ SP_E_VLSCALE
Definition: shader.h:429
@ SP_W_FOG
Definition: shader.h:442
@ SP_BAD
Definition: shader.h:424
@ SP_TEXTURE
Definition: shader.h:474
@ SP_CONST2F
Definition: shader.h:480
@ SP_E_L_MUL
Definition: shader.h:438
@ SP_CONST1I
Definition: shader.h:475
@ SP_CVARI
Definition: shader.h:483
@ SP_S_COLOUR
Definition: shader.h:460
@ SP_M_INVVIEWPROJECTION
Definition: shader.h:453
@ SP_CONST1F
Definition: shader.h:479
@ SP_V_EYEPOS
Definition: shader.h:441
@ SP_E_VBLEND
Definition: shader.h:427
@ SP_CONST4F
Definition: shader.h:482
@ SP_W_USER
Definition: shader.h:443
@ SP_E_TIME
Definition: shader.h:436
@ SP_LIGHTSHADOWMAPSCALE
Definition: shader.h:470
@ SP_LIGHTPOSITION
Definition: shader.h:465
@ SP_LIGHTSHADOWMAPPROJ
Definition: shader.h:469
@ SP_CONST2I
Definition: shader.h:476
@ SP_E_GLOWMOD
Definition: shader.h:433
@ SP_E_ORIGIN
Definition: shader.h:430
@ SP_M_MODELVIEWPROJECTION
Definition: shader.h:452
@ SP_RENDERTEXTURESCALE
Definition: shader.h:457
@ SP_E_COLOURS
Definition: shader.h:431
unsigned int handle
Definition: shader.h:494
void * pval
Definition: shader.h:492
Definition: shader.h:341
Definition: merged.h:374
Definition: shader.h:79
@ SHADER_TCMOD_TURB
Definition: shader.h:87
@ SHADER_TCMOD_STRETCH
Definition: shader.h:84
@ SHADER_TCMOD_SCROLL
Definition: shader.h:83
@ SHADER_TCMOD_ROTATE
Definition: shader.h:85
@ SHADER_TCMOD_SCALE
Definition: shader.h:82
@ SHADER_TCMOD_NONE
Definition: shader.h:81
@ SHADER_TCMOD_TRANSFORM
Definition: shader.h:86
Definition: merged.h:383
Definition: gl_model.h:320
Definition: merged.h:333
netadr_t a
Definition: sv_master.c:141
void * vfsfile_t
Definition: sys_plugfte.h:2
Definition: shader.h:501
void * domain
Definition: shader.h:521
int handle
Definition: shader.h:505
struct programpermu_s::programhandle_u::@387 glsl
qboolean usetesselation
Definition: shader.h:506
void * frag
Definition: shader.h:513
int topology
Definition: shader.h:519
void * layouts[2]
Definition: shader.h:523
void * ctabv
Definition: shader.h:516
void * vert
Definition: shader.h:512
void * ctabf
Definition: shader.h:515
struct programpermu_s::programhandle_u::@388 hlsl
void * hull
Definition: shader.h:520
void * geom
Definition: shader.h:522
Definition: merged.h:342