☰
✎ Electric Plasma
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_audioLow; uniform float u_audioMid; uniform float u_audioHigh; float hash(vec2 p) { return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); } float noise(vec2 p) { vec2 i = floor(p), f = fract(p); f = f*f*(3.0-2.0*f); return mix(mix(hash(i), hash(i+vec2(1.0,0.0)), f.x), mix(hash(i+vec2(0.0,1.0)), hash(i+vec2(1.0,1.0)), f.x), f.y); } void main() { vec2 uv = gl_FragCoord.xy / u_resolution.xy; float t = u_time * 0.5; vec2 p = uv * 4.0; float n1 = noise(p + vec2(t, t*0.7)); float n2 = noise(p * 2.0 - vec2(t*0.8, t)); float n3 = noise(p * 4.0 + vec2(t*0.3, -t*0.5)); float plasma = n1 + n2 * 0.5 + n3 * 0.25; plasma += u_audioLow * 0.3 + u_audioMid * 0.2; vec3 col = vec3(0.0); col.r = smoothstep(0.4, 0.6, plasma) + u_audioHigh * 0.5; col.g = smoothstep(0.3, 0.5, plasma) * 0.8; col.b = smoothstep(0.5, 0.7, plasma) * 0.6 + u_audioLow * 0.4; col += vec3(0.1, 0.3, 0.8) * pow(plasma, 4.0); float mouseDist = length(uv - u_mouseNorm); col += vec3(0.5, 0.8, 1.0) * smoothstep(0.3, 0.0, mouseDist) * 0.4; gl_FragColor = vec4(col, 1.0); }
💾 Speichern
⬇ Export JSON
← Zurück
Live-Vorschau
FPS: --
↻ Neu laden
⏸ Pause