本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

码报:【j2开奖】?如何提升 VR 渲染的性能?手把手教你 | 干货(4)

时间:2017-01-20 22:17来源:天下彩论坛 作者:www.wzatv.cc 点击:
然后我讲一下, 前向渲染对于我们来说并不是一个非常完整的解决方案。 特别是 MSAA 对于比如说高光的锯齿并不是能够解决的很好。 那么我们在 Unity 里

  然后我讲一下,前向渲染对于我们来说并不是一个非常完整的解决方案。特别是 MSAA 对于比如说高光的锯齿并不是能够解决的很好。

  那么我们在 Unity 里面是不是有别的更好的技术去解决它?

  我在这里强调的是前向渲染对于多光源并不是非常有效率,包括刚才说的,可能只能支持 16 盏光源,再多它的帧率会下降的非常快。

  即使是支持到 16 盏光源,也并不推荐你完全的用满它。

  再一个是,比如说,我们很想使用一些特效,比如屏幕空间反射。但这个东西对于前向技术就没有办法实现,因为屏幕空间反射需要用到屏幕的几何信息,那怎么办?那我们是不是有一个更好的方法?

  还真有。

  大家想一想,我们做电影和做游戏的区别是什么?

  做电影其实是一个追求质量的过程,做电影一帧可以渲染 1 个小时、2 个小时。但做游戏,或者说做 VR 内容开发,我们需要的是效率,一帧最多是十几毫秒。如果你超过 20 毫秒,那这一帧基本上完蛋。所以说,电影上的一帧可以一直渲染下去,直到它收敛为止。

  那么,渲染在图形学里面其实就是一个不停采样的过程。

  而抗锯齿根本的来源就是,一个渲染的图像,它缺少信息,大家如果是工科或理工科出身的,就知道 “奈奎斯特采样定理”

  我的采样频率要高于我最高频率的两倍,我就能完整地恢复出我需要的信息。

  在渲染这个领域其实也是一样。

  打个比方说,我们大家都知道,最简单的抗锯齿的方法是什么?你渲染一张 2k 的大图,把它缩小到 1k,那这张图肯定锯齿非常少。

  为什么?因为这相当于我们对 1k 的图的每一个像素做了四次采样。但是实际上,你真的去渲染一个 2k 的大图,那么 VR 有 2k 我可能就要去渲染 4k,你这样去抗锯齿显然是不行的。

  后来就有聪明人说,游戏最大的特点是连续性,那如果我能够找到每帧之间相同的像素,那我就能在时域,也就是说很多帧之间去做个采样。

  就实现了个超采样,也就是所谓的 Super Sampling。

  有的时候大家在数据信号处理的课里面,提到这个 Super Sampling。这个能够很好的提高画面的质量,最关键的是这个很便宜,或者说并不是很好,当然它的实现难度是有的。

  我给大家看一个具体的例子。这个 Demo 挺有名的,使用虚幻引擎做的。这个是没用时域抗锯齿的结果,大家看到最大明显的特点是闪。因为,整个画面高光的东西太多了。如果说你不用抗锯齿,画面会非常不稳定。这个地方会特别的闪。

  我们加上了时域抗锯齿的结果,是什么?

  最大的特点就是整个画面非常稳定,这样看起来是不是就有电影级别画质的感觉。画面稳定、像素没有任何瑕疵,包括在高光的地方也不会闪,非常的稳定。

  我刚才说的 Temporal AA一样的,在 asset store 上也可以找到一个还不错的实现。我不知道大家知不知道 limbo 这个工作室,可以去搜 limbo 的 taa,能够得到非常不错的 Temporal AA,也是直接在 GitHub 下载就可以了。

  我想跟大家建议,要擅于利用包括 GitHub、Asset Store 这样的插件让我们的开发提升效率。

  如果你想做很棒的产品,你必须要擅于利用这些前人已有的资源。

  怎样解决全局光的问题?

  然后,我再讲全局光的问题。

  全局光问题历来是游戏里比较头痛的问题,特别是在 VR 里面更麻烦。

  什么叫全局光照?

  比如一个灯打到一块黑板上或者地板上,它投下来的影子那是直接光照。但如果它在地板上反射出去的光线照亮了其他物体,那这个就是全局光照。

  全局光照一般是通过烘焙,也就是离线的方法把全局光照存成某种数据结构,在游戏实时运行时调用去实现的。

  但在 VR 里面对于实时的运算是要进行严格的限制,所以我不推荐大家在 VR 里面使用实时的全局光照技术,比如说提速、mpv 这种技术。

  我建议大家老老实实用标准的光照贴图,也就说烘焙一张贴图然后贴上去。

  但是,Unity 又是一个非常麻烦的问题,Unity 自身所带的 enlighten 的烘焙,不是很好调出非常好的效果。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容