注册 | 登录

游侠NETSHOW论坛





游侠NETSHOW论坛 游侠NETSHOW论坛 VR虚拟现实专区 VR画面为什么差?这些技术能告诉你答案 ...
查看: 6473|回复: 19
打印 上一主题 下一主题

[技术] VR画面为什么差?这些技术能告诉你答案 [复制链接]

帖子
128
精华
0
积分
65
金钱
950
荣誉
0
人气
5
评议
0
跳转到指定楼层
楼主
发表于 2017-6-27 16:55:52 |只看该作者 |倒序浏览
当我们用一张1920x1080的画面 去表达一个复杂的游戏场景的时候,我们事实上是尝试用一个个的像素点来描述观察者眼中所见的几何模型和材质信息--而后者原本是可以通过精准的数学曲线和 曲面去表达的--因此,使用有限的像素点就意味着我们只能从曲面上采集有限几个位置的信息,来表达这个物体的形象。如果像素点的数量太少,那么它所呈现的物体可能会是失真、不准确的,而物体的边缘往往是锯齿状的,这正是记录了不同采样信息的像素点所留下的痕迹。

而这还远不是问题的全部。另一种形式的走样问题或许更为让人头疼:现代游戏开发者常用的一种丰富场景细节的手段,叫做法线贴图(normalmapping),其原理是使用颜色图像来记录物体表面的朝向信息,然后将这张图贴附到原本平整的几何表面上。在实时运算过程中,我们使用法线贴图来模拟这个表面的坑洼不平的效果,以及因此反射的光照信息,从而以很小的代价得到逼真的渲染效果。

不过法线贴图的使用同样需要一个采样的过程,即物体表面的每一个点都需要对应于法线贴图上的一个颜色值。但是在一定的观察者视角和距离下,因为法线贴图存在Mipmap后准确度损失的问题,会导致因为法线而计算的高光部分出现断续和运动闪烁现象。就如下图中黄色圈所提示的:原本应当是一条直线的高光效果,在图中是由很多断续的短线组成,并且这样的短线会随着视角的运动而发生变化,产生非常碍事的观感。

对 于VR内容的参与者来说,这当然是噩梦的开始。试想你戴上头盔,看到一位轻盈可人的少女向你走来,少女的鬓角发丝都打上了天然的马赛克,而她自信的双眸和 光滑的皮肤,在阳光的照耀下闪烁着诡异的线条。再加上尚不能让人满意的头盔分辨率,以及延迟和纱窗效应等种种问题,只会让玩家迅速产生一种身“不”临其境 的抽离感,无法将自己代入到虚拟的场景当中。

这两种类型的走样问题,可以统称为空间性的走样(spatialaliasing)。

与之相对应的还有时间性的走样(temporalaliasing),顾名思义,就是场景随着时间变化而发生运动的过程中,因为场景渲染对于高速运动的物体的采样率不够,因此发生了失真的状况。这也被称为车轮效应(wagon-wheeleffect),例如在电视画面中看到汽车飞驰,或者直升机爬升的镜头的时候,我们会感觉轮子或者螺旋桨是反向转动的。

不 过放在游戏场景中,问题可能会更大一些,爆炸,喷射,甚至是VR玩家头盔的高速转动,都可能带来时间性的走样问题,从而造成场景不自然的跳动,这甚至可能 是3D游戏晕动症的另外一种潜在的影响因素。能否解决这样的问题,以及如何高效地解决这些看起来简单却又暗藏杀机的走样问题,想必会给越来越多的VR内容 开发团队带来巨大的挑战。而这样的挑战也许是前所未有的:毕竟传统的PC和主机游戏中,玩家并不需要非常高的分辨率和屏幕刷新率参数,只要面对屏幕时没有 大的瑕疵就好;而VR游戏颠覆式的体验,眼睛与屏幕的过近距离,则是在另一方面扩大了这些传统问题的影响,使之可能进一步成为限制开发者脚步的桎梏。

古老而有效的手段:MSAA(多重采样)

最传统的一种反走样思想,就是把原本需要渲染的画面尺寸放大很多倍之后,渲染一张更高分辨率的图像(这一过程也称作超采样,supersample),然后 再重新缩小到实际需要的尺寸输出。在重新输出的过程中,每个最终的像素结果,在高分辨率的图上都有多个对应的像素值可以进行加权平均处理,从而提供了各种 提升画面质量和降低画面锯齿的可能性(而这个过程被称作下采样,downsample)。这一理想状况下的方案也被称作SSAA(super-samplinganti-aliasing)。

