加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

从60Hz到75Hz,完成一次VR的场景优化需要遍历哪些血泪史?

发布时间:2016-01-19 06:27:08 所属栏目:动态 来源:雷锋网
导读:VR场景优化走过哪些血泪史,VR游戏才成为今天这样?

而与此相关的另一个问题也会困扰着更深层次的图形开发者:场景内容的管理。例如一座数字化的虚拟城市,每一栋楼,每一个房间,每一辆车,每一位居民,都应当是独立存在的个体,对这些模型资源的管理也显然应当按照相似的分类方法。然而从渲染的角度来说,这样产生的Draw Call恐怕远远不是最优的选择,甚至轻而易举就会让前文中送水果的卡车司机崩溃掉。

如果按照材质把模型重新分组和整合,倒是可以进一步提升渲染的效率,不过资源的管理工作却无疑会让人崩溃。试想一下,在公安局的户口本上,你不再属于某个家庭,而你身体的各部分则分别隶属于短发组,麻脸组,格子衫组,灰裤子组……这种“按材质分组”的行为看起来多少有点“汉尼拔”似的惊悚气氛了。

从60Hz到75Hz,完成一次VR的场景优化需要遍历哪些血泪史?

然而,场景优化面临的麻烦还远没有尽头。

有关填充率的那些传说

试想一位画家,挥毫泼墨,将现实中的山水人物跃然纸上,描绘得栩栩如生。这些山水人物原本是自然存在的,绘制到纸上,就成了油彩,凑近去看,就会有浓重的颗粒感——虽然大多数情况下这并不妨碍我们观瞻就是了。

现代计算机的图形渲染过程与此类同。把复杂的场景模型跃然于屏幕之上,这一过程称作光栅化(Rasterization),而屏幕上的像素点,近看起来同样存在颗粒感,低分辨率的屏幕则更为明显。这种颗粒感对于VR类的内容来说更为显著(因为VR眼镜相当于放大了屏幕分辨率对画面质量的影响),而它也是破坏场景真实感和效果的主因之一。 

从60Hz到75Hz,完成一次VR的场景优化需要遍历哪些血泪史?

那好办啊,有人可能会说,那就拼命增加屏幕分辨率不就好了。从现在的1080p,到2K,到4K,到8K……总会有彻底解决这个问题的一天吧?

然而事情并没有这么简单,还是回过头来谈谈我们的画家:在一张A4纸上画简笔画,也许他只需要1-2分钟而已;如果是10米长卷,那么也许要一天的时间;如果是在万里长城上……那么画家可能直接就跳下去了,搞这么一辈子的工程,生不如死啊。

没错,这里的画卷可以类比为我们所说的屏幕分辨率,而画家求死的原因,只因为要画的东西太多,而他对画卷内容的填充率(Fill Rate)太低了,因而渲染效率也变得惨不忍睹。

这个问题的解决方案,无非三种,弊端也是一目了然:

一,改用小点的画卷(降低屏幕分辨率和用户体验);

二,换个疯狂的画家(升级硬件,提升填充率);

三,少画点花里胡哨的东西(降低渲染内容的质量)。

听起来都不是什么一劳永逸的选择,并且大多数开发者一定会选用最直接的那个方案,没错,换更疯狂的画家,搞硬件的军备竞赛。

从60Hz到75Hz,完成一次VR的场景优化需要遍历哪些血泪史?

不过从场景优化的角度来说,方案三反而成了最靠谱的一条道路,并且这给各路算法豪侠和数学家们也提出了一个有趣的命题:如何在渲染质量还看得过去的前提下,尽量少画点“对用户没用”的内容呢?

对这句话的详细解释就是:用户看不到的场景不要画出来,把它提前裁减掉(Culling);而用户可能本来也看不清的场景,就用更低的细节程度(Level of Details)把它画出来。

这里必须要解释一句。显卡并不是多么聪明的一种硬件产品,它并不能主动分辨出当前提交的渲染指令中,包含的信息是否真的能够被显示到屏幕之上;而是选择了另一种更为简单的策略:不管有多少东西都先画上去,如果不幸没画到纸上的话……反正你也不在乎对不对?毕竟最终用户关注的只有纸面上的内容而已。

然而古今中外,那些为了优化场景而苦思冥想的开发者们,却仅为了这一个目标前赴后继,伤痕累累。

当然,这里所说到的“填充率”一词,只是相关图形系统运行机制的冰山一角。它还可能被进一步细分为像素填充率(光栅化操作和屏幕缓存绘制的速率)和纹理填充率(纹理在模型表面映射和采样操作的速率)。而实际执行过程中,还可能受到显存带宽(显卡在单位时间能够传输数据的总量)参数的影响,而这些信息往往都会标识在具体显卡品牌的性能说明文档中,作为发烧友比较和购买的依据(虽然它们实际上并无统一标准可言)。

从60Hz到75Hz,完成一次VR的场景优化需要遍历哪些血泪史?

 

不过这并非本文所要继续深入阐述的命题了,我们关心的,还是那些图形学和VR领域的先行者们,为了哪怕一点点的优化效果做出过的努力。

奇思妙想与日夜苦熬

之前的长篇大论,列出了各种看起来棘手和不可逾越的问题,在这里归结起来,无非有以下几点:

一,渲染批次(Draw Call)的合并与优化问题;

二,裁减看不到的物体,降低渲染批次和填充率;

三,对于看不清的物体(比如距离玩家位置较远的物体),改变细节程度并降低填充率。

单纯合并几何体数据也许只是一个数学和几何拓扑学上的问题而已,然而每个渲染批次只能使用一组材质,这就大大提高了工作的难度和策略性。

一个听起来还不错的方案就是,将不同的材质合并到一起,这样对应的渲染批次也就合并在一起了——这一过程通常被称为Atlas。

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!