mirror of
https://github.com/FWGS/xash3d-fwgs.git
synced 2026-08-11 14:42:05 +08:00
ref_gu: reducing the number of calls to CL_GetEntityLight and CL_GetDynamicLight
This commit is contained in:
+1
-3
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user