Triplanar 节点是 Unity URP Shader Graph 中一个功能强大的纹理采样工具,它通过在世界空间的三个坐标轴上投影纹理来解决复杂几何体纹理映射的难题。与传统的 UV 映射方法不同,Triplanar 映射不需要预先定义 UV 坐标,而是基于物体的世界位置和法线方向动态生成纹理投影,这使得它特别适合处理不规则形状的模型或需要无缝纹理拼接的场景。
在游戏开发中,Triplanar 技术被广泛应用于地形渲染、程序化生成环境、岩石、山脉等自然元素的纹理映射。传统 UV 映射在处理这类复杂表面时往往会出现纹理拉伸、接缝明显等问题,而 Triplanar 映射能够自动根据表面角度混合三个平面的投影,创造出更加自然和连续的纹理效果。
描述
Triplanar 节点的核心原理是基于世界空间坐标在三个轴向(X、Y、Z)上分别进行纹理投影和采样。当 Shader 处理每个片段时,节点会计算该片段在世界空间中的位置和法线方向,然后在三个坐标平面上分别生成 UV 坐标并对输入纹理进行采样。最终的颜色输出是这三个采样结果的加权混合,权重由表面法线在各轴向上的分量决定。
混合机制的工作原理是通过法线向量在各轴向上的投影强度来确定每个平面样本的贡献度。当表面法线更接近某个坐标轴时,对应平面的纹理样本就会获得更高的权重。Blend参数控制着这种混合的锐利程度,较高的值会使法线最对齐的平面占据主导地位,而较低的值则会产生更平滑的过渡。
输入空间的选择允许开发者灵活控制投影的参考坐标系。默认使用AbsoluteWorld空间,这意味着投影基于全局的世界坐标,不受物体变换的影响。其他选项如Object空间则会使投影相对于物体自身的坐标系统,这在某些特定效果中非常有用。
类型选择让节点能够正确处理不同类型的纹理数据。当设置为Default时,节点按常规颜色纹理处理;当设置为Normal时,节点会专门处理法线贴图,包括正确的法线解包和空间转换,确保最终输出的法线向量在正确的坐标系中。
需要注意的是,Triplanar 节点只能在Fragment着色器阶段使用,因为它需要每个片段的精确位置和法线信息来进行计算。如果在顶点着色器中使用,将无法获得正确的投影效果。
端口
Triplanar 节点提供了一系列输入和输出端口,让开发者能够精确控制纹理投影的各个方面:
- Texture 输入端口:这是 Triplanar 节点的核心输入,接受需要被投影的纹理资源。可以连接任何 2D 纹理,包括颜色纹理、法线贴图、高度图等。纹理的质量设置(如过滤模式、各向异性过滤)会直接影响最终的投影效果。
- Sampler 输入端口:控制纹理的采样方式,包括采样状态和采样器设置。在大多数情况下,可以使用默认采样器,但在需要特殊过滤效果或性能优化时,可以连接自定义采样器。
- Position 输入端口:指定用于生成投影 UV 的坐标位置。默认绑定到输入空间的位置信息,但可以连接自定义的位置数据来实现特殊效果,如基于时间的动态偏移或程序化变形。
- Normal 输入端口:提供表面法线信息用于混合三个平面的投影。默认使用输入空间的法线向量,但可以覆盖此输入来实现自定义的混合效果,比如忽略某些方向的投影或增强特定角度的纹理表现。
- Tile 输入端口:控制生成 UV 的平铺频率,相当于传统 UV 映射中的纹理缩放。较高的值会增加纹理密度,使纹理看起来更小、更密集;较低的值则会减少纹理重复,使纹理元素显得更大。
- Blend 输入端口:调节各平面之间的混合强度,这是控制 Triplanar 效果外观的关键参数。混合强度的影响包括:
- 值为 0 时,三个平面平等贡献,不考虑法线方向
- 值为 1 时,开始出现基于法线的权重分配
- 值为 5-10 时,产生明显的方向性混合,法线对齐的平面占据主导
- 极高值时,几乎只使用法线最对齐的单一平面投影
- Out 输出端口:输出最终的混合结果。当 Type 设置为 Default 时,输出 RGBA 颜色值;当 Type 设置为 Normal 时,输出转换到指定输出空间的法线向量。
控件
Triplanar 节点的控件提供了高层次的效果配置,影响节点的整体行为:
- Type 下拉框:这是最重要的控件之一,决定节点如何处理输入纹理和生成输出:
- Default 模式:用于常规颜色纹理、粗糙度贴图、金属度贴图等标准纹理。节点直接采样纹理并混合 RGB 颜色值。
- :专门为法线贴图设计,包含特殊的处理逻辑:


