Wirbelrauch
In Wirbelrauch Volume Shader behandelt „Preset overview“ vor allem: 2D noise-based swirling smoke pattern.. Das hilft beim Einordnen von Shader-Komplexität, Browser-Grafikpfad und GPU-Stabilität.
Für reale Messungen Browser, Preset, Fenstergröße, Energiemodus und thermischen Zustand fixieren. Bei Hitze oder Hängern Komplexität senken oder stoppen.
Leistungsfaktoren
Noise layers
Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.
Coordinate warping
Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.
No ray loop
Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.
Editierbare Parameter
Twirl strength
Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.
Noise scale
Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.
Smoke threshold
Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.
#version 300 es
precision highp float;
out vec4 outColor;
in vec2 v_uv;
uniform float u_time; uniform vec2 u_resolution;
float hash(vec2 p){p=fract(p*vec2(123.34,345.45));p+=dot(p,p+34.345);return fract(p.x*p.y);}
float noise(vec2 p){ vec2 i=floor(p); vec2 f=fract(p); f=f*f*(3.0-2.0*f);
float a=hash(i), b=hash(i+vec2(1,0)), c=hash(i+vec2(0,1)), d=hash(i+vec2(1,1));
return mix(mix(a,b,f.x), mix(c,d,f.x), f.y);
}
void main(){
vec2 uv = v_uv;
vec2 p = (uv*2.0-1.0);
p.x *= u_resolution.x/u_resolution.y;
float r = length(p);
float ang = atan(p.y,p.x) + 0.8*sin(u_time*0.5) + 2.5*r;
vec2 q = vec2(cos(ang), sin(ang))*r*1.5 + 0.15*u_time;
float n = noise(q*3.0) + 0.5*noise(q*6.0);
float smoke = smoothstep(0.35, 0.9, n);
vec3 col = mix(vec3(0.05,0.08,0.12), vec3(0.8,0.9,1.0), smoke);
outColor = vec4(col,1.0);
}