IT培训-高端面授IT培训机构
云和教育:云和数据集团高端IT职业教育品牌
  • 国家级
    全民数字素养与技能培训基地
  • 河南省
    第一批产教融合型企业建设培育单位
  • 郑州市
    数字技能人才(码农)培养评价联盟

【技术分享】详解Unity 5中的全局光照(二)

  • 发布时间:
    2014-12-18
  • 版权所有:
    云和教育
  • 分享:

场景中的大部分几何体都必须是静态的,实际上,这些大尺寸的几何体都会参与到GI的计算。在预计算阶段,Enlighten会自动将场景分解为数个子系统。去影响如何生成这些子系统是有可能的。这些系统被用于预计算大量的并行管道。管道之间是深相关的,并解决每一个系统的任务。这里有一个例子用于阐述Viking村落时如何被自动分解成多个子系统。

在预计算完成后,系统之间的相互关系就确定了。这可用于在运行时部分减少对于静态几何体的限制。在运行时,在不同系统之间传输的间接光总量是可以控制的。这可以让你在系统切换之间实现淡入淡出,可以用于实现拆除或者打开们的效果。

Enlighten运行时:

Enlighten可以有效地运行于高端移动设备。他在一个线程中异步执行(或多个,如果平台允许)。移动平台中最突出的是直接光照或动态光照的阴影贴图需要在GPU中计算。所以,移动平台中只允许少量的动态光照。但是实时调整几何物体的自发光属性却是几乎无消耗的。Enlighten将自发光的物体作为可见物体计算。这意味着,自发光物体可以产生很好的阴影而不需要什么性能代价,即使在很低的分辨率配置下。

得益于GPU对于直接光照和阴影投射的支持,Enlighten可以很好的实现动态光照,无论是在台式机系统还是街机,只要是能支持游戏的系统。

关于烘焙

对于某些游戏来说选择烘焙可能更合适,所以将来也会很好的支持和发展烘焙流程。Unity5中光照的输入参数有:光源、自发光材质及环境光,你可以选择使用烘焙或者实时GI。选择烘焙的光照和Unity之前版本有同样的参数,它将被烘焙成光照贴图,而动态光照则由Enlighten运行库来处理。烘焙和实时GI可以无缝融合。

Unity5中也有些新的烘焙特性。其中之一就是光照贴图被分散成组件形式。每个图集都包含5个光照贴图,它们分别是直接光照、间接光照、直接方向光、间接方向光和AO图(环境光吸收)。烘焙完成后,它们组合成光照贴图供游戏使用。在编辑器中可以指定这些图的融合参数。你可以调整这些选项来适配你最终的输出效果。例如,你可以很轻易的增加间接照明,这只需要在重新烘焙之前增加一个合成的工作,当然这个工作会花费你数秒钟的时间。

光照流程

Elighten不仅仅提供游戏中的实时GI。其中一个很重要的改进就是,Elighten为设计师们提供了全新的光照流程。当设计师们需要看到更高品质的细节的时候,它提供了更快的迭代模式。它使用迭代取代了完全重新的烘焙。不需要用户的干预,场景会被重新预计算与烘焙的效果替换,而这些预计算与烘焙都是在后台完成的。编辑器会自动检测场景的改动,并且执行所需的步骤来修复光照。大多数情况下,对光照的迭代几乎是瞬间完成的。

什么类型的游戏需要用到Enlighten?

之前提过,实时GI的局限性在于大规模的场景设定必须是预先确定的。是追求只适用于高端系统完全动态光照的解决方案,还是覆盖尽量多的场景并且可以在移动平台使用从而拥有更广阔的市场的解决方案,我们只能二选一。在5.0中我们选择了后者。下面是使用实时GI会存在一定困难的游戏类型列表:

Q:可以实现开门效果吗?

A:上文探讨过,场景会被自动划分为子系统,所以这取决于你的门,某些情况下是可以的。而另外一些就要借助脚本了。 (相关脚本会在5.x的版本中发布)

Q:支持销毁吗?

A:Enlighten支持场景中物体的动态透明。这意味着,游戏中要被销毁的物体需要首先被标注。当然这不是最理想的解决方案,他应该支持更多的功能。(该功能会在5.x中提供)

Q:我可以通过流或者块加载关卡吗?

A:当然,子系统可以通过流加载。你可以让你的场景块不包括子系统,然后手动或者通过脚本加载。(该特性会出现在5.0)

Q:可以使用一些预先做好的模块来代码实现游戏场景吗?

A:可以的,如果预先计算好模块所在位置的不同组合,你可以实现各模块之间的切换。这个就类似于你制作跑酷时的光照烘焙(无缝)。(这里所需要预计算的API会在5.x中提供)。

Q:可以完全使用代码实现游戏世界吗,类似Minecraft?

A:长话短说,不可以。然而,我们也在做很多项目,其中使用了ImaginationTechnologies中PowerVRRay Tracing然而来实现GI预览和混合。这可能是一个备选的方案用来解决由程序或者玩家创建场景的问题。PowerVR Ray Tracing技术支持全动态场景的GI。他不是全实时的,而且开始出现的数帧里可能会有噪点(因未融合收敛),但这是一个非常有前景的方向。在允许一定的延迟的情况下,它非常适用于用户自定义场景的光线渲染。(因项目还在研发阶段,暂时还没有案例)

5.0中有哪些功能?下面是5.0中的主要功能:

(1)游戏实时GI组件Enlighten

(2)迭代流程(服务于实时GI与烘焙)

(3)反射探针

5.0后续:

由于我们正对光照流程和生成做了很多的改动,其中一些因存在一些潜在bug可能会导致5.0的崩溃,后续我们会努力修复。下面这些是在5.x系列周期内会出现的特性:

(1)实时光照和烘焙光照的PowerVR追踪算法

(2)控制实时GI子系统间切换的API

(3)Enlighten实时立方贴图

(4)GI的实时透明支持

(5)预计算/烘焙的云/集群计算