Skip to content

Commit f98f142

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 3bed6ed commit f98f142

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_AlphaThreshold( this ),
24472447
u_ModelMatrix( this ),
24482448
u_ModelViewProjectionMatrix( 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_Dual( this ),
24532451
u_Bones( this ),
24542452
u_VertexInterpolation( this ),
24552453
u_DepthScale( this ),
@@ -2510,10 +2508,8 @@ GLShader_lightMapping::GLShader_lightMapping() :
25102508
u_LightTiles( this ),
25112509
u_TextureMatrix( this ),
25122510
u_SpecularExponent( this ),
2513-
u_ColorModulateColorGen_Float( this ),
2514-
u_ColorModulateColorGen_Uint( this ),
2515-
u_Color_Float( this ),
2516-
u_Color_Uint( this ),
2511+
u_ColorModulateColorGen_Dispatch( this ),
2512+
u_Color_Dual( this ),
25172513
u_AlphaThreshold( this ),
25182514
u_ViewOrigin( this ),
25192515
u_ModelMatrix( this ),
@@ -2695,8 +2691,7 @@ GLShader_fog::GLShader_fog() :
26952691
u_DepthMap( this ),
26962692
u_ModelViewProjectionMatrix( this ),
26972693
u_UnprojectMatrix( this ),
2698-
u_Color_Float( this ),
2699-
u_Color_Uint( this ),
2694+
u_Color_Dual( this ),
27002695
u_ViewOrigin( this ),
27012696
u_FogGradient( this ),
27022697
GLCompileMacro_OUTSIDE_FOG( this )

src/engine/renderer/gl_shader.h

Lines changed: 39 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1968,17 +1968,25 @@ class u_Color_Uint :
19681968
}
19691969
};
19701970

1971-
template<typename Shader> void SetUniform_Color( Shader* shader, const Color::Color& color )
1971+
class u_Color_Dual :
1972+
u_Color_Uint, u_Color_Float
19721973
{
1973-
if( glConfig.gpuShader4Available )
1974-
{
1975-
shader->SetUniform_Color_Uint( color );
1976-
}
1977-
else
1974+
public:
1975+
u_Color_Dual( GLShader *shader ) :
1976+
u_Color_Uint( shader ), u_Color_Float( shader ) {}
1977+
1978+
void SetUniform_Color( const Color::Color &color )
19781979
{
1979-
shader->SetUniform_Color_Float( color );
1980+
if ( glConfig.gpuShader4Available )
1981+
{
1982+
SetUniform_Color_Uint( color );
1983+
}
1984+
else
1985+
{
1986+
SetUniform_Color_Float( color );
1987+
}
19801988
}
1981-
}
1989+
};
19821990

19831991
class u_Frame :
19841992
GLUniform1ui {
@@ -2621,21 +2629,27 @@ class u_ColorModulateColorGen_Uint :
26212629
}
26222630
};
26232631

2624-
template<typename Shader> void SetUniform_ColorModulateColorGen(
2625-
Shader* shader,
2626-
const colorGen_t colorGen,
2627-
const alphaGen_t alphaGen,
2628-
const bool useMapLightFactor = false )
2632+
class u_ColorModulateColorGen_Dispatch :
2633+
u_ColorModulateColorGen_Uint, u_ColorModulateColorGen_Float
26292634
{
2630-
if( glConfig.gpuShader4Available )
2631-
{
2632-
shader->SetUniform_ColorModulateColorGen_Uint( colorGen, alphaGen, useMapLightFactor );
2633-
}
2634-
else
2635+
public:
2636+
u_ColorModulateColorGen_Dispatch( GLShader *shader ) :
2637+
u_ColorModulateColorGen_Uint( shader ), u_ColorModulateColorGen_Float( shader ) {}
2638+
2639+
void SetUniform_ColorModulateColorGen(
2640+
colorGen_t colorGen, alphaGen_t alphaGen, bool useMapLightFactor = false )
26352641
{
2636-
shader->SetUniform_ColorModulateColorGen_Float( colorGen, alphaGen, useMapLightFactor );
2642+
if ( glConfig.gpuShader4Available )
2643+
{
2644+
SetUniform_ColorModulateColorGen_Uint( colorGen, alphaGen, useMapLightFactor );
2645+
}
2646+
else
2647+
{
2648+
SetUniform_ColorModulateColorGen_Float( colorGen, alphaGen, useMapLightFactor );
2649+
}
26372650
}
2638-
}
2651+
};
2652+
26392653

