ref_gu: reducing the number of calls to CL_GetEntityLight and CL_GetDynamicLight

This commit is contained in:
Crow-bar
2022-06-10 10:49:07 +03:00
parent f2d59eb7f8
commit 12889494e0
4 changed files with 7 additions and 21 deletions
+1 -3
View File
@@ -887,10 +887,8 @@ void R_AliasDynamicLight( cl_entity_t *ent, alight_t *plight )
// scale lightdir by light intentsity
VectorScale( lightDir, total, lightDir );
for( lnum = 0; lnum < MAX_DLIGHTS; lnum++ )
for( lnum = 0, dl = gEngfuncs.GetDynamicLight( 0 ); lnum < MAX_DLIGHTS; lnum++, dl++ )
{
dl = gEngfuncs.GetDynamicLight( lnum );
if( dl->die < g_alias.time || !r_dynamic->value )
continue;
+2 -6
View File
@@ -155,10 +155,8 @@ void R_PushDlights( void )
RI.currententity = gEngfuncs.GetEntityByIndex( 0 );
RI.currentmodel = RI.currententity->model;
for( i = 0; i < MAX_DLIGHTS; i++, l++ )
for( i = 0, l = gEngfuncs.GetDynamicLight( 0 ); i < MAX_DLIGHTS; i++, l++ )
{
l = gEngfuncs.GetDynamicLight( i );
if( l->die < gpGlobals->time || !l->radius )
continue;
@@ -179,10 +177,8 @@ int R_CountDlights( void )
dlight_t *l;
int i, numDlights = 0;
for( i = 0; i < MAX_DLIGHTS; i++ )
for( i = 0, l = gEngfuncs.GetDynamicLight( 0 ); i < MAX_DLIGHTS; i++, l++ )
{
l = gEngfuncs.GetDynamicLight( i );
if( l->die < gpGlobals->time || !l->radius )
continue;
+2 -6
View File
@@ -558,13 +558,11 @@ void R_AddDynamicLights( msurface_t *surf )
else sample_frac = LM_SAMPLE_SIZE;
}
for( lnum = 0; lnum < MAX_DLIGHTS; lnum++ )
for( lnum = 0, dl = gEngfuncs.GetDynamicLight( 0 ); lnum < MAX_DLIGHTS; lnum++, dl++ )
{
if( !FBitSet( surf->dlightbits, BIT( lnum )))
continue; // not lit by this light
dl = gEngfuncs.GetDynamicLight( lnum );
// transform light origin to local bmodel space
if( !tr.modelviewIdentity )
Matrix4x4_VectorITransform( RI.objectMatrix, dl->origin, origin_l );
@@ -1642,10 +1640,8 @@ void R_DrawBrushModel( cl_entity_t *e )
else VectorSubtract( RI.cullorigin, e->origin, tr.modelorg );
// calculate dynamic lighting for bmodel
for( k = 0; k < MAX_DLIGHTS; k++ )
for( k = 0, l = gEngfuncs.GetDynamicLight( 0 ); k < MAX_DLIGHTS; k++, l++ )
{
l = gEngfuncs.GetDynamicLight( k );
if( l->die < gpGlobals->time || !l->radius )
continue;
+2 -6
View File
@@ -1486,10 +1486,8 @@ void R_StudioDynamicLight( cl_entity_t *ent, alight_t *plight )
// scale lightdir by light intentsity
VectorScale( lightDir, total, lightDir );
for( lnum = 0; lnum < MAX_DLIGHTS; lnum++ )
for( lnum = 0, dl = gEngfuncs.GetDynamicLight( 0 ); lnum < MAX_DLIGHTS; lnum++, dl++ )
{
dl = gEngfuncs.GetDynamicLight( lnum );
if( dl->die < g_studio.time || !r_dynamic->value )
continue;
@@ -1569,10 +1567,8 @@ void R_StudioEntityLight( alight_t *lightinfo )
dist2 = 1000000.0f;
k = 0;
for( lnum = 0; lnum < MAX_ELIGHTS; lnum++ )
for( lnum = 0, el = gEngfuncs.GetEntityLight( 0 ); lnum < MAX_ELIGHTS; lnum++, el++ )
{
el = gEngfuncs.GetEntityLight( lnum );
if( el->die < g_studio.time || el->radius <= 0.0f )
continue;