UE3 性能调试:动态光照环境

来源:互联网 发布:地理信息系统数据库 编辑:程序博客网 时间:2024/05/18 18:55

性能调试:动态光照环境

点击这里返回到性能调试页面。

动态光照环境

问题:

动态光照环境更新的性能消耗显示为非常昂贵。

解决方案:

默认情况下所有的 InterpActors (也就是 Movers)和 KActors 都有动态光照环境。当一个动态关照环境更新时,它将会对光源进行线性检测,这样会增加许多CPU消耗。然而,您可以通过进行各种各样的设置来降低动态物体的光照消耗。

这里是一些光照环境设置,按照从最昂贵到最便宜的(在游戏线程上)顺序,也介绍了何时使用相应的设置:

1) bEnabled=TruebDynamic=True (默认)

这些设置仅在需要的时候使用,它们将会基于 InvisibleUpdateTime 和 MinTimeBetweenFullUpdates 进行更新。 同一时刻不应该有多余50个这样的项处于活动状态。 当它们可见、靠近玩家或者当它们移动时需要进行额外的可见性检测。

2) bEnabled=TruebDynamic=FalsebForceNonCompositeDynamicLights=True

这些设置应该是非常廉价的,环境在第一次更新时进行更新,以后再也不会更新。 bForceNonCompositeDynamicLights 可以允许动态光源影响它们,这将没有任何严重的游戏线程性能消耗。 可以有成百个这样的设置,它们唯一的消耗(在第一次更新后)是到动态光源的线性检测(并且仅当拥有者可见时)。 这些要比使用预计算阴影的光照看上去要好的多,因为它们可以旋转并且光照仍然可以保持正确。 它们通常用于破碎网格物体、GDO以及其他东西。 如果您发现这些产生了很多新能消耗,那么可以在代码侧进行一些优化。

3) bEnabled=False , bUsePrecomputedShadows=True (在图元组件上)。 同时,您必须把它从动态光照通道中取出,并把它放到静态光照通道中。

这些将会进行光照贴图,渲染的性能消耗很低,它们应该没有游戏线程的消耗(除了调用了 UDynamicLightEnvironmentComponent::Tick 函数)。 当移动它们时,它们的效果将会错误。

这是个控制台命令,可以用于查看有多少光照环境处于活动状态。在控制台上输入 SHOWLIGHTENVS ,您将会获得在那帧中更新的光照环境的所有列表。输入应该是这样的:

Log: LE:SP_MyMap_01_S.TheWorld:PersistentLevel.InterpActor_12.DynamicLightEnvironmentComponent_231 1Log: LE:SP_MyMap_01_S.TheWorld:PersistentLevel.InterpActor_55.DynamicLightEnvironmentComponent_232 0Log: LE:SP_MyMap_01_S.TheWorld:PersistentLevel.InterpActor_14.DynamicLightEnvironmentComponent_432 1 ...

在每行末尾的‘1’意味着 bDynamic 设置为 TRUE 。这可以用于引导关卡设计人员来修改它们的地图以便降低更新消耗。

反馈

您有关于引擎中性能和内存方面的问题或意见吗? 将您的问题发送到 right here(这里)!

点击这里返回到性能调试页面。

0 0
原创粉丝点击