File tree Expand file tree Collapse file tree 2 files changed +9
-1
lines changed Expand file tree Collapse file tree 2 files changed +9
-1
lines changed Original file line number Diff line number Diff line change @@ -1547,6 +1547,7 @@ std::string GLShaderManager::RemoveUniformsFromShaderText( const std::string& sh
15471547
15481548void  GLShaderManager::GenerateUniformStructDefinesText ( const  std::vector<GLUniform*>& uniforms,
15491549	const  std::string& definesName, std::string& uniformStruct, std::string& uniformDefines ) {
1550+ 	int  pad = 0 ;
15501551	for  ( GLUniform* uniform : uniforms ) {
15511552		uniformStruct += " 	"   + ( uniform->_isTexture  ? " uvec2"   : uniform->_type  ) + "  "   + uniform->_name ;
15521553
@@ -1555,6 +1556,10 @@ void GLShaderManager::GenerateUniformStructDefinesText( const std::vector<GLUnif
15551556		}
15561557		uniformStruct += " ;\n "  ;
15571558
1559+ 		for  (int  p = uniform->_std430Size  - uniform->_std430BaseSize ; p--; ) {
1560+ 			uniformStruct += " \t float _pad"   + std::to_string ( ++pad ) + " ;\n "  ;
1561+ 		}
1562+ 
15581563		uniformDefines += " #define "  ;
15591564		uniformDefines += uniform->_name ;
15601565
@@ -2132,6 +2137,7 @@ void GLShader::PostProcessUniforms() {
21322137			++std430Size;
21332138			++_materialSystemUniforms.back ()->_std430Size ;
21342139		} else  {
2140+ 			( *iterNext )->_std430Size  = ( *iterNext )->_std430BaseSize ;
21352141			std430Size += ( *iterNext )->_std430Size ;
21362142			align = std::max ( align, ( *iterNext )->_std430Alignment  );
21372143			_materialSystemUniforms.push_back ( *iterNext );
Original file line number Diff line number Diff line change @@ -317,7 +317,8 @@ class GLUniform {
317317	const  std::string _type;
318318
319319	//  In multiples of 4 bytes
320- 	GLuint _std430Size;
320+ 	const  GLuint _std430BaseSize;
321+ 	GLuint _std430Size; //  includes padding that depends on the other uniforms in the struct
321322	const  GLuint _std430Alignment;
322323
323324	const  bool  _global; //  This uniform won't go into the materials UBO if true
@@ -334,6 +335,7 @@ class GLUniform {
334335		const  bool  isTexture = false  ) :
335336		_name ( name ),
336337		_type ( type ),
338+ 		_std430BaseSize ( std430Size ),
337339		_std430Size ( std430Size ),
338340		_std430Alignment ( std430Alignment ),
339341		_global ( global ),
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments