☰
✎ Fractal Flame
bearbeiten
Bereit
Vertex Shader
Kopieren
attribute vec2 a_position; void main() { gl_Position = vec4(a_position, 0.0, 1.0); }
Fragment Shader
Kopieren
precision mediump float; uniform float u_time; uniform vec2 u_resolution; uniform vec2 u_mouseNorm; uniform float u_zoom; vec2 rotate(vec2 p, float a) { float c = cos(a), s = sin(a); return vec2(p.x*c - p.y*s, p.x*s + p.y*c); } float flame(vec2 p) { float t = u_time * 0.2; float d = 0.0; for (float i = 0.0; i < 5.0; i++) { p = rotate(p, t + i * 0.5); p = abs(p) / dot(p, p) - 0.5; d += exp(-length(p) * 3.0) * (0.5 + 0.5 * sin(i + t)); } return d; } void main() { vec2 uv = (gl_FragCoord.xy - 0.5*u_resolution.xy) / u_resolution.y; uv *= 2.0 / u_zoom; uv += (u_mouseNorm - 0.5) * 0.5; float f = flame(uv); vec3 col = vec3(0.0); col.r = f * 0.8 + f * f * 0.5; col.g = f * f * 0.6; col.b = f * f * f * 0.4; col = pow(col, vec3(0.8)); col += vec3(0.02, 0.01, 0.05); gl_FragColor = vec4(col, 1.0); }
💾 Speichern
⬇ Export JSON
← Zurück
Live-Vorschau
FPS: --
↻ Neu laden
⏸ Pause