基于着色器的LOD纹理混合与反走样平滑过渡关键技术研究

姜展1 李梅1,† 孙振明2 毛善君1

1.北京大学遥感与地理信息系统研究所, 北京 100871; 2.中国矿业大学(北京)能源与矿业学院, 北京 100083;†通信作者, E-mail: mli@pku.edu.cn

摘要 针对场景切换时产生的 LOD (level of detail)纹理突变和走样问题, 提出一种基于着色器的 LOD 纹理混合与反走样平滑过渡算法。该算法根据三维模型和视点的距离, 运用基于 Alpha 测试的不透明蒙版算法和加权邻帧反走样算法, 在 LOD 间生成过渡材质, 实现三维模型 LOD 切换的平滑过渡, 不仅能够改善纹理质量, 而且能够保证三维场景加载的流畅性与真实性。实验结果表明, 与 Unreal Engine 4 (UE4)自带的平滑算法相比, 算法的 GPU 平均耗时减少 8%以上, 帧率提高 8%以上。与现有纹理平滑过渡方法相比, 该算法能够优化GPU 渲染性能, 稳定并提高画面帧率, 保持良好的视觉效果, 有效地解决 LOD 层级切换时的突变问题。

关键词 纹理突变; LOD 平滑过渡; Alpha 测试; 几何走样; 着色走样; 时间反走样(TAA)

随着计算机图形硬件和渲染能力的快速发展, 三维虚拟建模技术已广泛应用于工业、建筑、商业和教育等各个领域[1]。在构建虚拟场景过程中, 为了加速模型显示速度, 一般采用 LOD (level of detail)技术[2]来降低模型渲染数据量, 提高场景漫游的流畅性。但是, 三维模型切换 LOD 层级时会产生明显的形状和纹理突变(popping)[3], 场景中的模型也会存在锯齿现象。

如何在保证良好的视觉效果和较低的性能开销前提下解决三维模型 LOD 突变和反走样问题, 是图形渲染领域的研究热点。三维模型 LOD 平滑过渡方法主要分为纹理方法和几何方法两大类, 几何方法主要通过渐进网格[4]对模型进行简化, 但处理后的模型数据结构较为复杂; 纹理方法主要包括Mip-Map[5]、模型贴图渐进过渡[6]、纹理合并[7]等技术, 普遍存在贴图文件过大、视觉效果差和性能开销高的问题。随着可编程管线的着色器(Shader)技术的普及, 基于 Shader 的 Alpha 混合和 Alpha 测试技术能有效地减少贴图文件大小, 提升视觉效果。其中, Alpha 混合技术通过混合相邻的两个LOD 透明度实现平滑过渡[8], 这种方式需要考虑对象的渲染顺序, 并且 Shader 复杂度极高, 性能消耗极大; Alpha 测试技术不需考虑渲染顺序, 性能消耗相对较小。目前主流游戏引擎 UE4 和 Unity 3D 也内置 LOD 平滑过渡模块, 采用基于着色器的抖动和透明度交叉淡化算法实现 LOD 平滑过渡, 但随着场景规模和模型复杂度增加, 使用 LOD 平滑方法会降低画面帧率, 增加渲染压力。

在 LOD 平滑过渡过程中, 还会出现反走样[9]问题。反走样是一种消除图形边缘凹凸锯齿的技术, 算法包括前采样和后处理两大类。延迟渲染[10-11]采用后处理技术, 是目前主流的实时渲染方式, 该方法将所有物体绘制到屏幕空间的几何缓冲区(G-Buffer)[12], 逐光源对该缓冲区进行着色, 避免因深度测试丢弃的片元着色而产生不必要的开销。延迟渲染是先进行深度测试, 再进行着色计算, 将三维空间的光照通过计算转换到二维空间进行处理。相比前向渲染, 延迟渲染的开销和复杂度更小, 渲染效率更高, 在存在大量光源的场景中尤为适用。后处理主要包括快速近似反走样(FXAA)[13]和时间性反走样(TAA)[14-16]等算法。FXAA 渲染效率虽高, 但由于采用颜色衰减方式重建反走样颜色, 普遍存在图像过度模糊问题; TAA 则采用分摊多帧和时域复用技术实现更加精确的反走样效果, 以相对较低的开销得到高品质画面, 广泛地应用于 Unity 3D, CryENGINE 3 和 UE4 等实时渲染引擎中。

