int isstatic;
/// true if this is a compiled world light, cleared if the light changes
int compiled;
- /// the shadowing mode used to compile this light
- int shadowmode;
/// the size that this light should have (assuming no scene LOD kicking in to reduce it)
int shadowmapsidesize;
/// position of this light in the shadowmap atlas
}
ptype_t;
-typedef struct decal_s
-{
- // fields used by rendering: (44 bytes)
- unsigned short typeindex;
- unsigned short texnum;
- unsigned int decalsequence;
- vec3_t org;
- vec3_t normal;
- float size;
- float alpha; // 0-255
- unsigned char color[3];
- unsigned char unused1;
- int clusterindex; // cheap culling by pvs
-
- // fields not used by rendering: (36 bytes in 32bit, 40 bytes in 64bit)
- float time2; // used for decal fade
- unsigned int owner; // decal stuck to this entity
- dp_model_t *ownermodel; // model the decal is stuck to (used to make sure the entity is still alive)
- vec3_t relativeorigin; // decal at this location in entity's coordinate space
- vec3_t relativenormal; // decal oriented this way relative to entity's coordinate space
-}
-decal_t;
-
typedef struct particle_s
{
// for faster batch rendering, particles are rendered in groups by effect (resulting in less perfect sorting but far less state changes)
int max_lightstyle;
int max_brushmodel_entities;
int max_particles;
- int max_decals;
int max_showlmps;
entity_t *entities;
lightstyle_t *lightstyle;
int *brushmodel_entities;
particle_t *particles;
- decal_t *decals;
showlmp_t *showlmps;
int num_entities;
void CL_RotateMoves(const matrix4x4_t *m);
typedef enum meshname_e {
- MESH_DEBUG,
- MESH_CSQCPOLYGONS,
- MESH_PARTICLES,
+ MESH_SCENE, // CSQC R_PolygonBegin, potentially also engine particles and debug stuff
MESH_UI,
NUM_MESHENTITIES,
} meshname_t;
extern entity_t cl_meshentities[NUM_MESHENTITIES];
extern dp_model_t cl_meshentitymodels[NUM_MESHENTITIES];
extern const char *cl_meshentitynames[NUM_MESHENTITIES];
-#define CL_Mesh_Debug() (&cl_meshentitymodels[MESH_DEBUG])
-#define CL_Mesh_CSQC() (&cl_meshentitymodels[MESH_CSQCPOLYGONS])
-#define CL_Mesh_Particles() (&cl_meshentitymodels[MESH_PARTICLES])
+#define CL_Mesh_Scene() (&cl_meshentitymodels[MESH_SCENE])
#define CL_Mesh_UI() (&cl_meshentitymodels[MESH_UI])
-void CL_MeshEntities_AddToScene(void);
-void CL_MeshEntities_Reset(void);
+void CL_MeshEntities_Scene_Clear(void);
+void CL_MeshEntities_Scene_AddRenderEntity(void);
+void CL_MeshEntities_Scene_FinalizeRenderEntity(void);
void CL_UpdateEntityShading(void);
void CL_NewFrameReceived(int num);