uniform Colors { vec4 color1; vec4 color2; }; uniform sampler2D mask; uniform Transform { mat4 mvp; } transform; #pragma MSP stage(vertex) layout(location=0) in vec4 position; layout(location=1) in vec2 texcoord; void main() { passthrough; gl_Position = transform.mvp*position; } #pragma MSP stage(fragment) layout(location=0) out vec4 frag_color; void main() { frag_color = texture(mask, texcoord).r > 0.5 ? color1 : color2; } // Target API: Vulkan /* Expected output: vertex layout(set=0, binding=24) uniform Transform { mat4 mvp; } transform; layout(location=0) in vec4 position; layout(location=1) in vec2 texcoord; layout(location=0) out vec2 _vs_out_texcoord; void main() { _vs_out_texcoord = texcoord; gl_Position = transform.mvp*position; } */ /* Expected output: fragment layout(set=0, binding=23) uniform Colors { vec4 color1; vec4 color2; }; layout(set=0, binding=75) uniform sampler2D mask; layout(location=0) out vec4 frag_color; layout(location=0) in vec2 _vs_out_texcoord; void main() { frag_color = texture(mask, _vs_out_texcoord).r>0.5?color1:color2; } */