虚幻引擎 5 采用 Nanite (虚拟几何体)技术, 直接导入数以亿计的三角形面数模型, 并渲染所有的三角面, 对高质量模型进行实时流送和缩放, 因此无需考虑三角形数量、内存和 LOD 突变等问题。但是, 该技术的实现需要巨大的存储空间以及与之相配的高速 CPU 和 SSD 等硬件设备, 庞大的三角形构成对光线跟踪也造成一定的影响。

本文针对当前存在的纹理突变和反走样问题, 考虑设备性能的局限性, 提出一种基于着色器的LOD 纹理混合与反走样平滑过渡技术。结合 UE4开发平台, 根据三维模型和视点的距离, 运用基于Alpha 测试的不透明蒙版算法和加权邻帧反走样算法, 在 LOD 间生成过渡材质, 达到 LOD 间平滑过渡和反走样的目的, 能够兼容延迟着色技术, 有效地重建几何、纹理、运动等各种细节, 提高场景的制作质量和加载的流畅性, 达到优化渲染性能和提升用户视觉体验的目的。

1 基于着色器 LOD 纹理混合与反走样平滑过渡算法设计

基于 Shader 的可视化编程管线需要将三维模型经过着色器进行一系列处理。首先, 顶点着色器(vertex shader)接收三维模型的位置、贴图和法线等顶点信息, 进行坐标转换; 然后, 片元着色器(fragment shader)对三维模型进行图元处理和光栅化, 计算纹理像素颜色和透明度等信息, 填充到图形像素中[17-18]

根据计算机图形渲染机制, 本文提出基于片元着色器(fragment shader) Alpha 测试的不透明蒙版算法和加权混合邻帧反走样算法。根据视距和对象半径等参数的变化, 动态地计算 LOD 透明度, 将材质像素映射噪声贴图像素, Alpha 用来调整噪声纹理比例, 之后使用加权邻帧反走样算法, 经过对邻帧像素的重投影、修正和加权混合, 将其绘制到屏幕上, 总体流程如图1所示。

2 算法实现与改进

基于着色器的 LOD 纹理混合与反走样平滑过渡算法的关键技术包括两项, 即 Alpha 测试的不透明蒙版算法和加权邻帧反走样算法。将要平滑的相邻两层 LOD 材质在片元着色器上实时计算, 得到新的平滑过渡 LOD 层级, 直接进行屏幕绘制。

2.1 基于 Alpha 测试的不透明蒙版算法

2.1.1 Alpha 测试算法

Alpha 测试是一种不考虑渲染顺序的开销较低的半透明处理方式, 其原理如式(1)所示:

Visibility = clip (p.Alpha ‒ ε), (1)

其中, ε∈[0, 1], p为当前像素, Alpha为透明度。clip函数用来检查参数是否小于零, 如果为负数(即像素p的透明度Alpha小于设定阈值 ε), 则舍弃当前像素, 大于阈值ε的像素则按照Alpha=1.0渲染到屏幕上。蒙版(masked)是Alpha测试对应的材质混合模式, 用来控制材质显示的范围。当材质混合模式设置为蒙版后, 将开启不透明蒙版(opacity mask)通道, 仅使用Alpha通道值, 其他通道(RGB)会被忽略, 在其中设置Alpha测试阈值来决定像素的可见性visibility。

width=482.25,height=148.5

图1 着色器LOD纹理混合与反走样平滑过渡技术流程

Fig.1 Flowchart of LOD texture blending antialiasing smooth transition technology on shader

2.1.2 基于Alpha测试的不透明蒙版算法

基于 Alpha 测试的不透明蒙版算法的计算过程如下。

