#version 450 uniform layout(binding=0) sampler g_sSamp1; uniform sampler g_sSamp2; uniform layout(binding=2) sampler g_sSamp3[2]; uniform sampler g_sSamp4[3]; uniform sampler g_sSamp5; uniform sampler g_sSamp_unused1; uniform sampler g_sSamp_unused2; uniform layout(binding=1) texture1D g_tTex1; uniform texture1D g_tTex2; uniform layout(binding=3) texture1D g_tTex3[2]; uniform texture1D g_tTex4[3]; uniform texture1D g_tTex5; uniform layout(binding=0) texture1D g_tTex_unused1; uniform layout(binding=2) texture1D g_tTex_unused2; uniform texture1D g_tTex_unused3; struct MyStruct_t { int a; float b; vec3 c; }; uniform layout(binding=4) myblock { MyStruct_t mystruct; vec4 myvec4_a; vec4 myvec4_b; ivec4 myint4_a; }; vec4 Func1() { return texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + texture(sampler1D(g_tTex2, g_sSamp2), 0.2) + texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) + texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) + texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) + texture(sampler1D(g_tTex5, g_sSamp5), 0.5) + mystruct.c[1]; } vec4 Func2() { return texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3); } // Not called from entry point: vec4 Func2_unused() { return texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) + texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2); } out vec4 FragColor; void main() { FragColor = Func1() + Func2(); }