GLSL 效果示例

极光光幕:让竖向光丝沿夜空缓慢摆动

光幕上缘柔和、底缘聚亮;用二维程序纹理实现。

在线示例

修改右侧代码,左侧预览会实时更新。

观察什么

光幕上缘柔和、底缘聚亮;用二维程序纹理实现。

实现原理

二维光幕由缓慢弯曲的基线、向上衰减和高频竖丝组成。这是屏幕空间近似,不是体积散射。

找到控制效果的代码

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;

动手修改

把条纹噪声输入的 uv.x*160. 改为 uv.x*40.。竖向细丝会变宽约四倍,缓慢弯曲的极光基线仍保持原有形状。

调试与成本

exp(-abs(uv.y-ridge)*10.) 控制到基线的衰减,并非真实大气深度。把 10. 改成 20.,光会更集中在基线附近;基线的不规则弯曲仍来自四层 fbm。

用到的内置函数

一步步学会这个效果