Version: 2020.2
光照贴图
渐进 GPU 光照贴图 (Progressive GPU Lightmapper)(预览)

渐进光照贴图程序

渐进光照贴图程序 (Progressive Lightmapper) 是一种基于路径追踪的光照贴图系统,提供了能在 Editor 中逐渐刷新的烘焙光照贴图和光照探针。要求不重叠的 UV 具有较小的面积和角度误差,以及棋盘格图表之间有足够的填充。

渐进光照贴图程序采取了一个短暂的准备步骤来处理几何体与实例的更新,同时生成 G-buffer 和图表遮罩。然后,它会立即生成输出,并随着时间的推移逐步细化输出,以实现更完善的交互式照明工作流。此外,烘焙时间更加可预测,因为渐进光照贴图程序在烘焙时提供估计时间。

渐进光照贴图程序还可单独为每个纹素分别以光照贴图分辨率烘焙全局光照 (GI),无需采用上采样方案或依赖任何辐照度缓存或其他全局数据结构。因此,渐进光照贴图程序具有强大的功能,并允许您烘焙光照贴图的选定部分,从而更快测试和迭代场景。

如需观看介绍交互式工作流程的深入视频,请参阅 Unity 的视频演练:开发中 - 渐进光照贴图 (In Development - Progressive Lightmapper) (YouTube)

渐进 CPU 光照贴图程序和渐进 GPU 光照贴图程序(预览)

可以在渐进光照贴图程序的两个后端之间进行选择。渐进 CPU 光照贴图程序后端是使用计算机 CPU 和系统 RAM 的渐进光照贴图程序的后端。渐进 GPU 光照贴图程序是使用计算机 GPU 和 VRAM 的渐进光照贴图程序的后端。

Note that the Progressive GPU Lightmapper is a preview feature in active development, and is subject to change. For information on the Progressive GPU Lightmapper backend, see the Progressive GPU Lightmapper (preview).

渲染管线支持

  • 内置渲染管线支持渐进光照贴图程序。
  • 通用渲染管线 (URP) 支持渐进光照贴图程序。
  • 高清渲染管线 (HDRP) 支持渐进光照贴图程序。

使用渐进光照贴图程序

To use the Progressive Lightmapper:

  1. Go to Window > Rendering > Lighting 2.导航到 Lightmapping Settings 3.将 Lightmapper 设置为 Progressive CPUProgressive GPU

可以使用 LightmapEditorSettingsLightmapping API,通过脚本执行此窗口中提供的许多函数。

设置

设置 描述
Lightmapper 使用此设置来指定用于计算场景中的光照贴图的内部光照计算软件。选项为:

Progressive CPU
Progressive GPU
Enlighten(已弃用)

默认值为 Progressive CPU
Prioritize View 启用此设置可使渐进光照贴图程序将更改应用于 Scene 视图中当前可见的纹素,然后将更改应用于视图外的纹素。
Multiple Importance Sampling 启用此设置可将多重重要性采样方法用于对环境采样。通常,这会在生成光照贴图时加快收敛速度,但在某些低频环境中会产生噪声较大的结果。默认处于禁用状态。
Direct Samples 从每个纹素截取的样本(路径)数。此设置可控制渐进光照贴图程序用于直接光照计算的样本数。增加此值可以提高光照贴图的质量,但会延长烘焙时间。
Indirect Samples 从每个纹素截取的样本(路径)数。此设置可控制渐进光照贴图程序用于间接光照计算的样本数。对于某些场景,尤其是室外场景,100 个样本应该足够了。对于具有发射性几何体的室内场景,请增加该值,直到看到所需的结果。
Environment Samples The Environment Samples property determines the total number of environment rays that Unity fires toward the skybox to gather light directly. Unity fires these rays from the lightmap texel or light probe position depending on the context. The default value is 500. Higher values might yield smoother results, but at the cost of increased bake times.

In Scenes with HDR skyboxes, more samples are often needed to reduce noise in the final lightmap or probe. Scenes with skyboxes that include bright singularities (such as the sun) or high-frequency details with significant contrast (such as backlit clouds) also benefit from a higher number of samples.
Light Probe Sample Multiplier 控制将多少个样本用于光照探针(作为上述样本值的乘数)。更高值可改善光照探针的质量,但会延长烘焙时间。要启用此功能,请选择 Project Settings > Editor,然后禁用 Use legacy Light Probe sample counts。默认值为 4。
Bounces 使用此值来指定在追踪路径时要执行的间接反弹次数。对于大多数场景,两次反弹就足够了。对于某些室内场景,可能需要更多次反弹。
Min Bounces The minimum number of bounces you are willing for the Progressive Lightmapper to include in indirect lighting calculations.

