normalWorldGeometry
normalWorldGeometry
一个 TSL 节点,表示当前渲染对象的几何体顶点法线在世界空间中的方向。它代表未经修改的原始几何法线。
核心优势
提供在世界坐标系下的原始几何法线,这是实现自定义光照、环境效果和基于表面朝向的着色技术的基础,且不受视图变换影响。
常见用途
实现自定义光照模型(如 Phong 或 Blinn-Phong)。
创建边缘光(Rim Lighting)或菲涅尔(Fresnel)效果。
在不考虑法线贴图的情况下,进行环境反射或折射计算。
可视化和调试模型的几何法线。
如何调整
该节点的输出值取决于模型的几何体法线数据和其世界变换(位置、旋转、缩放)。此外,材质的 `flatShading` 属性会影响法线是在顶点间插值还是在整个面片上保持一致。
代码示例
1let normal = normalViewGeometry.transformDirection( cameraViewMatrix );
2
3if ( builder.material.flatShading !== true ) {
4
5 normal = normal.toVarying( 'v_normalWorldGeometry' );
6
7}
8
9return normal.normalize().toVar( 'normalWorldGeometry' );