Unity3D:渐进光照贴图程序
推荐:将NSDT产经编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
渐进光照贴图程序
渐进光照贴图程序 (Progressive Lightmapper) 是一种基于路径追踪的光照贴图系统,提供了能在 Editor 中逐渐刷新的烘焙光照贴图和光照探针。 要求不重叠的 UV 具有较小的面积和角度误差,以及棋盘格图表之间有足够的填充。
渐进光照贴图程序采取了一个短暂的准备步骤来处理几何体与实例的更新,同时生成 G-buffer 和图表遮罩。 然后,它会立即生成输出,并随着时间的推移逐步细化输出,以实现更完善的交互式照明工作流。 此外,烘焙时间更加可预测,因为渐进光照贴图程序在烘焙时提供估计时间。
渐进光照贴图程序还可单独为每个纹素分别以光照贴图分辨率烘焙全局光照 (GI),无需采用上采样方案或依赖任何辐照度缓存或其他全局数据结构。 因此,渐进光照贴图程序具有强大的功能,并允许您烘焙光照贴图的选定部分,从而更快测试和迭代场景。
如需观看介绍交互式工作流程的深入视频,请参阅 Unity 的视频演练:开发中 - 渐进光照贴图 (In Development - Progressive Lightmapper) (YouTube)。
渐进 CPU 光照贴图程序和渐进 GPU 光照贴图程序(预览)
可以在渐进光照贴图程序的两个后端之间进行选择。 渐进 CPU 光照贴图程序后端是使用计算机 CPU 和系统 RAM 的渐进光照贴图程序的后端。 渐进 GPU 光照贴图程序是使用计算机 GPU 和 VRAM 的渐进光照贴图程序的后端。
注意,渐进 GPU 光照贴图程序是正在开发中的预览功能并且会随时改变。 有关渐进 GPU 光照贴图程序后端的信息,请参阅渐进 GPU 光照贴图程序(预览)。
渲染管线支持
有关跨渲染管线支持渐进光照贴图程序的详细信息,请参阅渲染管线功能比较。
使用渐进光照贴图程序
使用渐进光照贴图程序:
- 转到 Window > Rendering > Lighting
- 导航到 Lightmapping Settings
- 将 Lightmapper 设置为 Progressive CPU 或 Progressive GPU
可以使用 LightmapEditorSettings 和 Lightmapping API,通过脚本执行此窗口中提供的许多函数。
设置
此页面列出了特定于渐进光照贴图程序的设置。有关特定于 Enlighten 烘焙全局照明的设置,请参阅光照贴图(已弃用,与 Enlighten 实时全局光照不同)。有关所有其他照明设置,请参阅照明设置资源。
设置 | 描述 | |
---|---|---|
光照贴图器 | 使用此选项可指定用于计算场景中光照贴图的内部照明计算软件。选项包括: 渐进式 CPU 渐进式 GPU Enlighten 默认值为渐进式 CPU ,因为 Enlighten 烘焙全局光照已弃用(与 Enlighten 实时全局光照不同)。 | |
确定视图的优先级 | 启用此设置可使渐进光照贴图程序将更改应用于 Scene 视图中当前可见的纹素,然后将更改应用于视图外的纹素。 | |
多重重要性抽样 | 启用此设置可将多重重要性采样方法用于对环境采样。 通常,这会在生成光照贴图时加快收敛速度,但在某些低频环境中会产生噪声较大的结果。 默认处于禁用状态。 | |
直接样品 | 从每个纹素截取的样本(路径)数。 此设置可控制渐进光照贴图程序用于直接光照计算的样本数。 增加此值可以提高光照贴图的质量,但会延长烘焙时间。 | |
间接样品 | 从每个纹素截取的样本(路径)数。 此设置可控制渐进光照贴图程序用于间接光照计算的样本数。 对于某些场景,尤其是室外场景,100 个样本应该足够了。 对于具有发射性几何体的室内场景,请增加该值,直到看到所需的结果。 | |
环境示例 | Environment Samples 属性确定 Unity 向天空盒发射以直接收集光线的环境光线总数。 Unity 根据上下文从光照贴图纹素或光照探针位置发射这些光线。 默认值为 500。 较高的值可能会产生更平滑的结果,但代价是烘焙时间增加。 在有 HDR 天空盒的场景中,通常需要更多样本来减少最终光照贴图或探针中的噪声。 包含明亮奇点(如太阳)或具有显著对比度的高频细节(如背光云)的天空盒场景也受益于更多的样本。 | |
光探针样品倍增器 | 控制将多少个样本用于光照探针(作为上述样本值的乘数)。 更高值可改善光照探针的质量,但会延长烘焙时间。 要启用此功能,请选择 Project Settings > Editor,然后禁用 Use legacy Light Probe sample counts。 默认值为 4。 | |
反弹 | 使用此值来指定在追踪路径时要执行的间接反弹次数。 对于大多数场景,两次反弹就足够了。 对于某些室内场景,可能需要更多次反弹。 | |
最小反弹 | 您希望渐进光照贴图程序包含在间接光照计算中的最小反弹次数。 较低的值会减少烘焙时间,但可能会增加光照贴图噪点。为了提高烘焙期间的性能,光照贴图程序使用一种称为俄罗斯轮盘的技术终止对场景外观贡献不大的光路。 默认值:2。范围:0–100 | |
最大弹跳次数 | 您希望渐进光照贴图程序在间接光照计算中包括的最大反弹次数。 默认值:2。范围:0–100。 最多 10 的值适用于大多数场景。大于 10 的值可能会导致烘焙时间明显延长。 每次弹跳都会增加烘焙场景所需的计算资源。对室内场景使用较高的反弹值,对室外场景和具有许多明亮表面的场景使用较低的反弹值。 随着最小反弹和最大反弹之间的范围扩大,光照贴图中可见的噪点量也会增加。 | |
滤波 | 配置渐进光照贴图程序将后期处理应用于光照贴图的方式,以便限制噪点。 为进行光照贴图的后期处理,光照贴图分为 Direct、Indirect和 Ambient Occlusion 目标,Unity 分别对它们进行后期处理,然后将它们组合为一个光照贴图。 - Direct:从光源直接到达传感器(通常是摄像机)的任何光。 - Indirect:从光源间接到达传感器的任何光。 这最常应用于反射其他游戏对象的光。 - Ambient Occlusion:光照系统计算的任何环境光。 | |
无 | 选择此设置表示不对光照贴图应用过滤和进行去噪。 | |
汽车 | 选择此设置表示将依赖于平台的预设用于对光照贴图进行后期处理。 如果开发计算机满足运行 OptiX (NVIDIA OptiX AI-Accelerated Denoiser) 的要求,渐进光照贴图程序将此降噪器与 Gaussian 过滤器结合使用。 对于所有目标,该过滤器的半径均为 1 纹素。 如果开发计算机无法运行 OptiX,渐进光照贴图程序将使用 Gaussian 过滤器。 对于 Direct、Indirect 和 Ambient Occlusion 目标,该过滤器的半径分别为 1 纹素、5 纹素和 2 纹素。 | |
高深 | 选择“高级”,为每种类型的光照贴图目标手动配置选项。目标类型包括直接、间接和环境光遮蔽。有关详细信息,请参阅下面的高级筛选设置。 |
高级过滤设置
将“过滤”设置为“高级”以手动配置每种类型的光照贴图目标的选项。目标类型包括:
- 直接:直接从光源到达传感器(通常是摄像机)的任何光线。
- 间接:从光源间接到达传感器的任何光。这最常适用于从其他游戏对象反射的光线。
- 环境光遮蔽:照明系统计算的任何环境光。
设置 | 描述 |
---|---|
降噪器 | 选择用于光照贴图目标的降噪器。 选项为: Optix:NVIDIA Optix 降噪器是一种 AI 加速降噪器,可减少烘焙光照贴图中的噪点。 它需要一个 NVIDIA GPU(包含 4GB 以上的 VRAM 和版本 390 以上的驱动程序),并且仅在 Windows 平台上受支持。 RadeonPro:RadeonPro 降噪器是一种 AI 加速降噪器,可减少烘焙光照贴图中的噪点。 它需要一个支持 OpenCL 的 GPU(包含 4GB 以上的 VRAM)。 - OpenImageDenoise:Intel Open Image 降噪器是一种 AI 加速降噪器,可减少烘焙光照贴图中的噪点。 - None:不使用降噪器。 |
滤波器 | 选择要用于光照贴图目标的过滤器: - Gaussian:选择此选项可将 Gaussian 过滤器用于光照贴图目标。 Gaussian 过滤器将双向 Gaussian 过滤器应用于光照贴图。 这会使光照贴图模糊并减少可见噪点。 - A-Trous:选择此选项可将 A-Trous 过滤器用于光照贴图目标。 A-Trous 过滤器可以将模糊程度降至最低,同时可以消除光照贴图中的可见噪点。 - None:选择此选项可禁用对光照贴图目标的所有过滤。 |
半径 | 仅当 Filter 设置为 Gaussian 时,此选项才可用。 使用 Radius 值可设置 Gaussian 过滤器内核的半径(以纹素为单位)。 较高的 Radius 值可以提高模糊强度并减少可察觉的噪点,但可能导致光照中的细节丢失。 |
西格马 | 仅当 Filter 设置为 A-Trous 时,此选项才可用。 使用 Sigma 值可调整保留细节或使光照模糊的程度。 较高的 Sigma 值可以提高模糊强度并减少可察觉的噪点,但可能导致光照中的细节丢失。 |
统计信息
Auto Generate 和 Generate Lighting 选项下方的面板将显示有关光照贴图的统计信息,包括:
- Unity 已创建的光照贴图数量
- 内存使用量 (Memory Usage):当前光照贴图所需的内存量。
- 占用的纹理像素 (Occupied Texels):在光照贴图 UV 空间中占用的纹理像素数量。
- 视图中的光照贴图 (Lightmaps in view):Scene 视图中的光照贴图数量。
- 不在视图中的光照贴图 (Lightmaps not in view):不在视图中的光照贴图数量。
- 融合 (Converged):这些光照贴图的所有计算都已完成。
- 未融合 (Not Converged):这些光照贴图的烘焙仍在进行中。
- 烘焙性能 (Bake Performance):每秒的光线数量。 如果此值很低(即小于 2),则应调整设置或硬件以便一次处理更多光线。
在烘焙期间
渐进光照贴图提供了在必要时监控和停止烘焙的选项。
和
Unity 烘焙光照贴图时出现的进度条提供了“预计到达时间”(显示为 __ETA__)。 这是完成当前烘焙的估计时间(秒)。 这样可以实现更加可预测的烘焙时间,并可让您快速了解当前光照设置所需的烘焙时间。
强制停止 (Force Stop)
在手动烘焙过程中,随时单击 Force Stop 即可停止烘焙过程。 此按钮可让您在看到结果很理想时立即停止该过程。
禁用默认环境贡献
Unity 会自动生成一个环境探针和一个默认的反射探针,以确保默认情况下环境光照会影响您的场景和其中的游戏对象。
要禁用未手动创建的光照贴图和光照探针的场景或游戏对象的光照结果中的环境贡献,请禁用默认反射探针和环境探针。有关详细信息,请参阅禁用天管理器。
由3D建模学习工作室整理翻译,转载请注明出处!
上一篇:Unity3D:光照贴图 (mvrlink.com)
下一篇:Unity3D:使用Enlighten Baked Global Illuminati的光照贴图上 (mvrlink.com)