#version 450 layout(set = 0, binding = 0) uniform sampler2DShadow uShadow; layout(set = 0, binding = 1) uniform texture2D uTexture; layout(set = 0, binding = 2) uniform samplerShadow uSampler; layout(location = 0) in vec3 vUV; layout(location = 0) out float FragColor; float sample_combined() { return texture(uShadow, vec3(vUV.xy, vUV.z)); } float sample_separate() { return texture(sampler2DShadow(uTexture, uSampler), vec3(vUV.xy, vUV.z)); } void main() { FragColor = sample_combined() + sample_separate(); }