GLSL 效果示例

距离雾:让远处的物体逐渐融入背景

近处轮廓保持清楚,远处同色物体逐渐趋近雾色。

在线示例

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

观察什么

近处轮廓保持清楚,远处同色物体逐渐趋近雾色。

实现原理

命中距离驱动指数透射率,远处物体颜色逐渐混入雾色,而不是全屏覆盖一层透明色。

找到控制效果的代码

p.z=mod(p.z+1.,2.)-1.;return min(length(p-vec3(.4,0,0))-.3,p.y+.55);

动手修改

暂停时间后,把密度表达式 .1+u_parameter*.7 设为 .8。远处重复的球和地面会比近处表面更明显地融入 vec3(.08,.13,.23) 的雾色。

调试与成本

射线循环最多走 80 步或距离 12,只有命中表面后才叠雾。把 1.-exp(-t*(.1+u_parameter*.7)) 换成 0.5,即可看到统一强度的叠色,它会失去由近到远的深度线索。

用到的内置函数

一步步学会这个效果