时间:2024-09-03
李 根,陈文倩,张严辞
基于稀疏超采样的时间性反走样算法
李 根,陈文倩,张严辞
(四川大学视觉合成图形图像技术国防重点学科实验室,四川 成都 610065)
针对时间性反走样算法在处理帧间复用时,若场景中有较多高频颜色区域或精细模型会造成重影、模糊、闪烁及子像素细节丢失的问题,提出了基于稀疏超采样的时间性反走样算法。基本思想是,在时间性反走样算法的基础上,对于无法复用历史帧像素,重新引入空间域的超采样,利用剔除算法以避免不必要的绘制开销,实现对场景的稀疏超采样。实验结果表明,该算法能够得到与超采样算法媲美的反走样效果,并具有更高的渲染效率,有效避免重影、模糊、闪烁及子像素细节丢失的问题。
时间性反走样算法;稀疏;超采样;剔除;复用
反走样算法(anti-aliasing,AA)[1]在提高渲染画面的视觉效果质量方面有着重要的作用,因此在电影、游戏、虚拟现实等诸多领域具有极其重要的意义和价值。
实时的AA可分为基于超采样和后处理2大类[2]。超采样反走样(super-sampling anti-aliasing,SSAA)[3]通过对每个像素点计算多个子采样点,以得到较好的反走样效果,并能有效地减少由分辨率限制导致的几何走样和着色走样问题,但在着色计算、内存占用和传输带宽方面有巨大的开销。多重采样反走样(multi-sample anti-aliasing,MSAA)[4]将可见性函数从着色中分离,大大减少了计算量。MSAA对于几何图形光栅化导致的走样问题有明显的改进,但由于每个像素只进行一次着色计算,未能解决着色导致的走样问题,且因为将每个像素的着色计算结果复制给子采样点,也未解决SSAA的内存高占用的问题。覆盖采样反走样(coverage sampling aniti-aliasing,CSAA)[5]和增强质量反走样(enhanced quality anti-aliasing,EQAA)[6]以较高的分辨率存储像素的覆盖率,进一步将覆盖率从可见性中分离,降低了带宽及存储开销。但这些算法无法解决着色走样问题且难以与延迟着色(deferred shading)[7]框架兼容。
RESHETOV[8]提出形态学反走样(morpho logical anti-aliasing,MLAA),将边缘分为几种特定的模式并在原始图像中进行匹配,可根据各自的规则计算混合颜色值。但MLAA是在CPU上实现,用了非常深的分支来判断边缘形状,不适用GPU硬件。JIMENEZ等[9]提出了在GPU上实现MLAA,利用亮度和深度信息识别边缘,提高了边缘检测的准确性,并通过双线性过滤减少搜索时间,同时用预计算纹理避免了大量的计算。但MLAA是对光栅化后的图像进行反走样处理,对采样不足而造成的走样现象无法处理。NVIDIA[10]于2009年提出快速近似反走样(fast approximate anti-aliasing,FXAA),其具有局部对比度自适应方向边缘模糊、速度更快,但也导致了图像的模糊。
为了解决基于图像分析的AA存在的锯齿状边缘和过度模糊等问题,许多基于几何辅助分析的AA被提出。杜文俊等[11]通过使用离散的场景原始三角面片来表示和记录阴影遮挡信息,从而解决阴影图中的走样问题。PERSSON[12]提出的几何后处理反走样算法(geometric post-process nti-aliasing,GPAA)添加一个几何预处理绘制遍,进行覆盖率计算。PERSSON[13]以GPAA为基础,在主场景绘制时利用几何着色器存储几何信息和边界距离信息,避免了几何预处理绘制遍。CHAJDAS等[14]提出了子像素重建反走样算法(subpixel reconstruction anti-aliasing,SRAA),利用子像素的几何信息对其颜色进行估计,能在几何边缘处得到较好的反走样效果,但为了获取超分辨率的几何数据,需要反复绘制场景,以及消耗大量的内存空间以存储其信息。DU等[15]通过高效地存储三角形的信息及子像素与三角形的位置关系来降低算法所需的G-Buffer 大小。基于几何辅助分析的AA虽然能通过场景的几何信息高效地重建出高质量的反走样边缘。但需要额外地存储和带宽开销,且无法有效地识别和处理非几何边界附近的走样。
最早的时间域上的AA是YANG等[16]的摊销超采样(amortized super-sampling),其将每个像素的子采样点分摊到不同帧中,每帧只需绘制一个子采样点,然后通过时域复用达到反走样的目的。SOUSA[17]将时域复用应用到SMAA中以提高时间稳定性。DROBOT[18]将时间性反走样、基于覆盖的反走样以及基于分析的反走样相结合来重建高分辨率的图像。杜文俊和冯结青[19]提出一种统一后处理反走样算法,以三角形的几何辅助算法对几何边界进行高质量的反走样重建,同时根据着色信息对颜色纹理的走样进行形态学反走样处理,最后使用时间域重投影的算法来处理时间域上的滤波。时间性反走样算法因其高效且较为优异的反走样质量被广泛地应用于Unity,CryENGINE 3和Unreal Engine等实时渲染引擎中。
针对SSAA存在的计算量、内存占用及传输带宽的问题,本文基于时间域的超采样算法,即时间性反走样(temporal anti-aliasing,TAA)[20],将每个像素的子采样点分摊到不同帧中,每帧只绘制一个子采样点,并使用重投影技术和空间滤波器[21]进行时域复用,既解决了SSAA的效率问题,也能与延迟着色框架兼容。由于TAA核心是复用历史帧的颜色,不能复用历史帧颜色时,效果较差。针对该问题,本文在TAA基础上,引入空间域的超采样,提出了基于稀疏超采样的TAA,能够得到与SSAA算法媲美的反走样效果,且具有更高的渲染效率。
TAA通过复用历史帧的颜色进行反走样,能以较低的时间成本获得较高的反走样质量。但在复用过程中,需要解决能否在当前帧中复用历史帧的颜色问题。TAA使用重投影技术来确定当前帧像素在前一帧中的位置,并通过空间滤波来复用先前帧经过光照计算和反走样操作后的结果。由于复用了上一帧光照结果,因此在判断是否能复用的过程中,除了要考虑前后帧的几何对应关系外,还必须考虑因视点变化、物体运动及光源变化等一切可能引起光照变化的因素。TAA使用Neighborhood Clipping 来解决复用问题,将历史颜色限制在当前帧的邻域像素的颜色范围内,若其不在轴向包围盒(axis-aligned bounding box,AABB)[22]内时,根据历史颜色与AABB计算出一个新的历史颜色,确保其处于AABB内。但当场景中存在较多高频颜色区域或精细模型时,Neighborhood Clipping可能导致重影、模糊、闪烁和子像素细节丢失问题。TAA的帧间复用思想,解决了SSAA的效率问题,并在绝大多数的像素上得到了与SSAA媲美的反走样质量,所以本文选择以TAA为主,对其复用问题进行改进。稀疏超采样是本文提出的算法,剔除复用成功的部分,只对复用失效像素进行超采样。
本文算法共包含7个绘制遍,以图形渲染管线中的绘制遍的执行顺序来进行描述。
(1) 延迟着色的几何阶段绘制遍。渲染整个场景,生成G-buffer,其中存储位置、法线、运动向量和网格ID等信息。
(2) 延迟着色的着色阶段绘制遍。读取G-Buffer中的场景信息进行光照计算。
(3) TAA绘制遍。除了传统TAA的步骤外,还进行了复用有效性检测,将检测结果存储到分割掩码纹理中,用于网格和片元的剔除判断。
(4) 生成复用有效性缓冲区绘制遍。在计算着色器中,使用网格ID纹理和分割掩码纹理生成复用有效性缓冲区,高效地将复用有效性信息从片元反馈给网络。
(5) 生成深度多重纹理绘制遍。在基于屏幕空间的绘制遍中,通过分割掩码纹理为提前深度测试生成一张深度多重纹理(depth muti-texture)。
(6) 稀疏超采样绘制遍。根据复用有效性缓冲来决定每个网格是否需要向GPU提交绘制命令,旨在稀疏超采样绘制前剔除复用成功的网格;并使用Depth Multi-texture来执行提前深度测试,旨在片元着色器执行前剔除复用成功的片元,生成稀疏超采样结果。
(7) 混合绘制遍。通过分割掩码纹理将TAA的结果和稀疏超采样的结果混合,得到最终的反走样结果。
1.2.1 片元剔除
为了实现对场景的稀疏超采样,可在片元着色器的光照计算前剔除复用成功的片元。同一像素位置可能会对应多个片元,可使用提前深度测试剔除不可见的片元。但提前深度测试需要一个额外的深度预处理绘制遍来生成一张深度纹理,使整个场景重新过一遍图形渲染管线,影响算法性能。本文提出基于分割掩码纹理和提前深度测试的片元剔除方法,创建一张分割掩码纹理来存储屏幕中像素的复用有效性,并通过该纹理为提前深度测试生成一张Depth Multi-texture,在片元着色器执行前,剔除复用成功的片元。
1.2.1.1 标记复用失效的像素
TAA中复用失效的原因有2种:①场景中视点的变化或运动的物体导致片元的前后帧可见性发生变化;②场景中光照环境的改变导致的片元前后帧着色变化。针对上述情况,本文提出了基于颜色的复用有效性检测方法,相邻两帧间,同一个片元的颜色不会发生太大的变化,根据式(1)对像素的复用有效性进行判断,即
其中,C为当前帧的像素颜色;C为重投影得到的历史颜色;m为常量阈值。满足该式则为复用成功,反之失效。虽然该方法不能识别颜色变化较小的前后帧可见性发生变化的片元,但由于像素颜色接近,对最终结果的影响很小。
本文在TAA绘制遍中进行复用有效性检测,在其他绘制遍中也可使用,如图1所示的分割掩码纹理可记录复用有效性信息,其中黄色代表复用失败,蓝色代表复用成功。分割掩码纹理为屏幕分辨率大小的二维纹理,本文算法在TAA绘制遍中,使用了多渲染目标技术(multiple render targets,MRT)将每个像素的复用有效性存储到分割掩码纹理中,在后续绘制遍中,可直接根据片元的屏幕坐标读取片元的复用有效性。
1.2.1.2 生成Depth Multi-texture
为了在提前深度测试时剔除所有复用成功的片元,本文使用分割掩码纹理为提前深度测试生成一张Depth Muti-texture。通过对分割掩码纹理进行最近邻采样,来准确读取在分割掩码纹理中的复用有效性。如果采样分割掩码纹理得到的值为复用成功(蓝色),则将Depth Muti-texture中对应位置的深度值设为最小值0.0,否则设为最大值1.0。为了成功地剔除所有复用成功的片元,在提前深度测试时,使用GL_LESS深度函数,将深度值为0.0的位置上所有片元因未通过提前深度测试而被丢弃。
图1 分割掩码纹理
1.2.2 网格剔除
为了实现对场景的稀疏超采样,可以在稀疏超采样绘制遍前剔除复用成功的网格。网格的复用有效性由光栅化生成的所有片元决定,为了得到网格的复用有效性信息,需要先得到光栅化生成的所有片元。因此本文在延迟着色的几何阶段利用MRT技术生成一张网格ID纹理,记录离屏幕最近的片元所对应的网格ID,避免在进行复用有效性判断时,读取到被遮挡片元的复用信息。本文算法还通过一个额外的复用有效性缓冲区来高效地查找网格ID纹理中对应的所有的片元。创建一个复用缓冲区,用于储存场景所有网格的有效性,通过一次遍历网格ID纹理和分割掩码纹理来更新缓冲区中的数据,避免了每一个网格都需要遍历一次网格ID纹理来获取有效性。同时,本文算法的有效性缓冲区的生成充分利用了GPU并行计算的高效优势,使用计算着色器能高效地将复用有效性信息从片元反馈到网格。由于在CPU端读取复用有效性缓冲区数据时,可能会造成隐式同步问题,采取了双缓冲技术来解决。
1.2.2.1 生成网格ID纹理
为了识别场景中的不同网格,在模型加载阶段,为每个网格分配了唯一的ID。在延迟着色的几何阶段绘制遍中,每绘制一个网格,使用uniform缓冲对象将其ID传入片元着色器,并通过MRT技术输出到网格ID纹理中。最终得到如图2所示的网格ID纹理,并记录离屏幕最近的片元所对应网格的ID。
图2 生成网格ID纹理
1.2.2.2 生成复用有效性缓冲区
为了避免多次遍历网格ID纹理,通过一个额外的复用有效性缓冲区来存储场景中每个网格的复用有效性,并使用网格ID作为索引进行访问。分割掩码纹理标记了离屏幕最近的片元的复用有效性,用网格ID 纹理标记了离屏幕最近的片元对应的网格ID,且通过计算着色器读取这2张纹理来更新复用有效性缓冲区,可避免多次查找网格ID纹理,得到所有网格的复用有效性。
对于网格而言,只要对应的片元有一个复用失效,为了得到该片元的超采样结果,就需要对该网格绘制。生成复用有效性缓冲区时,需将所有的网格都标记为复用成功,当遍历分割掩码纹理时,对于复用失效的片元,使用相同的坐标去采样网格ID纹理,且更新复用有效性缓冲区,将缓冲区中对应的网格记为复用失效。如图3所示,在分割掩码纹理中,红框为复用失效(黄色)的片元,因此使用相同的纹理坐标采样网格ID纹理,得到该片元属于网格3,并在复用有效性缓冲区中将值改为0,表示其为复用失效的网格,不用剔除。
图3 生成复用有效性缓冲区
1.2.2.3 双缓冲技术
在CPU端读取缓冲区数据时,使用双缓冲技术来避免隐式同步问题。创建2个复用有效性缓冲区对象,并在相邻帧中循环使用,在相邻2帧中写不同的缓冲区,且延迟一帧读取缓冲区中的数据来避免隐式同步问题。然后对绘制遍进行调整,并应用于本算法。由于需要在稀疏超采样glMapBuffer函数读取复用有效性缓冲区,且通过延迟一帧读取缓冲区中的数据来避免隐式同步,因此需要将稀疏超采样以及后续的绘制遍延迟一帧执行,如图4所示。
图4 绘制遍顺序((a)原始绘制遍顺序; (b)更改后的绘制遍顺序)
1.2.3 三角形剔除
为了实现对场景的稀疏超采样,可以在超采样绘制遍的几何着色器中剔除复用成功的三角形。一个三角形图元经过光栅化可以生成若干个片元,在光栅化前剔除复用成功的片元,可以减少光栅化阶段及片元着色器开销。为了得到三角形的复用有效性信息,需要得到三角形光栅化生成的所有片元,若通过3个顶点坐标进行计算,计算量大,本文通过三角形的边界矩形来实现。因此,需要采样其边界矩形覆盖所有片元的复用有效性,对算法性能产生影响,使用层次化的分割掩码纹理解决该问题。本文算法从RÁKOS[23]的层次化深度图中得到启发,构造了一张层次化分割掩码纹理。其每个层级的1个纹素都总结了上一层级所对应的2×2个纹素的复用有效性,因此通过采样层次化分割掩码纹理的对应LOD层级中覆盖边界矩形的2×2个纹素,即可保守地估计边界矩形覆盖的所有片元的复用有效性。
1.2.3.1 生成三角形边界矩形
构造及使用三角形的边界矩形作为其包围体进行复用有效性检测。矩形在屏幕空间的大小为
其中,B和B分别为边界矩形在屏幕空间中的宽和高;max和min分别为三角形3个顶点在裁剪坐标系下的坐标的最大和最小值;max和min分别为坐标下的最大、最小值;V和V分别为视口的宽和高。
1.2.3.2 构造层次化分割掩码纹理
层次化分割掩码纹理是一个Mip-mapped的屏幕分辨率,mipmap level中的每个纹素的复用有效性都有mipmap level-1中所对应的2×2个纹素决定。如图5所示,mipmap level 0的红色框内的2×2个纹素中有一个为复用失效(黄色),则mipmap level 1中对应的红色框中的纹素也复用失效;而mipmap level 0的白色框中2×2个纹素中全为复用成功(蓝色),则mipmap level 1中对应的白色框的纹素也复用成功(蓝色)。
1.2.3.3 三角形的复用有效性判断
本文利用采样层次化分割掩码纹理的对应LOD层级中覆盖三角形边界矩形的2×2个纹素,可判断三角形的复用有效性。其中,边界矩形用途包括:①确定了对层次化分割掩码纹理进行查找时用的LOD层级;②定义了用纹理查找的2×2个坐标。
由式(3)和式(4)确定最终的LOD层级。根据式(3)计算得到的层级满足式(5),因此该层级的2×2个纹素可以包裹住三角形的边界矩形。然而,可出现图6所示的3种情况,图中橙色代表边界矩形,黄色代表边界矩形覆盖的纹素,绿色边框代表式(3)计算得到的mipmap level。3种情况下边界矩形覆盖的纹素个数不同,纹理采样的次数也不同。为了统一纹理采样次数,使用式(3)计算最终的LOD层级,得到如图7所示的纹理采样次数相同的3种情况,其中蓝色边框代表mipmap level+1。
其中,T为分割掩码纹理中mipmap level的一个纹素大小。
其中,为边界矩形在分割掩码纹理中的mipmap level l中覆盖X轴方向纹素的数量;为边界矩形在分割掩码纹理的mipmap level l中覆盖Y轴方向纹素的数量。
图6 边界矩形和mipmap level l的纹素的3种情况 ((a) 4个纹素;(b) 6个纹素;(c) 9个纹素)
图7 统一纹理采样次数((a) 4次;(b) 6次变4次; (c) 9次变为4次)
由式(3)和(4)确定LOD之后,本文的三角形剔除方法使边界矩形4个顶点位于裁剪坐标系中,在层次化分割掩码纹理的LOD层级上进行最近邻采样,如果4个采样点的值均为复用成功(蓝色),则将其剔除。如图8所示,根据计算得到采样的LOD为2,因此使用边界矩形的4个顶点对层次化分割掩码纹理的mipmap level 2进行最近邻采样,其中有一个为复用失效(黄色),则该三角形为复用失效,不剔除。
图8 三角形复用有效性检测
本文实验环境为:Intel(R) Core(TM) i5-4460k @3.20 GHz,8 GB内存,NVIDIA Geforce GTX-960 显卡。
采用如图9所示的客厅场景来验证算法,场景中分布3个点光源,不考虑阴影问题,采用的屏幕分辨率为1920×1080。
图9 客厅场景
将本文算法与文献[1]的TAA算法进行渲染效果对比,同时采用8×SSAA算法作为参照算法,分别从重影、模糊以及子像素特征处理3个方面验证本文算法对TAA的改进。
图10为视点移动过程中吊灯的反走样效果,可以看出本文算法可有效避免TAA算法出现的重影问题,并且可得到与参照算法SSAA接近的结果;图11为视点移动过程中的吊灯,TAA算法中出现的模糊效果,本文算法能有效避免,得到与参照算法SSAA接近的结果;而图12展示了静态场景的花瓶反走样效果,相对于TAA算法而言,本文算法可以有效处理子像素特征,避免子像素细节丢失的问题,得到类似于参照算法SSAA的结果。
图10 吊灯反走样的重影效果对比((a) TAA算法; (b)本文算法;(c) SSAA算法)
根据图13的效果可以看到本文算法相比于TAA渲染效果具有一定的提升,能够达到接近于参考算法SSAA的渲染效果。同时,本文算法的效率明显优于SSAA算法。通过对比在客厅场景中TAA算法、SSAA算法和本文算法的帧率,可见TAA算法的效率最高,帧率达到了149.6;其次是本文算法,帧率为108.7;效率最低的为SSAA算法,帧率为65.6。
图11 吊灯反走样的模糊效果对比((a) TAA算法;(b)本文算法;(c) SSAA算法)
图12 花瓶子像素缺失反走样效果对比 ((a) TAA算法;(b)本文算法;(c) SSAA算法)
图13 不同反走样算法下客厅场景的渲染效果对比 ((a) TAA算法;(b)本文算法;(c) SSAA算法)
本文提出了3种级别的剔除方法,均能在不对最终的渲染结果产生影响的情况下,提升算法的渲染效率。图14为在未使用剔除方法和分别使用3种级别的剔除方法的情况下,本文算法的渲染效果,通过人眼对比无明显差别。表1使用均方根误差(root mean squared error,RMSE)[24],定量分析得出未使用和分别使用三角形剔除方法和网格剔除方法得到的渲染结果无差异,而使用剔除网格的方法仅有非常小的差异。
图14 不同级别的剔除方法下效果对比((a)未使用剔除方法;(b)使用网格剔除方法;(c)使用三角形剔除方法;(d)使用片元剔除方法)
表1 不使用与分别使用不同级别的剔除方法的本文算法的渲染效果差异
由表2可知,单独使用3种级别的剔除方法均能提升本文算法的帧率,但2种级别的剔除方法组合策略6却高于其他剔除策略。不同级别的剔除方法间存在影响,三角形剔除方法在光栅化前剔除复用成功的三角形,会影响到光栅化生成的片元数量,而片元剔除方法所节省的开销远高于三角形剔除法。因此选取帧率最高的剔除策略,片元和网格组合作为最终的剔除策略。
基于颜色的复用有效性检测方法的阈值μ,由图15和图16可知,μ值越小,渲染效果越好、效率越低,因此,权衡渲染效果和效率,本文设定μ值为0.2。
表2 不同剔除策略下本文算法的渲染帧率对比
图15 不同μ下本文算法的渲染效果变化
图16 不同μ下本文算法的渲染帧率变化
考虑到G-Buffer也是评估后处理AA的重要指标之一。由于本文算法是基于TAA改进的,对比本文和TAA算法的G-Buffer,还和实时反走样中效率比较高的FXAA进行对比,见表3。其中位置向量、法线、反照率、粗糙度和金属度都是在后续的延迟着色绘制中着色需要的。运动向量是TAA算法和本文算法重投影到历史帧所需的,而网格ID是本文算法在构建复用有效性缓冲时需要的。
表3 TAA算法、本文算法和FXAA算法GBuffer具体存储内容和所需存储空间大小
通过比较可以发现,本文算法由于引入剔除策略,会比FXAA和TAA算法的G-buffer更大一些,但仍在可接受范围内。
针对TAA在处理复用问题上不够完善,当场景中存在较多高频颜色区域和精细的物体时,可能导致重影、模糊、闪烁和子像素细节丢失现象。本文提出了一种基于稀疏超采样的时间性反走样算法,在TAA的基础上针对复用失效的位置使用超采样,得到了与SSAA媲美的反走样结果,并且通过网格剔除和片元剔除算法,提高了算法的效率。但为了得到复用失效位置的超采样结果,需要将场景重新过一遍图形渲染关系,并通过对场景进行稀疏超采样避免不必要的绘制开销,如果能在场景过一次图形渲染管线的基础上,同时得到延迟着色和超采样所需要的场景数据,可能会大幅度提高本文算法的效率。但两者所需的场景数据分辨率不同,并且对于超采样而言,仅需复用失效位置的场景数据,因此如何对场景进行光栅化,以及如何高效地组织场景数据,可以在未来的研究中尝试。
[1] AKENINE-MÖLLER T, HAINES E, HOFFMAN N. Real-time rendering,fourth edition[M]. Natick: A K Peters/CRC Press, 2018: 130-148.
[2] THOMAN P. Diving into anti-aliasing[EB/OL]. [2020-08-10]. https://www.beyond3d.com/content/articles/12 2/6.
[3] Wikipedia. Supersampling[EB/OL]. [2020-06-05]. https://en.wikipedia.org/wiki/Supersampling.
[4] AKELEY K. Reality Engine graphics[C]//The 20th Annual Conference on Computer Graphics and Interactive Techniques – SIGGRAPH’93. New York: ACM Press, 1993: 109-116.
[5] YOUNG P. Coverage-sampled anti-aliasing[R].Santa Clara: NVIDIA Corporation, 2006.
[6] DEVELOPER RELATIONS A. EQAA modes for AMD 6900 series graphics cards[R]. Sunnyvale: AMD Inc., 2011.
[7] ANDREW L. Deferred rendering for current and future rendering pipelines[EB/OL]. [2020-06-05]. https://software. intel.com/sites/default/files/m/d/4/1/d/8/lauritzen_deferred_shading_siggraph_2010.pdf.
[8] RESHETOV A. Morphological antialiasing[C]//The 1st ACM Conference on High Performance Graphics – HPG’09. New York: ACM Press, 2009: 109-116.
[9] JIMENEZ J, MASIA B, ECHEVARRIA J I, et al. Practical morphological antialiasing[M]//GPU Pro 360 Guide to Rendering. Boca Raton: A K Peters/CRC Press, 2018: 135-153.
[10] NVIDIA T L. Fast approximate anti-aliasing[R]. Santa Clara: NVIDIA Corporation, 2009.
[11] 杜文俊, 冯结青, 杨宝光, 等. 三角形重建的几何阴影图算法[J]. 计算机辅助设计与图形学学报, 2016, 28(2): 208-217. DU W J, FENG J Q, YANG B G, et al.Geometric shadow mapping via triangle-based reconstruction[J].Journal of Computer-Aided Design & Computer Graphics, 2016, 28(2): 208-217 (in Chinese).
[12] PERSSON E. Geometric post-process anti-aliasing [EB/OL]. [2020-06-05]. http://www.humus.name/index.php?page=3D&ID=86.
[13] PERSSON E. Geometric buffer anti-aliasing[EB/OL]. [2020-06-05]. http://www.humus.name/index.php?page=3D&ID=87.
[14] CHAJDAS M G, MCGUIRE M, LUEBKE D. Subpixel reconstruction antialiasing for deferred shading[C]//I3D’11, Symposium on Interactive 3D Graphics and Games. New York: ACM Press, 2011: 15-22.
[15] DU W J, FENG J Q, YANG B G. Sub-pixel anti-aliasing via triangle-based geometry reconstruction[J]. Computer Graphics Forum, 2014, 33(7): 81-90.
[16] YANG L, NEHAB D, SANDER P V, et al. Amortized supersampling[J]. ACM Transactions on Graphics, 2009, 28(5): 1-12.
[17] SOUSA T. Graphics gems from cryengine 3[EB/OL]. [2020-06-05]. https://www.slideshare.net/TiagoAlexSousa/graphics-gems-from-cryengine-3-siggraph-2013.
[18] DROBOT M. Hybrid reconstruction anti-aliasing [EB/OL]. [2020-06-05]. https://michaldrobot.com/2014/08/13/hraa-siggraph-2014-slides-available/.
[19] 杜文俊, 冯结青. 面向延迟着色的统一反走样算法[J]. 计算机辅助设计与图形学学报, 2016, 28(1): 58-67.DU W J, FENG J Q.A unified anti-aliasing method for deferred shading[J]. Journal of Computer-Aided Design & Computer Graphics, 2016, 28(1): 58-67 (in Chinese).
[20] PEDERSEN L J F. Temporal reprojection anti-aliasing in inside[EB/OL]. [2020-06-05].https://www.gdcvault.com/play/1022970/Temporal-Reprojection-Anti-Aliasing-in.
[21] NEHAB D, SANDER P V, LAWRENCE J, et al. Accelerating real-time shading with reverse reprojection caching[C]//The 22nd ACM SIGGRAPH/EUROGRAPHICS Symposium on Graphics Hardware. New York: ACM Press, 2007: 25-35.
[22] WIKIPEDIA. Minimum bounding box[EB/OL]. [2020-06-05]. https://en.wikipedia.org/wiki/Minimum_ bounding_box.
[23] RÁKOS D. Hierarchical-z map based occlusion culling[EB/OL]. [2020-06-05]. http://rastergrid.com/blog/2010/10/hierarchical-z-map-based-occlusion-culling/.
[24] DU R F, CHUANG M, CHANG W, et al. Montage4D: interactive seamless fusion of multiview video textures[C]// 13D’18, Symposium on Interactive 3D Graphics and Games. New York: ACM Press, 2018: 124-133.
Temporal anti-aliasing algorithm based on sparse super-sampling
LI Gen, CHEN Wen-qian, ZHANGYan-ci
(National Key Laboratory of Fundamental Science on Synthetic Vision, Sichuan University, Chengdu Sichuan 610065, China)
In order to deal with the problems of the temporal anti-aliasing algorithm, such as ghosting, blurring, flickering, and loss of sub-pixel details when processing multiplexing between frames, in the cases of many high-frequency color regions or fine models in the scene, this paper proposed the temporal anti-aliasing algorithm based on sparse super-sampling. The core idea was that, based on the temporal anti-aliasing algorithm, for pixels that cannot reuse historical frames, super-sampling in the spatial domain was re-introduced, and the culling algorithm proposed in this paper was employed to avoid unnecessary drawing overhead and achieve sparse super-sampling. Experimental results show that the algorithm in this paper can obtain the anti-aliasing effect comparable to the super-sampling algorithm, and achieve higher rendering efficiency, which can effectively avoid the problems of ghosting, blurring, flickering, and loss of sub-pixel details.
temporal anti-aliasing algorithm; sparse; super-sampling; culling; reuse
TP 391
10.11996/JG.j.2095-302X.2021010101
A
2095-302X(2021)01-0101-09
2020-07-26;
26 July,2020;
2020-08-10
10 August,2020
国家自然科学基金面上项目(61472261);国家高技术研究发展计划(863计划)(2015AA016405)
:National Natural Science Foundation of China (61472261); The National High Technology Research and Development Program of China (2015AA016405)
李 根(1996-),男,四川成都人,硕士研究生。主要研究方向为计算机图形学。E-mail:ligen@stu.scu.edu.cn
LI Gen (1996–), male, master student. His main research interest covers computer graphics. E-mail:ligen@stu.scu.edu.cn
张严辞(1975–),男,四川成都人,教授,博士,硕士生导师。主要研究方向为实时计算机图形绘制算法、大规模动态场景并行绘制、3D游戏技术、虚拟现实、基于GPU的通用并行计算等。E-mail:yczhang@scu.edu.cn
ZHANG Yan-ci (1975-), male, professor, Ph.D. His main research interests covercomputer graphics rendering algorithms, parallel rendering of large-scale dynamic scenes, 3D game technology, virtual reality, GPU-based general parallel computing, etc. E-mail:yczhang@scu.edu.cn
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!