当然对于实时渲染的画面而言,需要被采样的绝不仅仅是最终的色彩图像而已,通常还要考虑深度缓存(depthbuffer)和模板缓存 (stencilbuffer)的重采样,并且对于画面上的每一个采样点都要执行一次像素计算(即调用像素着色器,pixel shader),这一切 的工作都对显示设备的带宽和像素填充率产生了不可忽视的压力,进而直接影响到实时画面的渲染效率--而对于VR内容而言,执行效率的保证恰恰是重中之重。 这样的矛盾,无疑是所有从业者的一块心病。

幸好,现代计算机硬件支持的MSAA(multi-samplinganti- aliasing)并不会单纯到对每种采样点都斤斤计较的程度,它只会对输出画面的每个像素执行一次像素计算,并且将结果输出到这个像素在大图上的每一个 采样点,混合之后输出一个平滑的最终结果。

从 图中可以看到,因为示例像素(方框所示)正好位于一个黄色三角形的边缘,而它对应的深度采样点(depth sample)有部分在三角形之外,另一部分 在三角形之内,因此重新混合输出的颜色值自然产生了一种模糊的效果,即几何物体边缘锯齿的平滑处理。如果像素点完全处于三角形的内部或者外部,那么混合后 的颜色值与着色器的输入值将不会有任何变化。

而很多游戏设置界面中常见的MSAA 2x,MSAA 4x等选项,设置的正是每个像素对应的采样点的数目。显而易见,采样点的数目越多,渲染更大分辨率的中间画面耗费的资源和时间也就越大,而最终结果则会更加理想。

MSAA 如今基本成为了所有主流三维游戏必备图形品质选项之一,毫无疑问,它也会是大部分VR游戏在考虑提升自身游戏品质时的首选优化方案--尽管因此会让本来就 捉襟见肘的渲染效率问题更加严重,尽管单纯的MSAA并不能解决多种其它形式的走样问题,例如时间性的走样,以及因为透明贴图映射而在三角形内部产生的锯 齿。而为了更好地改善这些问题,人们也在不断努力着,这才有了如今同样广为人知的FXAA。

放之四海皆准的廉价货:FXAA

如 今的PC显示硬件性能相比当年早已是突飞猛进了,但是对于移动平台而言,MSAA看起来还是洪水猛兽一般,稍加滥用就会让整个系统的五脏六腑都被掏空。在 这种局面下,足够简单和低成本的反走样方案当然会更受欢迎,比如基于图像后处理(post processing)的方法。

图像后处理并不 是什么新鲜的概念,甚至可以用照片的美化过程来做简单类比。你使用相机拍摄了一张照片(实时渲染得到一帧图像),然后打开PhotoShop或者美图秀秀或者其它奇形怪状的软件,调整对比度、亮度,去掉红眼、雀斑,甚至附上LUT之类的高级货,这都是图像后处理的具体流程。而这一过程中显然也可以做一些和 改善画面锯齿相关的事情,比如,查找看起来像是边缘的地方,然后把它模糊掉,让它看起来不是那么明显。

这种方案仅仅是使用了标准分辨率的图 像数据,不需要渲染和计算额外的采样点,因此也不会产生过多的显存消耗和计算量。无论在PC平台,移动平台,主机平台,还是别的什么低端设备上,理论上都 可以应用此类方法。针对这一目标,NVIDIA提出了一种名为FXAA(fast approximateanti-aliasing)的后处理反走样 方法:首先根据当前渲染结果的深度信息来查找可能的几何边缘,然后直接对这些边缘像素进行平滑处理。这一方法甚至可以直接在NVIDIA的显卡控制面板中 开启,并且直接作用于所有运行于当前显示设备的任意程序之上。

然 而,我们之所以说这类方法只能获取“可能”的几何边缘,是因为此时在显卡中已经不存在几何信息的概念了。真正能够用数学方法去描述的几何顶点与三角形,经 过了光栅化过程之后,已经转化成了一张屏幕大小的图像而已,我们可以从中得到每个像素点对应的颜色值与深度值,并且从中估算像素点原本是否是在三角形的边 缘位置。与MSAA同样,如果用户使用了透明贴图来表达边缘,那么这一策略将很难收到效果;而那些原本可能不需要平滑的区域,也存在着被“误伤”的可能 性。

