Shader Graph中Transform节点为何受UV映射影响?
自定义着色器法线贴图异常问题排查
在自定义着色器开发中遇到法线贴图表现异常的问题,最终定位原因是对象UV映射通道分配错误。
初始设置
- UV0通道存储调色板纹理映射(UV被打乱,仅需对应正确颜色的像素)
- UV1通道存储传统UV展开,用于法线贴图采样
对应的设置界面:
问题现象
由于需要自行计算光照,使用Transform节点将切线空间法线转换到世界空间后,出现两个异常:
- 画面产生奇怪的伪影(artifacts)
- 法线“固定”在对象上,不会随视角变化
异常效果如下:
(右侧球体颠倒,法线也随之颠倒;两侧均存在伪影,当前视角下右侧球体的伪影更明显)
排查与解决
- 排查发现:UV0的调色板映射干扰了Transform节点的切线空间到世界空间的变换逻辑,移除该节点后伪影消失
- 调整UV通道分配:将传统UV展开移至UV0,调色板映射移至UV1后,问题完全解决
正常渲染效果:
(无伪影,法线不再固定于对象,光照表现正常)
疑问
原本认为Transform节点是基于对象几何进行空间变换,若该节点实际依赖UV映射,为什么没有提供UV通道选择的下拉选项?
内容的提问来源于stack exchange,提问作者Wojtek Wencel
相关产品推荐
相关产品推荐

