1 //-----------------------------------------------------------------------------
2 // ShaderFlags
3 //-----------------------------------------------------------------------------
4 
5 #ifndef __SHADERFLAGS_H__
6 #define __SHADERFLAGS_H__
7 
8 /**
9  * Transform functions.
10  */
11 enum FUNC
12 {
13   FUNC_CONST,
14   FUNC_SIN,
15   FUNC_TRIANGLE,
16   FUNC_SQUARE,
17   FUNC_SAWTOOTH,
18   FUNC_INVERSESAWTOOTH,
19   FUNC_NOISE
20 };
21 
22 /**
23  * Functions for generating and deforming vertexes.
24  */
25 enum RGBGEN
26 {
27   RGBGEN_NONE,
28   RGBGEN_IDENTITY_LIGHTING, /**< 0 */
29   RGBGEN_IDENTITY,          /**< 0 */
30   RGBGEN_WAVE,              /**< 5 */
31   RGBGEN_ENTITY,            /**< 0 */
32   RGBGEN_ONE_MINUS_ENTITY,  /**< 0 */
33   RGBGEN_VERTEX,            /**< 0 */
34   RGBGEN_EXACTVERTEX,
35   RGBGEN_ONE_MINUS_VERTEX,  /**< 0 */
36   RGBGEN_LIGHTING_DIFFUSE,  /**< 0 */
37   RGBGEN_FLARE,
38   RGBGEN_FOG,
39   RGBGEN_CONST,
40   RGBGEN_MATERIAL
41 };
42 
43 /**
44  * Alpha channel generation.
45  */
46 enum ALPHAGEN
47 {
48   ALPHAGEN_NONE,
49   ALPHAGEN_PORTAL,
50   ALPHAGEN_IDENTITY,
51   ALPHAGEN_CONST,
52   ALPHAGEN_VERTEX,
53   ALPHAGEN_ENTITY,
54   ALPHAGEN_SPECULAR,
55   ALPHAGEN_WAVE
56 };
57 
58 /**
59  * Texture coordinate generation.
60  */
61 enum TCGEN
62 {
63   TCGEN_BASE,           /**< 0 */
64   TCGEN_ENVIRONMENT,    /**< 0 */
65   TCGEN_LIGHTMAP,       /**< 0 */
66   TCGEN_VECTOR,         /**< 6 */
67   TCGEN_FOG
68 };
69 
70 /**
71  * Texture coordinate deformation.
72  */
73 enum TCMOD
74 {
75   SP_TCMOD_NONE   = 0,
76   TCMOD_ROTATE    = 1,
77   TCMOD_SCALE     = 2,
78   TCMOD_SCROLL    = 3,
79   TCMOD_STRETCH   = 4,
80   TCMOD_TRANSFORM = 5,
81   TCMOD_TURB      = 6,
82 };
83 
84 /**
85  * Vertes coordinates deformations.
86  * @see DeformVertexes
87  */
88 enum DEFORMVERTEXES
89 {
90   DEFORMVERTEXES_NONE         = 0,      /**< 0 parameters */
91   DEFORMVERTEXES_WAVE         = 1,      /**< 6 parameters */
92   DEFORMVERTEXES_NORMAL       = 2,      /**< 5 parameters */
93   DEFORMVERTEXES_BULGE        = 3,      /**< 3 parameters */
94   DEFORMVERTEXES_MOVE         = 4,      /**< 8 parameters */
95   DEFORMVERTEXES_AUTOSPRITE   = 5,      /**< 0 parameters */
96   DEFORMVERTEXES_AUTOSPRITE2  = 6,      /**< 0 parameters */
97 };
98 
99 /**
100  * Layer flags.
101  */
102 enum
103 {
104   LF_NOMIPMAP   = 0x01,   /**< do not create mipmaps */
105   LF_NOPICMIP   = 0x02,   /**< allways pick the highest mipmap */
106   LF_CLAMP      = 0x04,   /**< clamp, default is repeat */
107   LF_DETAIL     = 0x08,   /**< detail texture */
108   LF_LIGHTMAP   = 0x10,   /**< lightmap */
109   LF_HASTCMOD   = 0x20,
110   LF_USENORMALS = 0x40,
111   LF_MULTITEX   = 0x80    /**< this shader and the next could be collapsed */
112 };
113 
114 enum
115 {                                               // val << 16
116   SORT_PORTAL         = 1,                      // 0x10000
117   SORT_SKY            = 2,                      // 0x20000
118   SORT_NORMAL         = 3, SORT_OPAQUE = 3,     // 0x30000
119   SORT_DECAL          = 4,                      // 0x40000
120   SORT_UNDERBANNER    = 5,                      // 0x50000
121   SORT_BANNER         = 6,                      // 0x60000
122   SORT_TRANS          = 7, SORT_SEETHROUGH = 7, // 0x70000
123   SORT_UNDERWATER     = 8,                      // 0x80000
124   SORT_ADDITIVE       = 9,                      // 0x90000
125   SORT_ADDITIVE1      = 10, /**< �? */          // 0xA0000
126   SORT_ADDITIVE2      = 11,                     // 0xB0000
127   SORT_FOG            = 12,                     // 0xC0000
128   SORT_FOG1           = 13, /**< �? */          // 0xD0000
129   SORT_FOG2           = 14, /**< �? */          // 0xE0000
130   SORT_STENCILSHADOW  = 15, /**< �? taken from shaderlib */   // 0xF0000
131   SORT_NEAREST        = 16,                   // 0x100000
132 };
133 
134 /**
135  * Culling type.
136  */
137 enum
138 {
139   CULL_FRONT  = 1,
140   CULL_BACK   = -1,
141   CULL_NONE   = 0,
142 };
143 
144 /**
145  * Shader flags.
146  */
147 enum
148 {
149   SF_NOMIPMAP       = (1<<1), /**< do not create mipmaps */
150   SF_NOPICMIP       = (1<<2), /**< allways pick the highest mipmap */
151   SF_POLYGONOFFSET  = (1<<3), /**< surface needs polygon offset */
152   SF_PORTAL         = (1<<4), /**< there is a portal layer */
153   SF_HASLIGHTMAP    = (1<<5), /**< there is a lightmap layer */
154   SF_HASCOLORS      = (1<<6), /**< there is a layer that needs colors */
155   SF_HASTCMOD       = (1<<7), /**< there is a layer that has lf_hastcmod */
156   SF_USENORMALS     = (1<<8), /**< there is a layer that has lf_usenormals */
157   SF_MULTITEX       = (1<<9), /**< this shader has two layers that can be collapsed */
158 };
159 
160 /**
161  * Face types.
162  */
163 enum
164 {
165   FACETYPE_NORMAL = 1,
166   FACETYPE_PLANAR = 1,    /**< the same as above */
167   FACETYPE_PATCH  = 2,
168   FACETYPE_MESH   = 3,
169   FACETYPE_FLARE  = 4
170 };
171 
172 #endif  /* __SHADERFLAGS_H__ */
173