From 74869c8f5d94d98b07d74a363df3f98157ac907d Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Tue, 14 Apr 2026 21:46:42 +0500 Subject: [PATCH] ref: make R_GatherPlayerLight shared between renderers --- ref/common/ref_common.h | 1 + ref/common/ref_light.c | 14 ++++++++++++++ ref/gl/gl_local.h | 1 - ref/gl/gl_rmain.c | 2 +- ref/gl/gl_studio.c | 16 +--------------- ref/soft/r_local.h | 1 - ref/soft/r_main.c | 2 +- ref/soft/r_studio.c | 16 +--------------- 8 files changed, 19 insertions(+), 34 deletions(-) diff --git a/ref/common/ref_common.h b/ref/common/ref_common.h index b7f97508..992d4866 100644 --- a/ref/common/ref_common.h +++ b/ref/common/ref_common.h @@ -81,6 +81,7 @@ void R_PushDlightsForBmodel( model_t *model, int framecount, const matrix4x4 obj int R_PushDlights( model_t *model, int framecount ); colorVec R_LightVec( const vec3_t start, const vec3_t end, vec3_t lspot, vec3_t lvec ); colorVec R_LightPoint( const vec3_t p0 ); +void R_GatherPlayerLight( cl_entity_t *view ); void R_UpdateSurfaceCachedLight( msurface_t *surf ); // diff --git a/ref/common/ref_light.c b/ref/common/ref_light.c index 66209dd2..4f262d13 100644 --- a/ref/common/ref_light.c +++ b/ref/common/ref_light.c @@ -475,6 +475,20 @@ colorVec R_LightPoint( const vec3_t p0 ) return R_LightVec( p0, p1, NULL, NULL ); } +/* +================= +R_GatherPlayerLight + +get light level of an entity and set it as player's light level +================= +*/ +void R_GatherPlayerLight( cl_entity_t *view ) +{ + colorVec c = R_LightPoint( view->origin ); + + gEngfuncs.SetLocalLightLevel(( c.r + c.g + c.b ) / 3 ); +} + /* ================ R_SetCacheState diff --git a/ref/gl/gl_local.h b/ref/gl/gl_local.h index 57a40a8d..7a25a95a 100644 --- a/ref/gl/gl_local.h +++ b/ref/gl/gl_local.h @@ -409,7 +409,6 @@ struct mstudiotex_s *R_StudioGetTexture( cl_entity_t *e ); int R_GetEntityRenderMode( cl_entity_t *ent ); void R_DrawStudioModel( cl_entity_t *e ); player_info_t *pfnPlayerInfo( int index ); -void R_GatherPlayerLight( void ); float R_StudioEstimateFrame( cl_entity_t *e, mstudioseqdesc_t *pseqdesc, double time ); void R_StudioLerpMovement( cl_entity_t *e, double time, vec3_t origin, vec3_t angles ); void R_StudioResetPlayerModels( void ); diff --git a/ref/gl/gl_rmain.c b/ref/gl/gl_rmain.c index fcfcf638..8e058c24 100644 --- a/ref/gl/gl_rmain.c +++ b/ref/gl/gl_rmain.c @@ -1105,7 +1105,7 @@ void R_RenderFrame( const ref_viewpass_t *rvp ) if( gEngfuncs.drawFuncs->GL_RenderFrame( rvp )) { - R_GatherPlayerLight(); + R_GatherPlayerLight( tr.viewent ); tr.realframecount++; tr.fResetVis = true; return; diff --git a/ref/gl/gl_studio.c b/ref/gl/gl_studio.c index f2478cfe..c68760c3 100644 --- a/ref/gl/gl_studio.c +++ b/ref/gl/gl_studio.c @@ -3594,20 +3594,6 @@ void R_RunViewmodelEvents( void ) R_StudioDrawModelInternal( RI.currententity, STUDIO_EVENTS ); } -/* -================= -R_GatherPlayerLight -================= -*/ -void R_GatherPlayerLight( void ) -{ - cl_entity_t *view = tr.viewent; - colorVec c; - - c = R_LightPoint( view->origin ); - gEngfuncs.SetLocalLightLevel( ( c.r + c.g + c.b ) / 3 ); -} - /* ================= R_DrawViewModel @@ -3617,7 +3603,7 @@ void R_DrawViewModel( void ) { cl_entity_t *view = tr.viewent; - R_GatherPlayerLight(); + R_GatherPlayerLight( view ); if( r_drawviewmodel->value == 0 ) return; diff --git a/ref/soft/r_local.h b/ref/soft/r_local.h index 15bdecd3..9103c4ba 100644 --- a/ref/soft/r_local.h +++ b/ref/soft/r_local.h @@ -399,7 +399,6 @@ struct mstudiotex_s *R_StudioGetTexture( cl_entity_t *e ); int R_GetEntityRenderMode( cl_entity_t *ent ); void R_DrawStudioModel( cl_entity_t *e ); player_info_t *pfnPlayerInfo( int index ); -void R_GatherPlayerLight( void ); float R_StudioEstimateFrame( cl_entity_t *e, mstudioseqdesc_t *pseqdesc, double time ); void R_StudioLerpMovement( cl_entity_t *e, double time, vec3_t origin, vec3_t angles ); void R_StudioResetPlayerModels( void ); diff --git a/ref/soft/r_main.c b/ref/soft/r_main.c index ebae4757..6f75ac70 100644 --- a/ref/soft/r_main.c +++ b/ref/soft/r_main.c @@ -1172,7 +1172,7 @@ void GAME_EXPORT R_RenderFrame( const ref_viewpass_t *rvp ) if( gEngfuncs.drawFuncs->GL_RenderFrame( rvp )) { - // R_GatherPlayerLight(); + // R_GatherPlayerLight( tr.viewent ); tr.realframecount++; tr.fResetVis = true; return; diff --git a/ref/soft/r_studio.c b/ref/soft/r_studio.c index ef26013c..0827165c 100644 --- a/ref/soft/r_studio.c +++ b/ref/soft/r_studio.c @@ -3125,20 +3125,6 @@ void R_RunViewmodelEvents( void ) R_StudioDrawModelInternal( RI.currententity, STUDIO_EVENTS ); } -/* -================= -R_GatherPlayerLight -================= -*/ -void R_GatherPlayerLight( void ) -{ - cl_entity_t *view = tr.viewent; - colorVec c; - - c = R_LightPoint( view->origin ); - gEngfuncs.SetLocalLightLevel(( c.r + c.g + c.b ) / 3 ); -} - /* ================= R_DrawViewModel @@ -3148,7 +3134,7 @@ void R_DrawViewModel( void ) { cl_entity_t *view = tr.viewent; - R_GatherPlayerLight(); + R_GatherPlayerLight( view ); if( r_drawviewmodel->value == 0 ) return;