天极传媒:
天极网
比特网
IT专家网
52PK游戏网
极客修
全国分站

北京上海广州深港南京福建沈阳成都杭州西安长春重庆大庆合肥惠州青岛郑州泰州厦门淄博天津无锡哈尔滨

产品
  • 网页
  • 产品
  • 图片
  • 报价
  • 下载
全高清投影机 净化器 4K电视曲面电视小家电滚筒洗衣机
您现在的位置: 天极网>新闻>

透析超级采样抗锯齿

CPCW 2000-05-24 00:00 我要吐槽
p align="left">    一直以来,人们为了提高3D游戏画质而不断努力,3D卡更新换代速度甚至可以媲美CPU,可惜的是,显卡性能的提高与画质改善并不成正比,你花费大量金钱买回来的东西很可能只是提高fps(frames per second,帧/秒),玩游戏时照样会出现各种粗糙的画面。下面,我将为大家介绍两种新型的超级采样抗锯齿技术:RGSS(Rotated Grid Super-Sampling,旋转栅格超级采样)和OGSS(Ordered Grid Super-Sampling,顺序栅格超级采样)。

  简单地说,RGSS以OGSS为基础,再把子采样栅格水平和垂直方向旋转20-30度来表现最终图像,由于人们很留意水平和垂直轴上的锯齿,旋转之后的抗锯齿效果比OGSS好得多。任何一种画面优化技术都会占用一定的填充率和内存带宽,抗锯齿自然也不能避免,在带来更出色游戏体验的同时亦会减低显卡的性能,适合高端图形处理系统。

一、锯齿的起源

  CG(Computer Graphics,计算机生成图像)是虚假的东西,有限的内存不能存储无限的细节,无论表示方法多么精确,仍然不可能与现实一模一样。举两个例子:

1、在3D绘图时,屏幕上的像素有限,如果要表现出多边形的位置,使用绝对坐标定位法是无法做到的,只能使用在近似位置采样来进行相对定位。

2、计算机音频同样依赖在模拟音源几个特定点摘取音色,把无限的音波浓缩成许多离散样本,过滤掉人耳很难听到的声音,组成数字化音乐,此过程也称之为AC(Analog to Digital,模-数)转换。

  在3D图形中,每个区域由像素组成,每段瞬间由帧组成,由于技术所限,我们没有足够的采样来表现出3D世界中的所有物品,在过渡的边缘就会产生锯齿和闪烁等失真现象,严重影响了画面的质量。


图1

  在上图中,右边的栅格采样是造成锯齿的潜在性因素,它用传统的单一像素和单一多边形算法来着色,以0(开启)和1(关闭)来决定是否填充。过于简单的算法,导致画面出现错误。在处理小多边形时,此类情况尤其特出,有时连多边形本身也被一并删除。


图2

  上图描绘的是多边形丢失时产生的闪烁现象。左边是最佳效果,右 羌扑慊秩竞筒裳蟮慕峁帧有一条位于像素内的绿色条,转换到b帧时绿色条离开了像素的中心位置,因此采样时丢失了。此外,a帧的黄色方格在移动后变成了方条,适好与a帧的绿色条交替出现。仅仅一个简单的向下移动,已经使到绿色条从明显可见到完全消失、黄色方格扩展成方条、蓝色方格消失,画面的闪烁亦由此而生。在不同的方位对物体进行着色,均会出现不同程度的多边形丢失。抗锯齿算法目的是去掉那些不必要的改动,维持物体的真实性。

  尽管抗锯齿算法已经出现相当长时间了,但在实际应用中,却因为CPU占用率高,内存带宽不足和显存价格昂贵等缺点,只能在高端CAD-CAM和制造3D动画的非实时渲染系统中发展,阻碍了它在家用市场的推广,甚至连减少边缘失真这么小的要求也做不到,更别提排除三角形丢失而导致的闪烁。

  早期的抗锯齿算法采样率很低,所以效果不甚明显。超级采样的本意是提高采样精度,增强要采集的图像信息密度,在像素级中使用多个子采样来代替单一的像素中心采样。子采样技术有两个分支,就是本文开头所说的OGSS和RGSS。

二、抗锯齿算法的始祖----OGSS


