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;
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;