Skip to content

Commit ae3a862

Browse files
committed
renderer: revamp shader stage collapsing
1 parent c777b9d commit ae3a862

File tree

3 files changed

+376
-298
lines changed

3 files changed

+376
-298
lines changed

src/engine/renderer/tr_local.h

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,9 +1179,9 @@ enum class deluxeMode_t { NONE, GRID, MAP };
11791179
ST_LIGHTMAP,
11801180
ST_STYLELIGHTMAP,
11811181
ST_STYLECOLORMAP,
1182-
ST_COLLAPSE_lighting_PBR, // map|diffusemap + opt:normalmap + opt:glowmap + opt:physicalmap
1183-
ST_COLLAPSE_lighting_PHONG, // map|diffusemap + opt:normalmap + opt:glowmap + specularmap
1184-
ST_COLLAPSE_reflection_CB, // color cubemap + normalmap
1182+
ST_COLLAPSE_COLORMAP,
1183+
ST_COLLAPSE_DIFFUSEMAP,
1184+
ST_COLLAPSE_REFLECTIONMAP, // color cubemap + normalmap
11851185

11861186
// light shader stage types
11871187
ST_ATTENUATIONMAP_XY,
@@ -1192,9 +1192,9 @@ enum class deluxeMode_t { NONE, GRID, MAP };
11921192
{
11931193
COLLAPSE_none,
11941194
COLLAPSE_generic, // used before we know it's another one
1195-
COLLAPSE_lighting_PHONG,
1196-
COLLAPSE_lighting_PBR,
1197-
COLLAPSE_reflection_CB,
1195+
COLLAPSE_PHONG,
1196+
COLLAPSE_PBR,
1197+
COLLAPSE_REFLECTIONMAP,
11981198
};
11991199

12001200
struct shaderStage_t
@@ -1227,8 +1227,6 @@ enum class deluxeMode_t { NONE, GRID, MAP };
12271227
bool tcGen_Environment;
12281228
bool tcGen_Lightmap;
12291229

1230-
bool implicitLightmap;
1231-
12321230
Color::Color32Bit constantColor; // for CGEN_CONST and AGEN_CONST
12331231

12341232
uint32_t stateBits; // GLS_xxxx mask

src/engine/renderer/tr_shade.cpp

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -895,7 +895,7 @@ static void Render_lightMapping( shaderStage_t *pStage )
895895
{
896896
// Use fullbright on “surfaceparm nolightmap” materials.
897897
}
898-
else if ( !pStage->implicitLightmap && pStage->type != stageType_t::ST_LIGHTMAP )
898+
else if ( pStage->type == stageType_t::ST_COLLAPSE_COLORMAP )
899899
{
900900
/* Use fullbright for collapsed stages without lightmaps,
901901
for example:
@@ -2789,14 +2789,13 @@ void Tess_StageIteratorGeneric()
27892789

27902790
case stageType_t::ST_LIGHTMAP:
27912791
case stageType_t::ST_DIFFUSEMAP:
2792-
case stageType_t::ST_COLLAPSE_lighting_PHONG:
2793-
case stageType_t::ST_COLLAPSE_lighting_PBR:
2792+
case stageType_t::ST_COLLAPSE_COLORMAP:
2793+
case stageType_t::ST_COLLAPSE_DIFFUSEMAP:
27942794
Render_lightMapping( pStage );
2795-
27962795
break;
27972796

2798-
case stageType_t::ST_COLLAPSE_reflection_CB:
27992797
case stageType_t::ST_REFLECTIONMAP:
2798+
case stageType_t::ST_COLLAPSE_REFLECTIONMAP:
28002799
if ( r_reflectionMapping->integer )
28012800
{
28022801
Render_reflection_CB( pStage );
@@ -2836,7 +2835,7 @@ void Tess_StageIteratorGeneric()
28362835
{
28372836
/* FIXME: workaround to display something and not crash
28382837
when liquidMapping is enabled, until we fix liquidMap. */
2839-
pStage->type = stageType_t::ST_DIFFUSEMAP;
2838+
pStage->type = stageType_t::ST_COLLAPSE_DIFFUSEMAP;
28402839
pStage->bundle[ TB_DIFFUSEMAP ].image[ 0 ] = tr.whiteImage;
28412840
Render_lightMapping( pStage );
28422841
}
@@ -2906,10 +2905,10 @@ void Tess_StageIteratorPortal() {
29062905
case stageType_t::ST_COLORMAP:
29072906
case stageType_t::ST_LIGHTMAP:
29082907
case stageType_t::ST_DIFFUSEMAP:
2909-
case stageType_t::ST_COLLAPSE_lighting_PHONG:
2910-
case stageType_t::ST_COLLAPSE_lighting_PBR:
2911-
case stageType_t::ST_COLLAPSE_reflection_CB:
2908+
case stageType_t::ST_COLLAPSE_COLORMAP:
2909+
case stageType_t::ST_COLLAPSE_DIFFUSEMAP:
29122910
case stageType_t::ST_REFLECTIONMAP:
2911+
case stageType_t::ST_COLLAPSE_REFLECTIONMAP:
29132912
case stageType_t::ST_REFRACTIONMAP:
29142913
case stageType_t::ST_DISPERSIONMAP:
29152914
case stageType_t::ST_SKYBOXMAP:
@@ -2989,8 +2988,8 @@ void Tess_StageIteratorDepthFill()
29892988

29902989
case stageType_t::ST_LIGHTMAP:
29912990
case stageType_t::ST_DIFFUSEMAP:
2992-
case stageType_t::ST_COLLAPSE_lighting_PHONG:
2993-
case stageType_t::ST_COLLAPSE_lighting_PBR:
2991+
case stageType_t::ST_COLLAPSE_COLORMAP:
2992+
case stageType_t::ST_COLLAPSE_DIFFUSEMAP:
29942993
Render_depthFill( pStage );
29952994
break;
29962995

@@ -3066,8 +3065,8 @@ void Tess_StageIteratorShadowFill()
30663065

30673066
case stageType_t::ST_LIGHTMAP:
30683067
case stageType_t::ST_DIFFUSEMAP:
3069-
case stageType_t::ST_COLLAPSE_lighting_PHONG:
3070-
case stageType_t::ST_COLLAPSE_lighting_PBR:
3068+
case stageType_t::ST_COLLAPSE_COLORMAP:
3069+
case stageType_t::ST_COLLAPSE_DIFFUSEMAP:
30713070
Render_shadowFill( pStage );
30723071
break;
30733072

@@ -3180,8 +3179,7 @@ void Tess_StageIteratorLighting()
31803179
switch ( pStage->type )
31813180
{
31823181
case stageType_t::ST_DIFFUSEMAP:
3183-
case stageType_t::ST_COLLAPSE_lighting_PBR:
3184-
case stageType_t::ST_COLLAPSE_lighting_PHONG:
3182+
case stageType_t::ST_COLLAPSE_DIFFUSEMAP:
31853183
if ( light->l.rlType == refLightType_t::RL_OMNI )
31863184
{
31873185
Render_forwardLighting_DBS_omni( pStage, attenuationXYStage, attenuationZStage, light );

0 commit comments

Comments
 (0)