39 lines
No EOL
896 B
Text
39 lines
No EOL
896 B
Text
------------------
|
|
|
|
vertex_shader [[
|
|
|
|
out vec2 v_uv;
|
|
void main() {
|
|
v_uv = vec2((gl_VertexID & 1), (gl_VertexID & 2) * 0.5);
|
|
gl_Position = vec4((gl_VertexID & 1) * 2 - 1, (gl_VertexID & 2) - 1, 0, 1);
|
|
}
|
|
]]
|
|
|
|
---------------------
|
|
|
|
fragment_shader [[
|
|
|
|
uniform sampler2D u_mask;
|
|
in vec2 v_uv;
|
|
layout(location = 0) out vec4 o_color;
|
|
|
|
void main() {
|
|
if(texture(u_mask, v_uv).a > 0) discard;
|
|
|
|
vec2 view_texel = 1.0 / u_framebuffer_size;
|
|
|
|
vec4 color = vec4(0, 0, 0, 0);
|
|
int c = 0;
|
|
for(int i = 0; i < 3; ++i)
|
|
{
|
|
if(texture(u_mask, v_uv + vec2(view_texel.x * i, 0)).a == 0) ++c;
|
|
if(texture(u_mask, v_uv + vec2(-view_texel.x * i, 0)).a == 0) ++c;
|
|
if(texture(u_mask, v_uv + vec2(0, view_texel.y * i)).a == 0) ++c;
|
|
if(texture(u_mask, v_uv + vec2(0, -view_texel.y * i)).a == 0) ++c;
|
|
}
|
|
|
|
if(c == 12) discard;
|
|
vec4 x = vec4(1, 0.5, 0, 1.0f);
|
|
o_color.rgba = x;
|
|
}
|
|
]] |