#pragma MSP stage(vertex) layout(binding=0) uniform Transform { mat4 model; mat4 vp; }; layout(binding=1) uniform Lighting { vec3 position; } light; layout(location=0) in vec4 position; layout(location=1) in vec3 normal; void main() { vec4 world_pos = model*position; gl_Position = vp*world_pos; out vec3 light_dir = world_pos.xyz-light.position; passthrough; } #pragma MSP stage(fragment) layout(binding=1) uniform Lighting { vec4 color; } light; layout(binding=0) uniform Material { vec4 color; }; layout(location=0) out vec4 frag_color; void main() { frag_color = color*vec4(vec3(max(dot(normalize(normal), normalize(light_dir)), 0.0)), 1.0); } /* Expected error: :23: Mismatched structure for uniform 'Lighting' :8: Previously declared here :27: Overlapping binding 0 for 'Material' :3: Previously used here for 'Transform' */