// --- FRAGMENT SHADER --- #ifdef FRAGMENT precision highp float; varying vec2 v_uv;
uniform float u_time; // Time in seconds uniform vec2 u_resolution; // Screen resolution uniform vec2 u_mouse; // Mouse position (normalized 0-1)
// ------------------------------ // Helper functions // ------------------------------ float random (vec2 st) { return fract(sin(dot(st.xy, vec2(12.9898,78.233))) * 43758.5453123); }
vec3 hsv2rgb(vec3 c) { vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); }
// --- FRAGMENT SHADER --- #ifdef FRAGMENT precision highp float; varying vec2 v_uv;
uniform float u_time; // Time in seconds uniform vec2 u_resolution; // Screen resolution uniform vec2 u_mouse; // Mouse position (normalized 0-1) xukmi fx shader
// ------------------------------ // Helper functions // ------------------------------ float random (vec2 st) { return fract(sin(dot(st.xy, vec2(12.9898,78.233))) * 43758.5453123); } // --- FRAGMENT SHADER --- #ifdef FRAGMENT precision
vec3 hsv2rgb(vec3 c) { vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); } varying vec2 v_uv