positionViewDirection
positionViewDirection
提供一个从物体表面指向摄像机的、标准化的方向向量(视线向量),是光照和材质计算中的常用输入。
核心优势
核心优势在于它用一个语义清晰的节点 (`positionViewDirection`) 替代了繁琐的计算 (`normalize(-positionView)`),极大地简化了光照模型和菲涅尔效应等算法的实现,提升了代码可读性。
常见用途
实现菲涅尔效应(边缘光),通过与法线点积来判断物体轮廓。
在光照模型中作为视线向量 `V`,用于计算镜面高光。
计算环境贴图的反射向量,以实现环境反射效果。
如何调整
该节点为只读方向向量。效果调整来自于如何运用它:例如,通过调整 `pow()` 的指数可以改变边缘光的锐利程度;或将点积结果用于控制透明度,以创造“X光”般的透视效果。
代码示例
1// 计算菲涅尔/边缘光因子
2const rimFactor = positionViewDirection.dot( normalView ).oneMinus().pow( 3.0 );
3
4// 基于该因子混合基础色与边缘光颜色
5output.color.rgb = mix( baseColor, rimColor, rimFactor );