并且,类似FXAA这种基于图像的平滑处理,很多时候也很难满足现代游戏玩家刁钻的口味,很多人的反映是FXAA的画面结果“很糊”, 灰蒙蒙的好像被沙尘覆盖。如果再与VR内容面临的另一个臭名昭著的问题,即纱窗效应(screen-door effect),相结合的话,结果也许会更 加让人头痛吧。至少从目前看来,单纯的后处理反走样手段是难以填饱VR内容开发者们的饥饿肚皮的。

魔高一尺,道高一丈

在 MSAA基础上发展起来的硬件采样抗锯齿方法还有很多,例如解决了显存数据存储量过大问题的CSAA(coverage sampling anti- aliasing);或者可以自定义混合方式的CFAA(custom filter anti-aliasing)。而FXAA的同道者和继承者同样大 有人在,例如预先学习可能的边缘类型,然后根据样式查找边缘的MLAA(morphological anti-aliasing);以及先全局做某个方 向的模糊处理,之后从另一个方向查找边缘信息的DLAA(directionally localized anti-aliasing,如下图所示)。 可谓是八仙过海,各显神通。

而 有关法线贴图产生的走样问题,也有不少人做出了自己的贡献。其一就是Toksvig提出的Mipmapping normal maps,他通过一个额外 的系数计算,对法线计算的镜面反射结果进行了修正。而这个修正对于法线贴图本身的采样问题会产生一定的补偿作用,从而降低了闪烁走样问题出现的几率(下图 中,右侧为Toksvig方法的实现效果,实际运行中基本上去除了法线贴图的走样问题)。

另一种针对法线贴图问题的解决方法叫做LEAN Mapping,它的解决方案更为合理和严谨,并且能够基本保持高光计算的本来面目,不过其实现要复杂得多,对于实际系统运行效率的影响更是无法忽略。

值得注意的是,上述这些方法都只是针对第一种走样现象,即空间性的走样而苦心钻研的解决方案。那么对于时间性的走样,我们是否也有良方呢?幸好,答案是肯定的。

也许不太遥远的未来:TemporalAA

要解决场景物体随时间的运动所产生的走样问题,我们可能需要这样的一套流程来处理:

1、从场景中找到所有高速运动的物体,包括因为观察者的高速运动而在视野中产生运动的物体;

2、计算这些物体从上一帧到这一帧运动的距离,也就是它的运动速度;

3、光栅化之后,对于结果图像的每个像素点,找到覆盖这个点的所有运动物体;

4、去除那些实际上被遮挡的物体的影响因素;

5、根据运动物体的参数,计算和调整当前像素的实际显示结果。

而NVIDIA为GTX600以及更高配置的显示卡提供的TXAA反走样方案,则把上述过程所需的信息定义为:上一帧的图像缓存,本帧的图像缓存,以及场景的运动向量(motion vector)数据缓存,并且图像缓存必须是经过了MSAA反走样处理的,即包含了每个像素点的多重采样信息,以便完成准确的运动和覆盖程度计算。

毫 无疑问,这可能是目前效果最为强大的反走样方法了,它同时解决了大部分空间性走样和时间型走样的问题,几乎可以达到电影级别的抗锯齿水准,最适合应用到 VR内容当中,立竿见影地解决头盔运动过程中的不适感和锯齿感。如果未来已来的话,TXAA,抑或其它的Temporal AA手段,绝对会是其中的一份 子,尽管对于玩家而言它只是幕后的英雄。

不过,现实往往并不像理想那么美好,MSAA的性能损耗已经让VR行业的从业者们难以忽视,再加上 一个胃口更大的TXAA,要保证75Hz乃至120Hz的屏幕刷新率就更是难上加难,而移动端目前还颇为孱弱的图形处理能力,想要把如此强劲的算法流程纳 入自己的麾下,恐怕现阶段还有好长的一段路要走。
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
84
精华
0
积分
42
金钱
260
荣誉
0
人气
0
评议
0
沙发
发表于 2017-8-2 21:04:54 |只看该作者
哈哈.你这样解释我就看得懂了

使用道具 举报

帖子
66
精华
0
积分
33
金钱
216
荣誉
0
人气
0
评议
0
板凳
发表于 2017-8-2 21:05:20 |只看该作者
科普帖呀.楼主.点个赞

使用道具 举报

帖子
38
精华
0
积分
19
金钱
168
荣誉
0
人气
0
评议
0
地板
发表于 2017-8-2 21:06:47 |只看该作者
身“不”临其境 的抽离感,让人很不舒服的

使用道具 举报

帖子
84
精华
0
积分
42
金钱
260
荣誉
0
人气
0
评议
0
5#
发表于 2017-8-2 21:07:04 |只看该作者
VR想提升画质我觉得确实很难啊

