#version 310 es precision mediump float; precision highp int; layout(set = 0, binding = 2) uniform mediump texture2D uTexture0; layout(set = 0, binding = 3) uniform mediump texture2D uTexture1; layout(set = 0, binding = 0) uniform mediump sampler uSampler0; layout(set = 0, binding = 1) uniform mediump sampler uSampler1; layout(location = 0) in vec2 vTex; layout(location = 0) out vec4 FragColor; vec4 sample_dual(mediump sampler samp, mediump texture2D tex) { return texture(sampler2D(tex, samp), vTex); } vec4 sample_duals() { vec4 a = sample_dual(uSampler0, uTexture0); vec4 b = sample_dual(uSampler1, uTexture1); return a + b; } vec4 sample_global_tex(mediump sampler samp) { vec4 a = texture(sampler2D(uTexture0, samp), vTex); vec4 b = sample_dual(samp, uTexture1); return a + b; } vec4 sample_global_sampler(mediump texture2D tex) { vec4 a = texture(sampler2D(tex, uSampler0), vTex); vec4 b = sample_dual(uSampler1, tex); return a + b; } void main() { vec4 c0 = sample_duals(); vec4 c1 = sample_global_tex(uSampler0); vec4 c2 = sample_global_tex(uSampler1); vec4 c3 = sample_global_sampler(uTexture0); vec4 c4 = sample_global_sampler(uTexture1); FragColor = (((c0 + c1) + c2) + c3) + c4; }