渐进光照贴图程序 (Progressive Lightmapper) 是一种基于路径追踪的光照贴图系统,提供了能在 Editor 中逐渐刷新的烘焙光照贴图和光照探针。要求不重叠的 UV 具有较小的面积和角度误差,以及棋盘格图表之间有足够的填充。
渐进光照贴图程序采取了一个短暂的准备步骤来处理几何体与实例的更新,同时生成 G-buffer 和图表遮罩。然后,它会立即生成输出,并随着时间的推移逐步细化输出,以实现更完善的交互式照明工作流。此外,烘焙时间更加可预测,因为渐进光照贴图程序在烘焙时提供估计时间。
渐进光照贴图程序还可单独为每个纹素分别以光照贴图分辨率烘焙全局光照 (GI),无需采用上采样方案或依赖任何辐照度缓存或其他全局数据结构。因此,渐进光照贴图程序具有强大的功能,并允许您烘焙光照贴图的选定部分,从而更快测试和迭代场景。
如需观看介绍交互式工作流程的深入视频,请参阅 Unity 的视频演练:开发中 - 渐进光照贴图 (In Development - Progressive Lightmapper) (YouTube)。
可以在渐进光照贴图程序的两个后端之间进行选择。渐进 CPU 光照贴图程序后端是使用计算机 CPU 和系统 RAM 的渐进光照贴图程序的后端。渐进 GPU 光照贴图程序是使用计算机 GPU 和 VRAM 的渐进光照贴图程序的后端。
注意,渐进 GPU 光照贴图程序是正在开发中的预览功能并且会随时改变。有关渐进 GPU 光照贴图程序后端的信息,请参阅渐进 GPU 光照贴图程序(预览)。
使用渐进光照贴图程序:
可以使用 LightmapEditorSettings 和 Lightmapping API,通过脚本执行此窗口中提供的许多函数。
设置 | 描述 | |
---|---|---|
Lightmapper | Use this to specify which internal lighting calculation software to use to calculate lightmaps in the Scene. The options are: Progressive CPU Progressive GPU Enlighten The default value is Progressive CPU. |
|
Prioritize View | 启用此设置可使渐进光照贴图程序将更改应用于 Scene 视图中当前可见的纹素,然后将更改应用于视图外的纹素。 | |
Multiple Importance Sampling | 启用此设置可将多重重要性采样方法用于对环境采样。通常,这会在生成光照贴图时加快收敛速度,但在某些低频环境中会产生噪声较大的结果。默认处于禁用状态。 | |
Direct Samples | 从每个纹素截取的样本(路径)数。此设置可控制渐进光照贴图程序用于直接光照计算的样本数。增加此值可以提高光照贴图的质量,但会延长烘焙时间。 | |
Indirect Samples | 从每个纹素截取的样本(路径)数。此设置可控制渐进光照贴图程序用于间接光照计算的样本数。对于某些场景,尤其是室外场景,100 个样本应该足够了。对于具有发射性几何体的室内场景,请增加该值,直到看到所需的结果。 | |
Environment Samples | Environment Samples 属性确定 Unity 向天空盒发射以直接收集光线的环境光线总数。Unity 根据上下文从光照贴图纹素或光照探针位置发射这些光线。默认值为 500。较高的值可能会产生更平滑的结果,但代价是烘焙时间增加。 在有 HDR 天空盒的场景中,通常需要更多样本来减少最终光照贴图或探针中的噪声。包含明亮奇点(如太阳)或具有显著对比度的高频细节(如背光云)的天空盒场景也受益于更多的样本。 |
|
Light Probe Sample Multiplier | 控制将多少个样本用于光照探针(作为上述样本值的乘数)。更高值可改善光照探针的质量,但会延长烘焙时间。要启用此功能,请选择 Project Settings > Editor,然后禁用 Use legacy Light Probe sample counts。默认值为 4。 | |
Bounces | 使用此值来指定在追踪路径时要执行的间接反弹次数。对于大多数场景,两次反弹就足够了。对于某些室内场景,可能需要更多次反弹。 | |
Min Bounces | 您希望渐进光照贴图包含在间接光照计算中的最小反弹次数。 默认值:2。范围:0–100 |
|
Max Bounces | 您希望渐进光照贴图包含在间接光照计算中的反弹次数。 默认值:2。范围:0–100。 每次反弹都会增加烘焙场景所需的计算资源。对室内场景使用较高的反弹值,对室外场景和具有许多明亮表面的场景使用较低的反弹值。 随着 Min Bounces 和 Max Bounces 之间的范围变宽,光照贴图中可见的噪点数量也会增加。 |
|
Filtering | 配置渐进光照贴图程序将后期处理应用于光照贴图的方式,以便限制噪点。为进行光照贴图的后期处理,光照贴图分为 Direct、Indirect和 Ambient Occlusion 目标,Unity 分别对它们进行后期处理,然后将它们组合为一个光照贴图。 - Direct:从光源直接到达传感器(通常是摄像机)的任何光。 - Indirect:从光源间接到达传感器的任何光。这最常应用于反射其他游戏对象的光。 - Ambient Occlusion:光照系统计算的任何环境光。 |
|
无 | 选择此设置表示不对光照贴图应用过滤和进行去噪。 | |
Auto | 选择此设置表示将依赖于平台的预设用于对光照贴图进行后期处理。 如果开发计算机满足运行 OptiX (NVIDIA OptiX AI-Accelerated Denoiser) 的要求,渐进光照贴图程序将此降噪器与 Gaussian 过滤器结合使用。对于所有目标,该过滤器的半径均为 1 纹素。 如果开发计算机无法运行 OptiX,渐进光照贴图程序将使用 Gaussian 过滤器。对于 Direct、Indirect 和 Ambient Occlusion 目标,该过滤器的半径分别为 1 纹素、5 纹素和 2 纹素。 |
|
Advanced | 选择 Advanced 可为每种类型的光照贴图目标手动配置选项。目标类型为 Direct、Indirect 和 Ambient 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。 |
设置 | 描述 | |
---|---|---|
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 Generate 和 Generate Lighting 选项下方的面板将显示有关光照贴图的统计信息,包括:
渐进光照贴图提供了在必要时监控和停止烘焙的选项。
Unity 烘焙光照贴图时出现的进度条提供了“预计到达时间”(显示为 __ETA__)。这是完成当前烘焙的估计时间(秒)。这样可以实现更加可预测的烘焙时间,并可让您快速了解当前光照设置所需的烘焙时间。
在手动烘焙过程中,随时单击 Force Stop 即可停止烘焙过程。此按钮可让您在看到结果很理想时立即停止该过程。