1)获取摄像机到物体位置的距离 Dist。

2)根据距离、两级 LOD 屏幕大小以及物体半径等参数, 设置材质参数 Local。

3)设定距离阈值: 比较当前距离与阈值大小,并返回布尔值, 线性插值结果为 1 或随着距离改变的 Local, 将此返回值赋给 Alpha, 得到在一定范围内随距离动态改变的透明度 Alpha。由于第二层与第一层设置相反, 最终得到两个随距离变化趋势相反的 Alpha1 和 Alpha2

得到随距离动态变化的两个 Alpha 后, 使用噪声纹理混合算法为材质叠加噪声贴图[19], 通过控制像素显示的数量来改变模型的可见性。以一张 2D噪声纹理贴图为基准, 将贴图每个像素映射到噪声纹理对应的像素上, 将像素的透明度与蒙版预先设置好的阈值进行比较, 丢弃小于阈值的像素。像素的可见性 λ:R3×[0, 1]→{true, false}可用式(2)计算。

width=121.5,height=15 (2)

width=9.75,height=15是每个像素的空间坐标, 阈值 ε∈[0, 1], noiseTex为对纹理贴图的查找函数。

分别将新 LOD 层级随距离动态变换的两个Alpha 输入此函数, 此时的 Alpha 值与丢弃像素的数量比例成反比, 即 Alpha 越小, 显示的像素点越少。由于两个 Alpha 值变化趋势相反, 新 LOD 两层材质随距离的变化将呈现交替过渡的效果。使用的噪声纹理贴图与模型噪声纹理比例变化示意如图 2 所示。

基于 Alpha 测试的不透明蒙版算法伪代码如下。

Input: The radius of the model in the scene, ObjRadiu The set of Shader Material, Ma, Mb; Screen start and end sizes, ScreenStart, ScreenEnd; The distance from the camera to the object, Dist; The Opacity of the first LOD, Alpha1, Alpha2; The spatial coordinates of the pixel, p; Threshold value, t; Pixel visibility, visibility;

Output:The visibility of per pixel, visibility;

width=399,height=90.75

图2 2D噪声纹理贴图与丢弃贴图像素比例变化示意图

Fig.2 2D noise texture mapping and proportion change of discarded pixels

1: Ma=Ma*(1-Mb)+Mb;

2: float Start= ObjRadiu*Ma/ScreenStart;

3: float Distance= ObjRadiu*Ma/ScreenEnd-Start;

4: float smooth=((Dist-Start-Distance/2)/ Distance*2);

5: float Local1=1-smooth ;

6: float Local2=(Dist-Start)/Distance*2 ;

7: Alpha1=lerp(1, Local1, (float)(Dist>(Start+Distance/ 2)));

8: Alpha2=lerp(local2, 1, (float)(Dist>(Start+Distance)));

9: Map each pixel to the pixel corresponding to the noise texture map according to p;

10: Alpha1 and Alpha2 are used to control the noise texture ratio;

11: visibility=clip(pixel.Alpha-t);

12: return visibility。

2.2 加权邻帧反走样算法

走样主要分为几何走样(geometric aliasing)和着色走样(shading aliasing)两大类。几何走样是由光栅化时对边缘像素采样位置不同和精度不够导致, 体现为几何边缘的锯齿现象; 着色走样是由渲染时的采样不足导致, 体现为画面出现部分像素点闪烁或噪点。反走样算法中的前采样包括超级采样反走样(SSAA)[20-21]、多重投影反走样(MSAA)[22]、覆盖采样反走样(CSAA)[23]和增强质量反走样(EQAA)[24]等, 通过超采样几何边缘达到模糊边缘的效果。反走样效果虽好, 但计算开销过高, 所采用的前向渲染[25]思想非常依赖渲染管线, 只能缓解几何走样, 无法解决着色走样问题。近年来, 游戏引擎中最常用的反走样方法是后处理中的时间性反走样(TAA)方法, 能够有效地缓解几何走样和着色走样问题。

