docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    通用渲染管线 (URP) 中的阴影

    通用渲染管线 (URP) 的 光源 (Lights) 可以使一个 GameObject 投射阴影到另一个 GameObject 上。这可以突出 GameObject 的位置和尺寸,为场景增加一定的深度和真实感,否则场景可能会显得过于平面化。

    URP 使用 阴影贴图 (Shadow Maps) 和 阴影级联 (Shadow Cascades)。

    你可以添加 屏幕空间阴影渲染器功能 (Screen Space Shadows Renderer Feature),使 URP 通过单一渲染纹理计算并绘制主方向光的阴影,而不是使用多个阴影级联贴图。

    阴影贴图分辨率

    光源的阴影贴图分辨率决定了阴影贴图的大小。分辨率越高,阴影的精度越高,URP 能够捕捉到更多投影几何体的细节,使阴影更清晰。但更高的分辨率也会增加计算成本。

    URP 为每种类型的光源生成的阴影贴图数量如下:

    • 聚光灯 (Spot Light) 生成 1 张阴影贴图。
    • 点光源 (Point Light) 生成 6 张阴影贴图(即立方体贴图的 6 个面)。
    • 方向光 (Directional Light) 每个级联生成 1 张阴影贴图。可在 URP 资源 (Universal Render Pipeline Asset) 中设置方向光的级联数量。

    URP 会根据场景中所需的阴影贴图数量以及阴影图集的大小,自动选择最佳的阴影分辨率。

    阴影图集 (Shadow Atlases)

    URP 使用统一的阴影贴图图集 (Shadow Map Atlas) 来渲染实时阴影:

    • 点光源 (Point Lights) 和 聚光灯 (Spot Lights) 共享同一个阴影贴图图集。
    • 方向光 (Directional Light) 另有单独的阴影贴图图集。

    你可以在 URP 资源 (Universal Render Pipeline Asset) 中设置这些图集的大小。图集大小决定了场景中阴影的最大分辨率。例如:

    • 1024 × 1024 的图集可容纳:
      • 4 张 512 × 512 的阴影贴图。
      • 16 张 256 × 256 的阴影贴图。

    使阴影图集分辨率匹配 Built-In RP 设置

    在 内置渲染管线 (Built-In Render Pipeline) 中,你可以在 质量设置 (Quality Settings) 里选择阴影分辨率等级(“低 (Low)”、“中 (Medium)”、“高 (High)”、“超高 (Very High)”),Unity 会根据具体情况自动调整阴影贴图的实际分辨率。

    在 URP 中,你需要直接指定 阴影图集 (Shadow Atlas) 的分辨率,这样可以精确控制应用程序分配给阴影的显存占用。

    如果你想确保 URP 在项目中不会使用低于某个特定值的阴影分辨率,应考虑:

    • 场景中所需的阴影贴图数量。
    • 选择足够大的阴影图集分辨率。

    例如:如果场景中有 4 个聚光灯 (Spot Lights) 和 1 个点光源 (Point Light),并希望每张阴影贴图的分辨率至少为 256 × 256:

    • 由于 1 个点光源需要 6 张阴影贴图,而 4 个聚光灯需要 4 张阴影贴图,总计 10 张阴影贴图。
    • 512 × 512 大小的图集最多只能容纳 4 张 256 × 256 贴图,因此不够用。
    • 1024 × 1024 大小的图集可容纳 16 张 256 × 256 贴图,因此应选择此大小。

    阴影偏移 (Shadow Bias)

    阴影贴图本质上是从光源视角投影的纹理。URP 使用 偏移 (Bias) 来防止投射阴影的几何体自我阴影 (Self-Shadowing)。

    每个光源组件的阴影偏移参数如下:

    • 深度偏移 (Depth Bias)
    • 法线偏移 (Normal Bias)
    • 近裁剪面 (Near Plane)

    这些设置位于光源的 阴影 (Shadows) 部分。如果它们不可见,请将 偏移 (Bias) 选项从 “使用管线设置 (Use Pipeline Settings)” 改为 “自定义 (Custom)”。

    如果阴影偏移值过高,可能会导致光线“泄漏” (Light Leaking),即阴影与投射物之间存在可见的间隙,导致阴影形状无法准确匹配其投射物。

    调整阴影以优化性能

    请参考 优化性能的配置 (Configure for better performance) 了解如何调整阴影设置以提高性能。

    In This Article
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)