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。