#version 450 layout(binding = 0) uniform sampler2D uCombined[4]; layout(binding = 4) uniform texture2D uTex[4]; layout(binding = 8) uniform sampler uSampler[4]; layout(binding = 12, rgba32f) uniform writeonly image2D uImage[8]; layout(location = 0) in vec2 vTex; layout(location = 1) flat in int vIndex; vec4 sample_in_function(sampler2D samp) { return texture(samp, vTex); } vec4 sample_in_function2(texture2D tex, sampler samp) { return texture(sampler2D(tex, samp), vTex); } void main() { vec4 color = texture(uCombined[vIndex], vTex); color += texture(sampler2D(uTex[vIndex], uSampler[vIndex]), vTex); color += sample_in_function(uCombined[vIndex + 1]); color += sample_in_function2(uTex[vIndex + 1], uSampler[vIndex + 1]); imageStore(uImage[vIndex], ivec2(gl_FragCoord.xy), color); }