highpModelNormalViewMatrix
highpModelNormalViewMatrix
提供一个用于正确变换法线向量的矩阵(模型视图矩阵的逆转置矩阵),确保在物体发生非等比缩放时光照计算依然准确,并支持高精度渲染上下文。
核心优势
自动计算并提供正确的法线变换矩阵(逆转置矩阵),将开发者从手动计算、更新和传递 uniform 的繁琐工作中解放出来,从根本上避免了因非等比缩放导致的光照错误,并无缝支持高精度渲染。
常见用途
在标准光照模型(如 PBR)中,将模型法线转换到视图空间进行光照计算。
在法线贴图中,作为构建 TBN 矩阵的基础,用于将切线空间法线转换到视图空间。
在边缘光或菲涅尔效应中,用于计算表面法线与视线方向的夹角。
在环境反射与折射中,统一法线与视图向量的坐标系以计算反射/折射方向。
如何调整
此节点无参数可调。其价值在于“使用”与“不使用”的对比:若不使用(或错误使用其他矩阵),非等比缩放的物体(如被压扁的球体)光照会严重扭曲,高光会变形;使用此节点则能确保无论物体如何变形,光照和高光都表现得自然、正确。
代码示例
1
2// 将模型空间法线变换到视图空间
3const transformedNormal = ( highpModelNormalViewMatrix * normal() ).xyz;
4