Skip to content

Commit 4e8068a

Browse files
committed
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.
1 parent 913c8a7 commit 4e8068a

4 files changed

Lines changed: 77 additions & 73 deletions

File tree

src/engine/renderer/gl_shader.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2446,10 +2446,8 @@ GLShader_generic::GLShader_generic() :
24462446
u_ModelMatrix( this ),
24472447
u_ModelViewProjectionMatrix( this ),
24482448
u_UnprojectMatrix( this ),
2449-
u_ColorModulateColorGen_Float( this ),
2450-
u_ColorModulateColorGen_Uint( this ),
2451-
u_Color_Float( this ),
2452-
u_Color_Uint( this ),
2449+
u_ColorModulateColorGen_Dispatch( this ),
2450+
u_Color_Dispatch( this ),
24532451
u_Bones( this ),
24542452
u_VertexInterpolation( this ),
24552453
u_InversePortalRange( this ),
@@ -2515,10 +2513,8 @@ GLShader_lightMapping::GLShader_lightMapping() :
25152513
u_LightTiles( this ),
25162514
u_TextureMatrix( this ),
25172515
u_SpecularExponent( this ),
2518-
u_ColorModulateColorGen_Float( this ),
2519-
u_ColorModulateColorGen_Uint( this ),
2520-
u_Color_Float( this ),
2521-
u_Color_Uint( this ),
2516+
u_ColorModulateColorGen_Dispatch( this ),
2517+
u_Color_Dispatch( this ),
25222518
u_AlphaThreshold( this ),
25232519
u_ViewOrigin( this ),
25242520
u_ModelMatrix( this ),
@@ -2700,8 +2696,7 @@ GLShader_fog::GLShader_fog() :
27002696
u_DepthMap( this ),
27012697
u_ModelViewProjectionMatrix( this ),
27022698
u_UnprojectMatrix( this ),
2703-
u_Color_Float( this ),
2704-
u_Color_Uint( this ),
2699+
u_Color_Dispatch( this ),
27052700
u_ViewOrigin( this ),
27062701
u_FogGradient( this ),
27072702
GLCompileMacro_OUTSIDE_FOG( this )

src/engine/renderer/gl_shader.h

Lines changed: 39 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1998,17 +1998,25 @@ class u_Color_Uint :
19981998
}
19991999
};
20002000

2001-
template<typename Shader> void SetUniform_Color( Shader* shader, const Color::Color& color )
2001+
class u_Color_Dispatch :
2002+
u_Color_Uint, u_Color_Float
20022003
{
2003-
if( glConfig.gpuShader4Available )
2004-
{
2005-
shader->SetUniform_Color_Uint( color );
2006-
}
2007-
else
2004+
public:
2005+
u_Color_Dispatch( GLShader *shader ) :
2006+
u_Color_Uint( shader ), u_Color_Float( shader ) {}
2007+
2008+
void SetUniform_Color( const Color::Color &color )
20082009
{
2009-
shader->SetUniform_Color_Float( color );
2010+
if ( glConfig.gpuShader4Available )
2011+
{
2012+
SetUniform_Color_Uint( color );
2013+
}
2014+
else
2015+
{
2016+
SetUniform_Color_Float( color );
2017+
}
20102018
}
2011-
}
2019+
};
20122020

20132021
class u_Frame :
20142022
GLUniform1ui {
@@ -2651,21 +2659,27 @@ class u_ColorModulateColorGen_Uint :
26512659
}
26522660
};
26532661

2654-
template<typename Shader> void SetUniform_ColorModulateColorGen(
2655-
Shader* shader,
2656-
const colorGen_t colorGen,
2657-
const alphaGen_t alphaGen,
2658-
const bool useMapLightFactor = false )
2662+
class u_ColorModulateColorGen_Dispatch :
2663+
u_ColorModulateColorGen_Uint, u_ColorModulateColorGen_Float
26592664
{
2660-
if( glConfig.gpuShader4Available )
2661-
{
2662-
shader->SetUniform_ColorModulateColorGen_Uint( colorGen, alphaGen, useMapLightFactor );
2663-
}
2664-
else
2665+
public:
2666+
u_ColorModulateColorGen_Dispatch( GLShader *shader ) :
2667+
u_ColorModulateColorGen_Uint( shader ), u_ColorModulateColorGen_Float( shader ) {}
2668+
2669+
void SetUniform_ColorModulateColorGen(
2670+
colorGen_t colorGen, alphaGen_t alphaGen, bool useMapLightFactor = false )
26652671
{
2666-
shader->SetUniform_ColorModulateColorGen_Float( colorGen, alphaGen, useMapLightFactor );
2672+
if ( glConfig.gpuShader4Available )
2673+
{
2674+
SetUniform_ColorModulateColorGen_Uint( colorGen, alphaGen, useMapLightFactor );
2675+
}
2676+
else
2677+
{
2678+
SetUniform_ColorModulateColorGen_Float( colorGen, alphaGen, useMapLightFactor );
2679+
}
26672680
}
2668-
}
2681+
};
2682+
26692683

