- FPS counter in window title (updates every 500ms) - F4 key toggles VSync on/off - Shader metadata: Name and Author from comments - iChannel metadata parsing for multi-pass support - Base structures: ShaderBuffer, ShaderPass - FBO/texture management functions - Updated all 11 shaders with Name/Author metadata 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
50 lines
1.1 KiB
GLSL
50 lines
1.1 KiB
GLSL
// Name: Kishimisu
|
|
// Author: [TO_BE_COMPLETED]
|
|
#version 330 core
|
|
precision highp float;
|
|
|
|
out vec4 FragColor;
|
|
in vec2 vUV;
|
|
uniform vec2 iResolution;
|
|
uniform float iTime;
|
|
|
|
vec3 palette( float t) {
|
|
vec3 a = vec3(0.5, 0.5, 0.5);
|
|
vec3 b = vec3(0.5, 0.5, 0.5);
|
|
vec3 c = vec3(1.0, 1.0, 1.0);
|
|
vec3 d = vec3(0.263, 0.416, 0.557);
|
|
return a + b * cos( 6.28318 * (c * t * d) );
|
|
}
|
|
|
|
void mainImage( out vec4 fragColor, in vec2 fragCoord )
|
|
{
|
|
vec2 uv = (fragCoord * 2.0 - iResolution.xy) / iResolution.y;
|
|
vec2 uv0 = uv;
|
|
vec3 finalColor = vec3(0.0);
|
|
|
|
for (float i = 0.0; i < 4.0; i++) {
|
|
uv = fract(uv * 1.5) - 0.5;
|
|
|
|
float d = length(uv) * exp(-length(uv0));
|
|
|
|
vec3 col = palette(length(uv0) + i * 0.4 + iTime * 0.4);
|
|
|
|
d = sin(d * 8.0 + iTime) / 8.0;
|
|
|
|
d = abs(d);
|
|
|
|
d = pow(0.01 / d, 1.2);
|
|
|
|
finalColor += col * d;
|
|
}
|
|
|
|
fragColor = vec4(finalColor, 1.0);
|
|
}
|
|
|
|
void main() {
|
|
vec2 fragCoordPixels = vUV * iResolution;
|
|
vec4 outColor;
|
|
mainImage(outColor, fragCoordPixels);
|
|
FragColor = outColor;
|
|
}
|