图3

  OGSS是最基本的子采样,按一定顺序来采样,并以水平或垂直方式排列,建立一个点矩阵。JGSS(Jittered Grid Super-Sampling,移动式栅格超级采样)是第二类超级采样,它也使用了额外的采样来应付每一个像素,两者的区别是定位不同,JGSS会改变子采样栅格的坐标,因此也同样称为OGSS。

  JGSS的方法多种多样,主要有两种:FRJS(Fully Random Jittered Super-Sampling,完全随机移动式超级采样)使用随机方式来决定采样位置,每个像素约有16个或以上的随机采样,范围包括整个屏幕内的所有像素,针对人眼对随机事物不太注意的规律而设,画面质量极好和采样率高是其最大优点,而缺点是算法复杂,必须借助一定的识别模块,实用性有限。第二类JGSS亦是使用随机算法,不过随机只在预定的模块上进行,然后屏幕上的每个像素都采用相同的采样。无论采样的随机率有多大,JGSS都是以水平或垂直的方向来移动预定模块。

  目前几乎所有3D卡都能在非屏幕缓冲中进行OGSS,通常与处理像素颜色、Z轴数和模板值同时完成,然而,它不同于转换前置或后置缓冲,无法直接显示在屏幕上。OGSS的处理过程如下:


图4

1、游戏引擎通过Direct3D或OpenGL等3D API(Application Programming Interfaces,应用程序接口)来建立虚拟3D世界,这些API又是以多边形为基础描绘场景与物体,每个多边形都经过驱动程序的转换和光源处理。假设有一个10*10像素,那么三角形的各个顶点就是(5,5)、(10,10)、(10,0)。

2、API空间对应上行采样主要受屏幕分辨率影响,屏幕的坐标与虚拟3D世界的坐标稍有不同,在抗菌素锯齿计算之前,必须上行采样这些坐标,以确定水平和垂直方向,用简单的坐标和像素相乘能得出上行采样结果。比如上面的10*10像素,在非屏幕缓冲是20*20(20源于10*2个坐标),三角形顶点分别扩展成(10,10)、(20,20)、(20,0),但仍能保持屏幕空间相对位置不变。

3、几何坐标变换使物体的水平和垂直方向放大了两倍,必须要画多4倍的像素量。

4、对所有上行采样几何物体进行渲染,在非屏幕缓冲做完抗锯齿之后,像素回复它的真正面目,即10*10像素,并发送到前置和后置缓冲。

5、当此帧的整个场景被渲染好之后,我们就能看到一个高分辨率的3D世界。不过,这个双倍分辨率的画面是不会出现在屏幕上的,必须使用下行采样来完成低分辨率的抗锯齿效果,这时的过程有点儿近似双线性过滤,把周围四个像素的颜色加权平均数而得最终结果,通过过滤器的作用,四个高分辨率像素变为一个低分辨率抗锯齿像素。

  高分低用的效果非常好,假设有一个0%黑条位于100%明亮背景,准备变成垂直的斑状效果,采样必须包含两个黑色和两个明亮的子采样,即半黑半白像像,过滤器应用抗锯齿可以把它们转成50%混合的连续渐变,使过渡变得更平滑。

  以上例子是关于一个多边形的,当然,在真实的3D游戏中,有更多的三角形要经历以上处理,才能表现出抗锯齿效果。

  OGSS的实质是在上行采样过程中增强水平和垂直方向的分辨率,一般有2倍OGSS和4倍OGSS,有时也用子采样的数量来命名,2倍OGSS=4 tap,4倍OGSS=16 tap。16 tap的OGSS拥有4个子采样,每个子采样的水平和垂直方向均为初始值的4倍,它的商业名字也许你已经听过,就是大名鼎鼎的FSAA(Full Scene/Screen Anti-aliasing,全景/屏幕抗锯齿)。

  由于当前3D显卡的性能太低,实现FSAA只会给它带来沉重负担。另外,目前许多产品采用的线性缓冲存取技术也与OGSS有冲突,它会直接把数值写入帧缓冲或Z/模板缓冲,内部上/下行采样尚未完成,已经把结果显示到屏幕上。幸运的是,修改驱动程序能够解决此类问题,无须硬件直接支持。

作者:邱晓光 俞瑞泉责任编辑:)
请关注天极网天极新媒体 最酷科技资讯
扫码赢大奖
评论
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
笔记本手机数码家电