cameraPosition
cameraPosition
在着色器中提供摄像机在世界坐标系(World Space)下的精确位置,是所有依赖观察者位置的视觉效果(如光照、雾效、反射)的核心数据源。
核心优势
自动化且精确地提供摄像机的世界坐标,无需开发者手动管理和更新 uniform。它通过高效的“就地更新”方式保证了性能,并使材质代码更简洁、与渲染循环解耦。
常见用途
计算高光光照的视线方向
计算雾效、景深等基于距离的效果
实现菲涅尔效应和轮廓光
计算环境贴图的反射/折射向量
实现广告牌效果(使其始终朝向摄像机)
如何调整
此节点的值无法在着色器中直接调整。你通过在 JavaScript 场景中移动 THREE.Camera 对象来“调整”它。摄像机位置的任何变化都会自动更新此节点的值,从而实时影响所有依赖于它的视觉效果,如轮廓光会动态地“拥抱”从新视角看到的物体边缘。
代码示例
1
2// 计算从表面指向摄像机的视线方向
3const viewDirection = TSL.normalize(TSL.cameraPosition.sub(positionWorld));
4