From 3bed6ed207e4f494d3f02c3383ce965084454862 Mon Sep 17 00:00:00 2001 From: slipher Date: Tue, 5 May 2026 17:08:26 -0500 Subject: [PATCH 1/2] Remove unused ColorGlobal uniform classes --- src/engine/renderer/gl_shader.h | 39 --------------------------------- 1 file changed, 39 deletions(-) diff --git a/src/engine/renderer/gl_shader.h b/src/engine/renderer/gl_shader.h index a325dc9935..e39ee4918b 100644 --- a/src/engine/renderer/gl_shader.h +++ b/src/engine/renderer/gl_shader.h @@ -1980,45 +1980,6 @@ template void SetUniform_Color( Shader* shader, const Color::Co } } -class u_ColorGlobal_Float : - GLUniform4f -{ -public: - u_ColorGlobal_Float( GLShader *shader ) : - GLUniform4f( shader, "u_ColorGlobal", LEGACY ) - { - } - - void SetUniform_ColorGlobal_Float( const Color::Color& color ) - { - this->SetValue( color.ToArray() ); - } -}; - -class u_ColorGlobal_Uint : - GLUniform1ui { - public: - u_ColorGlobal_Uint( GLShader* shader ) : - GLUniform1ui( shader, "u_ColorGlobal", PUSH ) { - } - - void SetUniform_ColorGlobal_Uint( const Color::Color& color ) { - this->SetValue( packUnorm4x8( color.ToArray() ) ); - } -}; - -template void SetUniform_ColorGlobal( Shader* shader, const Color::Color& color ) -{ - if( glConfig.gpuShader4Available ) - { - shader->SetUniform_ColorGlobal_Uint( color ); - } - else - { - shader->SetUniform_ColorGlobal_Float( color ); - } -} - class u_Frame : GLUniform1ui { public: From 89a54cead9d9c237faa28a8c7034b8462f2ce0aa Mon Sep 17 00:00:00 2001 From: slipher Date: Tue, 5 May 2026 17:16:41 -0500 Subject: [PATCH 2/2] Refactor SetUniform_Color* fallbacks as classes Get rid of SetUniform_Color and SetUniform_ColorModulateColorGen template functions and make them member functions of classes which inherit the two variants of each uniform. --- src/engine/renderer/gl_shader.cpp | 15 +++---- src/engine/renderer/gl_shader.h | 69 +++++++++++++++++------------- src/engine/renderer/tr_backend.cpp | 46 ++++++++++---------- src/engine/renderer/tr_shade.cpp | 20 ++++----- 4 files changed, 77 insertions(+), 73 deletions(-) diff --git a/src/engine/renderer/gl_shader.cpp b/src/engine/renderer/gl_shader.cpp index 64b942fae8..2bcb48360b 100644 --- a/src/engine/renderer/gl_shader.cpp +++ b/src/engine/renderer/gl_shader.cpp @@ -2446,10 +2446,8 @@ GLShader_generic::GLShader_generic() : u_AlphaThreshold( this ), u_ModelMatrix( this ), u_ModelViewProjectionMatrix( this ), - u_ColorModulateColorGen_Float( this ), - u_ColorModulateColorGen_Uint( this ), - u_Color_Float( this ), - u_Color_Uint( this ), + u_ColorModulateColorGen_Dispatch( this ), + u_Color_Dispatch( this ), u_Bones( this ), u_VertexInterpolation( this ), u_DepthScale( this ), @@ -2510,10 +2508,8 @@ GLShader_lightMapping::GLShader_lightMapping() : u_LightTiles( this ), u_TextureMatrix( this ), u_SpecularExponent( this ), - u_ColorModulateColorGen_Float( this ), - u_ColorModulateColorGen_Uint( this ), - u_Color_Float( this ), - u_Color_Uint( this ), + u_ColorModulateColorGen_Dispatch( this ), + u_Color_Dispatch( this ), u_AlphaThreshold( this ), u_ViewOrigin( this ), u_ModelMatrix( this ), @@ -2695,8 +2691,7 @@ GLShader_fog::GLShader_fog() : u_DepthMap( this ), u_ModelViewProjectionMatrix( this ), u_UnprojectMatrix( this ), - u_Color_Float( this ), - u_Color_Uint( this ), + u_Color_Dispatch( this ), u_ViewOrigin( this ), u_FogGradient( this ), GLCompileMacro_OUTSIDE_FOG( this ) diff --git a/src/engine/renderer/gl_shader.h b/src/engine/renderer/gl_shader.h index e39ee4918b..a4d477f60f 100644 --- a/src/engine/renderer/gl_shader.h +++ b/src/engine/renderer/gl_shader.h @@ -1968,17 +1968,25 @@ class u_Color_Uint : } }; -template void SetUniform_Color( Shader* shader, const Color::Color& color ) +class u_Color_Dispatch : + u_Color_Uint, u_Color_Float { - if( glConfig.gpuShader4Available ) - { - shader->SetUniform_Color_Uint( color ); - } - else +public: + u_Color_Dispatch( GLShader *shader ) : + u_Color_Uint( shader ), u_Color_Float( shader ) {} + + void SetUniform_Color( const Color::Color &color ) { - shader->SetUniform_Color_Float( color ); + if ( glConfig.gpuShader4Available ) + { + SetUniform_Color_Uint( color ); + } + else + { + SetUniform_Color_Float( color ); + } } -} +}; class u_Frame : GLUniform1ui { @@ -2621,21 +2629,27 @@ class u_ColorModulateColorGen_Uint : } }; -template void SetUniform_ColorModulateColorGen( - Shader* shader, - const colorGen_t colorGen, - const alphaGen_t alphaGen, - const bool useMapLightFactor = false ) +class u_ColorModulateColorGen_Dispatch : + u_ColorModulateColorGen_Uint, u_ColorModulateColorGen_Float { - if( glConfig.gpuShader4Available ) - { - shader->SetUniform_ColorModulateColorGen_Uint( colorGen, alphaGen, useMapLightFactor ); - } - else +public: + u_ColorModulateColorGen_Dispatch( GLShader *shader ) : + u_ColorModulateColorGen_Uint( shader ), u_ColorModulateColorGen_Float( shader ) {} + + void SetUniform_ColorModulateColorGen( + colorGen_t colorGen, alphaGen_t alphaGen, bool useMapLightFactor = false ) { - shader->SetUniform_ColorModulateColorGen_Float( colorGen, alphaGen, useMapLightFactor ); + if ( glConfig.gpuShader4Available ) + { + SetUniform_ColorModulateColorGen_Uint( colorGen, alphaGen, useMapLightFactor ); + } + else + { + SetUniform_ColorModulateColorGen_Float( colorGen, alphaGen, useMapLightFactor ); + } } -} +}; + class u_DeformEnable : GLUniform1f { @@ -2900,10 +2914,8 @@ class GLShader_generic : public u_AlphaThreshold, public u_ModelMatrix, public u_ModelViewProjectionMatrix, - public u_ColorModulateColorGen_Float, - public u_ColorModulateColorGen_Uint, - public u_Color_Float, - public u_Color_Uint, + public u_ColorModulateColorGen_Dispatch, + public u_Color_Dispatch, public u_Bones, public u_VertexInterpolation, public u_DepthScale, @@ -2961,10 +2973,8 @@ class GLShader_lightMapping : public u_LightTiles, public u_TextureMatrix, public u_SpecularExponent, - public u_ColorModulateColorGen_Float, - public u_ColorModulateColorGen_Uint, - public u_Color_Float, - public u_Color_Uint, + public u_ColorModulateColorGen_Dispatch, + public u_Color_Dispatch, public u_AlphaThreshold, public u_ViewOrigin, public u_ModelMatrix, @@ -3126,8 +3136,7 @@ class GLShader_fog : public u_DepthMap, public u_ModelViewProjectionMatrix, public u_UnprojectMatrix, - public u_Color_Float, - public u_Color_Uint, + public u_Color_Dispatch, public u_ViewOrigin, public u_FogGradient, public GLCompileMacro_OUTSIDE_FOG diff --git a/src/engine/renderer/tr_backend.cpp b/src/engine/renderer/tr_backend.cpp index 3c66a2d249..b52a931c5d 100644 --- a/src/engine/renderer/tr_backend.cpp +++ b/src/engine/renderer/tr_backend.cpp @@ -1229,9 +1229,9 @@ void RB_RunVisTests( ) gl_genericShader->BindProgram(); gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE ); - SetUniform_Color( gl_genericShader, Color::White ); + gl_genericShader->SetUniform_Color( Color::White ); - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_CONST, alphaGen_t::AGEN_CONST ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_CONST, alphaGen_t::AGEN_CONST ); gl_genericShader->SetUniform_ModelMatrix( backEnd.orientation.transformMatrix ); gl_genericShader->SetUniform_ModelViewProjectionMatrix( glState.modelViewProjectionMatrix[ glState.stackIndex ] ); @@ -1785,8 +1785,8 @@ static void RB_RenderDebugUtils() // set uniforms gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE ); - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); - SetUniform_Color( gl_genericShader, Color::Color(0, 0, 0, 0) ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); + gl_genericShader->SetUniform_Color( Color::Color(0, 0, 0, 0) ); // bind u_ColorMap gl_genericShader->SetUniform_ColorMapBindless( @@ -1858,8 +1858,8 @@ static void RB_RenderDebugUtils() // set uniforms gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE ); - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); - SetUniform_Color( gl_genericShader, Color::Black ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); + gl_genericShader->SetUniform_Color( Color::Black ); // bind u_ColorMap gl_genericShader->SetUniform_ColorMapBindless( @@ -2140,8 +2140,8 @@ static void RB_RenderDebugUtils() // set uniforms gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE ); - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); - SetUniform_Color( gl_genericShader, Color::Black ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); + gl_genericShader->SetUniform_Color( Color::Black ); GL_State( GLS_DEFAULT ); GL_Cull( cullType_t::CT_TWO_SIDED ); @@ -2223,8 +2223,8 @@ static void RB_RenderDebugUtils() // set uniforms gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE ); - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_IDENTITY ); - SetUniform_Color( gl_genericShader, Color::Black ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_IDENTITY ); + gl_genericShader->SetUniform_Color( Color::Black ); GL_State( GLS_DEFAULT ); GL_Cull( cullType_t::CT_TWO_SIDED ); @@ -2329,7 +2329,7 @@ static void RB_RenderDebugUtils() // set uniforms gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE ); - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_CUSTOM_RGB, alphaGen_t::AGEN_CUSTOM ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_CUSTOM_RGB, alphaGen_t::AGEN_CUSTOM ); // bind u_ColorMap gl_genericShader->SetUniform_ColorMapBindless( @@ -2358,7 +2358,7 @@ static void RB_RenderDebugUtils() GL_Cull( cullType_t::CT_TWO_SIDED ); GL_State( GLS_DEPTHTEST_DISABLE ); - SetUniform_Color( gl_genericShader, Color::Black ); + gl_genericShader->SetUniform_Color( Color::Black ); w = 300; h = 300; @@ -2419,8 +2419,8 @@ static void RB_RenderDebugUtils() } // set uniforms - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); - SetUniform_Color( gl_genericShader, Color::Black ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); + gl_genericShader->SetUniform_Color( Color::Black ); GL_State( GLS_POLYMODE_LINE | GLS_DEPTHTEST_DISABLE ); GL_Cull( cullType_t::CT_TWO_SIDED ); @@ -2472,7 +2472,7 @@ static void RB_RenderDebugUtils() Tess_End(); - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_CUSTOM_RGB, alphaGen_t::AGEN_CUSTOM ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_CUSTOM_RGB, alphaGen_t::AGEN_CUSTOM ); } } // i == 1 else @@ -2507,15 +2507,15 @@ static void RB_RenderDebugUtils() } //if(node->shrinkedAABB) - // SetUniform_Color( gl_genericShader,colorBlue); + // gl_genericShader->SetUniform_Color(colorBlue); //else if ( node->visCounts[ tr.visIndex ] == tr.visCounts[ tr.visIndex ] ) { - SetUniform_Color( gl_genericShader, Color::Green ); + gl_genericShader->SetUniform_Color( Color::Green ); } else { - SetUniform_Color( gl_genericShader, Color::Red ); + gl_genericShader->SetUniform_Color( Color::Red ); } } else @@ -2527,11 +2527,11 @@ static void RB_RenderDebugUtils() if ( node->visCounts[ tr.visIndex ] == tr.visCounts[ tr.visIndex ] ) { - SetUniform_Color( gl_genericShader, Color::Yellow ); + gl_genericShader->SetUniform_Color( Color::Yellow ); } else { - SetUniform_Color( gl_genericShader, Color::Blue ); + gl_genericShader->SetUniform_Color( Color::Blue ); } } @@ -2628,8 +2628,8 @@ void DebugDrawBegin( debugDrawMode_t mode, float size ) { // set uniforms gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE ); - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); - SetUniform_Color( gl_genericShader, colorClear ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); + gl_genericShader->SetUniform_Color( colorClear ); // bind u_ColorMap gl_genericShader->SetUniform_ColorMapBindless( @@ -3787,7 +3787,7 @@ void RB_ShowImages() // set uniforms gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE ); - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX ); gl_genericShader->SetUniform_TextureMatrix( matrixIdentity ); GL_SelectTexture( 0 ); diff --git a/src/engine/renderer/tr_shade.cpp b/src/engine/renderer/tr_shade.cpp index 239a92932d..bc9af2df20 100644 --- a/src/engine/renderer/tr_shade.cpp +++ b/src/engine/renderer/tr_shade.cpp @@ -673,22 +673,22 @@ static void DrawTris() if ( r_showBatches->integer ) { - SetUniform_Color( gl_genericShader, Color::Color::Indexed( backEnd.pc.c_batches % 8 ) ); + gl_genericShader->SetUniform_Color( Color::Color::Indexed( backEnd.pc.c_batches % 8 ) ); } else if ( glState.currentVBO == tess.vbo ) { - SetUniform_Color( gl_genericShader, Color::Red ); + gl_genericShader->SetUniform_Color( Color::Red ); } else if ( glState.currentVBO ) { - SetUniform_Color( gl_genericShader, Color::Blue ); + gl_genericShader->SetUniform_Color( Color::Blue ); } else { - SetUniform_Color( gl_genericShader, Color::White ); + gl_genericShader->SetUniform_Color( Color::White ); } - SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_CONST, alphaGen_t::AGEN_CONST ); + gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_CONST, alphaGen_t::AGEN_CONST ); gl_genericShader->SetUniform_ModelMatrix( backEnd.orientation.transformMatrix ); gl_genericShader->SetUniform_ModelViewProjectionMatrix( glState.modelViewProjectionMatrix[ glState.stackIndex ] ); @@ -926,10 +926,10 @@ void Render_generic3D( shaderStage_t *pStage ) alphaGen_t alphaGen = SetAlphaGen( pStage ); const bool styleLightMap = pStage->type == stageType_t::ST_STYLELIGHTMAP || pStage->type == stageType_t::ST_STYLECOLORMAP; - SetUniform_ColorModulateColorGen( gl_genericShader, rgbGen, alphaGen, styleLightMap ); + gl_genericShader->SetUniform_ColorModulateColorGen( rgbGen, alphaGen, styleLightMap ); // u_Color - SetUniform_Color( gl_genericShader, tess.svars.color ); + gl_genericShader->SetUniform_Color( tess.svars.color ); gl_genericShader->SetUniform_ModelMatrix( backEnd.orientation.transformMatrix ); gl_genericShader->SetUniform_ModelViewProjectionMatrix( glState.modelViewProjectionMatrix[ glState.stackIndex ] ); @@ -1099,10 +1099,10 @@ void Render_lightMapping( shaderStage_t *pStage ) gl_lightMappingShader->SetUniform_Time( backEnd.refdef.floatTime - backEnd.currentEntity->e.shaderTime ); // u_ColorModulate - SetUniform_ColorModulateColorGen( gl_lightMappingShader, rgbGen, alphaGen, lightMode != lightMode_t::FULLBRIGHT ); + gl_lightMappingShader->SetUniform_ColorModulateColorGen( rgbGen, alphaGen, lightMode != lightMode_t::FULLBRIGHT ); // u_Color - SetUniform_Color( gl_lightMappingShader, tess.svars.color ); + gl_lightMappingShader->SetUniform_Color( tess.svars.color ); // u_AlphaThreshold gl_lightMappingShader->SetUniform_AlphaTest( pStage->stateBits ); @@ -1634,7 +1634,7 @@ void Render_fog( shaderStage_t *stage ) gl_fogShader->SetUniform_FogGradient( 1.0f / stage->shader->fogParms.depthForOpaque, stage->shader->fogParms.falloffExp ); gl_fogShader->SetUniform_ViewOrigin( backEnd.viewParms.orientation.origin ); - SetUniform_Color( gl_fogShader, stage->shader->fogParms.color ); + gl_fogShader->SetUniform_Color( stage->shader->fogParms.color ); switch ( stage->type ) {