GameTech/URP 渲染实战

案例 11.8法线贴图、Mask Map 与自发光入门

目标:把表面细节接进来,看每一张贴图贡献了什么。

三张贴图的读取都已在 MySampleSurface 里完成,法线变换在 MyInitInputData 里完成:用插值后的法线、切线和 tangentWS.w 重建副切线,构成 TBN 矩阵,把切线空间法线转到世界空间后重新归一化。tangentWS.w 携带的是“副切线方向符号”,它来自模型导入时的切线计算(镜像 UV 时为 −1),顶点函数里还乘了 GetOddNegativeScale(),处理物体被负缩放镜像的情况。这些和第 7 章的内容一致。

自发光直接加到最终颜色上,不参与任何 BRDF 计算;HDR 颜色属性允许强度大于 1,配合 Bloom 产生光晕。Meta Pass(案例 11.9)会把自发光交给烘焙器,让它照亮周围的静态物体。

图 11-12逐项加入贴图(MyPBR + 配套 paintedmetal 贴图)。从左到右:只有 Base Map(统一光滑度 0.55,非金属);+ 法线贴图(漆皮剥落边缘出现台阶);+ Mask Map(剥落处变成金属、光滑度与 AO 随贴图变化);+ 自发光(程序生成的面板缝与指示灯)。

第三格的变化最大:剥落处从“灰白色塑料”变成了反射环境的金属,漆面保持塑料感。这正是金属度工作流的意义——同一张基础色贴图,金属度告诉 Shader “这里的颜色该放进漫反射还是放进 F0”。c13 会专门讨论这三张数据贴图怎么做、怎么检查。