@@ -268,10 +268,6 @@ void GLShaderManager::FreeAll() {
268268 {
269269 _shaderBuildQueue.pop ();
270270 }
271-
272- if ( glConfig2.pushBufferAvailable ) {
273- pushBuffer.FreeGLBuffers ();
274- }
275271}
276272
277273void GLShaderManager::UpdateShaderProgramUniformLocations ( GLShader* shader, ShaderProgramDescriptor* shaderProgram ) const {
@@ -1349,6 +1345,12 @@ void GLShaderManager::InitShader( GLShader* shader ) {
13491345 ShaderDescriptor* desc = FindShader ( shader->_name , shaderType.mainText , shaderType.GLType , shaderType.headers ,
13501346 uniqueMacros, compileMacros, true );
13511347
1348+ if ( desc && glConfig2.pushBufferAvailable ) {
1349+ desc->shaderSource = RemoveUniformsFromShaderText ( desc->shaderSource , shader->_pushUniforms );
1350+
1351+ desc->shaderSource .insert ( shaderType.offset , globalUniformBlock );
1352+ }
1353+
13521354 if ( desc && glConfig2.usingMaterialSystem && shader->_useMaterialSystem ) {
13531355 desc->shaderSource = ShaderPostProcess ( shader, desc->shaderSource , shaderType.offset );
13541356 }
@@ -1581,14 +1583,6 @@ void GLShaderManager::GenerateUniformStructDefinesText( const std::vector<GLUnif
15811583}
15821584
15831585void GLShaderManager::PostProcessGlobalUniforms () {
1584- std::string uniformStruct = " \n struct GlobalUniforms {\n " ;
1585- std::string uniformBlock = " layout(std140, binding = "
1586- + std::to_string ( BufferBind::GLOBAL_DATA )
1587- + " ) uniform globalUBO {\n "
1588- + " GlobalUniforms globalUniforms;\n "
1589- + " };\n\n " ;
1590- std::string uniformDefines;
1591-
15921586 /* Generate the struct and defines in the form of:
15931587 * struct GlobalUniforms {
15941588 * type uniform0;
@@ -1600,11 +1594,19 @@ void GLShaderManager::PostProcessGlobalUniforms() {
16001594 * #define uniformx globalUniforms.uniformx
16011595 */
16021596
1597+ std::string uniformStruct = " \n struct GlobalUniforms {\n " ;
1598+ std::string uniformBlock = " layout(std140, binding = "
1599+ + std::to_string ( BufferBind::GLOBAL_DATA )
1600+ + " ) uniform globalUBO {\n "
1601+ + " GlobalUniforms globalUniforms;\n "
1602+ + " };\n\n " ;
1603+ std::string uniformDefines;
1604+
16031605 GLuint size;
16041606 GLuint padding;
16051607 std::vector<GLUniform*>* uniforms = &( ( GLShader* ) globalUBOProxy )->_uniforms ;
16061608 std::vector<GLUniform*> constUniforms =
1607- ProcessUniforms ( GLUniform::CONST, GLUniform::CONST, false , *uniforms, size, padding );
1609+ ProcessUniforms ( GLUniform::CONST, GLUniform::CONST, !glConfig2. usingBindlessTextures , *uniforms, size, padding );
16081610
16091611 GenerateUniformStructDefinesText ( constUniforms, padding, 0 , " globalUniforms" , uniformStruct, uniformDefines );
16101612
@@ -1613,7 +1615,7 @@ void GLShaderManager::PostProcessGlobalUniforms() {
16131615 pushBuffer.constUniformsSize = size + padding;
16141616
16151617 std::vector<GLUniform*> frameUniforms =
1616- ProcessUniforms ( GLUniform::FRAME, GLUniform::FRAME, false , *uniforms, size, padding );
1618+ ProcessUniforms ( GLUniform::FRAME, GLUniform::FRAME, !glConfig2. usingBindlessTextures , *uniforms, size, padding );
16171619
16181620 GenerateUniformStructDefinesText ( frameUniforms, padding, paddingCount, " globalUniforms" , uniformStruct, uniformDefines );
16191621
@@ -1633,12 +1635,6 @@ void GLShaderManager::PostProcessGlobalUniforms() {
16331635 for ( GLUniform* uniform : frameUniforms ) {
16341636 uniforms->push_back ( uniform );
16351637 }
1636-
1637- pushBuffer.InitGLBuffers ();
1638-
1639- pushBuffer.globalUBO .BufferStorage ( pushBuffer.constUniformsSize + pushBuffer.frameUniformsSize , 1 , nullptr );
1640-
1641- pushBuffer.globalUBO .BindBufferBase ();
16421638}
16431639
16441640// This will generate all the extra code for material system shaders
@@ -2255,7 +2251,7 @@ void GLShader::PostProcessUniforms() {
22552251 if ( glConfig2.pushBufferAvailable && !pushSkip ) {
22562252 GLuint unused;
22572253 _pushUniforms = gl_shaderManager.ProcessUniforms ( GLUniform::CONST, GLUniform::FRAME,
2258- false , _uniforms, unused, unused );
2254+ !glConfig2. usingBindlessTextures , _uniforms, unused, unused );
22592255 }
22602256}
22612257
0 commit comments