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
// rtlights use these colors for the materials on this entity
float render_rtlight_diffuse[3];
float render_rtlight_specular[3];
- // ignore lightmap and use lightgrid on this entity (e.g. FULLBRIGHT)
+ // ignore lightmap and use fixed lighting settings on this entity (e.g. FULLBRIGHT)
qboolean render_modellight_forced;
// do not process per pixel lights on this entity at all (like MATERIALFLAG_NORTLIGHT)
qboolean render_rtlight_disabled;
+ // use the 3D lightmap from q3bsp on this entity
+ qboolean render_lightgrid;
// storage of decals on this entity
// (note: if allowdecals is set, be sure to call R_DecalSystem_Reset on removal!)
}
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);
void V_CalcViewBlend(void);
void V_CalcRefdefUsing (const matrix4x4_t *entrendermatrix, const vec3_t clviewangles, qboolean teleported, qboolean clonground, qboolean clcmdjump, float clstatsviewheight, qboolean cldead, qboolean clintermission, const vec3_t clvelocity);
void V_CalcRefdef(void);
+void V_MakeViewIsometric(void);
+void V_MakeViewIsometric(void);
+void V_StartPitchDrift(void);
void CL_Locs_Reload_f(cmd_state_t *cmd);
#endif