From bb4e64ea58c3e47e5d0f3cf4cd7f1d136e7fb458 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sat, 2 Nov 2024 22:51:57 +0300 Subject: [PATCH] ref: gl: migrate to new way to get lightstyles and dlights --- ref/gl/gl_alias.c | 3 +-- ref/gl/gl_local.h | 3 +++ ref/gl/gl_opengl.c | 3 +++ ref/gl/gl_rlight.c | 12 ++++++------ ref/gl/gl_rsurf.c | 4 ++-- ref/gl/gl_studio.c | 5 ++--- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/ref/gl/gl_alias.c b/ref/gl/gl_alias.c index a675e0f1..5efc40f7 100644 --- a/ref/gl/gl_alias.c +++ b/ref/gl/gl_alias.c @@ -578,7 +578,6 @@ static void R_AliasDynamicLight( cl_entity_t *ent, alight_t *plight ) float add, radius, total; colorVec light; uint lnum; - dlight_t *dl; if( !plight || !ent ) return; @@ -694,7 +693,7 @@ static void R_AliasDynamicLight( cl_entity_t *ent, alight_t *plight ) for( lnum = 0; lnum < MAX_DLIGHTS; lnum++ ) { - dl = gEngfuncs.GetDynamicLight( lnum ); + const dlight_t *dl = &tr.dlights[lnum]; if( dl->die < g_alias.time || !r_dynamic->value ) continue; diff --git a/ref/gl/gl_local.h b/ref/gl/gl_local.h index 1ca813b6..fbe7ee8c 100644 --- a/ref/gl/gl_local.h +++ b/ref/gl/gl_local.h @@ -257,6 +257,9 @@ typedef struct movevars_t *movevars; color24 *palette; cl_entity_t *viewent; + lightstyle_t *lightstyles; + dlight_t *dlights; + dlight_t *elights; byte *texgammatable; uint *lightgammatable; uint *lineargammatable; diff --git a/ref/gl/gl_opengl.c b/ref/gl/gl_opengl.c index 8e739815..fdfff9f0 100644 --- a/ref/gl/gl_opengl.c +++ b/ref/gl/gl_opengl.c @@ -1304,6 +1304,9 @@ qboolean R_Init( void ) tr.lightgammatable = (uint *)ENGINE_GET_PARM( PARM_GET_LIGHTGAMMATABLE_PTR ); tr.screengammatable = (uint *)ENGINE_GET_PARM( PARM_GET_SCREENGAMMATABLE_PTR ); tr.lineargammatable = (uint *)ENGINE_GET_PARM( PARM_GET_LINEARGAMMATABLE_PTR ); + tr.lightstyles = (lightstyle_t *)ENGINE_GET_PARM( PARM_GET_LIGHTSTYLES_PTR ); + tr.dlights = (dlight_t *)ENGINE_GET_PARM( PARM_GET_DLIGHTS_PTR ); + tr.elights = (dlight_t *)ENGINE_GET_PARM( PARM_GET_ELIGHTS_PTR ); GL_SetDefaults(); R_CheckVBO(); diff --git a/ref/gl/gl_rlight.c b/ref/gl/gl_rlight.c index c17b779b..a60a6540 100644 --- a/ref/gl/gl_rlight.c +++ b/ref/gl/gl_rlight.c @@ -34,10 +34,8 @@ CL_RunLightStyles */ void CL_RunLightStyles( void ) { - int i, k, flight, clight; - float l, lerpfrac, backlerp; - float frametime = (gp_cl->time - gp_cl->oldtime); - lightstyle_t *ls; + int i; + float frametime = (gp_cl->time - gp_cl->oldtime); if( !WORLDMODEL ) return; @@ -53,7 +51,9 @@ void CL_RunLightStyles( void ) // 'm' is normal light, 'a' is no light, 'z' is double bright for( i = 0; i < MAX_LIGHTSTYLES; i++ ) { - ls = gEngfuncs.GetLightStyle( i ); + int k, flight, clight; + float l, lerpfrac, backlerp; + lightstyle_t *ls = &tr.lightstyles[i]; if( !gp_cl->paused && frametime <= 0.1f ) ls->time += frametime; // evaluate local time @@ -161,7 +161,7 @@ void R_PushDlights( void ) for( i = 0; i < MAX_DLIGHTS; i++ ) { - dlight_t *l = gEngfuncs.GetDynamicLight( i ); + dlight_t *l = &tr.dlights[i]; if( l->die < gp_cl->time || !l->radius ) continue; diff --git a/ref/gl/gl_rsurf.c b/ref/gl/gl_rsurf.c index cebfeaf0..045756f3 100644 --- a/ref/gl/gl_rsurf.c +++ b/ref/gl/gl_rsurf.c @@ -553,7 +553,7 @@ static void R_AddDynamicLights( const msurface_t *surf ) if( !FBitSet( surf->dlightbits, BIT( lnum ))) continue; // not lit by this light - dl = gEngfuncs.GetDynamicLight( lnum ); + dl = &tr.dlights[lnum]; // transform light origin to local bmodel space if( !tr.modelviewIdentity ) @@ -1659,7 +1659,7 @@ void R_DrawBrushModel( cl_entity_t *e ) // calculate dynamic lighting for bmodel for( k = 0; k < MAX_DLIGHTS; k++ ) { - l = gEngfuncs.GetDynamicLight( k ); + l = &tr.dlights[k]; if( l->die < gp_cl->time || !l->radius ) continue; diff --git a/ref/gl/gl_studio.c b/ref/gl/gl_studio.c index a07c4c3e..ec978955 100644 --- a/ref/gl/gl_studio.c +++ b/ref/gl/gl_studio.c @@ -1450,7 +1450,7 @@ static void R_StudioDynamicLight( cl_entity_t *ent, alight_t *plight ) for( lnum = 0; lnum < MAX_DLIGHTS; lnum++ ) { - dl = gEngfuncs.GetDynamicLight( lnum ); + dl = &tr.dlights[lnum]; if( dl->die < g_studio.time || !r_dynamic->value ) continue; @@ -1517,7 +1517,6 @@ static void R_StudioEntityLight( alight_t *lightinfo ) float lstrength[MAX_LOCALLIGHTS]; cl_entity_t *ent = RI.currententity; vec3_t mid, origin, pos; - dlight_t *el; g_studio.numlocallights = 0; @@ -1533,7 +1532,7 @@ static void R_StudioEntityLight( alight_t *lightinfo ) for( lnum = 0; lnum < MAX_ELIGHTS; lnum++ ) { - el = gEngfuncs.GetEntityLight( lnum ); + dlight_t *el = &tr.elights[lnum]; if( el->die < g_studio.time || el->radius <= 0.0f ) continue;