normalMap
normalMap
使用一张法线贴图(存储方向信息的彩色纹理)来扰动表面法线,为低多边形模型赋予高精度的凹凸细节。
核心优势
以极高的性能效率为低多边形模型赋予丰富的视觉细节,将精细的表面信息与几何体解耦,是实时渲染中提升真实感的关键技术。
常见用途
增强角色和生物的细节(皮肤、盔甲)
丰富环境和建筑表面(砖墙、岩石)
制作硬表面模型细节(面板线、螺栓)
如何调整
通过调整 `scaleNode`(一个 `vec2`)来控制凹凸强度;如果凹凸方向错误,可以翻转其 Y 分量(如 `vec2(1, -1)`)来修正。修改输入给 `texture` 节点的 UV 坐标(如 `uv().mul(5)`)可以实现法线贴图的平铺效果。
代码示例
1// 使用法线贴图纹理和强度值来定义最终的法线
2const finalNormal = normalMap( texture( normalTex ), normalScale );