@@ -532,6 +532,12 @@ static std::string GenVertexHeader() {
532532 str += " #define baseInstance gl_BaseInstanceARB\n\n " ;
533533 }
534534
535+ if ( glConfig2.usingMaterialSystem ) {
536+ AddDefine ( str, " BIND_MATERIALS" , Util::ordinal ( BufferBind::MATERIALS ) );
537+ AddDefine ( str, " BIND_TEX_DATA" , Util::ordinal ( BufferBind::TEX_DATA ) );
538+ AddDefine ( str, " BIND_LIGHTMAP_DATA" , Util::ordinal ( BufferBind::LIGHTMAP_DATA ) );
539+ }
540+
535541 return str;
536542}
537543
@@ -566,18 +572,36 @@ static std::string GenFragmentHeader() {
566572 str += " #define baseInstance in_baseInstance\n\n " ;
567573 }
568574
575+ if ( glConfig2.usingMaterialSystem ) {
576+ AddDefine ( str, " BIND_MATERIALS" , Util::ordinal ( BufferBind::MATERIALS ) );
577+ AddDefine ( str, " BIND_TEX_DATA" , Util::ordinal ( BufferBind::TEX_DATA ) );
578+ AddDefine ( str, " BIND_LIGHTMAP_DATA" , Util::ordinal ( BufferBind::LIGHTMAP_DATA ) );
579+ }
580+
569581 return str;
570582}
571583
572584static std::string GenComputeHeader () {
573585 std::string str;
574586
575587 // Compute shader compatibility defines
576- AddDefine ( str, " MAX_VIEWS" , MAX_VIEWS );
577- AddDefine ( str, " MAX_FRAMES" , MAX_FRAMES );
578- AddDefine ( str, " MAX_VIEWFRAMES" , MAX_VIEWFRAMES );
579- AddDefine ( str, " MAX_SURFACE_COMMAND_BATCHES" , MAX_SURFACE_COMMAND_BATCHES );
580- AddDefine ( str, " MAX_COMMAND_COUNTERS" , MAX_COMMAND_COUNTERS );
588+ if ( glConfig2.usingMaterialSystem ) {
589+ AddDefine ( str, " MAX_VIEWS" , MAX_VIEWS );
590+ AddDefine ( str, " MAX_FRAMES" , MAX_FRAMES );
591+ AddDefine ( str, " MAX_VIEWFRAMES" , MAX_VIEWFRAMES );
592+ AddDefine ( str, " MAX_SURFACE_COMMAND_BATCHES" , MAX_SURFACE_COMMAND_BATCHES );
593+ AddDefine ( str, " MAX_COMMAND_COUNTERS" , MAX_COMMAND_COUNTERS );
594+
595+ AddDefine ( str, " BIND_SURFACE_DESCRIPTORS" , Util::ordinal ( BufferBind::SURFACE_DESCRIPTORS ) );
596+ AddDefine ( str, " BIND_SURFACE_COMMANDS" , Util::ordinal ( BufferBind::SURFACE_COMMANDS ) );
597+ AddDefine ( str, " BIND_CULLED_COMMANDS" , Util::ordinal ( BufferBind::CULLED_COMMANDS ) );
598+ AddDefine ( str, " BIND_SURFACE_BATCHES" , Util::ordinal ( BufferBind::SURFACE_BATCHES ) );
599+ AddDefine ( str, " BIND_COMMAND_COUNTERS_ATOMIC" , Util::ordinal ( BufferBind::COMMAND_COUNTERS_ATOMIC ) );
600+ AddDefine ( str, " BIND_COMMAND_COUNTERS_STORAGE" , Util::ordinal ( BufferBind::COMMAND_COUNTERS_STORAGE ) );
601+ AddDefine ( str, " BIND_PORTAL_SURFACES" , Util::ordinal ( BufferBind::PORTAL_SURFACES ) );
602+
603+ AddDefine ( str, " BIND_DEBUG" , Util::ordinal ( BufferBind::DEBUG ) );
604+ }
581605
582606 if ( glConfig2.usingBindlessTextures ) {
583607 str += " layout(bindless_image) uniform;\n " ;
@@ -1361,15 +1385,21 @@ std::string GLShaderManager::ShaderPostProcess( GLShader *shader, const std::str
13611385 std::string materialStruct = " \n struct Material {\n " ;
13621386 // 6 kb for materials
13631387 const uint32_t count = ( 4096 + 2048 ) / shader->GetPaddedSize ();
1364- std::string materialBlock = " layout(std140, binding = 6) uniform materialsUBO {\n "
1388+ std::string materialBlock = " layout(std140, binding = "
1389+ + std::to_string ( Util::ordinal ( BufferBind::MATERIALS ) )
1390+ + " ) uniform materialsUBO {\n "
13651391 " Material materials[" + std::to_string ( count ) + " ]; \n "
13661392 " };\n\n " ;
13671393
13681394 std::string texBuf = glConfig2.maxUniformBlockSize >= MIN_MATERIAL_UBO_SIZE ?
1369- " layout(std140, binding = 7) uniform texDataUBO {\n "
1395+ " layout(std140, binding = "
1396+ + std::to_string ( Util::ordinal ( BufferBind::TEX_DATA ) )
1397+ + " ) uniform texDataUBO {\n "
13701398 " TexData texData[" + std::to_string ( MAX_TEX_BUNDLES ) + " ]; \n "
13711399 " };\n\n "
1372- : " layout(std430, binding = 7) restrict readonly buffer texDataSSBO {\n "
1400+ : " layout(std430, binding = "
1401+ + std::to_string ( Util::ordinal ( BufferBind::TEX_DATA ) )
1402+ + " ) restrict readonly buffer texDataSSBO {\n "
13731403 " TexData texData[];\n "
13741404 " };\n\n " ;
13751405 // We have to store u_TextureMatrix as vec4 + vec2 because otherwise it would be aligned to a vec4 under std140
0 commit comments