Skip to content

Commit 6c00125

Browse files
committed
Remove padding from end of material uniform struct
Explicitly writing the padding seems pointless and the way the padding is calculated looks suspicious.
1 parent 2b80fa9 commit 6c00125

File tree

2 files changed

+6
-15
lines changed

2 files changed

+6
-15
lines changed

src/engine/renderer/gl_shader.cpp

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,9 +1545,8 @@ std::string GLShaderManager::RemoveUniformsFromShaderText( const std::string& sh
15451545
return shaderMain;
15461546
}
15471547

1548-
void GLShaderManager::GenerateUniformStructDefinesText( const std::vector<GLUniform*>& uniforms, const uint32_t padding,
1549-
const uint32_t paddingCount, const std::string& definesName,
1550-
std::string& uniformStruct, std::string& uniformDefines ) {
1548+
void GLShaderManager::GenerateUniformStructDefinesText( const std::vector<GLUniform*>& uniforms,
1549+
const std::string& definesName, std::string& uniformStruct, std::string& uniformDefines ) {
15511550
for ( GLUniform* uniform : uniforms ) {
15521551
uniformStruct += " " + ( uniform->_isTexture ? "uvec2" : uniform->_type ) + " " + uniform->_name;
15531552

@@ -1569,12 +1568,6 @@ void GLShaderManager::GenerateUniformStructDefinesText( const std::vector<GLUnif
15691568
uniformDefines += "\n";
15701569
}
15711570

1572-
// Array of structs is aligned to the largest member of the struct
1573-
for ( uint32_t i = 0; i < padding; i++ ) {
1574-
uniformStruct += " int uniform_padding" + std::to_string( i + paddingCount );
1575-
uniformStruct += ";\n";
1576-
}
1577-
15781571
uniformDefines += "\n";
15791572
}
15801573

@@ -1637,8 +1630,8 @@ std::string GLShaderManager::ShaderPostProcess( GLShader *shader, const std::str
16371630

16381631
std::string materialStruct = "\nstruct Material {\n";
16391632
std::string materialDefines;
1640-
GenerateUniformStructDefinesText( shader->_materialSystemUniforms, shader->padding,
1641-
0, "materials[baseInstance & 0xFFF]", materialStruct, materialDefines );
1633+
GenerateUniformStructDefinesText( shader->_materialSystemUniforms,
1634+
"materials[baseInstance & 0xFFF]", materialStruct, materialDefines );
16421635

16431636
materialStruct += "};\n\n";
16441637

@@ -2158,7 +2151,6 @@ void GLShader::PostProcessUniforms() {
21582151

21592152
size = PAD( size, 4 );
21602153
std430Size += size;
2161-
padding = alignmentConsume;
21622154
}
21632155

21642156
_materialSystemUniforms = tmp;

src/engine/renderer/gl_shader.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@ class GLShader {
186186
const bool hasComputeShader;
187187

188188
GLuint std430Size = 0;
189-
uint32_t padding = 0;
190189

191190
const bool worldShader;
192191
protected:
@@ -462,8 +461,8 @@ class GLShaderManager {
462461
ShaderProgramDescriptor* out );
463462
void SaveShaderBinary( ShaderProgramDescriptor* descriptor );
464463

465-
void GenerateUniformStructDefinesText( const std::vector<GLUniform*>& uniforms, const uint32_t padding,
466-
const uint32_t paddingCount, const std::string& definesName,
464+
void GenerateUniformStructDefinesText(
465+
const std::vector<GLUniform*>& uniforms, const std::string& definesName,
467466
std::string& uniformStruct, std::string& uniformDefines );
468467
std::string RemoveUniformsFromShaderText( const std::string& shaderText, const std::vector<GLUniform*>& uniforms );
469468
std::string ShaderPostProcess( GLShader *shader, const std::string& shaderText, const uint32_t offset );

0 commit comments

Comments
 (0)