26402654
class u_DeformEnable :
26412655
GLUniform1f {
@@ -2900,10 +2914,8 @@ class GLShader_generic :
29002914
public u_AlphaThreshold,
29012915
public u_ModelMatrix,
29022916
public u_ModelViewProjectionMatrix,
2903-
public u_ColorModulateColorGen_Float,
2904-
public u_ColorModulateColorGen_Uint,
2905-
public u_Color_Float,
2906-
public u_Color_Uint,
2917+
public u_ColorModulateColorGen_Dispatch,
2918+
public u_Color_Dual,
29072919
public u_Bones,
29082920
public u_VertexInterpolation,
29092921
public u_DepthScale,
@@ -2961,10 +2973,8 @@ class GLShader_lightMapping :
29612973
public u_LightTiles,
29622974
public u_TextureMatrix,
29632975
public u_SpecularExponent,
2964-
public u_ColorModulateColorGen_Float,
2965-
public u_ColorModulateColorGen_Uint,
2966-
public u_Color_Float,
2967-
public u_Color_Uint,
2976+
public u_ColorModulateColorGen_Dispatch,
2977+
public u_Color_Dual,
29682978
public u_AlphaThreshold,
29692979
public u_ViewOrigin,
29702980
public u_ModelMatrix,
@@ -3126,8 +3136,7 @@ class GLShader_fog :
31263136
public u_DepthMap,
31273137
public u_ModelViewProjectionMatrix,
31283138
public u_UnprojectMatrix,
3129-
public u_Color_Float,
3130-
public u_Color_Uint,
3139+
public u_Color_Dual,
31313140
public u_ViewOrigin,
31323141
public u_FogGradient,
31333142
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
@@ -673,22 +673,22 @@ static void DrawTris()
673673

674674
if ( r_showBatches->integer )
675675
{
676-
SetUniform_Color( gl_genericShader, Color::Color::Indexed( backEnd.pc.c_batches % 8 ) );
676+
gl_genericShader->SetUniform_Color( Color::Color::Indexed( backEnd.pc.c_batches % 8 ) );
677677
}
678678
else if ( glState.currentVBO == tess.vbo )
679679
{
680-
SetUniform_Color( gl_genericShader, Color::Red );
680+
gl_genericShader->SetUniform_Color( Color::Red );
681681
}
682682
else if ( glState.currentVBO )
683683
{
684-
SetUniform_Color( gl_genericShader, Color::Blue );
684+
gl_genericShader->SetUniform_Color( Color::Blue );
685685
}
686686
else
687687
{
688-
SetUniform_Color( gl_genericShader, Color::White );
688+
gl_genericShader->SetUniform_Color( Color::White );
689689
}
690690

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

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

928928
const bool styleLightMap = pStage->type == stageType_t::ST_STYLELIGHTMAP || pStage->type == stageType_t::ST_STYLECOLORMAP;
929-
SetUniform_ColorModulateColorGen( gl_genericShader, rgbGen, alphaGen, styleLightMap );
929+
gl_genericShader->SetUniform_ColorModulateColorGen( rgbGen, alphaGen, styleLightMap );
930930

931931
// u_Color
932-
SetUniform_Color( gl_genericShader, tess.svars.color );
932+
gl_genericShader->SetUniform_Color( tess.svars.color );
933933

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

11011101
// u_ColorModulate
1102-
SetUniform_ColorModulateColorGen( gl_lightMappingShader, rgbGen, alphaGen, lightMode != lightMode_t::FULLBRIGHT );
1102+
gl_lightMappingShader->SetUniform_ColorModulateColorGen( rgbGen, alphaGen, lightMode != lightMode_t::FULLBRIGHT );
11031103

11041104
// u_Color
1105-
SetUniform_Color( gl_lightMappingShader, tess.svars.color );
1105+
gl_lightMappingShader->SetUniform_Color( tess.svars.color );
11061106

11071107
// u_AlphaThreshold
11081108
gl_lightMappingShader->SetUniform_AlphaTest( pStage->stateBits );
@@ -1634,7 +1634,7 @@ void Render_fog( shaderStage_t *stage )
16341634
gl_fogShader->SetUniform_FogGradient(
16351635
1.0f / stage->shader->fogParms.depthForOpaque, stage->shader->fogParms.falloffExp );
16361636
gl_fogShader->SetUniform_ViewOrigin( backEnd.viewParms.orientation.origin );
1637-
SetUniform_Color( gl_fogShader, stage->shader->fogParms.color );
1637+
gl_fogShader->SetUniform_Color( stage->shader->fogParms.color );
16381638

16391639
switch ( stage->type )
16401640
{

0 commit comments

Comments
 (0)