TAA 的核心思想是把样本分摊到过去的 N 帧中, 即每帧只绘制一个像素点, 对每个像素执行单次采样和单次着色的计算, 随着 N 帧的累计, 将产生 N 个采样像素, 再通过加权混合 N 个采样点达到反走样效果[26], 过程如式(3)和图 3 所示。

width=62.25,height=20.25, (3)

其中, 第 N 帧的像素值为 Pn, 当前第 i 帧的像素值为 Ci, 加权值为 ωi

同时, 每帧像素还需要做一定的抖动(jitter)处理, 否则不同帧在相同位置的像素值完全相同, 会失去分摊多帧的意义。随着时间推移, 每个像素会包含周围大范围的颜色信息, 导致严重的模糊现象。当画面完全静止时, 前后两帧的像素值无明显变化, 这种累计结果仅会导致图像模糊; 如果模型运动或环境变化等因素使前后两帧的颜色信息发生完全变化, 将产生重影(ghosting)现象。

针对这些问题, 本文提出一种加权邻帧反走样算法来处理图形, 通过重投影[27-29]、检验修正和加权混合邻帧算法进行优化, 达到提升渲染效率和反走样的目的。

2.2.1 加权混合邻帧采样原理

传统的 TAA 同时保存多帧的方式开销相对较高, 且容易出现模糊和重影问题。本文采用加权混合邻帧采样的方法进行处理, 仅将相邻两帧的像素值进行加权混合, 将混合结果作为当前帧的像素值, 再与下一帧像素值进行混合, 最终得到分摊多帧超采样结果, 过程如式(4)所示。

width=137.25,height=18.75, (4)

其中, 当前帧为 t, 像素点的位置为 p, 像素值是St(p); 前一帧为 t ‒1, 像素点的位置为width=12,height=18.75, 像素值是width=37.5,height=18.75 α 为加权值, 可以是常量或变量。

2.2.2 重投影

实际项目中, 画面并不是完全静止的, 每帧渲染时都存在一定程度的像素抖动、模型运动和渲染环境变化(例如光照条件)等问题。如图 4 所示, 由于模型运动, 当前帧 t 的像素点 ABC 与前一帧 t ‒1对应的位置 ABC′出现偏差, 这就需要进行重投影, 计算当前帧 t 像素点在前一帧 t ‒1 所处的坐标, 并获取其像素值。

重投影需要计算模型顶点在当前帧与前一帧的位置差值, 这个差值称为运动矢量(motion vector)。模型顶点位置信息存储在 G-Buffer 中, 运动矢量存储在速度缓存(velocity buffer)中, 重投影就是从 G-Buffer 中提取顶点信息, 计算运动矢量, 并存入速度缓存。根据投影矩阵和视点矩阵计算屏幕上当前帧像素点的坐标 p 在前一帧对应坐标width=12,height=14.25的过程, 计算公式[9]

width=364.5,height=51.75

图3 TAA分摊采样过程

Fig.3 Amortized sampling process of TAA

width=269.25,height=133.5

图4 模型运动导致的像素位置偏差问题

Fig.4 Pixel position deviation caused by model motion

width=118.5,height=19.5, (5)

其中, PtVt 代表当前帧的投影矩阵和视点矩阵, Pt-1Vt-1 代表上一帧的投影矩阵和视点矩阵。

2.2.3 检验和修正

得到当前帧像素p重投影到上一帧的像素坐标width=12,height=14.25后, 还需要检验重投影的像素坐标是否有效, 并对其进行修正, 之后再进行加权混合, 以便排除因遮挡、照明或表面内容变化而无法复用的像素点[30]。如果不及时进行修正, 因重投影的像素由历史帧像素加权混合获得, 而历史帧像素又由更早的历史帧产生, 随着迭代过程中参与的像素范围不断扩大, 最终导致图像模糊。使用式(6)比较当前帧像素的视点深度 dt 与重投影上一帧的视点深度 dt-1, 若两者差距很小, 说明重投影有效, 否则无效。

