GLSL shader example
Procedural Aurora Curtains
A curved baseline, upward falloff and fine vertical strands form a 2D curtain. This is a screen-space approximation rather than volumetric scattering.
Live example
Edit the code and the preview updates as you type.
What to observe
Procedural Aurora Curtains.
Mechanism
A curved baseline, upward falloff and fine vertical strands form a 2D curtain. This is a screen-space approximation rather than volumetric scattering.
The controlling code
float ridge=.45+.12*sin(uv.x*7.+u_time*.2)+.06*fbm(vec2(uv.x*8.,u_time*.1));float curtain=exp(-abs(uv.y-ridge)*10.)*smoothstep(ridge-.02,ridge+.08,uv.y);float strands=.5+.5*noise(vec2(uv.x*160.,u_time*.3));c+=mix(vec3(.1,.9,.4),vec3(.5,.2,1.),uv.y)*curtain*strands;
Experiment
Change the uv.x*160. input of strands noise to uv.x*40.. The vertical filaments become about four times wider, while the slowly bending ridge keeps its original shape.
Debugging and cost
The factor exp(-abs(uv.y-ridge)*10.) controls distance falloff, not physical atmospheric depth. Try 20. in place of 10. to confine light more tightly to the ridge; the four-octave fbm still supplies its irregular bend.