26702684
class u_DeformEnable :
26712685
GLUniform1f {
@@ -2931,10 +2945,8 @@ class GLShader_generic :
29312945
public u_ModelMatrix,
29322946
public u_ModelViewProjectionMatrix,
29332947
public u_UnprojectMatrix,
2934-
public u_ColorModulateColorGen_Float,
2935-
public u_ColorModulateColorGen_Uint,
2936-
public u_Color_Float,
2937-
public u_Color_Uint,
2948+
public u_ColorModulateColorGen_Dispatch,
2949+
public u_Color_Dispatch,
29382950
public u_Bones,
29392951
public u_VertexInterpolation,
29402952
public u_InversePortalRange,
@@ -2997,10 +3009,8 @@ class GLShader_lightMapping :
29973009
public u_LightTiles,
29983010
public u_TextureMatrix,
29993011
public u_SpecularExponent,
3000-
public u_ColorModulateColorGen_Float,
3001-
public u_ColorModulateColorGen_Uint,
3002-
public u_Color_Float,
3003-
public u_Color_Uint,
3012+
public u_ColorModulateColorGen_Dispatch,
3013+
public u_Color_Dispatch,
30043014
public u_AlphaThreshold,
30053015
public u_ViewOrigin,
30063016
public u_ModelMatrix,
@@ -3162,8 +3172,7 @@ class GLShader_fog :
31623172
public u_DepthMap,
31633173
public u_ModelViewProjectionMatrix,
31643174
public u_UnprojectMatrix,
3165-
public u_Color_Float,
3166-
public u_Color_Uint,
3175+
public u_Color_Dispatch,
31673176
public u_ViewOrigin,
31683177
public u_FogGradient,
31693178
public GLCompileMacro_OUTSIDE_FOG

src/engine/renderer/tr_backend.cpp

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,9 +1229,9 @@ void RB_RunVisTests( )
12291229
gl_genericShader->BindProgram();
12301230

12311231
gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE );
1232-
SetUniform_Color( gl_genericShader, Color::White );
1232+
gl_genericShader->SetUniform_Color( Color::White );
12331233

1234-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_CONST, alphaGen_t::AGEN_CONST );
1234+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_CONST, alphaGen_t::AGEN_CONST );
12351235
gl_genericShader->SetUniform_ModelMatrix( backEnd.orientation.transformMatrix );
12361236
gl_genericShader->SetUniform_ModelViewProjectionMatrix( glState.modelViewProjectionMatrix[ glState.stackIndex ] );
12371237

@@ -1785,8 +1785,8 @@ static void RB_RenderDebugUtils()
17851785

17861786
// set uniforms
17871787
gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE );
1788-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
1789-
SetUniform_Color( gl_genericShader, Color::Color(0, 0, 0, 0) );
1788+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
1789+
gl_genericShader->SetUniform_Color( Color::Color(0, 0, 0, 0) );
17901790

17911791
// bind u_ColorMap
17921792
gl_genericShader->SetUniform_ColorMapBindless(
@@ -1858,8 +1858,8 @@ static void RB_RenderDebugUtils()
18581858

18591859
// set uniforms
18601860
gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE );
1861-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
1862-
SetUniform_Color( gl_genericShader, Color::Black );
1861+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
1862+
gl_genericShader->SetUniform_Color( Color::Black );
18631863

18641864
// bind u_ColorMap
18651865
gl_genericShader->SetUniform_ColorMapBindless(
@@ -2140,8 +2140,8 @@ static void RB_RenderDebugUtils()
21402140

21412141
// set uniforms
21422142
gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE );
2143-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
2144-
SetUniform_Color( gl_genericShader, Color::Black );
2143+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
2144+
gl_genericShader->SetUniform_Color( Color::Black );
21452145

