Unity光烘焙-如何管理混合照明

时间:2019-07-08 13:57:17

标签: unity3d

我有一个很大的场景,我将1个定向光(太阳)设置为混合。 为了节省时间,我在开发过程中主要使用了实时照明。 现在要发布,现在要烘烤,以提高用户的性能。

我的问题是

  • 灯光设置中的任何值都有经验法则吗?
  • 我应该将哪些对象设置为静态对象(我将所有不会移动的对象设置为静态对象),并且如果烘烤需要3-4个小时,那是不对的?
  • 由于混合照明,我应该使用实时GI,还是烘焙GI足够?

我对最终烘焙使用较高的设置,因为我希望它看起来不错,并且我烘焙场景中所有不动的东西(成千上万个对象)。虽然需要花费几个小时,但压缩后的光照贴图大小最终约为60mb,这似乎还不错。

我的设置与下图类似,但增加了:

直接采样:200

间接采样数:1000

分辨率:24

参数:默认为高

增加这些值的原因仅仅是因为我的对象在任何较低的设置下烘烤时看起来都不好。

enter image description here

1 个答案:

答案 0 :(得分:1)

  

我想烘烤,以提高性能

注释:

  • 烘焙通常可以改善视觉效果。
  • 但这会创建很多纹理,因此可能会降低性能。
  • 仅使用烤灯,基本上没有照明-性能非常好。
  • 混合意味着您烘烤间接光(因为没有实时光线追踪,您将没有间接光*),并且仍将实时光用于诸如硬阴影之类的某些事情。
  • 如果您不想旋转定向光(太阳)或四处移动点光,则无需烘焙实时GI。

[*]:我们可以通过预先烘焙来伪造一些实时GI /软间接照明。因此,“实时GI”使您可以旋转定向光(Sun)甚至移动光,但不能旋转物体。而且您需要烘烤它,通常包括一些光探针。因此,“实时”并不意味着它没有烘烤。它与真实的光线跟踪不同。

持续时间:

使用2018.3或2019.1(不确定),您可以尝试GPU Lightmapper(预览版)-速度更快。但是,使用CPU 3-4个小时对我来说是很正常的。

静态?

将事物标记为静态总是对性能有好处,但是,例如,如果要预先烘焙活动房屋,则也可以将非静态事物标记为“ Lightmap-static”。

光照贴图调试模式:

  

增加这些值的原因仅仅是因为我的对象看起来不好

在“场景”视图中,您可以选择“光照贴图”模式(不确定如何调用)。 它使用lightmap-UV在所有对象上显示基本的象棋/棋盘格纹理。例如,使用此视图缩放光照贴图UV可以增加关闭对象的细节。


编辑:

混合照明-性能?

这将为场景中的所有静态(或至少光照贴图静态)对象烘焙光。在运行期间,不再为静态照明计算照明。

至少Manual就是这样:

  

选择“混合”烘焙模式后,标记为静态的GameObjects仍会将其包含在其烘焙的GI光照图中。但是,与标记为“烘焙”的灯光不同,混合灯光仍将为场景中的非静态GameObject提供实时,直接的灯光。

我刚刚测试过:

“烘焙”-烘焙后,旋转太阳直到重新烘焙才影响场景。

“混合”-我可以旋转太阳并影响阴影。注意:“静态”物体在不烘烤非静态物体时仍会获得一些间接光(从周围反射),因此在不面向太阳的一侧为全黑。

“照明”标签显示

  

混合灯提供实时直接照明。间接照明被烘焙到光照贴图和光探测器中。 [...]

性能:

如果没有测试,这很难回答,因为我仅依靠理论事实,甚至是假设。

我想说混合光模式只是为了获得更好的视觉效果(间接照明)。这是预先计算的,但是纹理仍然需要乘以/添加到着色器中的像素照明-这会降低性能。

直接照明仍然是实时计算的-因此,如果我正确理解文档,就性能而言,混合总是比仅实时照明更糟糕。

但是:如果您的太阳甚至不动-您可以在“烘焙”模式下使用它而不是“混合”模式-这样可以将阴影烘焙到纹理上并在运行时保存计算。这是确保确定具有更好性能的唯一选择。我不确定混合模式是否100%。

实时灯光仍然会影响它们。以火炬为例。

但是,非静态播放器无法烘烤,因此无法获得阳光照明/阴影。您可以尝试在他身上使用不亮的着色器,并在其下添加假阴影。或者,您可以在其上方放置一个点光源以仿制太阳。