延迟渲染最佳搭档 SRAA新型抗钜齿技术初探

来源 :微型计算机 | 被引量 : 0次 | 上传用户:wangxinjia
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  抗锯齿技术是3D技术发展中的重要分支。在显示精确度不高的情况下,抗锯齿技术为用户提供了尽可能接近设计人员预想的画面表现,特别在物体边缘、纹理表面等这些画面中特别醒目的地方。不过目前的抗锯齿技术还存在缺陷,质量好的抗锯齿技术资源消耗特别巨大、而一些资源消耗较低的抗锯齿技术则存在这样那样的缺陷(如纹理无法抗锯齿处理等),还有更重要的一点是,部分抗锯齿技术由于本身计算方法问题,无法和一些新技术共存。因此,科学家们—直在寻找更新的算法,来在尽可能降低性能消耗的情况下提供更高的抗锯齿质量,并利用新的算法来拓展抗锯齿技术的适用性。SRAA正是这样的一种新技术,它巧妙的算法和原理,给未来的抗锯齿技术带来了新的发展方向。
  3D渲染技术在不停地发展,比如对多光照处理的计算中,目前很多游戏开始使用延迟渲染技术。这是一种相当有名的新技术,在PS3的应用中大放异彩。延迟渲染将复杂的光照算法应用在较大的场景上,将本来需要3D化计算的光照数据转为2D计算,在取得比较好效果的情况下,节省了不少计算资源,并简化了程序操作。
  另一种特别出名的技术是MSAA(多重采样抗锯齿)。MSAA的设计面向前向渲染方式(和延迟渲染不同)。在前向渲染中,MSAA选择图像中与像素边界存在交错的部分片(fragment)进行处理,然后将计算好的颜色值写入像素中所有被片覆盖到的样本。由于片是二维的,且通常较小,在很多实例中,着色操作可以被近似地看作无变化。因此MSAA用较小的性能损耗提供了与超级采样相媲美的画质。
  但问题就来了。延迟渲染是在帧缓冲区的最终样本上执行,此时片已经不再可用。特别是这些片已经丢失了样本的来源信息。在这种情况下,MSAA不得不“退化”成暴力的超级采样抗锯齿,对画面中的所有像素进行采样,它的优点便被掩盖了。因此有一些采用延迟渲染技术的游戏,如《极品飞车10:热力追踪》,干脆就不提供抗锯齿选项。曾经也有科学家设想过,如果有一种方法可以检测像素是否来自同一表面,并记录这些“片”的信息,这样一来就可以在延迟渲染中启用MSAA。但问题是,这种策略没有想象的那么容易,并且还需要为这些像素存储大量的来源数据,可能会降低效能,因此无法实现。
  
  延迟渲染是好技术,但没有抗锯齿可是万万不行的。此时另外一种抗锯齿的登场,让大家看到一些希望,这就是MLAA(Morphological Antialiasing),直译为形态抗锯齿。MLAA利用相邻像素的边缘检测进行抗锯齿计算。这种方法仅依赖于图像的最终颜色,因此兼容性相当出色,可以被使用在各种渲染方法中。无论是向前渲染还是延迟渲染都可。但MLAA本身也存在问题:由于仅仅使用颜色数据来判断抗锯齿边缘,因此MLAA的应用可能导致无法辨识到底哪些边缘需要进行抗锯齿计算。特别是一些不需要抗锯齿的地方,如文字,表格等,可能都由于不当抗锯齿而显得圆滑甚至怪异。
  这样的结果令人恼火,由于计算方法的冲突,延迟渲染技术和MSAA技术无法同时使用。这就意味着程序人员必须在有效率的光照计算和有效率的抗锯齿计算中“二选一”。目前的情况是:为了在延迟光照的条件下实现抗锯齿,要么使用超级采样抗锯齿(S SAA)——其性能损失和分辨率成线性关系,属于相当耗费资源的“暴力计算”,要么执行形态抗锯齿(MLAA),它可以将图像“智能模糊”,并给予你圆滑而难看的字体边缘。
  如图1所示,我们为大家进行了一个各型抗锯齿技术的对比。这里有五张图,其中a表示正在进行采样的原始图像。b图为经过采样后的图像,可以看到在斜边和圆边处出现了大量的锯齿。特别需要注意的是,右下角有两个长方体重叠在一起,它们是不需要抗锯齿操作的。c图是经过MLAA抗锯齿后的图像,可见斜边和圆边被抗锯齿处理了,但问题是不需要抗锯齿的重叠长方形被模糊了,这就是MLAA技术存在的“边缘一把抓”的问题。d图是通过新型SRAA抗锯齿处理的图形,可见抗锯齿效果还不错,并且长方体没有被错误抗锯齿。最后的e图是正确进行处理的抗锯齿对比图,用于对比c图和e图抗锯齿效果。可见MLAA有错误抗锯齿情况,效果一般,而SRAA则效果相当接近e图。那么SRAA是怎样获得这样优秀的表现呢?
  
  提高几何体采样精度SRAA技术揭秘
  
  为了解决无法与延迟渲染的共存问题,科学家们进行了更多的思考。从技术发展的方向来看,延迟渲染技术本身由于结构问题,不可能做出更改以适应MSAA抗锯齿的需求。问题最容易突破的点其实在MLAA的实现方法上,换句话来说MLAA抗锯齿本身就有问题,它对屏幕全部色彩信息进行处理计算,无法区分内容。因此对MLAA进行改进,或者说将MLAA的计算思想进行扩展,延伸并加以改进,得到一种更新的抗锯齿技术就成为当前比较重要的问题。
  在这种情况下,科学家们找到了一种新技术,这就是今天需要介绍的子像素重构抗锯齿技术,它的英文是Subpixel Reconstruction Antialiasing forDeferred Shading,简称为SRAA。
  SRAAm对MLAA做出了重大改进。SRAA技术的关键是:对着色点的采样使用接近屏幕分辨率的级别,对于几何体的采样则提高精度,然后使用重构过滤器来提供一个近似估计的超分辨率图像,这个超分辨率图像会被过滤处理后,成为与原始屏幕分辨率相同的图像,这就是我们需要的抗锯齿处理效果。从目前的实验来看,SRAA能够用少得多的着色操作,来实现逼近SSAA的画面质量,在画质损失不大的情况下,相当对每子像素着色的操作能够加速4~16倍之多。所以,这是一项相当有希望的新技术。
  SRAA在抗锯齿的选择上与MSAA和MLAA都有不同。SRAA42由几何样本处理而来,它独立于边缘定位,避免了特定种类的过度模糊,由于几何样本相较全着色计算而言开销较小,所以SRAA的性能可以与MLAA甚至无抗锯齿的情形相提并论。尽管MLAA仅仅处理最终图像,但是它的运行时间仍然不是恒定的,而是随着边缘数目而波动,这使得MLAA很难在要求固定后期特效处理时间的实际游戏当中一展身手。
  另外,SRAA还与CSAA有相似之处,它利用了额外的可见性样本来提升边缘质量。不过,CSAA也只能使用在向前渲染中。因为延迟渲染中,会将片和覆盖面的对应关系消除,此时CSAA就不能进行处理。
  特别需要指明的是,SRAA中的关键操作是联合双边滤波向上采样。许多光照算法在低分辨率图形上操作,然后使用向上采样的方法来重构符合屏幕分辨率的最终图像。这种方法面临着两个主要问题:欠采样和时间相干性生。如果某个低分辨率下的特征被忽略或者欠采样了,最终生成图像的缺陷就会非常大。欠采样还会使得这些算法容易遭受时间相干性问题的困扰。这些方法都比较偏好于处理平滑的,低频率的输入数据,如间接照明等。在SRAA的计算中, 需要使用特殊的过滤器来避免这些问题。
  
  重构子像素SRAA算法浅析
  
  从这一节开始,我们将介绍一些有关SRAA技术的算法方面的内容。这部分内容不容易理解并且枯燥,适合具备一定图形学知识的专业人士阅读。如果读者没有读下去的兴趣,我们建议你可以参照第三部分的对比图片’来直接了解SRAA技术所带来的抗锯齿效果。
  
  1.综述
  SRAA技术利用了一个现象来进行处理:在延迟渲染中,通过对几何采样的采用来实现高质量抗锯齿时,着色操作得要比几何操作更慢,这里的几何采样是指捕捉表面信息。在我们设计的情形里,指一个表面分片的法线和位置信息,以及包含了颜色信息的着色采样。相比传统SSAA使用的“超分辨率”几何图形数据,SRAA创造了适合于过滤处理为原始屏幕分辨率的高分辨率着色数据。
  为了达到这个目的,SRAA需要对传统渲染流水线做出两个改动,首先,应用程序必须生成子像素精度的法线和位置信息。其次,应用程序必须在着色之后,后期处理之前执行重构过程并利用G一缓冲区的信息精细修改渲染结果。这个重构步骤的输出是一个与所需屏幕分辨率相同的、已进行过抗锯齿处理的着色缓冲区。这样做是为了方便图像能被正常地执行后期处理。着色缓冲区分辨率通常与屏幕分辨率相同或者略高,但是比几何缓冲区要低得多。
  目前SRAA采用的重构步骤使用了双边滤波的变种,近似于Ward和Heckbert在1992年的论文里提出的辐照快取(irradiance caching)方法,下一部分的算法介绍中,会有这种滤波计算的介绍。
  在图2中展示了SRAA的算法是如何重新构建子像素的。图中固定半径内所有已着色的像素都被考虑进来,并且使用双边过滤权值进行了插值。在每个样本参与重构了之后,我们将它们聚合起来,使用“boxfilter”处理得到该像素的最终值。如果需要面对更复杂的多重过滤,比如三角形kernel,这种方法也可以用于执行像素重构。需要注意的是,更复杂的过滤必须小心地处理,因为样本数量较少,需要控制在过滤器的支持范围内。
  另外,由于过滤器支持的半径已是固定的,因此重构子像素所使用的着色样本数目是可变的。这种可变性设计将会减少G-缓冲区的总负载,并允许我们将指令重新排序以提升高速缓冲存储器的命中率。一般来说,过滤半径设置得非常小可以避免模糊,并将纹理查找的数目维持在一个合理的水平上。相比较之下,较大的过滤半径在理论上能增加重构的质量,但是也增加了最坏条件下的误差。因此我们建议仅使用一个直接相邻的着色样本,这使得结果的误差在可适应的范围内。
  
  2.距离的计算
  在计算距离时,SRAA技术会将位置改变和法线改变都考虑进来。因为一些边缘仅仅能被法线检测到,而另一些边缘仅能被位置检测到。因此,联合位置和法线计算,就可以覆盖所有的边缘。
  SRAA在计算中,将位置和法线通过特殊的计算公式进行联合处理,并定义一个因子。这个因子用于平衡双边过滤器的权重。通过改变过滤器权值,SRAA算法拥有多种在图形质量和性能之间平衡的方法。SRAA能够通过简单地比较深度值,而不是计算平面方程来估计源和目标问的距离(传统的平面方程估计方法很难正确处理弯角和凹槽)。SRAA的算法中,可以通过计算中移除某些数值来取得和平面方程估计法同样的目地并节约大量的性能。这种方法可以减少大约50%的数据带宽需求,并简化计算过程。当然,这只是一个相对的平衡方法,需要用户在性能和质量方面做出选择。
  
  3.SRAA的局限性等问题
  由于着色的耗费是总渲染时间中比例最重的一部分,因此SRAA生成的附加缓冲区不能再引入过大的消耗,否则G-缓冲区生成将会花费大量的重构时间。举例来说,如在1280×720的分辨率下,将G一缓冲区提升至2560×1440所生成的额外样本花费了1.4毫秒的时间,反锯齿过程又花费了1,1毫秒。那么,这个“肥胖”的G-缓冲区消耗的时间就是1.1毫秒。如果渲染器在光照上花费的时间多于0.75毫秒,那么在着色计算上节省的资源就能抵消这种时间耗费。
  目前的SRAA算法也存在一个主要局限:SRAA在那些样式均一的图形区域输出结果不够理想甚至比较模糊。这是因为在这些区域里没有法线和深度的变化,设定的过滤器权值就不起作用,整个处理过程就退化成为一次区域狭窄的模糊效果。解决方法是通过在过滤器权值中引入屏幕空间衰减来减少模糊,但仍然有一些模糊不可避免。这种问题并非SRAA独有,而是所有通过多重采样来进行重构的过滤器的普遍问题。这个缺陷可能可以通过对这些区域进行预先识别和剔除的操作来进行修正。
  另外,SRAA中最好不要在16倍分辨率下使用交错覆盖(interleaving mask)功能。由于被强制地在2×2的像素块上进行渲染以处理纹理过滤,因此当前的硬件是无法利用交错覆盖功能的。更近一步地,在1280×720分辨率下,一个16倍的G一缓冲区需要88MB的空间,而其中的75%从来不会被我们的算法读取,数据空间被浪费,这也是需要处理的问题。
  
  4.细节和效率优化
  过滤器对于纹理读取和算术运算要求较高,对于一个4×SRAA重构而言,SRAA需要读取G-缓冲区每像素58次(16×SRAA则是194次),求值25次(16×SRAA则是81次)。因此我们依靠NVIDIA的Fermi架构里提供的一级缓存和纹理缓存来减少带宽压力。为了最大化缓存性能,在处理时最好将输入数据分离,这样可以从一级缓存与纹理缓存两个地方读取,享受两个缓冲器提供的带宽和容量。特别是对于“肥胖”的G一缓冲区格式而言,这一点帮助特别大。
  目前尚未有SRAA技术使用在任何游戏中,下面展示的图形都是原文作者提供的经过SRAA处理后的图像,其中一部分对比给出了在使用其他抗锯齿下的效果。
  在图3中,我们对SRAA与MLAA的几何体细节进行了比较。在图片的上半部分中,物体的挂钩的特征都属于欠采样状态,因此在输入信号中没有检测到连续的边缘。但问题在于MLAA移除了这些边缘,令细节损失,而SRAA使用的G-缓冲区敏感地捕捉到了这些信息,所以边缘被SRAA正确重构了。图片的下半部分中SRAA相比MLAA图像更为忠于原始状态,并且没有过多无用像素出现。而在图4中,展示了一个由文中介绍的算法来处理的、具备高度复杂的几何信息的场景。图中可见精细的屋顶,楼梯扶手等大量几何体,可以看出,这些几何体都可以被SRAA~理地处理。在抗锯齿精度方面,这幅图像使用了顺序栅格超级采样,这意味着G一缓冲区实际上是以两倍的分辨率来生成的。
  从图5中我们可以看出,最左边为图片的原始输入状态,输出为中间的1×屏幕 分辨率 SRAA,以及右边的普通16×抗锯齿参考图。SRAA的质量在边缘处体现得淋漓尽致。例如,具有较宽的边缘特征的天花板,管道,楼梯扶手,但在奈奎斯特速率以下时,SRAA的质量则跌至谷底,如板条箱上较薄的镶边,楼梯内侧的角落等处。
  在图6中,我们借助“寒霜2”游戏引擎特别突出了一些关于高纹理细节与alpha—tested几何体的有趣实例。SRAA并没有为图像加入过剩的模糊,如我们在水泥墙上看到的一样,栅栏和alpha-teste几何体都被SRAA正确地处理了。从图像效果来看,在大多数几何体上,SRAA取得了接近16×超级采样的图像质量。
  在图7中,靠左边的图,使用了单着色样本以及若干几何样本的SRAA来进行处理。而中间的则采用了16×几何采样下的SRAA,实际图形效果表现性能表现已经接近了最右侧那张使用16×SSAA处理的参考图。
  SRAA技术是一种新的抗锯齿算法,它通过利用子像素的几何信息来进行重构,达到减轻锯齿的目的。SRAA在现在的GPU_上只需几毫秒就能执行完毕,这使得它可以担负起实时渲染的工作,并且它还充分利用了未来GPU上将大幅增长的计算能力和带宽。
  在兼容性方面,这个算法可以与延迟渲染等多种渲染模式相结合,兼容性表现很优秀,性能方面可以承受更多的几何采样与着色采样。与MIJAA不同,SRAA的时间与空间开销与场景无关(MLAA复杂度随场景复杂度的变化而变化),只是在处理G-缓冲区时,花费的时间会随场景复杂度增长。
  我们认为,接下来的一步将会是SRAA与MLAA二者理念的结合。SRAA使用了相对“廉价”的几何信息来提升“昂贵”的着色渲染结果的质量,能够带来出色的边缘抗锯齿效果。MLAA则是用启发式方式时常造成过度模糊,但是它能够解决SRAA无法处理的边缘着色问题,包括纹理,阴影,镜面高光边界。一个结合了启发式着色权值与精确几何权值的算法,也许能够实现比这两者中的任何一个都要更高的渲染质量。未来的新算法将取得SRAA和MLAA各自优势,不远的未来,我们就将在一些的游戏上看到新型抗锯齿技术的应用,进入一个完全没有锯齿的虚拟世界。