21462146
GL_State( GLS_DEFAULT );
21472147
GL_Cull( cullType_t::CT_TWO_SIDED );
@@ -2223,8 +2223,8 @@ static void RB_RenderDebugUtils()
22232223

22242224
// set uniforms
22252225
gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE );
2226-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_IDENTITY );
2227-
SetUniform_Color( gl_genericShader, Color::Black );
2226+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_IDENTITY );
2227+
gl_genericShader->SetUniform_Color( Color::Black );
22282228

22292229
GL_State( GLS_DEFAULT );
22302230
GL_Cull( cullType_t::CT_TWO_SIDED );
@@ -2329,7 +2329,7 @@ static void RB_RenderDebugUtils()
23292329

23302330
// set uniforms
23312331
gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE );
2332-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_CUSTOM_RGB, alphaGen_t::AGEN_CUSTOM );
2332+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_CUSTOM_RGB, alphaGen_t::AGEN_CUSTOM );
23332333

23342334
// bind u_ColorMap
23352335
gl_genericShader->SetUniform_ColorMapBindless(
@@ -2358,7 +2358,7 @@ static void RB_RenderDebugUtils()
23582358
GL_Cull( cullType_t::CT_TWO_SIDED );
23592359
GL_State( GLS_DEPTHTEST_DISABLE );
23602360

2361-
SetUniform_Color( gl_genericShader, Color::Black );
2361+
gl_genericShader->SetUniform_Color( Color::Black );
23622362

23632363
w = 300;
23642364
h = 300;
@@ -2419,8 +2419,8 @@ static void RB_RenderDebugUtils()
24192419
}
24202420

24212421
// set uniforms
2422-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
2423-
SetUniform_Color( gl_genericShader, Color::Black );
2422+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
2423+
gl_genericShader->SetUniform_Color( Color::Black );
24242424

24252425
GL_State( GLS_POLYMODE_LINE | GLS_DEPTHTEST_DISABLE );
24262426
GL_Cull( cullType_t::CT_TWO_SIDED );
@@ -2472,7 +2472,7 @@ static void RB_RenderDebugUtils()
24722472

24732473
Tess_End();
24742474

2475-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_CUSTOM_RGB, alphaGen_t::AGEN_CUSTOM );
2475+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_CUSTOM_RGB, alphaGen_t::AGEN_CUSTOM );
24762476
}
24772477
} // i == 1
24782478
else
@@ -2507,15 +2507,15 @@ static void RB_RenderDebugUtils()
25072507
}
25082508

25092509
//if(node->shrinkedAABB)
2510-
// SetUniform_Color( gl_genericShader,colorBlue);
2510+
// gl_genericShader->SetUniform_Color(colorBlue);
25112511
//else
25122512
if ( node->visCounts[ tr.visIndex ] == tr.visCounts[ tr.visIndex ] )
25132513
{
2514-
SetUniform_Color( gl_genericShader, Color::Green );
2514+
gl_genericShader->SetUniform_Color( Color::Green );
25152515
}
25162516
else
25172517
{
2518-
SetUniform_Color( gl_genericShader, Color::Red );
2518+
gl_genericShader->SetUniform_Color( Color::Red );
25192519
}
25202520
}
25212521
else
@@ -2527,11 +2527,11 @@ static void RB_RenderDebugUtils()
25272527

25282528
if ( node->visCounts[ tr.visIndex ] == tr.visCounts[ tr.visIndex ] )
25292529
{
2530-
SetUniform_Color( gl_genericShader, Color::Yellow );
2530+
gl_genericShader->SetUniform_Color( Color::Yellow );
25312531
}
25322532
else
25332533
{
2534-
SetUniform_Color( gl_genericShader, Color::Blue );
2534+
gl_genericShader->SetUniform_Color( Color::Blue );
25352535
}
25362536
}
25372537

@@ -2628,8 +2628,8 @@ void DebugDrawBegin( debugDrawMode_t mode, float size ) {
26282628

26292629
// set uniforms
26302630
gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE );
2631-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
2632-
SetUniform_Color( gl_genericShader, colorClear );
2631+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
2632+
gl_genericShader->SetUniform_Color( colorClear );
26332633

26342634
// bind u_ColorMap
26352635
gl_genericShader->SetUniform_ColorMapBindless(
@@ -3787,7 +3787,7 @@ void RB_ShowImages()
37873787

37883788
// set uniforms
37893789
gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE );
3790-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
3790+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
37913791
gl_genericShader->SetUniform_TextureMatrix( matrixIdentity );
37923792

