-
- int lightmaptexturenum;
- byte styles[MAXLIGHTMAPS];
- int cached_light[MAXLIGHTMAPS]; // values currently used in lightmap
- qboolean cached_dlight; // true if dynamic light in cache
- qboolean cached_lighthalf; // LordHavoc: to cause lightmap to be rerendered when lighthalf changes
- float cached_ambient; // LordHavoc: rerender lightmaps when r_ambient changes
- byte *samples; // [numstyles*surfsize]
-} msurface_t;
-
+ // avoid redundent addition of dlights
+ int lightframe;
+ // only render each surface once
+ int worldnodeframe;
+ // marked when surface is prepared for the frame
+ int insertframe;
+
+ // these cause lightmap updates if regenerated
+ // values currently used in lightmap
+ unsigned short cached_light[MAXLIGHTMAPS];
+ // if lightmap was lit by dynamic lights, force update on next frame
+ short cached_dlight;
+ // to cause lightmap to be rerendered when v_overbrightbits changes
+ short cached_lightscalebit;
+ // rerender lightmaps when r_ambient changes
+ float cached_ambient;
+}
+msurface_t;
+
+#define SHADERSTAGE_SKY 0
+#define SHADERSTAGE_NORMAL 1
+#define SHADERSTAGE_COUNT 2
+
+// change this stuff when real shaders are added
+typedef struct Cshader_s
+{
+ void (*shaderfunc[SHADERSTAGE_COUNT])(msurface_t *firstsurf);
+ // list of surfaces using this shader (used during surface rendering)
+ msurface_t *chain;
+}
+Cshader_t;
+
+extern Cshader_t Cshader_wall_vertex;
+extern Cshader_t Cshader_wall_lightmap;
+extern Cshader_t Cshader_wall_fullbright;
+extern Cshader_t Cshader_water;
+extern Cshader_t Cshader_sky;
+
+// warning: if this is changed, references must be updated in cpu_* assembly files