docs.unity3d.com
    显示 / 隐藏目录

    光线追踪入门

    高清渲染管线 (High Definition Render Pipeline, HDRP) 包括 Unity 2019.3 中的预览版光线追踪支持。光线追踪功能可用于访问屏幕上未显示的数据。例如,您可以使用该功能来请求位置数据、法线数据或光照数据,然后使用这些数据来计算使用传统光栅化技术难以计算出的数量。

    尽管电影制作中广泛使用光线追踪技术,但很长时间以来,这项技术的资源消耗量使得其使用范围受限于离线渲染。现在,随着 GPU 硬件的最新发展,您可以实时利用光线追踪效果。

    本文档介绍以下主题:

    • 硬件要求。
    • 将光线追踪集成到您的 HDRP 项目中。
    • 使用光线追踪的 HDRP 效果。

    硬件要求

    以下 GPU 支持全面的光线追踪硬件加速功能:

    • NVIDIA GeForce 20 系列:
      • RTX 2060
      • RTX 2060 Super
      • RTX 2070
      • RTX 2070 Super
      • RTX 2080
      • RTX 2080 Super
      • RTX 2080 Ti
      • NVIDIA TITAN RTX
    • NVIDIA GeForce 30 系列:
      • RTX 3060
      • RTX 3060Ti
      • RTX 3070
      • RTX 3080
      • RTX 3090
    • NVIDIA Quadro:
      • RTX 3000(仅限笔记本电脑)
      • RTX 4000
      • RTX 5000
      • RTX 6000
      • RTX 8000

    NVIDIA 还为某些上一代显卡提供了光线追踪回退功能:

    • NVIDIA GeForce GTX
      • Turing 世代:GTX 1660 Super、GTX 1660 Ti
      • Pascal 世代:GTX 1060 6GB、GTX 1070、GTX 1080、GTX 1080 Ti
    • NVIDIA TITAN V
    • NVIDIA Quadro:P4000、P5000、P6000、V100

    如果您的计算机装有上述显卡之一,则可以在 Unity 中运行光线追踪。

    打开 Unity 之前,请确保将 NVIDIA 驱动程序更新为最新版本,并确保 Windows 版本至少为 1809。

    将光线追踪集成到您的 HDRP 项目中

    在 HDRP 项目中使用光线追踪功能之前,需要设置 HDRP 项目以获得光线追踪支持。HDRP 仅支持使用 DirectX 12 API 进行光线追踪,因此,光线追踪仅在使用 DirectX 12 进行渲染的 Unity 编辑器或 Windows Unity Player 中有效。您需要将 HDRP 项目的默认图形 API 从 DirectX 11 更改为 DirectX 12。

    有两种方式可以做到这一点:

    • 使用 Render Pipeline Wizard

    • 手动设置

    完成其中之一后,进入最终设置。

    Render Pipeline Wizard 设置

    可以使用 Render Pipeline Wizard 在 HDRP 项目中设置光线追踪。

    1. 要打开 Render Pipeline Wizard,请选择 Window > Render Pipeline,然后选择 HD Render Pipeline Wizard。
    2. 选择 HDRP + DXR 选项卡。
    3. 单击 Fix All 按钮。
    4. (可选)启用光线追踪效果所需的 HDRP 资源功能。

    你的 HDRP 项目现在支持光线追踪。如需了解如何为场景设置光线追踪,请参阅最终设置。

    手动设置

    要手动设置光线追踪,需要:

    1. 让您的 HDRP 项目使用 DirectX 12。
    2. 在 HDRP 项目上禁用静态批处理。
    3. 在 HDRP 资源中启用和配置光线追踪。
    4. 确保正确分配光线追踪资源。
    5. (可选)在 HDRP 资源中启用光线追踪效果。

    升级到 DirectX 12

    1. 打开 Project Settings 窗口(菜单:Edit > Project Settings),然后选择 Player 选项卡。
    2. 选择 Other Settings 折叠箭头,然后在 Rendering 部分中禁用 Auto Graphics API for Windows。这样会显示出 Graphics APIs for Windows 部分。
    3. 在 Graphics APIs for Windows 部分中,单击加号 (+) 按钮,然后选择 Direct3d12。
    4. Unity 默认情况下使用 Direct3d11。要使 Unity 使用 Direct3d12,请将 Direct3d12 (Experimental) 移到列表顶部。
    5. 要应用更改,可能需要重新启动 Unity 编辑器。如果出现窗口提示告诉你要重新启动编辑器,请单击窗口中的 Restart Editor。

    现在,Unity 编辑器窗口应该会在标题栏中包含 <DX12> 标签,如下所示:

    禁用静态批处理

    接下来,您需要禁用静态批处理,因为 HDRP 在运行模式下不支持此功能与光线追踪功能一起使用。为此需要执行以下操作:

    1. 打开 Project Settings 窗口(菜单:Edit > Project Settings),然后选择 Player 选项卡。
    2. 选择 Other Settings 折叠箭头,然后在 Rendering 部分中禁用 Static Batching。

    HDRP 资源配置

    现在 Unity 在 DirectX 12 中运行,并且已禁用静态批处理,接下来请在 HDRP 资源中启用和配置光线追踪。前面的步骤已将 Unity 配置为支持光线追踪,接下来的步骤将在你的 HDRP Unity 项目中启用光线追踪。

    1. 在 Project 窗口中单击 HDRP 资源以便在 Inspector 中查看该资源。
    2. 在 Rendering 部分中,启用 Realtime Ray Tracing。这将触发重新编译,从而使光线追踪在 HDRP 项目中可用。

    光线追踪资源

    要验证 HDRP 是否已正确分配了光线追踪资源,请执行以下操作:

    1. 打开 Project Settings 窗口(菜单:Edit > Project Settings),然后选择 HDRP Default Settings 选项卡。
    2. 确保向 Render Pipeline Resources 字段中分配了 Render Pipeline Resources 资源。

    (可选)在 HDRP 资源中启用光线追踪效果

    HDRP 使用光线追踪来替换某些光栅化效果。为了在项目中使用光线追踪效果,必须首先启用该效果的光栅化版本。需要修改 HDRP 资源的四个效果如下:

    • 屏幕空间阴影 (Screen Space Shadows)
    • 屏幕空间反射 (Screen Space Reflections)
    • 透明屏幕空间反射 (Transparent Screen Space Reflections)
    • 屏幕空间全局光照 (Screen Space Global Illumination)

    要在 HDRP Unity 项目中启用以上效果,请执行以下操作:

    1. 在 Project 窗口中单击 HDRP 资源以便在 Inspector 中查看该资源。
    2. 选择 Lighting > Reflections,然后启用 Screen Space Reflection。
    3. 启用 Screen Space Reflections 后,选择 Lighting > Reflections,然后启用 Transparent Screen Space Reflection。
    4. 选择 Lighting > Shadows,然后启用 Screen Space Shadows。
    5. 选择 Lighting > Lighting,然后启用 Screen Space Global Illumination。

    你的 HDRP 项目现在完全支持光线追踪。如需了解如何为场景设置光线追踪,请参阅最终设置。

    最终设置

    现在,您的 HDRP 项目支持光线追踪,还必须完成一些步骤才能在场景中实际使用光线追踪。

    1. 帧设置验证
    2. 构建设置验证
    3. 场景验证

    帧设置

    要使 HDRP 计算场景中摄像机的光线追踪效果,请确保你的摄像机使用启用了光线追踪的帧设置。可以在默认情况下为所有摄像机启用光线追踪,也可以为场景中的特定摄像机启用光线追踪。

    要在默认情况下启用光线追踪,请执行以下操作:

    1. 打开 Project Settings 窗口(菜单:Edit > Project Settings),然后选择 HDRP Default Settings 选项卡。
    2. 从 Default Frame Settings For 下拉选单中选择 Camera。
    3. 在 Rendering 部分中,启用 Ray Tracing。

    要为特定摄像机启用光线追踪,请执行以下操作:

    1. 单击场景或层级视图中的摄像机以在 Inspector 中查看该游戏对象。
    2. 在 General 部分中,启用 Custom Frame Settings。随后将显示仅适用于此摄像机的帧设置。
    3. 在 Rendering 部分中,启用 Ray Tracing。

    构建设置

    要将项目构建到 Unity Player,光线追踪要求该构建使用 64 位架构。要将构建设置为使用 64 位架构,请执行以下操作:

    1. 打开 Build Settings 窗口(菜单:File > Build Settings)。
    2. 从 Architecture 下拉选单中,选择 x86_64。

    场景验证

    为了检查是否可以在场景中使用光线追踪,HDRP 包含一个菜单选项,用于验证场景中的每个游戏对象。如果没有正确设置游戏对象,则此过程将在 Console 窗口中引发警告。要使用它,请执行以下操作:

    1. 单击 Edit > Rendering > Check Scene Content for HDRP Ray Tracing。
    2. 在 Console 窗口(菜单:Window > General > Console)中,检查是否有任何警告。

    光线追踪效果概述

    HDRP 使用光线追踪代替其某些屏幕空间效果、阴影技术和网格渲染技术。

    • 光线追踪环境光遮挡取代了屏幕空间环境光遮挡,前者采用更精确的光线追踪环境光遮挡技术,可利用屏幕外的数据。
    • 光线追踪接触阴影取代了接触阴影,前者采用更精确的光线追踪接触阴影技术,可利用屏幕外的数据。
    • 光线追踪全局光照是 HDRP 中光照探针和光照贴图的替代方法。
    • 光线追踪反射取代了屏幕空间反射,前者采用光线追踪反射技术,可利用屏幕外的数据。
    • 光线追踪阴影取代了方向光、点光源和面光源等光源的阴影贴图。
    • 递归光线追踪取代了网格的渲染管线。使用该功能的网格将递归投射折射和反射光线。
    • 光线追踪次表面散射取代了次表面散射,前者采用更精确的光线追踪次表面散射技术,可利用屏幕外的数据。

    光线追踪模式

    HDRP 包括两种光线追踪模式,这些模式定义了它如何评估某些光线追踪效果。这些模式为:

    • Performance:此模式针对实时应用程序。如果选择此模式,则光线追踪效果包括一些可以更改以平衡性能与质量的预设。
    • Quality:此模式针对需要最佳质量结果的技术性演示和应用程序。

    根据所选择的光线追踪模式,HDRP 可能会显示某些光线追踪效果的差异属性。

    可以在项目级别或效果级别上更改 HDRP 使用的光线追踪模式。要为整个项目进行更改,请执行以下操作:

    1. 在 Project 窗口中单击 HDRP 资源以便在 Inspector 中查看该资源。
    2. 在 Rendering 部分,从 Supported Ray Tracing Mode 下拉选单中选择光线追踪模式。

    如果选择 Both,则可以更改每个光线追踪效果的光线追踪模式。为此需要执行以下操作:

    1. 在 Scene 视图或 Hierarchy 视图中,选择一个包含 Volume 组件且该组件包含光线追踪效果的游戏对象。
    2. 在光线追踪效果的 Inspector 中,将 Mode 属性更改为希望该效果使用的光线追踪模式。这将更改 Inspector 中可用的属性。

    光线追踪项目

    您可以在此处找到一个小型光线追踪项目,该项目中包含上面提到的所有效果: https://github.com/Unity-Technologies/SmallOfficeRayTracing 该项目已经设置了光线追踪支持。

    不受支持的光线追踪功能

    目前,除 DX12 之外,在其他平台上均不支持光线追踪。

    Unity 2020.2 中的 HDRP 光线追踪具有以下局限性:

    • 不支持顶点动画。
    • 不支持贴花。
    • 不支持曲面细分。
    • 不支持每个像素位移(视差遮挡贴图、高度贴图、深度偏移)。
    • 不支持 VFX 和地形。
    • 没有正确的阴影剔除,可能会在光线追踪效果中出现阴影缺失的情况。
    • 不支持 MSAA。
    • 对于具有 LOD 的渲染器,光线追踪加速结构仅包含最高级别的 LOD,而忽略较低的 LOD。
    • 不支持 Graphics.DrawMesh。
    • 渲染反射探针时不支持光线追踪。

    不受支持的路径追踪功能

    目前,除 DX12 之外,在其他平台上均不支持路径追踪。

    Unity 2020.2 中的 HDRP 路径追踪具有以下局限性:

    • 不支持 3D Text 和 TextMeshPro。
    • 不支持使用导数的 Shader Graph 节点(例如:纹理的法线)。
    • 不支持贴花。
    • 不支持曲面细分。
    • 不支持管状和圆盘形面光源。
    • 不支持半透明和不透明材质。
    • 不支持多个 HDRP 材质。这些材质包括织物、眼睛、StackLit、毛发、贴花。
    • 不支持每个像素位移(视差遮挡贴图、高度贴图、深度偏移)。
    • 不支持 MSAA。
    • 对于具有 LOD 的渲染器,光线追踪加速结构仅包含最高级别的 LOD,而忽略较低的 LOD。
    • 不支持 Graphics.DrawMesh。

    光线追踪不支持的 Shader Graph 节点

    使用 Shader Graph 构建自定义着色器时,某些节点与光线追踪不兼容。因此需要避免使用它们,或者需要使用光线追踪着色器节点来提供替代行为。以下列出了不兼容的节点:

    • DDX、DDY 和 DDXY 节点。
    • View Space 模式中的 Inputs > Geometry 下的所有节点(Position、View Direction、Normal 等)。
    • Checkerboard 节点。
    返回到顶部
    Copyright © 2023 Unity Technologies — 商标和使用条款
    • 法律条款
    • 隐私政策
    • Cookie
    • 不要出售或分享我的个人信息
    • Your Privacy Choices (Cookie Settings)