其他文献
随着诺基亚被微软收购,我们很难再在市场上看到属于“诺基亚”的新手机了,就连曾经的代表Lumia系列也被挂上了微软的商标,例如我们今天要介绍的这款微软Lumia 640智能手机。众所周知,在如今的智能手机领域,Windows系统属于绝对的小众派,面对强势的安卓与iOS,很难在市场上有所斩获。那么这款更换了品牌Logo的Lumia 640表现如何?它能否为Windows手机带来新的突破呢?  外观风格
一只手表引发的风波  3月10日晚上,在苹果公布Apple WatCh的上市详情后,支付宝钱包官方微博发帖称“支付宝钱包已经完成适配Apple Watch版本的开发工作,中国用户在订购Apple Watch后,可以在第一时间用到最受欢迎的移动支付功能。在此版本中支付宝钱包将提供余额宝、付款码和汇率查询三项功能,以满足Apple Watch用户的需求。”这引起了WP用户的强烈不满,遭到一大波WP用户
虽然目前微型音箱市场已快被泛滥的公模产品所占据,但不少知名品牌依旧试图通过创新来拉开与山寨产品的差距,奥尼国际最新推出的D-508微型音箱就是这样的产品代表。如果说公模产品的造型都是千篇一律,同质化严重,那么D-508就显得颇为独特,其设计灵感来自大家熟知的钱夹,平躺着就像个半张开的钱夹。这款“钱夹”共有红白两色可选,此次送测的红色版更炫些,但又不会太过张扬,因为它表面采用的橡胶漆属于亚光材质,不
X-light智能灯泡最初在京东众筹上就受到了很多玩家的追捧,而在加入魅族的智能生态圈之后得到了更多用户的关注。那么这款智能灯泡究竟究竟能够有什么作用呢?近日我们拿到了最新款的X-lightPlus智能灯泡,现在就为大家一一展示。  X-light Plus智能灯泡采用了标准的E27螺口灯头,安装方式与普通灯泡无异,只需要选入标准接口即可。至于链接方式,X-light Plus使用的是自动蓝牙匹配
麦博梵高FC330是一款定位中低端的2.1音箱,它由Peter Larsen调校,音质在同价位产品中表现出色,性价比相当高。它采用棕色木纹板装饰音箱的侧面,沉稳典雅。FC330最大的亮,点是采用了麦博引以为豪的“V12”全频段单元,单元本身素质非常优秀。低音采用了5.25英寸双锶铁磁路系统重低音单元。除此之外,FC330的卫星箱上还增加了一个麦拉片PET聚酯薄膜的空盆,用于补偿音箱的频谱。  麦博
硬件拆解辨真相  移动电源纷繁复杂,工模与白牌产品混杂,辨别困难。它们的差别究竟在什么地方呢?我们特意选择了一款高端品牌移动电源(3000mAh)与白牌电源(5000mAh)进行硬件拆解对比,其中白牌电源是100元以内的典型代表。  材质对比    这款获得苹果经销商渠道认可的BG微络斯电源采用了半透明的白色工程塑料外壳,圆润与无螺丝的外观设计颇有苹果风格,看起来相当精致。    白牌电源使用的为
英特尔SSD ToolBox、三星Magician Tool、闪迪SSD Dashboard仪表盘、OCZ TooIBox……为了让固态硬盘的性能长期保持最佳化,不少一线品牌的产品都配备了功能丰富、设计豪华的工具箱软件。然而,市面上还有大量采用各类主控的固态硬盘缺少专用的优化工具,拥有这些产品的用户,又该如何对它们的性能进行优化?  固态硬盘为什么需要优化?  与传统的机械硬盘不同,固态硬盘采用N
我们见证了2016年虚拟现实产业的大爆发,不管是国际厂商还是国内厂商都纷纷加入VR的热潮。或许是为了展开与Oculus Rift和HTC Vive的竞争,所以索尼也推出了自己的VR产品——PlayStation VR(后文简称PS VR)。其实,早在2010年的时候,索尼就开始构想PS VR。2014年GDC游戏者开发大会上,索尼公布了PlayStation专用虚拟现实设备,名为Project M
2010年底,我们又迎来了VAIO的一个全新的系列YA。从命名规则上看,似乎与之前的Y系列有一定的联系,但从11.1英寸的尺寸来看,又似乎与TT系列有一些关联。那么这款既保持了VAIO高端产品的轻盈小巧,又有着6000元以下亲民价格的YA系列,是从何而来,在VAIO的产品布局中处于什么位置,它的实际表现又会与万元以上的TT相差多少?这些问题不仅让你感到困惑,就连我们也十分好奇。无需着急,我们这就一
Terrans Force X599自发布以来,一直受到玩家们的喜爱。该机型首次采用了桌面级的LGA 1150平台处理器,最高机型配备有主频4.0GHz的Intel Core i7-4790K处理器,同时还配备有NVIDIA最新的9系显卡,强悍的性能不言而喻。我们这期就将体验这款“重型”游戏本,看一看它到底有什么能耐。  Terrans Force×599之所以号称“重型”游戏本,毫无疑问,源于它