normalView
normalView
提供相对于摄像机的表面法线(视图空间法线),并能根据材质设置自动在平滑着色与平面着色间切换。
核心优势
核心优势在于它能根据材质的 `flatShading` 属性自动选择正确的法线类型,极大地简化了代码,同时为菲涅尔、Matcap 等视角相关效果的计算提供了便捷的统一入口。
常见用途
实现菲涅尔效应(边缘光),通过计算与视线的夹角来突出物体轮廓。
作为 Matcap(材质捕获)着色的 UV 坐标,高效实现复杂的非真实感渲染。
在视图空间中进行传统光照模型(如 Blinn-Phong)的计算。
如何调整
通过切换材质的 `material.flatShading` 属性可在平滑和低多边形(Flat)风格间切换。也可在节点图中对其输出进行数学运算(如添加一个正弦波扰动)来创造风格化的视觉扭曲效果。
代码示例
1// 基于 normalView 和视线的点积计算菲涅尔/边缘光效果
2const fresnelFactor = pow( saturate( dot( normalView, vec3( 0, 0, 1 ) ) ).oneMinus(), 3.0 );
3output.color.rgb = mix( baseColor, rimColor, fresnelFactor );