Skip to content

Commit

Permalink
Change ShaderStageVariant to an enum
Browse files Browse the repository at this point in the history
  • Loading branch information
VReaperV committed Jan 27, 2025
1 parent a941aa7 commit efe9430
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 10 deletions.
14 changes: 7 additions & 7 deletions src/engine/renderer/Material.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -486,11 +486,11 @@ void MaterialSystem::GenerateMaterialsBuffer( std::vector<shaderStage_t*>& stage
/* Stage variants are essentially copies of the same stage with slightly different values that
normally come from a drawSurf_t */
uint32_t variants = 0;
for ( int i = 0; i < Util::ordinal( ShaderStageVariant::ALL ) && variants < pStage->variantOffset; i++ ) {
for ( int i = 0; i < ShaderStageVariant::ALL && variants < pStage->variantOffset; i++ ) {
if ( pStage->variantOffsets[i] != -1 ) {
const bool mayUseVertexOverbright = i & Util::ordinal( ShaderStageVariant::VERTEX_OVERBRIGHT );
const bool vertexLit = i & Util::ordinal( ShaderStageVariant::VERTEX_LIT );
const bool fullbright = i & Util::ordinal( ShaderStageVariant::FULLBRIGHT );
const bool mayUseVertexOverbright = i & ShaderStageVariant::VERTEX_OVERBRIGHT;
const bool vertexLit = i & ShaderStageVariant::VERTEX_LIT;
const bool fullbright = i & ShaderStageVariant::FULLBRIGHT;

const uint32_t variantOffset = pStage->variantOffsets[i] * pStage->paddedSize;
pStage->bufferOffset += variantOffset;
Expand Down Expand Up @@ -1244,9 +1244,9 @@ void ProcessMaterialFog( Material* material, shaderStage_t* pStage, drawSurf_t*

void MaterialSystem::AddStage( drawSurf_t* drawSurf, shaderStage_t* pStage, uint32_t stage,
const bool mayUseVertexOverbright, const bool vertexLit, const bool fullbright ) {
const int variant = ( mayUseVertexOverbright ? Util::ordinal( ShaderStageVariant::VERTEX_OVERBRIGHT ) : 0 )
| ( vertexLit ? Util::ordinal( ShaderStageVariant::VERTEX_LIT ) : 0 )
| ( fullbright ? Util::ordinal( ShaderStageVariant::FULLBRIGHT ) : 0 );
const int variant = ( mayUseVertexOverbright ? ShaderStageVariant::VERTEX_OVERBRIGHT : 0 )
| ( vertexLit ? ShaderStageVariant::VERTEX_LIT : 0 )
| ( fullbright ? ShaderStageVariant::FULLBRIGHT : 0 );

if ( pStage->variantOffsets[variant] == -1 ) {
pStage->variantOffsets[variant] = pStage->variantOffset;
Expand Down
4 changes: 2 additions & 2 deletions src/engine/renderer/tr_local.h
Original file line number Diff line number Diff line change
Expand Up @@ -1106,7 +1106,7 @@ enum class shaderProfilerRenderSubGroupsMode {
using stageShaderBinder_t = void(*)(Material*);
using stageMaterialProcessor_t = void(*)(Material*, shaderStage_t*, drawSurf_t*);

enum class ShaderStageVariant {
enum ShaderStageVariant {
VERTEX_OVERBRIGHT = 1,
VERTEX_LIT = BIT( 1 ),
FULLBRIGHT = BIT( 2 ),
Expand Down Expand Up @@ -1223,7 +1223,7 @@ enum class shaderProfilerRenderSubGroupsMode {
bool dynamic = false;
bool colorDynamic = false;

int variantOffsets[Util::ordinal( ShaderStageVariant::ALL )];
int variantOffsets[ShaderStageVariant::ALL];
uint32_t variantOffset = 0;
};

Expand Down
2 changes: 1 addition & 1 deletion src/engine/renderer/tr_shader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5240,7 +5240,7 @@ static void FinishStages()
break;
}

memset( stage->variantOffsets, -1, Util::ordinal( ShaderStageVariant::ALL ) * sizeof( int ) );
memset( stage->variantOffsets, -1, ShaderStageVariant::ALL * sizeof( int ) );
}

GroupActiveStages();
Expand Down

0 comments on commit efe9430

Please sign in to comment.