GameTech/URP 渲染实战

案例 13.4砖墙 PBR 套图入门

目标:用配套的 bricks 套图(Albedo、Normal、Mask、Height)在 URP Lit 中组装一面砖墙,观察 Mask 和高度图各自的贡献。

配套砖墙贴图由 tools/gen_textures.py 程序生成,结构与刷漆金属类似:一张“砖块/灰缝”结构图派生出所有通道。Albedo 中砖块为不同深浅的红褐色、灰缝为浅灰;Height 中砖块高、灰缝低;Normal 由 Height 求导得到;Mask 的 R 全为 0(砖墙没有金属),G 在灰缝附近降低(AO),A 中砖块光滑度约 0.25~0.4、灰缝约 0.1。

图 13-15砖墙套图(URP Lit)。左:只有 Albedo + Normal,光滑度为默认的 0.5,墙面和地面有塑料般的反光;中:+ Mask,光滑度与 AO 来自贴图,砖墙变得干燥、灰缝更暗;右:+ Height 作为视差贴图(Parallax 0.05),地面的砖块在掠射角下有了真实的高低错落。

左图是一个非常常见的“半成品”状态:只有颜色和法线时,Lit 的默认光滑度 0.5 对砖块来说太高了,掠射角下地面泛着一层塑料光。中图中 Mask 提供的低光滑度让砖块回到了“干燥的陶土”,灰缝的低 AO 让结构更清晰。右图的视差映射(URP Lit 使用的是单步偏移的 ParallaxMapping,第 7 章有详细介绍)在掠射角下效果最明显,代价是一次额外的高度图采样,且在轮廓处没有真实的几何变化。

组装一套材质时,可以按下面的顺序检查:先单独看 Albedo(Rendering Debugger 的 Albedo 视图,确认没有画进光照、亮度在范围内);再看 Mask 各通道(金属度是否基本为黑白,光滑度是否有足够变化,是否把粗糙度当成了光滑度);再看法线(用从上方照射的灯确认凹凸方向);最后在中性光照和项目的典型光照下整体检查,并用校验 Shader 过一遍。