mirror of
https://github.com/mr0xb/dotfiles_chezmoi.git
synced 2026-08-28 03:44:57 -04:00
43 lines
1.4 KiB
GLSL
43 lines
1.4 KiB
GLSL
#define PI 3.141592653589793
|
|
|
|
float diamondAt(vec2 uv, vec2 c, float r) {
|
|
vec2 q = (uv - c) * vec2(iResolution.x / iResolution.y, 1.0);
|
|
return 1.0 - smoothstep(r * 0.20, r, abs(q.x) + abs(q.y));
|
|
}
|
|
|
|
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
|
vec2 uv = fragCoord.xy / iResolution.xy;
|
|
vec4 base = texture(iChannel0, uv);
|
|
vec3 col = base.rgb;
|
|
|
|
float edgeD = min(min(uv.x, 1.0 - uv.x), min(uv.y, 1.0 - uv.y));
|
|
float frame = 1.0 - smoothstep(0.0, 0.055, edgeD);
|
|
|
|
float chrome = pow(
|
|
0.5 + 0.5 * sin((uv.x * 5.0 + uv.y * 3.0) * PI * 2.0 - iTime * 2.0),
|
|
3.0
|
|
);
|
|
|
|
float bead = pow(
|
|
0.5 + 0.5 * sin((uv.x + uv.y) * 120.0 + iTime * 1.7),
|
|
14.0
|
|
);
|
|
|
|
vec3 darkGold = vec3(0.23, 0.11, 0.02);
|
|
vec3 hotGold = vec3(1.00, 0.82, 0.30);
|
|
vec3 frameColor = mix(darkGold, hotGold, chrome);
|
|
|
|
col = mix(col, col + frameColor * (0.20 + 0.35 * bead), frame * 0.55);
|
|
|
|
// Big fake diamonds in the corners.
|
|
float corners = 0.0;
|
|
corners += diamondAt(uv, vec2(0.035, 0.045), 0.040);
|
|
corners += diamondAt(uv, vec2(0.965, 0.045), 0.040);
|
|
corners += diamondAt(uv, vec2(0.035, 0.955), 0.040);
|
|
corners += diamondAt(uv, vec2(0.965, 0.955), 0.040);
|
|
|
|
float twinkle = 0.75 + 0.25 * sin(iTime * 5.0);
|
|
col += corners * vec3(1.0, 0.90, 0.55) * twinkle * 0.80;
|
|
|
|
fragColor = vec4(clamp(col, 0.0, 1.0), base.a);
|
|
}
|