attenuationDistance
attenuationDistance
提供一个标准化的浮点数值,代表从光源到正在着色的表面点之间的直接距离,是光照衰减计算最核心的输入。
核心优势
将底层的“获取距离”操作完全抽象化,开发者无需手动管理位置 uniform 和编写 GLSL 数学代码,极大地简化了自定义光照和所有基于距离的特效实现。
常见用途
实现自定义的、非物理的光照衰减函数。
驱动基于距离的视觉特效(VFX),如近距离发光或魔法符文显现。
根据与光源的距离动态切换着色器逻辑(LOD)。
为调试目的将距离场可视化为灰度图。
如何调整
该节点的值不能直接设置。当场景中光源与被渲染物体之间的物理距离发生改变时,它的值会自动更新。它通常被直接用作数学公式或视觉特效的输入变量。
代码示例
1// 创建一个从光源扩散的声呐脉冲效果
2const expandingRadius = timerLocal( 1.0 ); // 半径在1秒内扩张并重置
3const ringWidth = 0.1;
4
5// 基于与扩张半径的距离差计算一个柔和的环带
6const pulse = smoothstep( ringWidth, 0.0, abs( attenuationDistance.sub( expandingRadius ) ) );
7emissive = vec3( pulse );