width=52.5,height=33.75 (6)

其中, ε为调节有效检验严格程度的阈值。

经检验, 有效的像素重投影坐标被存入 G-Buffer中, 无效的坐标被标记, 不进入下一个后处理的重投影坐标计算。如图 5 所示, 当镜头以一定的速度移动时, 采用传统 TAA 算法的场景会产生重影问题, 而使用重投影和检验修正处理后的画面渲染正常。

综上所述, 加权邻帧反走样算法流程如图 6 所示。首先开启抖动补偿渲染场景, 将运动模型的运动矢量存至速度缓存。在一个后处理过程中, 重投影当前帧像素在前一帧中的位置和像素值, 并进行检验修正, 将当前帧像素与前一帧像素加权混合, 结果输出到下一帧并保存到历史记录缓冲区后, 准备显示到屏幕上。

width=425.25,height=153

图6 加权邻帧反走样技术流程

Fig.6 Process of weighted adjacent frames antialiasing technology

Input: The projection matrix of the current frame and the previous frame, Pt, Pt-1; The viewpoint matrix of the current frame and the previous frame, Vt, Vt-1; The coordinate of the current frame pixel and the previous frame pixel, p, p′; The current frame and the previous frame, t, t-1; The position of the pixel, p, p′; The pixel value, St(p), ft-1(p′); The weighted value, a; The viewpoint depth of the current frame pixel and reprojection of the previous frame, dt, dt-1; The threshold value of the degree of inspection, v;

加权邻帧反走样算法伪代码如下。

Output: The result of weighted adjacent frames, ft (p);

1:width=12,height=14.25= Pt-1Vt-1width=30.75,height=16.5p;

2: if |1-dt/dt-1|<vthen

3: The reprojection coordinate of the pixel is stored in G-buffer;

4: else

5: Discard the reprojection coordinate;

6: end if

7: ft(p)=(a)St(p)+(1-a)ft-1(p′);

8: returnft (p)。

3 实验分析与结论

本文实验使用的电脑配置为 Windows10 操作系统, 32G 内存, CPU 采用Intel(R) Core(TM) i7-9700 3.00GHz, GPU 为 NVIDIA GeForce RTX 2070 SUPER, 8 G 显存, 分辨率为 1920x1080。基于 UE4 4.23 版本和 Visual Studio 2019 开发平台, 采用 C++编程语言, 将基于着色器 LOD 纹理混合与反走样平滑过渡算法以插件形式嵌入引擎。从反走样质量、LOD 平滑效果和 LOD 平滑性能开销 3 个方面进行对比。

3.1 LOD平滑过渡和反走样质量分析

分别使用无反走样、传统 TAA 和本文算法对场景模型进行处理, 图 7 显示 3 种方式的效果对比图。可以看出, 无反走样处理的模型边缘锯齿明显, 经过传统 TAA 和本文算法处理后的场景锯齿明显得到缓解, 并且本文算法处理的场景比传统 TAA更加清晰, 有效地缓解传统 TAA 的模糊问题。

使用无 LOD 平滑、UE4 自带 LOD 平滑和本文算法 3 种方式对场景中的模型进行处理, 测试其切换 LOD 时的平滑过渡效果。图 8 显示 3 种方式的效果对比可以看出, 不使用 LOD 平滑的模型存在突变问题; UE4 自带方法与本文算法处理的模型均有LOD 平滑过渡效果, 但本文算法过渡层级细节更高, 效果更好, 而 UE4 的方法切换过快, 过渡效果不明显。

3.2 算法性能对比

利用 3Ds Max 软件创建某地表建筑和树木模型, 并导入 UE4 中, 在地表建筑物模型数量固定的情况下, 将树木数量作为区分场景规模大小的标准, 两种场景的顶点数、面数和模型数量见表 1, 两个不同场景规模见图 9。使用 UE4 的自动 LOD 生成系统, 分别生成场景模型的 LOD, 在两个场景中使用相同的漫游路线, 分别记录在不同场景漫游时使用本算法、UE4 自带的 LOD 平滑方式和不使用 LOD平滑 3 种方式的性能开销。

