32 lines
No EOL
690 B
Text
32 lines
No EOL
690 B
Text
common [[
|
|
layout(std140, binding = 4) uniform Drawcall {
|
|
uniform vec4 u_offset_scale;
|
|
uniform vec4 u_channel_mask;
|
|
};
|
|
]]
|
|
|
|
vertex_shader [[
|
|
out vec2 v_uv;
|
|
void main() {
|
|
v_uv = vec2(gl_VertexID & 1, (gl_VertexID & 2) * 0.5);
|
|
vec4 pos = vec4((gl_VertexID & 1) * 2 - 1, (gl_VertexID & 2) - 1, 0, 1);
|
|
pos.xy = pos.xy * u_offset_scale.zw + u_offset_scale.xy;
|
|
gl_Position = pos;
|
|
}
|
|
]]
|
|
|
|
|
|
fragment_shader [[
|
|
layout (binding=0) uniform sampler2D u_texture;
|
|
in vec2 v_uv;
|
|
out vec4 o_color;
|
|
void main() {
|
|
o_color = textureLod(u_texture, v_uv, 0);
|
|
if (u_channel_mask.a <= 0) {
|
|
o_color.rgb *= u_channel_mask.rgb;
|
|
o_color.a = 1;
|
|
}
|
|
else
|
|
o_color *= u_channel_mask;
|
|
}
|
|
]] |