使用预处理光照

35 篇文章 0 订阅

原文链接:预处理光照

使用预处理光照

Unity中的预处理光照在后台计算,可以是自动过程或者手动触发。两种方式都可以继续在编辑器中继续工作,计算过程会在场景后台运行。
预处理过程运行时,一个蓝色的进度条会出现在编辑器的右下角。根据启用的是烘焙GI或预处理实时GI,需要完成不同阶段的处理。当前处理过程的信息显示在进度条上面。
alt text
进度条显示Unity预处理过程的当前状态

在上面的例子中,我们在进行任务5/11,也就是”Clustering”,当前任务还剩6个作业才能完成,然后进行任务6。不同的阶段列在下面。

预处理实时GI
1. Create Geometry
2. Layout Systems
3. Create Systems
4. Create Atlas
5. Clustering
6. Visibility
7. Light Transport
8. Tetrahedralize Probes
9. Create ProbeSet

探测器
1. Ambient Probes
2. Baked/Realtime Ref. Probes

烘培GI
1. Create Geometry
2. Atlassing
3. Create Baked Systems
4. Baked Resources
5. Bake AO
6. Export Baked Texture
7. Bake Visibility
8. Bake Direct
9. Ambient and Emissive
10. Create Bake Systems
11. Bake Runtime
12. Upsampling Visibility
13. Bake Indirect
14. Final Gather
15. Bake ProbesSet
16. Compositing

开始预处理

Unity预处理光照方案只考虑静态几何体。我们需要场景中至少有一个静态GameObject才能开始光照预处理过程。可以单个修改,也可以使用shift键在继承面板选取多个GameObject修改。
可以在属性面板选中”Static”检查框。这会将GameObject的所有静态选项都设置为静态,包括navigation and batching,这也许不是预期的结果。对于预处理实时GI,只需要选中”Lightmap Static”。
对于更细粒度的控制,可以使用属性面板Static检查框右边的下拉框来设置单独的static选项。另外,可以在光照窗口的对象区域将对象设置为静态。
如果将场景设置为Auto Generate,Unity的光照预处理会自动开始,并且场景中任何几何体改变时自动更新。如果没有启用Auto Generate,就需要手动开始光照预处理。

自动/手动预处理

如果选中了Unity光照面板下面的Auto Generate,场景中的静态几何体发生变化后预处理会自动在后台运行。
如果没有启用Auto Generate,必须手动点击后面的”Build”按钮开始光照预处理过程。处理的过程基本一致,并且可以控制处理什么时候开始。
在较小或不复杂的场景使用Auto Generage很有用,因为它能在移动或编辑场景中的静态GameObject后快速生成准确的光照结果。但是场景很大或很复杂时,最好切换到手动选项,这样计算就不会在每次修改场景后重新开始高CPU占用的光照预处理。
手动开始预处理时,场景光照的所有方面都会被评估和计算。如果只重计算和烘焙反射探测器,在Generage Lighting按钮的下拉菜单中选择Bake Reflection Probes
注意:使用Auto Generage模式时,Unity将光照信息保存在一个空间有效的临时缓存中。也就是说超过缓存空间大小时,Unity会删除旧的光照数据。如果场景以来的自动生成的光照数据被删除,生成项目的时候会可能出现错误。这种情况下,生成的项目中场景的光照可能不正确。因此,在生成游戏之前应该取消Auto Generage,为所有场景手动生成光照数据。Unity会将光照数据作为Asset文件保存在项目文件夹,也就是说数据被保存为项目的一部分,被包含在生成结果中。

启动烘焙GI或者实时GI

默认情况下Unity会同时开始烘焙GI和实时GI。烘焙GI全部在预处理完成。实时GI在使用间接光照时会生成一些预处理结果。两者都启用时,可以对场景中的每个光照设置GI(在光照组件中的Mode设置)。查看文档光照窗口全局光照以了解更多内容。
光照系统最灵活的方式是同时使用烘焙GI和实时GI。但是这也是最消耗性能的选项。可以选择禁用实时GI或烘焙GI减少性能要求。注意这回削弱光照系统的灵活性和功能。
在光照窗口(Window>Lighting>Settings>Scene)中选中Realtime Global Illumination以启用实时GI,选中Baked Global Illumination以启用烘焙GI。取消选中则禁用响应的GI系统。如果有光照使用的是禁用的GI模式,它们会被设置为使用激活的GI系统。

每个独立光照的设置

在场景或继承窗口中选择光照,在属性窗口中编辑光照组件的设置,可以修改每个独立光照的属性。
此部分未译,关于光照模式的内容与先版本变化较大,原文中介绍的三种模式为Dynamic, Static和Stationary,而先版本的三种模式为Realtime, Mixed, Baked
更多细节请查看文档光照模式

GI缓存

不管是烘焙GI还是预处理实时GI,Unity会将场景光照存储到GI缓存中,并且在预计算过程中重复利用这些数据以节省时间。场景中修改的数量和特征将决定多少数据会被重复利用。
缓存没有保存到Unity项目中,并且可以通过(Preference>GI Cache>Clear Cache)清空。清楚缓存意味着预处理的每个阶段都需要重新计算,因此可能花费较长的时间。但是在某些情况下可以用来减少磁盘占用。

烘培GI的LOD

Unity生成光照贴图时会考虑Level-of-detail(细节级别)。直接光照使用所有LOD的真实表面。低级别LOB使用光照探测器获取间接光照。生成的光照结果烘焙到光照贴图中。
这意味着在LOD周围放置光照探测器来捕获间接光照。如果完全使用烘焙GI,对象将不会使用光照探测器。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值