import msp_interface; layout(set=1) uniform AlphaCutoff { float alpha_cutoff; }; layout(set=1) uniform sampler2D alpha_map; layout(constant_id=auto) const bool use_alpha_cutoff = false; #pragma MSP stage(vertex) virtual vec4 get_vertex_position() { return vertex; } virtual mat4 get_vertex_transform() { return world_obj_matrix; } virtual void clipping(vec3 eye_vertex) { } void main() { vec4 eye_vertex = eye_world_matrix*get_vertex_transform()*get_vertex_position(); clipping(eye_vertex.xyz); gl_Position = clip_eye_matrix*eye_vertex; passthrough; } #pragma MSP stage(fragment) layout(location=0) out vec4 frag_color; void main() { if(use_alpha_cutoff) { float alpha = texture(alpha_map, texcoord.xy).a; if(alpha