分别记录使用 3 种方式处理后两个场景中进行

width=426.75,height=170.25

图7 无反走样、传统TAA和本文算法反走样效果对比

Fig.7 Comparison of the antialiasing effect of no antialiasing, traditional TAA and the algorithm in this paper

width=416.25,height=312

图8 无LOD平滑、UE4自带方法和本文算法的LOD平滑过渡效果对比

Fig.8 Comparison of smoothing transition effects of no LOD smoothing, UE4 method and the algorithm in this paper

表1 不同规模场景的数据量对比

Table 1 Data volume comparison for scenes of different sizes

场景分类顶点数/万面数/万模型数量 小场景90.370.8281 大场景252.3184.81086

漫游的 GPU 处理每帧的耗时 Tgpu 和生成每帧的耗时 Tframe, 结果如图 10 所示。可以看出, 使用本算法平滑 LOD 的场景 GPU 处理每帧的耗时和生成每帧的耗时相对较少, 且稳定在一个低值; 其他两种方式的场景耗时普遍偏高, 且出现数个突变值和高值开销段。这是由于在漫游过程中, 各个模型频繁切换 LOD 层级, 不使用 LOD 平滑的方式会出现明显的形状和纹理突变现象, 产生帧数跳跃和高开销问题; UE4 自带的平滑方式过渡效果较差, 过渡时间过快, 也会导致突变现象; 本算法采用的着色器LOD 纹理混合与反走样的平滑过渡技术, 使LOD层级过渡更加平滑, 画面质量更加稳定。因此, 与其他两种方式相比, 本文算法的 GPU 性能优化效率更高, 能保持稳定的画面帧数和良好的视觉效果。

width=452.25,height=98.25

图9 两种不同规模场景示意图

Fig.9 Two different scale scenes

width=436.5,height=337.5

图10 3种方式性能的开销对比

Fig.10 Comparison of the performance overhead of three methods

计算实验时间内 GPU 处理每帧的平均耗时Tg_avg、生成每帧的平均耗时 Tf_avg 以及平均帧率Tfps, 结果如表 2 所示。可以看出, 运用本算法在GPU 处理每帧和生成每帧的平均耗时和平均帧率方面都有较大的性能优势。与不使用 LOD 平滑方式相比, 两个场景 GPU 处理每帧和生成每帧的平均耗时分别减少 10%和 15%以上, 平均帧率提高 12% 和 17%以上; 与 UE4 自带的 LOD 平滑方式相比, 两个场景的 GPU 处理每帧和生成每帧的平均耗时分别减少 12%和 8%以上, 帧率提高 14%和 8%以上。可见, 使用本算法处理 LOD 的性能开销明显低于UE4 自带的方式; 与不使用 LOD 平滑方式相比, 场景复杂度越高, 本算法 LOD 平滑方式的性能优化效率越高。

表2 平均性能开销对比

Table 2 Comparison of average performance overhead

类别使用方法Tg_avg/msTf_avg/msTfps/Hz本算法Tg_avg减少率/%本算法Tf_avg减少率/%本算法Tfps提高率/% 小场景不使用LOD9.369.41106.3010.7911.2612.58 UE4 9.519.53104.9212.3912.3814.06 本算法8.358.35119.67--- 大场景不使用LOD9.839.84101.5915.1615.0417.69 UE4 9.099.11109.778.258.238.92 本算法8.348.36119.56---

根据上述实验结果可知, 与不使用 LOD 过渡和 UE4 自带的平滑方式相比, 使用本文算法进行三维模型 LOD 间平滑过渡的性能优化效率更高, 更能保持稳定的画面帧数和良好的视觉过渡效果; 与传统的 TAA 相比, 本文算法能够消除运动模型的重影现象, 反走样质量更高, 画面更清晰, 从而增加虚拟场景漫游的真实感与流畅性。

4 总结与展望

