uniform mat4 mvp; uniform sampler2D tex; uniform vec3 tint; uniform vec3 ambient; #pragma MSP stage(vertex) layout(location=0) in vec4 position; layout(location=1) in vec3 normal; layout(location=2) in vec2 texcoord; void main() { out float light = normal.z; passthrough; gl_Position = mvp*position; } #pragma MSP stage(fragment) out vec4 frag_color; void main() { vec3 color = texture(tex, texcoord).rgb; color *= tint; color *= light; color += ambient; frag_color = vec4(color, 1.0); } /* Expected output: vertex layout(location=0) uniform mat4 mvp; layout(location=0) in vec4 position; layout(location=1) in vec3 normal; layout(location=2) in vec2 texcoord; layout(location=0) out float light; layout(location=1) out vec2 _vs_out_texcoord; void main() { light = normal.z; _vs_out_texcoord = texcoord; gl_Position = mvp*position; } */ /* Expected output: fragment layout(location=4) uniform sampler2D tex; layout(location=5) uniform vec3 tint; layout(location=6) uniform vec3 ambient; layout(location=0) out vec4 frag_color; layout(location=1) in vec2 _vs_out_texcoord; layout(location=0) in float light; void main() { vec3 color = texture(tex, _vs_out_texcoord).rgb; color *= tint; color *= light; color += ambient; frag_color = vec4(color, 1.0); } */