基于GPU的实时抗锯齿算法
2016-09-23吴玉培王斌
吴玉培,王斌
(四川大学计算机学院,成都 610065)
基于GPU的实时抗锯齿算法
吴玉培,王斌
(四川大学计算机学院,成都610065)
0 引言
随着3D技术的不断发展,抗锯齿技术已经广泛应用于虚拟现实、3D电影、3D游戏、飞行模拟以及其他场景渲染中。目前的抗锯齿技术主要分为两个方向:基于硬件的混合权重颜色采样和基于颜色或距离差异的像素边界采样。基于硬件技术的增加分辨率和采样频率的算法,开销代价不仅很大,并且帧频率低.基于距离差异的像素边界算法,还存在对于因不同材质引起差异的像素边界无法区分,导致某些边界缺失,继而出现失真的问题。由于以往的基于像素颜色差异的图像边界算法,基本上都是采用“前处理”的思想,所以非常依赖于渲染管道。本文提出了一种基于GPU的抗锯齿算法,完全运行于GPU,可以高效地整合在实时图形渲染管线内,提升实时渲染的图形质量。
1 相关工作
近年来随着GPU计算能力和存储能力的提升,于是开始探索利用GUP的可编程性来进行图像的抗锯齿算法。由于图像内部边缘像素之间的颜色不连续变化导致了绝大部分锯齿现象,因此为了能够设计出一种基于GPU的可以和延迟渲染算法共同工作的抗锯齿算法,Shishkovtsov[1]计了一种以图像内边缘检测操作为核心的局部混合抗锯齿算法。Keller提出了一种基于比较相关距离的抗锯齿技术[2],主要原理是按照预定义的距离相关性规则采样像素,根据权重进行像素颜色值混合,计算当前像素新的颜色值,渲染场景。Malan[3]提出一种基于物体的几何描述进行抗锯齿操作的算法,此算法消耗内存,并且计算量大,该算法适用于高端的GPU,无法在中低端GPU以及游戏机平台上应用。
2 算法概述
本算法是基于GPU实现的实时抗锯齿算法,算法的主要思想有三个步骤:
(1)搜索图像内像素间的不连续性
(2)寻找预先定义的几何模式
(3)在预先定义几何模式的邻域像素计混合颜色权重,然后利用权重计算最终颜色
图1(a)是一个7×7的黑白图像,为了方便描述算法,纵坐标用数字表示,横坐标用字母表示定义一个像素的相应的边,字母1、r、t和b分别代表了左、右、上和下四个方向,例如像素a7的右侧边用a7r表示,依此类推。图中定义了三种几何模式:L(绿色),Z(红色),U(黄色)这三种几何模式。例如{a3t,b3t,b3r}就属于L形模式.图1(a)中像素c3和像素c4会出现锯齿,为了消除锯齿,需要重新计算像素c3的颜色。
图1 计算混合权重
使用本算法处理图1(a),依次执行三个步骤:
第一步,遍历图像的所有的像素,判断目标像素与所有的相邻像素的特征数值的差异,当数值差异超过了一定的阈值以后,即认为图像在该像素处发生不连续性,该像素被一条轮廓边覆盖,成为边界像素.假设c3像素为目标像素,向左端搜索找到像素b3,向右端搜索找到像素e4,这样就构成边界线{c3b,d3b,e3b}是连续的,称为主要边,像素c3被图中的蓝色线所覆盖。
第二步,在连续边界线两段寻找与它正交方向上的像素边,然后判断连续边与正交边,构成的边界轮廓属于哪种预定义的模式.对于连续边界线{c3b,d3b,e3b在向两段寻找正交的边时,找到与其正交的两条边b3r 和e4r,称为次要边,就可以判断边界轮廓{b3r,c3b,d3b,e3b,e4r}属于Z(红色)形模式。
第三步,计算模式周围像素的混合权重,然后计算目标像素的颜色。图1(b)是图1(a)中的一部分,假设目标像素为c3,经过前两步,边AB,BG和GC构成Z形模式,为了计算分割边(DF)覆盖像素的混合权重,连接AB边中点D和GC边的中点F,像素c3,d3被边DF分割成梯形。计算三角形DBE内的梯形面积,把这个面积作为混合权重,来计算对应像素的新颜色,见公式(1)。
Cnew是像素的新颜色值,Cold是原像素的颜色值,Coppsite是分割线另外一侧像素的颜色,a是位于主要边上梯形的面积,即计算颜色的混合权重。黑色颜色值为0,白色颜色值为1。图1(c)是经过算法三步处理之后的图像。
3 算法实现
通常情况为了寻找图像中像素之间的不连续性,可以利用相邻像素间的颜色差异.对于颜色信息,一般采用RGB格式,在本算法中,将颜色数值通过CIEXYZ[4]格式转化为亮度值,见公式(2),利用相邻像素间的亮度差异来判读连续性。
对于判断像素之间差异是否满足边界像素差异的阈值,用公式(3-1)计算相应的亮度值标记为Ll,Lr,Lt,Lb。目标像素的亮度值标记为L,然后根据公式(3)依次与四个相邻亮度值比较。
Lx表示相邻像素的亮度值,e是布尔变量,e为1表示和相邻像素不连续,否则与相邻像素连续.这样对每个像素比较,就可以得到四个布尔值,用一张纹理EdgeInfoTex保存每个像素的比较结果。
在计算出场景所有边缘像素的混合权重,并存在纹理BlendWeightTex,该纹理对应位置的每一个像素相对于它的左右上下相邻像素的混合权重。在算法的最后一步,使用这张包含了混合权重信息的纹理来获取最终的颜色。计算最终颜色见公式(4):
Cfinal是最终的颜色值,Wl是目标像素左邻像素的混合权值,Cl是目标像素左邻像素的原始颜色值,Wr是目标像素右邻像素的混合权值,Cr是目标像素右邻像素的原始颜色值,Wt是目标像素上邻像素的混合权值,Ct是目标像素上邻像素的原始颜色值,Wb是目标像素下邻像素的混合权值,Cb是目标像素下邻像素的原始颜色值。混合权重只需要在纹理BlendWiehtTex查找即可。
4 结果分析
4.1实验平台
处理器:Intel Pentium 2 CPU G620@2.60GHz双核;内存:4.0GB;显卡:NVIDIA GeForce GT 440;显示器分辨率:1440×900;操作系统:Windows 7(32位)。
4.2实验结果
本文提出的基于GPU的实时抗锯齿算法,在实时性和抗锯齿效果上都取得良好的效果。下表1测试本算法在不同分辨率下每秒的帧频率,与NVIDIA自带的FXAA[5-6]在采样为2X下进行对比。
表1 分辨率和帧频率对比表
表1可以看出,本算法的帧率,满足场景实时渲染需求。表中测的帧率,不仅与分辨率有关,也与渲染场景的复杂度有关。
为了验证本算法的实际效果,选取了多个场景进行验证,分别测试了不使用抗锯齿算法、FXAA算法和本算法时场景的绘制图像的质量,如图2所示.图2(a)是没有经过抗。
锯齿算法处理的原图,图2(b)分别是图2(a)经过FXAA算法处理之后的图,图2(c)分别是图2(a)经过本算法处理之后的图。图2(c)和图2(b)对比可以得出,本算对锯齿的处理效果非常明显,平滑也很显著,特别是对图2(b)右边图中线和木板边缘的处理,几乎没有锯齿。对比本算法抗锯齿处理后的图2(c)效果与FXAA处理的图2(b)效果,左图处理效果没有差别,但是中间和右边图的对比可以发现,本算法对锯齿边缘处理更平滑。
图2 原始图、FXAA和本算法效果对比
5 结语
本文提出了一种基于GPU的实时抗锯齿算法,算法检测图像中不连续变化的边缘像素,识别出边缘像素所在的分割边的形状,属于哪种预定义的几何模式。然后利用分割边的相关信息来检索匹配预先计算好的像素混合权重信息,再计算最终颜色,使得在这些边缘区域的像素可以有更为平滑的过度。本算法属于后处理算法,独立于渲染管线,完全运行于GPU,可以高效地整合在实时渲染管线内,提升实时渲染的速度和图形的质量。
[1]Shishkovtsov O.Deferred shading in STALKER GPU Gems2[C],2005:143-545.
[2]Iourchak,Yangjc,Pomianowskia.A Directionally Adaptive Edge Anti-Aliasing Filter[J].In High Performance Graphics 2009,ACM,New York,USA,2009:127-133.
[3]J.Jimenez,D.Gutierrez,J.Yang,A.Reshetov,P.Demoreuille,T.Berghoff,C.Perthuis,H.Yu,M.McGuire,T.Lottes,H.Malan,E.Persson,D.Andreev,T.Sousa.Filtering Approaches for Real-Time Anti-Aliasing[C].ACM SIGGRAPH Courses,2011.
[4]T.Smith,J.Guild,The CIE Colorimetric Standards and their Use[J].Transactions of the Optical Society,1931,33(3):73-134.
[5]Atwood,Jeff.Fast Approximate Anti-Aliasing.Coding Horror.Retrieved September 30,2012.
[6]Wang,James.FXAA:Anti-Aliasing at Warp Speed.NVIDIA.Retrieved January 3,2013.
Anti-Aliasing;GPU;Geometric Morphology;Parallel Processing;3D Scene Model
Real-Time Anti-Aliasing Algorithm Based on GPU
WU Yu-pei,WANG Bin
(College of Computer Science,Sichuan University,Chengdu 610065)
1007-1423(2016)03-0054-04
10.3969/j.issn.1007-1423.2016.03.013
吴玉培(1990-),男,河南邓州人,硕士研究生,研究方向为计算机图形图像处理、计算机图形学、虚拟现实
2015-12-01
2016-01-10
随着现代计算机图形图像技术的发展,目前的抗锯齿技术存在帧频率低、消耗内存大、对硬件要求高、算法不稳定、图像失真等问题.针对以上问题,提出基于GPU的实时抗锯齿算法,是根据几何形态学图像分析方法来区分像素边界,然后计算像素颜色的混合权重,最后对模型进行渲染,不仅可以用于前处理,而且可以用于后处理,完全独立于渲染管线,可以有效地解决多物体复杂三维场景下的锯齿失真问题,而且不会对系统造成太大的负担,是一种既快速又健壮的抗锯齿算法。
抗锯齿;GPU;几何形态学;并行处理;三维场景
王斌(1989-),男,湖北襄阳人,硕士研究生,CCF会员,研究方向为计算机图形图像处理、计算机图形学、虚拟现实
Along with the development of modern computer graphics technology,the existing anti-aliasing technology suffers with many problems, such as low frame frequency,consuming large memory,high requirements for hardware,unstable algorithm and distortion of the image.In order to solve these problems,proposes a new real-time anti-aliasing technology based on GPU.It distinguishes pixel boundary depending on the geometric morphology image analysis,then calculates blending weight,finally renders the model.It is not only suitable for preprocessing but post-processing,and completely independent of rendering pipeline.It can effectively solve the distortion under the complex 3D scene model and cost less resources of the system.It is a fast and robust anti-aliasing algorithm.