查看原文
其他

Unity预计算实时GI (二)实时分辨率

2017-02-05 Unity官方 Unity官方平台

我们已经在《Unity预计算实时GI (一)介绍》中聊到Unity预计算实时GI的必要性和学习准备,并且了解到实现这个过程需要考虑的问题。本文我们对如何定义一个适合场景的光照分辨率进行了相关介绍,一起来学习一下吧!


如何调整实时分辨率?


当使用PRGI来计算场景照明时,首先要做出的判断之一是确定场景的实时分辨率(Realtime Resolution),因为它决定每个世界单位所使用即时光照的贴图像素数量。Realtime Resolution设定可以在Lighting窗口中找到并调整,方法如下:


Unity的Lighting窗口:主要显示整个场景会用到的光照设定。


  • 通过Window > Lighting菜单,开启Lighting窗口,并选择Scene标签页。

  • 确保Precomputed Realtime GI选项打上勾,在它下面找到Realtime Resolution属性,即可设置它的值。


但这个分辨率应该如何设置呢?


选择适当的分辨率


在设定场景时,首先要了解你的项目使用的单位比例,可能在你的项目里一个单位等于现实世界的1米、一英尺或一公分。Unity没有默认真实世界的单位,所以要由开发者自行决定。


在这个范例里我们采用1 unit(单位) = 1 meter(米)。因为这和Unity的物理概念不谋而合。举例来说Unity的重力预设就是以每秒多少单位来计算的,因此设定1单位 = 1米对于一个真实世界的场景来说是恰当的。


Realtime Resolution的值通常可以由游戏世界的规模来制定。例如,你的场景是一个拥有丰富光照变化的室内环境。在这种情况下,高一点的值比如2 - 3,可以捕捉到更详细或"高频"的光照。


如果你的场景是一个规模较大的户外环境,可能覆盖了几百甚至上千单位(平方米)的表面,而这些表面并不会剧烈地改变反射光的颜色。在这样的情况下,把适合计算复杂室内场景的设定用在有大量相同特征的室外环境是很浪费的。我们会浪费宝贵的CPU时间和内存去更新那些对整体外观贡献不大的光照贴图。为了教学目的,我们会提高PRGI计算期间必须考虑的光照贴图的像素数量,这会对预计算的时间造成很大的影响。针对室外环境,可以为场景中尺寸较大的游戏对象设置0.5 - 1的texel,针对地形可以设置0.1- 0.5的texel。


Unity PRGI所需要的Realtime Resolution值比传统光照贴图密度要小好几个等级,这是因为我们只从这些光照图里获取间接光数据,且这些数据通常分辨率都很低。所以使用PRGI时,清晰的阴影通常都是通过实时运算而非高分辨率的光照图来提供的


在这里使用传统光照惯用的值,例如:30 texels,可能会导致预计算失败或无法计算。室内场景比较适合的值是2 - 3,室外场景则是0.5 - 1。这是我们在使用1单位 = 1米的前提下,如果单位大小不同这些值就需要调整。


具体可以参考以下的场景与Realtime Resolution值对照表(1单位代表1米):

  • 室内:2-3 像素/单位

  • 户外:0.5-1 像素/单位

  • 地形:0.1-0.5 像素/单位


当设定场景实时分辨率时,Unity会指定给场景内的静态对象。新建的带有Mesh Renderer且标记为静态光照(Lightmap Static)的对象,会使用这个值一直到它被其他设置修改。


除了帮场景加上分辨率设定外,我们还能针对每个对象调整光照贴图的分辨率,在需要高分辨率来提供更高真实感的情况下,我们可以选择性的提高这个值。通常是将场景里最多的对象分辨率设为默认值,然后手动调高需要更多照明细节对象的值


练习一下


如果你想跟着做,可以点击【阅读原文】,打开教学素材包里的LightingTutorialStart场景。


在范例场景里,我们有一个户外环境,具有中等大小的地形与相当一致的色调。所以我们设定Realtime Resolution为0.5像素/单位就足以处理从场景其他对象来的光照反射。然而,场景里也有些贴图细腻的木屋。由于场景里有比地形对象还多的房子,我们应该把默认的分辨率设定为适合房子的数值。然后我们可以单独修改地形对象的分辨率,这样可以降低场景准备的工作量。考虑到这点,我们用1作为我们的默认分辨率,操作步骤如下:

  • 开启Lighting窗口(Window > Lighting) 然后选择Scene页签

  • 设定Realtime Resolution值为1


由于我们的世界单位设定为1单位 = 1米,这表示由PRGI所产生的光照图将会是1x1米的大小,或许你看起来很低,那是因为我们只抓取间接光照。我们还会从场景里的直接光源计算清晰的阴影和反光。


总结


本文我们了解到使用PRGI来计算场景照明时,如何确定场景的实时分辨率,这是开始与计算的重要步骤,相信你已经掌握了!后续我们会对光照图进行阐释,并且一起真正地开始实时预计算,敬请期待!更多Unity技术分享请关注Unity官方中文社区(forum.china.unity3d.com)。

更多Unity技术文章

Unity预计算实时GI (一)介绍

Unity 5.6 Beta版中的光照模式

Unity打造3D环境中的光照

渐进光照贴图

Unity 5 中的全局光照技术详解



点击“阅读原文”下载官方光照优化素材包!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存