r_stat_bloom,
r_stat_bloom_copypixels,
r_stat_bloom_drawpixels,
+ r_stat_rendertargets_used,
+ r_stat_rendertargets_pixels,
r_stat_indexbufferuploadcount,
r_stat_indexbufferuploadsize,
r_stat_vertexbufferuploadcount,
r_stat_bufferdatasize_index16,
r_stat_bufferdatasize_index32,
r_stat_bufferdatasize_uniform,
- r_stat_animcache_vertexmesh_count,
- r_stat_animcache_vertexmesh_vertices,
- r_stat_animcache_vertexmesh_maxvertices,
r_stat_animcache_skeletal_count,
r_stat_animcache_skeletal_bones,
r_stat_animcache_skeletal_maxbones,
r_stat_batch_dynamic_surfaces_because_tcmod_turbulent,
r_stat_batch_dynamic_vertices_because_tcmod_turbulent,
r_stat_batch_dynamic_triangles_because_tcmod_turbulent,
- r_stat_batch_dynamic_batches_because_interleavedarrays,
- r_stat_batch_dynamic_surfaces_because_interleavedarrays,
- r_stat_batch_dynamic_vertices_because_interleavedarrays,
- r_stat_batch_dynamic_triangles_because_interleavedarrays,
r_stat_batch_dynamic_batches_because_nogaps,
r_stat_batch_dynamic_surfaces_because_nogaps,
r_stat_batch_dynamic_vertices_because_nogaps,
typedef struct rtlight_s
{
- // shadow volumes are done entirely in model space, so there are no matrices for dealing with them... they just use the origin
-
// note that the world to light matrices are inversely scaled (divided) by lightradius
// core properties
int flags;
// generated properties
- /// used only for shadow volumes
+ /// used only for casting shadows
vec3_t shadoworigin;
/// culling
vec3_t cullmins;
int shadowmapatlasposition[2];
/// size of one side of this light in the shadowmap atlas (for omnidirectional shadowmaps this is the min corner of a 2x3 arrangement, or a 4x3 arrangement in the case of noselfshadow entities being present)
int shadowmapatlassidesize;
- /// premade shadow volumes to render for world entity
- shadowmesh_t *static_meshchain_shadow_zpass;
- shadowmesh_t *static_meshchain_shadow_zfail;
+ /// optimized and culled mesh to render for world entity shadows
shadowmesh_t *static_meshchain_shadow_shadowmap;
/// used for visibility testing (more exact than bbox)
int static_numleafs;
}
frameblend_t;
-// LordHavoc: this struct is intended for the renderer but some fields are
+// LadyHavoc: this struct is intended for the renderer but some fields are
// used by the client.
//
// The renderer should not rely on any changes to this struct to be persistent
float *animcache_tvector3f;
r_meshbuffer_t *animcache_tvector3f_vertexbuffer;
int animcache_tvector3f_bufferoffset;
- // interleaved arrays for rendering and dynamic vertex buffers for them
- r_vertexmesh_t *animcache_vertexmesh;
- r_meshbuffer_t *animcache_vertexmesh_vertexbuffer;
- int animcache_vertexmesh_bufferoffset;
// gpu-skinning shader needs transforms in a certain format, we have to
// upload this to a uniform buffer for the shader to use, and also keep a
// backup copy in system memory for the dynamic batch fallback code
// -1 = use normal cd track
int forcetrack;
qfile_t *demofile;
- // realtime at second frame of timedemo (LordHavoc: changed to double)
+ // realtime at second frame of timedemo (LadyHavoc: changed to double)
double td_starttime;
int td_frames; // total frames parsed
double td_onesecondnexttime;
double td_onesecondmaxfps;
double td_onesecondavgfps;
int td_onesecondavgcount;
- // LordHavoc: pausedemo
+ // LadyHavoc: pausedemo
qboolean demopaused;
// sound mixer statistics for showsound display
vec3_t frustumcorner[4];
// if turned off it renders an ortho view
int useperspective;
+ // allows visibility culling based on the view origin (e.g. pvs and R_CanSeeBox)
+ // this is turned off by:
+ // r_trippy
+ // !r_refdef.view.useperspective
+ // (sometimes) r_refdef.view.useclipplane
+ int usevieworiginculling;
float ortho_x, ortho_y;
// screen area to render in
// whether to draw world lights realtime, dlights realtime, and their shadows
float polygonfactor;
float polygonoffset;
- float shadowpolygonfactor;
- float shadowpolygonoffset;
// how long R_RenderView took on the previous frame
double lastdrawscreentime;