37933793
GL_SelectTexture( 0 );

src/engine/renderer/tr_shade.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -671,22 +671,22 @@ static void DrawTris()
671671

672672
if ( r_showBatches->integer )
673673
{
674-
SetUniform_Color( gl_genericShader, Color::Color::Indexed( backEnd.pc.c_batches % 8 ) );
674+
gl_genericShader->SetUniform_Color( Color::Color::Indexed( backEnd.pc.c_batches % 8 ) );
675675
}
676676
else if ( glState.currentVBO == tess.vbo )
677677
{
678-
SetUniform_Color( gl_genericShader, Color::Red );
678+
gl_genericShader->SetUniform_Color( Color::Red );
679679
}
680680
else if ( glState.currentVBO )
681681
{
682-
SetUniform_Color( gl_genericShader, Color::Blue );
682+
gl_genericShader->SetUniform_Color( Color::Blue );
683683
}
684684
else
685685
{
686-
SetUniform_Color( gl_genericShader, Color::White );
686+
gl_genericShader->SetUniform_Color( Color::White );
687687
}
688688

689-
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_CONST, alphaGen_t::AGEN_CONST );
689+
gl_genericShader->SetUniform_ColorModulateColorGen( colorGen_t::CGEN_CONST, alphaGen_t::AGEN_CONST );
690690
gl_genericShader->SetUniform_ModelMatrix( backEnd.orientation.transformMatrix );
691691
gl_genericShader->SetUniform_ModelViewProjectionMatrix( glState.modelViewProjectionMatrix[ glState.stackIndex ] );
692692

@@ -925,10 +925,10 @@ void Render_generic3D( shaderStage_t *pStage )
925925
alphaGen_t alphaGen = SetAlphaGen( pStage );
926926

927927
const bool styleLightMap = pStage->type == stageType_t::ST_STYLELIGHTMAP || pStage->type == stageType_t::ST_STYLECOLORMAP;
928-
SetUniform_ColorModulateColorGen( gl_genericShader, rgbGen, alphaGen, styleLightMap || pStage->forceVertexLighting );
928+
gl_genericShader->SetUniform_ColorModulateColorGen( rgbGen, alphaGen, styleLightMap || pStage->forceVertexLighting );
929929

930930
// u_Color
931-
SetUniform_Color( gl_genericShader, tess.svars.color );
931+
gl_genericShader->SetUniform_Color( tess.svars.color );
932932

933933
gl_genericShader->SetUniform_ModelMatrix( backEnd.orientation.transformMatrix );
934934
gl_genericShader->SetUniform_ModelViewProjectionMatrix( glState.modelViewProjectionMatrix[ glState.stackIndex ] );
@@ -1110,10 +1110,10 @@ void Render_lightMapping( shaderStage_t *pStage )
11101110
gl_lightMappingShader->SetUniform_Time( backEnd.refdef.floatTime - backEnd.currentEntity->e.shaderTime );
11111111

11121112
// u_ColorModulate
1113-
SetUniform_ColorModulateColorGen( gl_lightMappingShader, rgbGen, alphaGen, lightMode != lightMode_t::FULLBRIGHT );
1113+
gl_lightMappingShader->SetUniform_ColorModulateColorGen( rgbGen, alphaGen, lightMode != lightMode_t::FULLBRIGHT );
11141114

11151115
// u_Color
1116-
SetUniform_Color( gl_lightMappingShader, tess.svars.color );
1116+
gl_lightMappingShader->SetUniform_Color( tess.svars.color );
11171117

11181118
// u_AlphaThreshold
11191119
gl_lightMappingShader->SetUniform_AlphaTest( pStage->stateBits );
@@ -1616,7 +1616,7 @@ void Render_fog( shaderStage_t *stage )
16161616
gl_fogShader->SetUniform_FogGradient(
16171617
1.0f / stage->shader->fogParms.depthForOpaque, stage->shader->fogParms.falloffExp );
16181618
gl_fogShader->SetUniform_ViewOrigin( backEnd.viewParms.orientation.origin );
1619-
SetUniform_Color( gl_fogShader, stage->shader->fogParms.color );
1619+
gl_fogShader->SetUniform_Color( stage->shader->fogParms.color );
16201620

16211621
switch ( stage->type )
16221622
{

0 commit comments

Comments
 (0)