我想大家可能都看过 Unreal 的一些作品,比如说 Unreal 做的室内装修,为什么室内装修企业,比如说 51VR,他们都会用虚幻引擎去做室内装修呢? 一个最大的原因,室内装修对于全局光照的要求非常高,Unity 是达不到的。如果你是用 Unity 做东西,用 enlighten 去调一个非常好的全局光照,难度很大或者说几乎不可能。 所以,我推荐大家尽量去使用另外的烘焙工具,比如说 vRay。 当然,你把它导进 Unity 里面是需要耗费一定的工作量,但是这个比你去用它自带的烘焙工具要好一些。 我们这边也做过尝试,如果真的去用比较优秀的烘焙工具的话,Unity 做出的室内设计或者室内展示的质量是不会输给 Unreal。 当然,还有屏幕空间的技术,大家都知道屏幕空间的技术关键就是在于快,缺点就是精度不够。 比如 Unity 自带的 SSAO 这个就是一个非常好的实现,但在 asset store 有 HBAO 或者是别的 AO 技术,大家都可以试一下。 我建议大家能用就用,在硬件够、本来全局光很矬的情况下,你没有这些 AO 补偿的话,画面会比较挫。 再一个就是屏幕空间反射,屏幕空间反射现在在 5.4 的 beat 版里面官方已经有了,其实你们只要在相机上加上 imagine facts 里面就会有这个。 当然实现的屏幕空间发射在 Unity 5.4 实现可能不是那么完美,但其实它已经是够用的。 如果场景里有非常多的金属物体,或者说非常多的镜面,使用反射的话会大大增加你视觉上的观感。 打个比方说,我是在一个很空旷的金属竞技场里面,甚至说我只要有空间反射的技术可能不需要 GI,就能给人一种非常好的视觉上的表现力。 说了这么多,我觉得其实优化还是那套方法,大家都知道的,简单说减少 drawcall、减少 DC、batching。 Unity 的 batching 这个东西是一个老生常谈的话题,在百度、谷歌上一搜会有很多相关词条。 怎么去 batching?在场景里怎么去 batching? 在 VR 里面,要求会更高一些。 比方说,我听过一个讲座,《Gunjack》就是在 GearVR 上实现的游戏,它对 drawcall 这个东西限制就非常严,它每只眼睛的 drawcall 不能超过 50。 所以,不管你是开发 HTC 或者是开发什么样的应用,drawcall、batching 这些东西一定要非常的注意。 你不能无限制的堆你所需要的东西,而是说做一段时间,开奖,可能就要运行一下,用 Unity 的工具去看一下,我现在这个场帧率是多少?我到底在哪里耗的特别快。 还有一种比较好的方法就是说,实在不行就按艺术家的方法去画。 打个比方说,bloom 光晕特效,这个东西大家都知道 Unity 里面有 shader 自带,但是这个占的时间。 如果你是做移动平台的,你可能知道移动平台后期处理的效果是非常占时间,那怎么办?直接美术画上去,这也是非常行之有效的方法,当然也考验你美术的能力了。 再一个,我推荐多去测你游戏的性能。包括 professional unity 5.4 里也已经是比较完善的一个东西。 多去测性能、多去了解你游戏的瓶颈、bottleneck 在哪里、是 shader 太多了还是说我某个特效真的不该用。不要在编辑器里测,最好是打个光。 对于开发者的建议 最后说一下,渲染有一个自我的评估。 当然我知道现在的很多团队是不会专门有一个程序员、或者专门有技术美术去关注这一块的。 但是我想说的就是,希望大家能够去多考虑一下。 比如说,你所需要的特效的特点是什么? 比方说,如果做的是一个机械的大战,你可能非常需要反射,可能就会去使用一个屏幕空间反射的特效在 Unity 5.4 beta 版里面会有。 再比方说,你做的是一个互动电影,那么对画面的要求会非常高,那么抗锯齿就要做的非常出色,那你只能使用时域的抗锯齿 temporal AA,我刚才说的那种方法。 具体问题具体分析,渲染这个东西,永远不是一成不变的。 它不是像电影渲染一样,只要渲染的够真实或者说只要去模拟每一根光线的运动轨迹,就得到一个非常完美的图像。 关键在游戏里面,根据美术风格去做出妥协,根据性能去做出妥协,所以这是一个永远会谈论下去的话题。 你很难去说,我某个引擎特别牛,任何游戏都能做。即使是效果这么好的虚幻引擎,它也很有可能也有做出来帧率非常低的情况。 (责任编辑:本港台直播) |