本文提出一种基于着色器的 LOD 纹理混合与反走样平滑过渡算法, 根据三维模型和视点的距离, 运用基于 Alpha 测试的不透明蒙版算法和加权邻帧反走样算法, 在 LOD 间生成过渡材质, 能够解决LOD 切换时形状和纹理的突变以及反走样问题。与现有纹理平滑过渡方法相比, 该算法性能开销较低, 反走样质量较高, 能稳定和提高画面帧率, 并保持良好的视觉效果, 提高三维虚拟场景的制作质量和加载的流畅性, 提升用户交互体验。

本文算法能在相对低配的硬件环境中, 以较低的开销解决 LOD 的突变问题, 实现 LOD 切换的平滑过渡, 但在一定程度上会增大纹理贴图文件体积, 导致内存占用率升高。随着未来 UE5 的广泛应用以及硬件设备的更新换代, Nanite 技术或将成为渲染三维场景采取的主流手段, 彻底解决 LOD 突变及走样问题。

参考文献

[1]谢林霞.基于三维虚拟技术的城市环境规划系统设计.现代电子技术, 2020, 43(13): 99-102

[2]Clark J H.Hierarchical geometric models for visible surface algorithms.Communications of the ACM, 1976, 19(10): 547-554

[3]Ripolles O, Chover M, Gumbau J, et al.Rendering continuous level-of-detail meshes by masking strips.Graphical Models, 2009, 71: 184-195

[4]Hoppe H.Progressive meshes // Proceedings of the 23rd Annual Conference on Computer Graphics and Interactive Techniques.New York, 1996: 99-108

[5]杜莹, 武玉国, 游雄.全球虚拟地形环境中Mipmap纹理技术研究.测绘科学技术学报, 2006, 23(5): 355-358

[6]张瑞秋, 褚原峰, 李晨, 等.Web环境下产品虚拟展示系统的场景优化.计算机系统应用, 2015, 24(3): 38-43

[7]宋歌, 杨红雨.基于纹理集的大规模场景模型优化算法.计算机工程与设计, 2011, 32(9): 3119-3122

[8]Giegl M, Wimmer M.Unpopping: solving the image-space blend problem for smooth discrete LOD tran-sitions // Computer graphics forum.Oxford: Black-well Publishing Ltd, 2007: 46-49

[9]杜文俊, 冯结青.面向延迟着色的统一反走样算法.计算机辅助设计与图形学学报, 2016, 28(1): 58-67

[10]宋歌, 张子亚, 潘卫军.基于延迟着色与动态目标光效应的航空场景反走样算法.计算机应用研究, 2021, 38(2): 625-630

[11]王斌, 吴玉培, 吴志红.基于 SRAA 延迟渲染反走样.四川大学学报(自然科学版), 2015, 52(6): 1230-1236

[12]Liktor G, Dachsbacher C.Decoupled deferred shading for hardware rasterization // Proceedings of the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games.Costa Mesa, 2012: 143-150

[13]Engel W.GPU Pro 360 Guide to Rendering.New York: CRC Press, 2018

[14]李根, 陈文倩, 张严辞.基于稀疏超采样的时间性反走样算法.图学学报, 2021, 42(1): 101-109

[15]Xiao K, Liktor G, Vaidyanathan K.Coarse pixel shading with temporal supersampling // Proceedings of the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games.Montreal, 2018: 1-7

[16]Karis B.High-quality temporal supersampling // Ad-vances in Real-Time Rendering in Games.Vancouver, 2014: 2614028-2615455

[17]Wang P H, Chen Y M, Yang C L, et al.A predictive shutdown technique for GPU shader processors.IEEE Computer Architecture Letters, 2009, 8(1): 9-12

[18]叶迎萍, 吴文江, 胡毅, 等.基于着色器 LOD 的模型间平滑过渡技术.组合机床与自动化加工技术, 2018(11): 1-3

[19]Scherzer D, Wimmer M.Frame sequential interpola-tion for discrete level-of-detail rendering // Computer graphics forum.Oxford: Blackwell Publishing Ltd, 2008: 1175-1181

