Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d Unity灯光烘焙-如何管理混合照明_Unity3d - Fatal编程技术网

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

Unity3d Unity灯光烘焙-如何管理混合照明,unity3d,Unity3d,我有一个相当大的场景,我有一个平行光(太阳)设置为混合。 为了节省时间,我在开发过程中主要使用实时照明。 现在,在发布之前,我想烘焙,为我的用户提高性能 我的问题是 灯光设置中的任何值是否有经验法则 我应该将哪些对象设置为静态(我将所有不移动的对象设置为静态),如果烘焙需要3-4个小时,是否有问题 我应该使用实时GI,因为我有混合照明,还是烘焙GI就足够了 我使用相当高的设置进行最终烘焙,因为我希望它看起来很漂亮,我烘焙场景中所有不移动的对象(数千个对象)。虽然这需要几个小时,但经过压缩后,

我有一个相当大的场景,我有一个平行光(太阳)设置为混合。 为了节省时间,我在开发过程中主要使用实时照明。 现在,在发布之前,我想烘焙,为我的用户提高性能

我的问题是

  • 灯光设置中的任何值是否有经验法则
  • 我应该将哪些对象设置为静态(我将所有不移动的对象设置为静态),如果烘焙需要3-4个小时,是否有问题
  • 我应该使用实时GI,因为我有混合照明,还是烘焙GI就足够了
我使用相当高的设置进行最终烘焙,因为我希望它看起来很漂亮,我烘焙场景中所有不移动的对象(数千个对象)。虽然这需要几个小时,但经过压缩后,光照贴图的大小最终会达到60mb左右,这看起来并不坏

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

直接样本:200

间接样本:1000

决议:24

参数:默认高

增加这些值的原因很简单,因为我的对象在具有任何较低设置的烘焙中都不好看

我想烘烤,以提高性能

注意事项:

  • 烘焙通常可以改善视觉效果
  • 但这会创建大量纹理,因此可能会降低性能
  • 仅使用烘焙灯,基本上没有照明-性能非常好
  • 混合意味着烘焙间接灯光(因为没有实时光线跟踪,就不会有间接灯光*),并且仍然使用实时灯光处理某些事情,例如硬阴影
  • 如果不希望旋转平行光(太阳)或移动点光源,则烘焙实时GI是没有用的
[*]:我们可以通过预烘焙来伪造一些实时GI/软间接照明。所以“实时GI”允许你旋转平行光(太阳)甚至移动光,但不能移动物体。你需要烘烤它,通常包括一些光探测器。所以“实时”并不意味着它是少烤的。这和真实的光线追踪不一样

持续时间:

使用2018.3或2019.1(不确定),您可以尝试使用GPU Lightmapper(预览)-它要快得多。然而,使用CPU 3-4小时对我来说是很正常的

静态?

将事物标记为静态对性能总是有好处的,但是如果您希望移动房屋预先烘焙,也可以将非静态事物标记为“Lightmap static”

光照贴图调试模式:

增加这些值的原因很简单,因为我的对象看起来不好

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


编辑:

混合照明-性能?

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

至少这是报纸上说的:

选择“混合”烘焙模式,标记为静态的游戏对象仍将在烘焙的GI光照贴图中包含此灯光。但是,与标记为“烘焙”的灯光不同,混合灯光仍然会为场景中的非静态游戏对象提供实时、直接的灯光

我刚刚测试过:

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

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

“照明”选项卡显示

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

性能:

这是很难回答没有测试,因为我只是依靠理论事实,也许假设

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

而且直射光仍然是实时计算的-因此,如果我正确理解文档,混合照明在性能上总是比仅实时照明更差。

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

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


但是,您的非静态播放器将无法获得阳光照明/阴影,因为它无法烘焙。你可以尝试在他身上使用一个未发光的着色器,并在其下添加一个假阴影。或者你在上面放置一个点光源来模拟太阳

首先谢谢!它真的会降低性能吗?我读到,对于最终用户来说,使用场景实时灯光的成本相当高,因为它需要如此多的计算和绘制调用?如果这不是真的,那么我就不会烘焙任何东西,只会在我的整个场景中使用实时照明,因为我的视觉效果保持不变。嗯,纹理“消耗”或占用内存。它们需要加载并馈送到着色器。这可能是非常低的影响。但与非烘焙食品相比,这当然是一个区别。这里说的是“混合”。如果您烘焙然后移除/停用太阳,或者只使用“烘焙”设置而不是“混合”,将完全节省照明成本。使用一个平行光是可以的,但是使用10个平行光会影响性能