使用道具 举报

帖子
66
精华
0
积分
33
金钱
216
荣誉
0
人气
0
评议
0
6#
发表于 2017-8-2 21:07:24 |只看该作者
就是还需要继续研究

使用道具 举报

帖子
38
精华
0
积分
19
金钱
168
荣誉
0
人气
0
评议
0
7#
发表于 2017-8-2 21:07:45 |只看该作者
感觉还是得不断地完善啊

使用道具 举报

帖子
144
精华
0
积分
72
金钱
434
荣誉
0
人气
0
评议
0
8#
发表于 2017-8-2 21:38:36 |只看该作者
原来空间性的走样是这样的意思

使用道具 举报

帖子
69
精华
0
积分
35
金钱
222
荣誉
0
人气
0
评议
0
9#
发表于 2017-8-2 21:38:49 |只看该作者
比较讨厌马塞克呀.

使用道具 举报

帖子
29
精华
0
积分
15
金钱
109
荣誉
0
人气
0
评议
0
10#
发表于 2017-8-2 21:39:54 |只看该作者
我觉得都是都是因为设备的原因

使用道具 举报

帖子
144
精华
0
积分
72
金钱
434
荣誉
0
人气
0
评议
0
11#
发表于 2017-8-2 21:40:08 |只看该作者
我觉得都是都是因为设备的原因

使用道具 举报

帖子
69
精华
0
积分
35
金钱
222
荣誉
0
人气
0
评议
0
12#
发表于 2017-8-2 21:40:24 |只看该作者
科普了反走样

使用道具 举报

帖子
29
精华
0
积分
15
金钱
109
荣誉
0
人气
0
评议
0
13#
发表于 2017-8-2 21:40:46 |只看该作者
设备的配置跟不上所以画质是很难提升。

使用道具 举报

帖子
51
精华
0
积分
26
金钱
201
荣誉
0
人气
0
评议
0
14#
发表于 2017-8-4 05:58:49 |只看该作者
必须坚持下去啊

使用道具 举报

帖子
88
精华
0
积分
44
金钱
268
荣誉
0
人气
0
评议
0
15#
发表于 2017-8-4 05:59:09 |只看该作者
要实现肯定能的.只是需要时间的问题

使用道具 举报

帖子
17
精华
0
积分
9
金钱
77
荣誉
0
人气
0
评议
0
16#
发表于 2017-8-4 05:59:29 |只看该作者
感觉挺复杂的.

使用道具 举报

帖子
51
精华
0
积分
26
金钱
201
荣誉
0
人气
0
评议
0
17#
发表于 2017-8-4 05:59:46 |只看该作者
总有一天会实现的.

使用道具 举报

帖子
88
精华
0
积分
44
金钱
268
荣誉
0
人气
0
评议
0
18#
发表于 2017-8-4 06:00:03 |只看该作者
还有设备的支持也很重要\

使用道具 举报

帖子
17
精华
0
积分
9
金钱
77
荣誉
0
人气
0
评议
0
19#
发表于 2017-8-4 06:00:29 |只看该作者
看不太懂不过还得谢谢LZ的科普

使用道具 举报

帖子
87
精华
0
积分
44
金钱
641
荣誉
0
人气
2
评议
0
20#
发表于 2017-8-11 10:21:46 |只看该作者
纱窗效应其实就是分辨率太低。
以目前主流游戏头盔HTC VIVE单眼分辨率1200x1080来看。
每个像素点是很明显的。

要提高到单眼16K的分辨率,才能有以假乱真的细腻的画面。

光从硬件上来说,小小一个镜片显示16K分辨率和20多寸屏幕显示4K分辨率,对比之下大小相差几十倍,难度同样相差几十倍。而且显卡性能起码要GTX970性能乘以16。
以目前来说,要做到性价比可以接受,怕是需要黑科技。
用个简单的形容就是,你得用军事侦察卫星价值几十万的镜片做虚拟现实头盔,然后用几十万的顶级电脑运算画面,才能达到肉眼难以分辨虚拟和现实的显示效果。

至于单眼4K,苹果手机所谓的视网膜屏幕才326像素/英寸,要在大概两英寸的镜片上显示4K分辨率的像素,需要2000像素/英寸,这可不是PPT分辨率或者偷换概念单眼2K分辨率两眼加到一起就算4K,而是实实在在的单眼4K。
还是那个问题,性价比。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2024-4-19 11:38 , Processed in 0.323231 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到