// plane_t structure
-// !!! if this is changed, it must be changed in asm_i386.h too !!!
typedef struct mplane_s
{
vec3_t normal;
float dist;
byte type; // for texture axis selection and fast side tests
-// byte signbits; // signx + signy<<1 + signz<<2
-// byte pad[2];
byte pad[3];
int (*BoxOnPlaneSideFunc) (vec3_t emins, vec3_t emaxs, struct mplane_s *p);
} mplane_t;
int flags;
} mtexinfo_t;
-// LordHavoc: was 7, I added two more for raw lightmap coordinates
-#define VERTEXSIZE 9
+// LordHavoc: was 7, I added one more for raw lightmap position
+#define VERTEXSIZE 8
typedef struct glpoly_s
{
short texturemins[2];
short extents[2];
- int light_s, light_t; // gl lightmap coordinates
+ short light_s, light_t; // gl lightmap coordinates
glpoly_t *polys; // multiple if warped
struct msurface_s *texturechain;
int dlightframe;
int dlightbits[8];
+ int lightframe; // avoid redundent addition of dlights
+
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
+ unsigned short cached_light[MAXLIGHTMAPS]; // values currently used in lightmap
+ int 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;
+// warning: if this is changed, references must be updated in cpu_* assembly files
typedef struct mnode_s
{
// common with leaf
int contents; // 0, to differentiate from leafs
int visframe; // node needs to be traversed if current
+ int lightframe; // LordHavoc: to avoid redundent parent chasing in R_VisMarkLights
float minmaxs[6]; // for bounding box culling
struct mnode_s *parent;
+ // LordHavoc: node based dynamic lighting
+ int dlightbits[8];
+ int dlightframe;
+
// node specific
mplane_t *plane;
struct mnode_s *children[2];
// common with node
int contents; // wil be a negative contents number
int visframe; // node needs to be traversed if current
+ int lightframe; // LordHavoc: to avoid redundent parent chasing in R_VisMarkLights
float minmaxs[6]; // for bounding box culling
struct mnode_s *parent;
+ // LordHavoc: node based dynamic lighting
+ int dlightbits[8];
+ int dlightframe;
+
// leaf specific
byte *compressed_vis;
efrag_t *efrags;
byte ambient_sound_level[NUM_AMBIENTS];
} mleaf_t;
-// !!! if this is changed, it must be changed in asm_i386.h too !!!
typedef struct
{
dclipnode_t *clipnodes;