Default value: 2. Range: 0–100
Max Bounces The number of bounces you want the Progressive Lightmapper to include in indirect lighting calculations.

Default value: 2. Range: 0–100.

Each bounce increases the computational resources needed to bake your scene. Use higher bounce values for indoor Scenes, and lower bounce values for outdoor Scenes and those with many bright surfaces.

As the range between Min Bounces and Max Bounces broadens, the amount of noise visible in your lightmaps increases.
Filtering 配置渐进光照贴图程序将后期处理应用于光照贴图的方式,以便限制噪点。为进行光照贴图的后期处理,光照贴图分为 DirectIndirectAmbient Occlusion 目标,Unity 分别对它们进行后期处理,然后将它们组合为一个光照贴图。

- Direct:从光源直接到达传感器(通常是摄像机)的任何光。
- Indirect:从光源间接到达传感器的任何光。这最常应用于反射其他游戏对象的光。
- Ambient Occlusion:光照系统计算的任何环境光。
选择此设置表示不对光照贴图应用过滤和进行去噪。
Auto 选择此设置表示将依赖于平台的预设用于对光照贴图进行后期处理。
如果开发计算机满足运行 OptiX (NVIDIA OptiX AI-Accelerated Denoiser) 的要求,渐进光照贴图程序将此降噪器与 Gaussian 过滤器结合使用。对于所有目标,该过滤器的半径均为 1 纹素。
如果开发计算机无法运行 OptiX,渐进光照贴图程序将使用 Gaussian 过滤器。对于 DirectIndirectAmbient Occlusion 目标,该过滤器的半径分别为 1 纹素、5 纹素和 2 纹素。
Advanced 选择 Advanced 可为每种类型的光照贴图目标手动配置选项。目标类型为 DirectIndirectAmbient Occlusion。有关更多信息,请参阅下文的高级过滤设置
Indirect Resolution 使用此设置来指定光照贴图程序用于间接光照计算的样本数。更高值可提高光照贴图的质量,但会增加完成烘焙所需要的时间。
Lightmap Resolution 使用此设置来指定用于光照贴图的每个单位的纹素数。增大此值可提高光照贴图质量,但也会增加烘焙时间。请注意,将此值加倍会导致纹素数量变为四倍(因为此值同时指代光照贴图的高度和宽度)。查看 Lighting 窗口底部的统计信息区域中的 Occupied texels 计数。
Lightmap Padding 使用此设置来指定烘焙光照贴图中不同形状之间的间距(以纹素为单位)。默认值为 2。
Lightmap Size 完整光照贴图纹理的大小(以像素为单位),其中包含单个游戏对象纹理的单独区域。默认值为 1024。
Compress Lightmaps 压缩的光照贴图需要的磁盘空间较少,但是压缩过程可能在纹理中引入不需要的视觉效果。勾选此复选框可压缩光照贴图,而取消选中则可保持未压缩状态。默认情况下会勾选该复选框。
Ambient Occlusion 勾选此复选框可打开一组设置,用于控制烘焙环境光遮挡中的表面相对亮度。值越高,表示遮挡区域和完全照亮区域之间的对比度越大。这仅适用于 GI 系统计算的间接光照。默认情况下会启用此设置。
Max Distance 设置一个值以控制光照系统投射光线的距离,从而确定是否将遮挡应用于对象。较大的值会产生较长的光线并为光照贴图提供更多阴影,而较小的值会产生较短的光线,只有当对象彼此非常接近时才会产生阴影。值为 0 会投射无限长光线,没有最大距离。默认值为 1。
Indirect Contribution 使用滑动条在值 0 到 10 之间缩放最终光照贴图中所见的间接光(即环境光,或从对象反射和发出的光)的亮度。默认值为 1。小于 1 的值会减小强度,而大于 1 的值会增加强度。
Direct Contribution 使用滑动条可以从值 0 到 10 之间缩放直射光的亮度。默认值为 0。此值越大,应用于直接光照的对比度越大。
Directional Mode 可以设置光照贴图以存储有关对象表面上每个点的主要入射光的信息。请参阅有关方向光照贴图的文档以了解更多详细信息。默认模式为 Directional
Directional Directional 模式下,Unity 将再生成一个光照贴图以存储入射光的主要方向。因此,可将漫射法线贴图材质用于 GI。Directional 模式需要大约两倍的存储空间来存储额外的光照贴图数据。无法在 SM2.0 硬件上或使用 GLES2.0 时解码方向光照贴图。此时将回退到非方向光照贴图。
Non-directional Non-directional 模式禁止 Unity 再生成一个光照贴图来存储入射光的主要方向。
Indirect Intensity 使用此滑动条控制实时和烘焙光照贴图中存储的间接光的亮度,值在 0 到 5之间。大于 1 的值会增加间接光的强度,而小于 1 的值会降低间接光强度。默认值为 1。
Albedo Boost 使用此滑动条可控制 Unity 在表面之间反弹的光量,值在 1 到 10 之间。为此,Unity 加强了场景中材质的反照率。增加此值会将反照率值倾向于绘制为白色以进行间接光计算。默认值 1 在物理上是准确的。
Lightmap Parameters 除了 Lighting 窗口的属性之外,Unity 还将一组常规参数用于光照贴图。此属性的菜单中提供了一些默认值,但您也可以使用 Create New 选项来创建自己的光照贴图参数文件。请参阅光照贴图参数页面以了解更多详细信息。默认值为 Default-Medium

