36 lines
1.3 KiB
GLSL
36 lines
1.3 KiB
GLSL
|
|
uniform float g_Time;
|
|
|
|
varying vec2 v_TexCoord;
|
|
|
|
varying vec4 v_ViewRect;
|
|
|
|
|
|
void main() {
|
|
vec4 color = vec4(0, 0, 0, 0);
|
|
|
|
float s = sin((v_TexCoord.y - v_TexCoord.x) * 0.035 /*+ g_Time*/);
|
|
vec4 grid = vec4(1, 1, 0, 0.2) * smoothstep(0.7, 0.8, abs(s));
|
|
|
|
float f = (step(v_TexCoord.x, v_ViewRect.x) + step(v_ViewRect.z, v_TexCoord.x)) +
|
|
(step(v_TexCoord.y, v_ViewRect.y) + step(v_ViewRect.w, v_TexCoord.y));
|
|
|
|
color = mix(color, grid, saturate(f));
|
|
|
|
float borderWidth = 10.0f;
|
|
|
|
float rightBorder = step(v_ViewRect.x - borderWidth, v_TexCoord.x) * step(v_TexCoord.x, v_ViewRect.x) +
|
|
step(v_ViewRect.z, v_TexCoord.x) * step(v_TexCoord.x, v_ViewRect.z + borderWidth);
|
|
float rightBorderMask = step(v_TexCoord.y, v_ViewRect.w + borderWidth) * step(v_ViewRect.y - borderWidth, v_TexCoord.y);
|
|
|
|
float leftBorder = step(v_ViewRect.y - borderWidth, v_TexCoord.y) * step(v_TexCoord.y, v_ViewRect.y) +
|
|
step(v_ViewRect.w, v_TexCoord.y) * step(v_TexCoord.y, v_ViewRect.w + borderWidth);
|
|
float leftBorderMask = step(v_TexCoord.x, v_ViewRect.z + borderWidth) * step(v_ViewRect.x - borderWidth, v_TexCoord.x);
|
|
|
|
float border = rightBorder * rightBorderMask + leftBorder * leftBorderMask;
|
|
|
|
color = mix(color, vec4(1, 1, 0, 0.5), saturate(border));
|
|
|
|
gl_FragColor = color;
|
|
}
|