视差贴图(Parallax Mapping)是现代实时渲染中用于增强表面细节表现的核心技术之一。作为法线贴图的进阶方案,它能够在几乎不增加几何复杂度的情况下,为平坦表面创造出令人信服的立体感。在Unity URP管线中,Shader Graph提供的Parallax Mapping节点让这一技术的应用变得前所未有的便捷。
我第一次在实际项目中使用视差贴图是在开发一个中世纪城堡场景时。当时我们遇到一个难题:砖墙材质在特写镜头下缺乏足够的深度感,而增加实际几何细节又会导致性能问题。正是视差贴图技术完美解决了这个矛盾——通过一张高度贴图,就让简单的平面呈现出砖块凹凸有致的立体效果,帧率却几乎不受影响。
传统3D图形学中,表面细节表现经历了几个重要发展阶段:
几何细分阶段:早期完全依赖模型网格密度,每个凹凸都需要实际建模。这种方式资源消耗大,难以表现精细表面纹理。
凹凸贴图阶段:通过扰动表面法线方向模拟凹凸感(法线贴图)。虽然效率高,但无法表现真正的深度变化和自遮挡效果。
视差映射阶段:引入高度信息,根据视角动态偏移纹理坐标。这是目前性能与效果平衡的最佳方案之一。
在移动端硬件性能突飞猛进的今天,视差贴图已经成为AAA级手游的标配技术。以《原神》为例,其场景中几乎所有石质表面都采用了视差贴图技术,在保持高性能的同时实现了令人惊叹的材质细节。
视差贴图的本质是一种基于屏幕空间的纹理坐标偏移技术。想象你站在一堵砖墙前左右移动头部:近处的砖块会相对于远处的灰缝产生明显的位移。视差贴图正是通过数学计算模拟这种视差现象。
关键技术突破点在于:
与简单的法线贴图相比,视差贴图能正确表现:
Unity URP中的Parallax Mapping节点封装了复杂的视差计算逻辑,让美术人员无需编写Shader代码就能实现高级表面效果。下面我将拆解这个黑盒子,让你真正掌握它的每个细节。
Heightmap(高度贴图)
这是视差效果的核心驱动源。优质高度贴图应该具备:
制作技巧:
photoshop复制1. 在PS中打开漫反射贴图
2. 去色后应用"高反差保留"滤镜(半径3-5像素)
3. 使用"亮度/对比度"增强边缘对比
4. 最后用"高斯模糊"轻微柔化(半径1像素)
Amplitude(振幅)
这个参数控制凹凸的物理高度(单位:厘米)。经验值参考:
重要提示:振幅值需与场景比例匹配。如果发现效果不明显,先检查场景单位设置是否正确。
Parallax UVs
这些偏移后的坐标应该直接连接到:
典型连接方式:
ShaderGraph复制[Heightmap] → [Parallax Mapping] → [所有贴图采样器的UV输入]
节点内部实际执行的是单步视差偏移计算,核心公式为:
code复制UV偏移量 = (视角向量.xy / 视角向量.z) × (高度值 × 振幅)
这个计算在切线空间完成,因此需要:
性能优化点:
让我们通过一个完整的砖墙材质案例,展示专业级视差贴图的实现流程。
| 贴图类型 | 规格要求 | 制作要点 |
|---|---|---|
| 漫反射贴图 | 2048x2048 RGB | 包含砖块颜色变化和污渍细节 |
| 高度贴图 | 2048x2048 R16 | 明确区分砖块(亮)和灰缝(暗) |
| 法线贴图 | 2048x2048 RGB | 与高度贴图结构匹配 |
| 粗糙度贴图 | 1024x1024 R8 | 灰缝区域更粗糙(值更高) |
基础设置
视差模块构建
ShaderGraph复制[Texture2D Property: Heightmap] → [Parallax Mapping Heightmap输入]
[Float Property: Amplitude(20)] → [Parallax Mapping Amplitude输入]
[UV节点] → [Parallax Mapping UVs输入]
[Parallax Mapping输出] → [所有贴图采样器的UV输入]
材质属性连接
高级效果增强
地形系统使用视差贴图需要特殊处理:
分层材质方案
性能优化技巧
边缘扭曲问题
症状:材质边缘出现不自然的拉伸
解决方法:
ShaderGraph复制[Position节点] → [Fresnel节点] → [Lerp混合原始UV和视差UV]
纹理闪烁问题
症状:移动时出现像素闪烁
解决方法:
移动端适配方案
质量与性能平衡表
| 设置项 | 高质量方案 | 性能方案 |
|---|---|---|
| 高度贴图分辨率 | 2048x2048 | 1024x1024 |
| 采样次数 | 4次迭代 | 单次采样 |
| 振幅范围 | 0-200cm | 0-50cm |
| 计算精度 | 全精度 | 半精度 |
对于追求影视级效果的团队,可以升级到Parallax Occlusion Mapping:
实现要点:
| 技术 | 性能消耗 | 视觉效果 | 适用场景 |
|---|---|---|---|
| 法线贴图 | ★☆☆☆☆ | ★★☆☆☆ | 移动端简单材质 |
| 视差贴图 | ★★☆☆☆ | ★★★☆☆ | 主流游戏场景 |
| 视差遮蔽映射 | ★★★☆☆ | ★★★★☆ | 主机/PC高画质 |
| 曲面细分 | ★★★★☆ | ★★★★★ | 影视级渲染 |
在实际项目中,我通常会根据目标平台和艺术风格混合使用这些技术。比如主角武器使用曲面细分+视差遮蔽映射,而场景道具则使用标准视差贴图。