高级过滤设置

Filtering 设置为 Advanced 时可用的 Filtering 设置。
Filtering 设置为 Advanced 时可用的 Filtering 设置。
设置 描述
Advanced Filtering 设置为 Advanced 可为每种类型的光照贴图目标手动配置选项。目标类型为:

- Direct:从光源直接到达传感器(通常是摄像机)的任何光。
- Indirect:从光源间接到达传感器的任何光。这最常应用于反射其他游戏对象的光。
- Ambient Occlusion:光照系统计算的任何环境光。
Denoiser 选择用于光照贴图目标的降噪器。选项为:

Optix:NVIDIA Optix 降噪器是一种 AI 加速降噪器,可减少烘焙光照贴图中的噪点。它需要一个 NVIDIA GPU(包含 4GB 以上的 VRAM 和版本 390 以上的驱动程序),并且仅在 Windows 平台上受支持。
RadeonPro:RadeonPro 降噪器是一种 AI 加速降噪器,可减少烘焙光照贴图中的噪点。它需要一个支持 OpenCL 的 GPU(包含 4GB 以上的 VRAM)。
- OpenImageDenoise:Intel Open Image 降噪器是一种 AI 加速降噪器,可减少烘焙光照贴图中的噪点。
- None:不使用降噪器。
Filter 选择要用于光照贴图目标的过滤器:
- Gaussian:选择此选项可将 Gaussian 过滤器用于光照贴图目标。Gaussian 过滤器将双向 Gaussian 过滤器应用于光照贴图。这会使光照贴图模糊并减少可见噪点。
- A-Trous:选择此选项可将 A-Trous 过滤器用于光照贴图目标。A-Trous 过滤器可以将模糊程度降至最低,同时可以消除光照贴图中的可见噪点。
- None选择此选项可禁用对光照贴图目标的所有过滤。
Radius 仅当 Filter 设置为 Gaussian 时,此选项才可用。使用 Radius 值可设置 Gaussian 过滤器内核的半径(以纹素为单位)。较高的 Radius 值可以提高模糊强度并减少可察觉的噪点,但可能导致光照中的细节丢失。
Sigma 仅当 Filter 设置为 A-Trous 时,此选项才可用。使用 Sigma 值可调整保留细节或使光照模糊的程度。较高的 Sigma 值可以提高模糊强度并减少可察觉的噪点,但可能导致光照中的细节丢失。

统计信息

Auto GenerateGenerate Lighting 选项下方的面板将显示有关光照贴图的统计信息,包括:

  • Unity 已创建的光照贴图数量
  • 内存使用量 (Memory Usage):当前光照贴图所需的内存量。
  • 占用的纹理像素 (Occupied Texels):在光照贴图 UV 空间中占用的纹理像素数量。
  • 视图中的光照贴图 (Lightmaps in view):Scene 视图中的光照贴图数量。
  • 不在视图中的光照贴图 (Lightmaps not in view):不在视图中的光照贴图数量。
    • 融合 (Converged):这些光照贴图的所有计算都已完成。
    • 未融合 (Not Converged):这些光照贴图的烘焙仍在进行中。
  • 烘焙性能 (Bake Performance):每秒的光线数量。如果此值很低(即小于 2),则应调整设置或硬件以便一次处理更多光线。

在烘焙期间

渐进光照贴图提供了在必要时监控和停止烘焙的选项。

ETA

Unity 烘焙光照贴图时出现的进度条提供了“预计到达时间”(显示为 __ETA__)。这是完成当前烘焙的估计时间(秒)。这样可以实现更加可预测的烘焙时间,并可让您快速了解当前光照设置所需的烘焙时间。

强制停止 (Force Stop)

在手动烘焙过程中,随时单击 Force Stop 即可停止烘焙过程。此按钮可让您在看到结果很理想时立即停止该过程。

光照贴图
渐进 GPU 光照贴图 (Progressive GPU Lightmapper)(预览)