[20]Jiang X, Sheng B, Lin W, et al.Image anti-aliasing techniques for Internet visual media processing: a review.Journal of Zhejiang University-SCIENCE C, 2014, 15(9): 717-728

[21]Jimenez J, Echevarria J I, Sousa T, et al.SMAA: en-hanced subpixel morphological antialiasing // Compu-ter graphics forum.Oxford: Blackwell Publishing Ltd, 2012: 355-364

[22]Almeida T, Pereira J M, Jorge J.Evaluation of antia-liasing techniques on mobile devices // 2019 Interna-tional Conference on Graphics and Interaction (ICGI).Faro, 2019: 64-71

[23]罗德宁, 张建伟.基于延迟着色技术的大场景反走样渲染架构设计.工程科学与技术, 2017, 49(4): 158-166

[24]刘镜荣, 杜慧敏, 杜琴琴.子像素形态学反走样算法的改进.计算机应用, 2017, 37(10): 2871-2874

[25]邵鹏, 周伟, 李光泉, 等.一种后处理式的改进反走样算法.计算机科学, 2018, 45(增刊2): 218-221

[26]Yang L, Liu S, Salvi M.A Survey of temporal antialiasing techniques.STAR, 2020, 39(2): 607-621

[27]Nehab D, Sander P V, Lawrence J, et al.Accelerating real-time shading with reverse reprojection caching // Proceedings of the 22nd ACM SIGGRAPH/EUROG-RAPHICS Symposium on Graphics Hardware.Aire-la-Ville: Eurographics Association Press, 2007: 25-35

[28]Scherzer D, Jeschke S, Wimmer M.Pixel-correct sha-dow maps with temporal reprojection and shadow test confidence // Proceedings of the 18th Eurographics Conference on Rendering Techniques.Aire-la-Ville: Eurographics Association Press, 2007: 45-50

[29]Yang L, Zhdan D, Kilgariff E, et al.Visually lossless content and motion adaptive shading in games.Proceedings of the ACM on Computer Graphics and Interactive Techniques, 2019, 2(1): 1-19

[30]Yang L, Nehab D, Sander P V, et al.Amortized super-sampling.ACM Transactions on Graphics (TOG), 2009, 28(5): 1-12

Research on Key Techniques of Smoothing Transition of LOD Texture Blending and Antialiasing Based on Shader

JIANG Zhan1, LI Mei1,, SUN Zhenming2, MAO Shanjun1

1.Institute of Remote Sensing and Geographical Information System, Peking University, Beijing 100871; 2.School of Energy and Mining Engineering, China University of Mining and Technology (Beijing), Beijing 100083; †

Corresponding author, E-mail: mli@pku.edu.cn

Abstract Aiming at the problem of LOD (level of detail) popping and aliasing when the LOD Level is switched, this paper proposes a shader-based smooth transition algorithm for LOD texture blending and antialiasing.According to the distance between the 3D model and the viewpoint, the opaque mask algorithm based on Alpha test and weighted adjacent frames antialiasing algorithm are used to generate transition materials between LODs to achieve smooth transition for LOD switching.It can not only improve the texture quality, but also ensure the fluency and authenticity of loading 3D scene.The experimental results show that, compared with the smoothing method of Unreal Engine 4, the average GPU time of the proposed algorithm is reduced by more than 8%, and the frame rate is increased by more than 8%.Compared with the existing texture smooth transition methods, this algorithm can optimize the GPU rendering performance, stabilize and improve the frame rate and maintain good visual effect, effectively solve the popping problem when the LOD Level is switched.

Key words popping; smooth transition of LOD; Alpha test; geometric antialiasing; shading antialiasing; temporal anti-aliasing (TAA)

doi: 10.13209/j.0479-8023.2021.051

收稿日期: 2021-01-25;

修回日期: 2021-03-26

国家自然科学基金(51774281)和国家重点研发计划(2016YFC0803108)资助