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.

Built-in functions used

Learn it step by step