GameTech/URP 渲染实战

案例 10.6金属度 × 光滑度矩阵入门

目标:用 URP Lit 拍一张 5×5 的参数矩阵,作为理解与调参的速查图。行:金属度 0、0.25、0.5、0.75、1(从上到下);列:光滑度 0、0.25、0.5、0.75、1(从左到右);BaseColor 为同一个暖橙色。

Assets/Cookbook/Ch10/Editor/Ch10Shots.cs(节选:matrix)
[BookShot("ch10-matrix", W = 900, H = 820)]
static void Matrix(Shot s)
{
    // 行:金属度 0 → 1(从上到下);列:光滑度 0 → 1(从左到右)
    var baseCol = new Color(0.95f, 0.64f, 0.38f);
    s.Background(new Color(0.3f, 0.31f, 0.33f));
    for (int r = 0; r < 5; r++)
        for (int c = 0; c < 5; c++)
            s.Sphere(s.Lit(baseCol, r / 4f, c / 4f), new Vector3((c - 2) * 1.12f, (2 - r) * 1.12f, 0), 1f);
    OrthoRows(s, 2.95f);
    s.SunDir(35, 30, 1.3f);
    s.Sun.shadows = LightShadows.None;
}
图 10-14URP Lit 的金属度(行,上 0 → 下 1)× 光滑度(列,左 0 → 右 1)。正交相机,一盏方向光加程序化天空的环境光与反射。

沿着矩阵读,能把本章所有源码对上号:

把矩阵当作“光照环境检查卡”

这张图还有一个实用价值:当你怀疑某个场景的光照设置有问题时,把同样的 25 个球放进去拍一张,和这里的标准图比较。如果金属一行整体发黑,多半是反射探针缺失或强度过低;如果电介质一行的高光边缘泛白、整体发灰,可能是环境光(SH)太强;如果光滑的球上看不到任何倒影,检查材质的 Environment Reflections 开关与 URP Asset 的反射探针设置;如果所有球都过曝成一片,检查是否开启了 HDR 与色调映射。很多“材质不对”的问题,其实是“光照环境不对”,第 13 章会把这种检查流程化。