#define SURF_DRAWFULLBRIGHT 0x200
#define SURF_LIGHTBOTHSIDES 0x400
#define SURF_CLIPSOLID 0x800 // this polygon can obscure other polygons
+#define SURF_SHADOWCAST 0x1000 // this polygon can cast stencil shadows
+#define SURF_SHADOWLIGHT 0x2000 // this polygon can be lit by stencil shadowing
typedef struct
{
float *verts;
float *normals;
int *lightmapoffsets;
- float *st;
- float *uv;
- float *ab;
+ float *str;
+ float *uvw;
+ float *abc;
int *index;
int *triangleneighbors;
}
}
mportal_t;
-typedef struct mlightshadowvolumemesh_s
+typedef struct svbspmesh_s
{
- struct mlightshadowvolumemesh_s *next;
- int numverts;
- int numtris;
- float *vertex;
+ struct svbspmesh_s *next;
+ int numverts, maxverts;
+ int numtriangles, maxtriangles;
+ float *verts;
+ int *elements;
}
-mlightshadowvolumemesh_t;
+svbspmesh_t;
typedef struct mlight_s
{
// surfaces this shines on
int numsurfaces;
msurface_t **surfaces;
+ // lit area
+ vec3_t mins, maxs;
// precomputed shadow volume meshs
- mlightshadowvolumemesh_t *shadowvolumemeshs;
- // used only for loading calculations, number of leafs this shines on
- //int numleafs;
+ //svbspmesh_t *shadowvolume;
+ //vec3_t shadowvolumemins, shadowvolumemaxs;
+ shadowmesh_t *shadowvolume;
}
mlight_t;