CN106952328B - 一种大规模宏观虚拟场景的绘制方法与*** - Google Patents
一种大规模宏观虚拟场景的绘制方法与*** Download PDFInfo
- Publication number
- CN106952328B CN106952328B CN201710086784.8A CN201710086784A CN106952328B CN 106952328 B CN106952328 B CN 106952328B CN 201710086784 A CN201710086784 A CN 201710086784A CN 106952328 B CN106952328 B CN 106952328B
- Authority
- CN
- China
- Prior art keywords
- sampling
- pixel
- buffer
- buffer area
- multisampling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000005070 sampling Methods 0.000 claims abstract description 165
- 239000000872 buffer Substances 0.000 claims abstract description 138
- 238000005286 illumination Methods 0.000 claims abstract description 91
- 238000004364 calculation method Methods 0.000 claims abstract description 65
- 238000001514 detection method Methods 0.000 claims abstract description 35
- 230000000694 effects Effects 0.000 claims abstract description 33
- 238000004040 coloring Methods 0.000 claims abstract description 27
- 239000007787 solid Substances 0.000 claims abstract description 13
- 239000000463 material Substances 0.000 claims description 23
- 230000003111 delayed effect Effects 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 13
- 230000035772 mutation Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 5
- 230000037435 normal mutation Effects 0.000 claims description 4
- 238000009877 rendering Methods 0.000 description 21
- 238000004422 calculation algorithm Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 7
- 239000002245 particle Substances 0.000 description 7
- 238000002310 reflectometry Methods 0.000 description 7
- 230000007704 transition Effects 0.000 description 5
- 230000000875 corresponding effect Effects 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000004020 luminiscence type Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000002269 spontaneous effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 125000001475 halogen functional group Chemical group 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种大规模宏观虚拟场景的绘制方法与***。本方法为:1)创建多重采样几何缓冲区;2)绘制虚拟场景中的各种实体三维模型并存储到该多重采样几何缓冲区中;3)对该多重采样几何缓冲区中的所有数据执行降采样以及多重采样检测,将得到的单采样数据保存在一单采样几何缓冲区,多重采样检测的结果存储到多重采样标记缓冲区中;4)对虚拟场景中的像素进行光照计算和着色;其中,如果像素位置多重采样标记缓冲区被标记,则根据该多重采样几何缓冲区中的数据对该像素执行多重采样光照计算,否则根据单采样几何缓冲区中的数据对像素执行单采样光照计算。本发明既能产生较好的光照真实感效果,又能够克服走样现象。
Description
技术领域
本发明涉及一种大规模宏观虚拟场景的延迟着色绘制方法与***,属于计算机软件技术、计算机图形学、虚拟现实技术领域。
背景技术
大规模宏观虚拟现实场景绘制是实时绘制领域的一个重要问题,大规模宏三维场景的绘制需求存在于多种应用***中。例如三维地理信息***(3D GIS)为了在表达基本的三维地表信息之外,为进一步加强***的表现力,常常需要在较大的空间尺度下实现大气、海洋、云层等自然环境的展示效果,以增强可视化***的真实感。飞行模拟视景***要求在高空视野开阔条件下生成高度真实感的视景图像,也离不开大规模的宏观虚拟现实场景和逼真的自然环境的真实感绘制技术。
在一个复杂的大规模宏观虚拟现实环境往往由各种丰富的绘制场景元素构成大尺度、大范围的三维场景,其中既包含大范围的三维地形、地表等地理对象,同时包含道路、建筑物、飞机、汽车、飞行器等各种人工对象,以及树木、草地、植被、河流、海洋、水面、水体、人物、动物等自然对象,还包含天空大气、云、雨、雾,火焰、反射、散射等自然现象。
对一个宏观的大规模室外虚拟现实环境而言,室外的光照计算是其真实感绘制的核心关键。在庞大的室外三维环境中,由太阳及大气所产生的光照效果及其光照计算方法需要达到实时的效率,同时要具有相当高的真实感度。基于上述考虑,往往采用的光照算法是基于预计算查找表的大气散射模型(Eric Bruneton and Fabrice Neyret.“Precomputed atmospheric scattering”.In:Computer Graphics Forum,2008:1079–1086.),该模型可以比较准确地模拟大气层中的以下光照效果:
·日光经过大气散射后对地表上任何一点的直射光。
·由大气层内的多重散射产生的照射到地表上任何一点的天空光。
·地表处的反射光经过大气层射入视点过程中的散射衰减。
·在大气层内散射进入视点的日光。这一项又包括两种效果:
–当视线朝向天空时,这一项体现为天空光效果。
–当视线朝向地面时,这一项体现为远处物体颜色变蓝(白天)/变红(傍晚)的效果。
该大气散射模型提出是为了实时计算地表的光照效果。在虚拟现实***中,包括地形等地理对象、房屋建筑等人工对象、树木植被等自然界对象在内的所有三维对象的光照效果均需使用该方法计算。
当场景规模庞大复杂的虚拟现实***需要进行复杂的室外光照计算时,速度和效率瓶颈的消除至关重要。因此,本发明首先要解决复杂大规模场景的绘制效率问题。本发明发现采用延迟着色模式进行规模庞大的复杂场景的绘制会显著提高绘制的效率。延迟着色技术是为了解决正向绘制方法中大量的重复像素计算而发展出来的一项绘制技术,它的核心思想是将三维图元的光栅化操作和光照计算分离。该绘制方法分为两个阶段,分别是:几何绘制阶段和光照计算阶段。因此,面向大规模虚拟现实场景的绘制,需要寻找一种合理有效的延迟着色绘制框架将大规模复杂场景中的各种三维对象的绘制囊括进来,同时处理好各种对象的光照的计算,并生成具有较好真实感的成像。
其次,本发明要解决复杂大规模场景的绘制质量问题。由于场景中三维对象繁多、几何形状及纹理***、场景三维层次密集,在场景的漫游(相机或视点的连续变化)过程中极易产生各种形式的走样现象。走样(aliasing)现象泛指一切由于采样率低于信号的分辨率而导致的显示效果失真现象。多重采样技术主要解决的是在由于显示设备的像素分辨率不足导致的多边形边缘产生锯齿的走样问题,因此也称为多重采样抗锯齿技术。该技术不仅可以处理单个多边形(含三角形、四边形等多边形)光栅化产生的边缘锯齿,也可以处理多个多边形彼此相交时在交线处产生的锯齿。如何把反走样方法与大规模复杂虚拟现实场景的绘制***流程结合起来,提高场景绘制生成图像的质量,是一个至关重要的问题。
发明内容
本发明提供了一个具有反走样功能并能够进行延迟着色光照计算的大规模虚拟现实场景的绘制方法与***。该方法的优势在于既能够产生较好地处理大规模室外场景中各种三维对象(含地理对象,自然界对象和人工对象)的光照真实感效果;又能够克服大规模虚拟场景的运动视点时可能产生的走样现象;同时该方法有具有高效性,可以针对大规模复杂虚拟场景进行实时的绘制,能够达到很高的帧速率。
本发明的技术方案为:
一种大规模宏观虚拟场景的绘制方法,其步骤为:
1)创建多重采样几何缓冲区;
2)绘制虚拟场景中的各种实体三维模型,并将绘制的结果存储到该多重采样几何缓冲区中;
3)对该多重采样几何缓冲区中的所有数据执行降采样以及多重采样检测,通过降采样得到的单采样数据保存在一单采样几何缓冲区,多重采样检测的结果存储到多重采样标记缓冲区中;其中,多重采样标记缓冲区用来标识延迟着色时需要进行多重采样处理的像素;
4)对该虚拟场景中的像素进行光照计算和着色;其中,如果像素位置在所述多重采样标记缓冲区中被标记,则根据该多重采样几何缓冲区中的数据对该像素执行多重采样光照计算,否则根据单采样几何缓冲区中的数据对像素执行单采样光照计算。
进一步的,所述多重采样几何缓冲区包括漫反射率缓冲区、法向缓冲区、自发光强度缓冲区、材质缓冲区、深度缓冲区和多重采样标记缓冲区。
进一步的,步骤2)中,绘制完实体三维模型后,绘制该虚拟场景中其光照具有折射效果的三维对象,并将绘制结果保存到所述多重采样几何缓冲区中;步骤3)之后进行星空或天空作为虚拟场景的背景的对象的绘制,将星空或天空的颜色和深度信息输出到屏幕缓冲区,然后将步骤4)计算的像素的颜色信息和深度信息输出到该屏幕缓冲区,以用于最终的显示输出;步骤4)之后,对该虚拟场景中的非实体进行绘制,其颜色和深度信息也输出到屏幕缓冲区。
进一步的,所述多重采样几何缓冲区的分辨率是屏幕分辨率的n倍,n是多重采样的倍数。
进一步的,所述降采样方法为:将多重采样的数据通过加权平均的方法降为单采样数据。
进一步的,所述步骤3),多重采样检测过程中先利用几何信息计算出像素颜色,再对颜色进行加权平均。
进一步的,所述多重采样标记缓冲区是一张与屏幕等大的纹理图像,该纹理图像每个像素的格式是8位无符号整数,其中每一像素的低三位分别表示该像素根据3条规则进行多重采样检测的判定结果。
进一步的,所述步骤3),进行多重采样检测的判定规则包括:
a)法向突变规则;即如果一个像素内部的多个采样点中记录的法向不同,则认为该像素通过了多重采样检测,该像素需要执行多重采样光照计算;
b)材质突变规则;即如果一个像素内部的多个采样点中记录的材质编号不同,则该像素需要执行多重采样光照计算;
c)深度突变规则;即如果一个像素内部的多个采样点中记录的深度最小值和最大值差异大于设定阈值,则认为该像素需要执行多重采样光照计算。
进一步的,所述单采样几何缓冲区包括漫反射率缓冲区、法向缓冲区、自发光强度缓冲区、材质缓冲区、深度缓冲区,所述单采样几何缓冲区的分辨率与屏幕分辨率一致。
一种大规模宏观虚拟场景的绘制***,其特征在于,包括多重采样几何缓冲区、单采样几何缓冲区、实体三维模型绘制模块、多重采样检测模块和光照计算与着色模块;其中,
实体三维模型绘制模块,用于绘制虚拟场景中的实体三维模型,并将绘制的结果存储到该多重采样几何缓冲区中;
降采样及多重采样检测模块,用于对该多重采样几何缓冲区中的数据执行降采样,同时对该多重采样几何缓冲区进行多重采样检测,并将得到的单采样数据保存在一单采样几何缓冲区,将多重采样检测结果保存到一多重采样标记缓冲区中;其中,多重采样标记缓冲区用来存储标识延迟着色时需要进行多重采样处理的像素;
光照计算与着色模块,用于对该虚拟场景中的像素进行光照计算和着色;其中,如果像素位置在所述多重采样标记缓冲区中被标记,则根据该多重采样几何缓冲区中的数据对该像素执行多重采样光照计算,否则根据单采样几何缓冲区中的数据对像素执行单采样光照计算。
与现有技术相比,本发明的积极效果为:
·与传统的正向绘制的模式不同,在延迟着色模式下,除了直接进行光照计算的模块之外,其他模块均不需要添加任何光照计算相关的代码。这有助于***的功能分离,使得光照算法和其他算法可以彼此相对独立的进行开发,可以有效降低***的开发和维护成本。
·对于老旧的面向GPU固定绘制管线开发的功能模块,只需要添加一个简单的着色器程序就能实现向几何缓冲区中输出数据的功能。因此该方法对旧代码的兼容性较好。
·采用带有大气散射的光照模型(Eric Bruneton and Fabrice Neyret.“Precomputed atmospheric scattering”.In:Computer Graphics Forum,2008:1079–1086.)作为主要的光照模型,该光照模型的计算量和纹理访问量都较大,使用延迟着色模式可以有效降低光照计算的任务量,有助于实现较高的绘制性能。
附图说明
图1为本发明的方法流程图;
图2为几何缓冲区所包含的内容;
(a)漫反射率,(b)法向,(c)自发光强度,(d)材质,(e)深度;
图3为法向不连续导致的光照计算错误示意图;
图4为深度不连续导致的光照计算错误示意图;
图5为多重采样标记结果图(只检测深度突变);
图6为多重采样标记结果图(检测所有突变);
图7为多重采样示意图;
(a)为未覆盖采样点所以未能触发产生一个像素着色器,
(b)为多边形覆盖了两个采样点,但是仍然触发产生了唯一一个像素着色器。
具体实施方式
本发明的***基本流程如图1所示,图中圆角矩形表示绘制操作,直角矩形表示数据缓冲区,实线箭头表示数据流向,虚线箭头表示绘制操作的执行顺序。该流程将***中需要绘制的对象分为四类:实体三维模型、带折射效果的网格、星空和非实体效果。
本发明绘制流程及其步骤:
步骤1:实体三维模型绘制
首先将大规模场景的几何信息绘制到多重采样几何缓冲区中,也就是实现几何绘制步骤。
其中首先创建多重采样几何缓冲区,然后执行实体三维模型绘制(包括地形等地理对象,模型等人工对象,植被等自然对象),此类三维模型皆具有不透明的属性,也就是所有绘制的这些三维模型都是不透明的,绘制的结果都输出到多重采样的几何缓冲区中。所谓多重采样几何缓冲区,就是指可以存储一系列属性信息的缓冲区,同时该缓冲区的分辨率是n倍大小的屏幕分辨率,n是进行多重采样的倍数。
●几何缓冲区结构设计
表1.展示了面向延迟着色流程中几何缓冲区的内容,本发明的几何缓冲区结把所有的各项缓冲区内容都做成了纹理的形式,同时添加了多重采样标记纹理。漫反射率缓冲区使用的是普通的sRGB格式。法向使用了16位精度而不是常见的8位精度,是考虑到实现屏幕空间反射效果(Morgan McGuire and Michael Mara.“Efficient GPU screen-spaceray tracing”.Journal of Computer Graphics Techniques,2014.)对法向精度的要求较高,使用8位精度会产生明显可见的噪点。自发光强度使用了浮点格式,用于实现高动态范围的光晕效果。材质信息使用整数编号来表示,不同的编号表示不同的光照算法和参数。除了以上几个较为常见的缓冲区外,几何缓冲区中还包括了一个多重采样标记缓冲区,这个缓冲区用来存储标识延迟着色时需要进行多重采样处理的像素,该缓冲区既可以作为几何缓冲区的一个组成部分,也可以作为一个单独的缓冲区创建和使用。
本发明延迟着色的几何缓冲区设计为参与绘制的各个模块提供了一个一致的数据输出格式,相当于为执行光照计算的模块和其他各模块之间提供了一致的数据交换接口,有助于将原本松散的各个模块组织到统一的绘制流程之下。
表1.几何缓冲区的结构
●实体三维模型绘制
主要指三维场景中的地形等地理对象、建筑模型等人工对象、植被模型等自然界对象。这些对象由三角网格构成的具有确定实体形状的对象。由于三角形是多边形的最典型的形式,而且大多数离散三维模型或者场景的表示形式也采用三角形网格,在本发明中所有针对三角形的问题都会同样发生在多边形之上,因此后续的论述中,本发明以三角形为目标,但是本发明所述方法同样适用去其它形式的多变形。这些对象由三角形网格表示,其遮挡关系可以利用深度测试解决。在低分辨率的显示设备上绘制这类对象时常常遇到三角形边缘和交界处的锯齿问题,为了消除这些锯齿现象一般需要采用多重采样等抗锯齿算法。
此绘制过程不进行光照计算,不进行纹理映射。绘制生成的结果全部写入多重采样几何缓冲区中,这些缓冲区包含了反射率(由于室外的光照以漫反射为主,因此在本发明中,反射率和漫反射率可以等价使用)、法向、材质、发光、深度等信息。对一个场景进行上述几何绘制所得到的几个缓冲区的结果如图2所示。
步骤2:带折射效果的网格绘制
该步骤也是几何绘制中的一步,主要指河面、海面等既具有实体形状,又能对其后的对象(河底、海底、水下物体等)产生折射效果的透明或者半透明对象,这些对象需要进行特殊的折射的光照计算。这一步骤是可选项,既可以执行,也可以跳过(如果在虚拟场景中并不存在具有透明或者半透明属性的物体)。在实时绘制等对效率要求较高的应用场景中,这类折射效果一般采用屏幕空间图像扰动的方法来近似表现,因此这类对象的绘制顺序必须排在实体三维模型之后。在本步骤中,首先从多重采样的几何缓冲区中获取深度和反射率信息,然后通过对水面网格的绘制同时采用屏幕空间图像扰动方法来生成这些透明或者半透明对象的反射率、深度、材质信息,并将这些信息更新到多重采样的几何缓冲区中。
这类对象通常也用三角形网格进行建模和绘制,在三角形边缘和交界处同样有锯齿问题,因此也需要采用多重采样抗锯齿算法。
步骤3:降采样及多重采样检测
将多重采样几何缓冲区中的所有数据执行降采样及多重采样检测步骤。降采样可以将多重采样的数据通过加权平均的方法降为单采样的数据并写入单采样几何缓冲区,单采样几何缓冲区的数据同样包含了反射率、法向、材质、发光、深度信息,但是其缓冲区的分辨率与屏幕分辨率一致。本发明专们提出面向延迟着色模式的多重采样检测方法,多重采样检测则是在降采样过程中执行三条重要的检查(后面将进行详细的论述),将检查结果记录在额外的多重采样标记缓冲区中。多重采样标记缓冲区是一个与屏幕分辨率相同纹理图像,纹理图像中每一像素的格式是8位无符号整数,其低三位分别表示该像素是否通过了上述的三条检查,如果某条检查表明该像素需要执行多重采样光照,则其对应的位标为1。这样设计的好处是光照计算阶段可以灵活地根据光照算法的特征舍弃某些检查的结果,例如某个光照算法的计算结果与像素的空间位置无关,只与法向和材质有关,那么使用这一光照算法时,就可以只检查法向和材质对应的判定位,舍弃深度的判定位。使用该策略可以进一步减少需要执行多重采样光照的像素数,提高性能。
●面向延迟着色的多重采样及其检测方法
(1)面向延迟着色的多重采样策略
绘制三维场景时需要使用多重采样技术消除三角形边界上的锯齿效果。多重采样技术最初是针对正向绘制设计的,在延迟着色环境下应用多重采样技术会带来一些问题。多重采样的一个基本假设是同一个像素点内的多个采样点的数据可以通过加权平均得到这个像素上最终呈现的数据。在正向绘制模式下,像素数据为屏幕上将要显示的颜色,加权平均过程近似等效于对高分辨率的颜色数据进行低通滤波,确实可以消除大部分的锯齿效果。而在延迟着色模式下,像素内存储的并非全都是颜色信息,还包括几何信息(深度、法向等)和材质信息。本发明提出先利用几何信息计算出像素颜色,再对颜色进行加权平均,和传统流程中先对几何信息进行加权平均,再使用加权平均后的几何信息计算颜色,抗锯齿的效果会大不相同。
如图3所示,设有s1、s2两个平面,其法向量为n1、n2,光源方向为L。s1被光源照亮,s2背对光源不被照亮。假设有一个像素跨越s1、s2两个平面,那么这个像素应当有一半为高亮度,另一半为黑色,二者加权平均得到过渡色,实现多边形边界的平滑过渡效果。而如果先算出平均法向nt,再用平均法向计算光照,会得到nt与光源夹角大于90°,整个像素的颜色为黑色,无法实现平滑过渡,在两个平面的交线上还是会有锯齿效果。
同样的问题也发生在深度信息上。如图4所示,E为视点,L为点光源,L周围的圆圈表示它照亮的范围。A、B、E三点共线,A、B两点经过投影变换后落到同一个像素中,在这个像素内部产生了深度不连续。B在L的照亮范围内,因此被照亮,A不在L的照亮范围内,因此不被照亮。要在这个边界处实现像素颜色的平滑过渡,该像素应当填充为完全照亮和完全不照亮之间的过渡值。如果先算出像素内部的平均深度,得到M点,再在M点处计算光照,会得出该像素完全没有被照亮的错误结果。
(2)面向延迟着色的多重采样检测方法
在延迟着色模式下要正确实现多重采样算法,就必须先对每个采样点计算颜色,再对颜色进行加权平均。如果对全屏幕的像素都做这样的处理,那么需要执行的光照计算任务数量将大大增加。假设***的几何缓冲区使用8倍多重采样,那么每个像素点就必须执行8次光照计算。这实际上是放弃了多重采样每个像素只计算一次颜色的性能优势,实际性能等同于超级采样方法。如果光照算法比较复杂,那么***的绘制效率将急剧下降。显然这样的策略是不可取的。
本发明所采取的高效的方法是通过进行多重采样的检测,使得只在三角形的边缘或交界处进行逐采样点的光照计算。如果某个像素完全位于三角形内部,根据多重采样光栅化的规则可知,该像素内部的多个采样点除了深度数据之外都是相同的。对于这些在三角形内部的像素,使用加权平均后的数据进行光照计算并不会带来明显的错误。通常情况下三角形密度不会大于像素的密度(即像素的分辨率),屏幕上位于三角形边缘或交界处的像素总是少数。只在这些像素上执行多重采样光照计算,与不使用多重采样相比,增加的计算量并不是很多,也能起到很好的抗锯齿效果。
该方案的核心问题在于判定某个像素是位于三角形内部,还是位于交界和边缘。这可以通过分析像素内部各采样点的数据实现。本发明提出的多重采样检测的判定规则包括:
1)法向突变规则
如果一个像素内部的多个采样点中记录的法向不同,则认为通过了多重采样检测,那么这个像素需要执行多重采样光照计算。
2)材质突变规则
如果一个像素内部的多个采样点中记录的材质编号不同,那么认为这个像素需要执行多重采样光照计算。
3)深度突变规则
如果一个像素内部的多个采样点中记录的深度最小值和最大值差异大于设定阈值,那么认为这个像素需要执行多重采样光照计算。
上述规则并不能严格判定某个像素是否完全位于三角形内部。如果某个像素跨越的两个三角形法向、材质都相同,在空间中距离也较近,就有可能漏过上面的三条检查,被判定为在同一个三角形内。不过这种情况下使用加权平均后的数据计算光照引起错误的概率较低,对最终的画面效果影响不大。图5为执行深度突变检测所获得的结果,图中白色点即为检测出的内部存在深度突变的像素,而图6为执行所有的检测之后所获得的结果,其中白色点为检测出的内部存在突变的像素。
步骤4:星空(或者天空)绘制
该步骤是针对大规模室外宏观场景的条件下,大规模室外宏观场景的天空光的背景需要进行模拟和绘制,是宏观大规模三维场景的背景。这一步骤是可选项,既可以执行,也可以跳过(如果天空背景对于整个三维场景并不重要时)。三维场景中的星空一般用环境纹理或者无穷远处的亮点来表现,绘制时不写入有效的深度信息,但是需要执行深度测试以确保星空不会遮挡场景中的其他物体。星空本身属于自发光对象,既可以绘制到几何缓冲区的自发光缓冲区中,也可以作为一个单独的绘制步骤***到延迟着色流程的几何绘制操作和着色操作之间,直接将星空背景的发光强度写入颜色缓冲区,本***采用后一种做法。最终星空或者天空的色彩和深度信息分别输出到用于显示的屏幕缓冲区中,屏幕缓冲区分别包含颜色缓冲和深度缓冲。
步骤5:大气散射和天空光计算
该步骤对应的就是在延迟着色模式中的第二阶段,即真正的光照计算和着色阶段。本步骤的输入数据既有多重采样几何缓冲区的数据,又有单采样几何缓冲区中的数据,执行称为复合的多重采样的光照计算和着色阶段,所谓复合的多重采样是指在着色器中处理的像素,既有采用多重采样方式进行光照计算的像素,也有采用单采样方式进行光照计算的像素。
多重采样的原理如图7所示,当图元的一部分覆盖了像素中的子采样点时,则会执行片元着色器(Fragment shader或者像素着色器Pixel Shader),片元着色器的执行不是以子采样点为单位,也就是说不管有多个子采样点,对于每个图元,这个像素只执行一次片元着色器。当颜色缓冲区中这些子采样点,填充了所有绘制的图元的颜色时,将取平均值计算最终这个像素的颜色,这个颜色将是唯一值。
本发明的特殊之处在于,本发明在此前的步骤3中进行了多重采样检测,并由此获得了多重采样标记缓冲区,在本步骤中,本发明读取标记缓冲区中的内容,并以此作为是否执行多重采样光照计算的依据。也就是在本光照计算和着色阶段,对绘制的每个多边形覆盖到的每个像素位置只产生一份像素的色彩数据(或者称为片元的色彩数据),只有深度信息和覆盖率信息需要对每个采样点(一个像素中会包含多个采样点)分别计算。由于多重采样的低三位分别表示该像素需要执行多重采样光照。本光照计算阶段可以灵活地根据光照算法的特征舍弃某些检查的结果,例如某个光照算法的计算结果与像素的空间位置无关,只与法向和材质有关,那么使用这一光照算法时,就可以只检查法向和材质对应的判定位,舍弃深度的判定位。使用该策略可以进一步减少需要执行多重采样光照的像素数,提高性能。针对需要执行多重采样光照的像素,则其使用从多重采样几何缓冲区中的数据对多个采样点计算光照,在像素着色器中执行光照计算的模型采用带有大气散射的光照模型为(Eric Bruneton and Fabrice Neyret.“Precomputed atmospheric scattering”.In:Computer Graphics Forum,2008:1079–1086.),最终将多个采样点计算出的光照进行加权平均或者其他平均或者滤波方式处理,得到该像素的颜色和深度信息。针对需要执行单采样光照的像素,则其使用从单采样几何缓冲区中的数据对单个像素计算光照,在像素着色器中执行光照计算的模型采用与多采样相同的模型,最终计算出该像素点的颜色和深度信息。两者计算出的所有像素的颜色和深度信息输出到颜色和深度缓冲区中,以用于最终的显示输出。
步骤6:非实体效果
泛指一切不包含在其他三类当中的、不以三维网格做为表现形式的对象。例如粒子效果(降雨、降雪、粒子云)、后处理效果等。这一步骤是可选项,既可以执行,也可以跳过(如果整个三维场景中并不存在云、雨、雪等自然现象和对应效果时)。这类对象一般没有确定的边界,而且其本身也多以半透明的形式存在,往往不存在锯齿问题,可以不使用多重采样方式绘制以提高绘制效率。后处理效果直接操作已经绘制完成的图像,粒子效果则存在半透明粒子的混合问题。因此二者的绘制顺序都应该排在上述三种对象之后。一般来说粒子效果虽然没有具体的三维形状,但是粒子本身还是存在于三维场景的某个位置之中。因此粒子效果的绘制应当放在后处理效果之前。最终这些非实体的对象所绘制得到的色彩和深度信息分别输出到用于显示的颜色和深度缓冲区中。
Claims (9)
1.一种大规模宏观虚拟场景的绘制方法,其步骤为:
1)创建多重采样几何缓冲区;
2)绘制虚拟场景中的各种实体三维模型,并将绘制的结果存储到该多重采样几何缓冲区中;
3)对该多重采样几何缓冲区中的所有数据执行降采样以及多重采样检测,通过降采样得到的单采样数据保存在一单采样几何缓冲区,多重采样检测的结果存储到多重采样标记缓冲区中;其中,多重采样标记缓冲区用来标识延迟着色时需要进行多重采样处理的像素;进行多重采样检测的判定规则包括:a)法向突变规则,即如果一个像素内部的多个采样点中记录的法向不同,则认为该像素通过了多重采样检测,该像素需要执行多重采样光照计算;b)材质突变规则,即如果一个像素内部的多个采样点中记录的材质编号不同,则该像素需要执行多重采样光照计算;c)深度突变规则,即如果一个像素内部的多个采样点中记录的深度最小值和最大值差异大于设定阈值,则认为该像素需要执行多重采样光照计算;
4)对该虚拟场景中的像素进行光照计算和着色;其中,如果像素位置在所述多重采样标记缓冲区中被标记,则根据该多重采样几何缓冲区中的数据对该像素执行多重采样光照计算,否则根据单采样几何缓冲区中的数据对像素执行单采样光照计算。
2.如权利要求1所述的方法,其特征在于,所述多重采样几何缓冲区包括漫反射率缓冲区、法向缓冲区、自发光强度缓冲区、材质缓冲区、深度缓冲区和多重采样标记缓冲区。
3.如权利要求1或2所述的方法,其特征在于,步骤2)中,绘制完实体三维模型后,绘制该虚拟场景中其光照具有折射效果的三维对象,并将绘制结果保存到所述多重采样几何缓冲区中;步骤3)之后进行星空或天空作为虚拟场景的背景的对象的绘制,将星空或天空的颜色和深度信息输出到屏幕缓冲区,然后将步骤4)计算的像素的颜色信息和深度信息输出到该屏幕缓冲区,以用于最终的显示输出;步骤4)之后,对该虚拟场景中的非实体进行绘制,其颜色和深度信息也输出到屏幕缓冲区。
4.如权利要求1或2所述的方法,其特征在于,所述多重采样几何缓冲区的分辨率是屏幕分辨率的n倍,n是多重采样的倍数。
5.如权利要求1所述的方法,其特征在于,所述降采样方法为:将多重采样的数据通过加权平均的方法降为单采样数据。
6.如权利要求1或5所述的方法,其特征在于,所述步骤3),多重采样检测过程中先利用几何信息计算出像素颜色,再对颜色进行加权平均。
7.如权利要求1或2所述的方法,其特征在于,所述多重采样标记缓冲区是一张与屏幕等大的纹理图像,该纹理图像每个像素的格式是8位无符号整数,其中每一像素的低三位分别表示该像素根据3条规则进行多重采样检测的判定结果。
8.如权利要求1所述的方法,其特征在于,所述单采样几何缓冲区包括漫反射率缓冲区、法向缓冲区、自发光强度缓冲区、材质缓冲区、深度缓冲区,所述单采样几何缓冲区的分辨率与屏幕分辨率一致。
9.一种大规模宏观虚拟场景的绘制***,其特征在于,包括多重采样几何缓冲区、单采样几何缓冲区、实体三维模型绘制模块、降采样及多重采样检测模块和光照计算与着色模块;其中,
实体三维模型绘制模块,用于绘制虚拟场景中的实体三维模型,并将绘制的结果存储到该多重采样几何缓冲区中;
降采样及多重采样检测模块,用于对该多重采样几何缓冲区中的数据执行降采样,同时对该多重采样几何缓冲区进行多重采样检测,并将得到的单采样数据保存在一单采样几何缓冲区,将多重采样检测结果保存到一多重采样标记缓冲区中;其中,多重采样标记缓冲区用来存储标识延迟着色时需要进行多重采样处理的像素;进行多重采样检测的判定规则包括:a)法向突变规则,即如果一个像素内部的多个采样点中记录的法向不同,则认为该像素通过了多重采样检测,该像素需要执行多重采样光照计算;b)材质突变规则,即如果一个像素内部的多个采样点中记录的材质编号不同,则该像素需要执行多重采样光照计算;c)深度突变规则,即如果一个像素内部的多个采样点中记录的深度最小值和最大值差异大于设定阈值,则认为该像素需要执行多重采样光照计算;
光照计算与着色模块,用于对该虚拟场景中的像素进行光照计算和着色;其中,如果像素位置在所述多重采样标记缓冲区中被标记,则根据该多重采样几何缓冲区中的数据对该像素执行多重采样光照计算,否则根据单采样几何缓冲区中的数据对像素执行单采样光照计算。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611234112 | 2016-12-28 | ||
CN2016112341129 | 2016-12-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106952328A CN106952328A (zh) | 2017-07-14 |
CN106952328B true CN106952328B (zh) | 2019-11-19 |
Family
ID=59466932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710086784.8A Active CN106952328B (zh) | 2016-12-28 | 2017-02-17 | 一种大规模宏观虚拟场景的绘制方法与*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106952328B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108022283A (zh) * | 2017-12-06 | 2018-05-11 | 北京像素软件科技股份有限公司 | 雨水模拟方法、装置及可读存储介质 |
CN109887078B (zh) * | 2019-03-12 | 2023-04-07 | 阿波罗智联(北京)科技有限公司 | 天空绘制方法、装置、设备和介质 |
CN110908510B (zh) * | 2019-11-08 | 2022-09-02 | 四川大学 | 一种倾斜摄影建模数据在沉浸式显示设备中的应用方法 |
CN111798365B (zh) * | 2020-06-12 | 2023-09-01 | 完美世界(北京)软件科技发展有限公司 | 深度抗锯齿数据读取方法、装置、设备和存储介质 |
CN112052864B (zh) * | 2020-10-20 | 2024-06-04 | 网易(杭州)网络有限公司 | 一种图像绘制方法、装置、电子设备及可读存储介质 |
CN113223132B (zh) * | 2021-04-21 | 2022-05-17 | 浙江大学 | 基于反射分解的室内场景虚拟漫游方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500463A (zh) * | 2013-10-17 | 2014-01-08 | 北京大学 | 一种gpu上多层形状特征融合的可视化方法 |
CN104183023A (zh) * | 2014-07-25 | 2014-12-03 | 天津多微信息技术有限公司 | 一种分布式虚拟环境中多场景图的构建方法 |
CN104680581A (zh) * | 2015-03-05 | 2015-06-03 | 西安电子科技大学 | 三维环境中的建筑物体选择方法 |
CN105957132A (zh) * | 2016-04-21 | 2016-09-21 | 北京大学 | 包含高度复杂绘制元素的三维场景高性能绘制优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012159640A1 (en) * | 2011-05-20 | 2012-11-29 | Dream Chip Technologies Gmbh | Method for transmitting digital scene description data and transmitter and receiver scene processing device |
-
2017
- 2017-02-17 CN CN201710086784.8A patent/CN106952328B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500463A (zh) * | 2013-10-17 | 2014-01-08 | 北京大学 | 一种gpu上多层形状特征融合的可视化方法 |
CN104183023A (zh) * | 2014-07-25 | 2014-12-03 | 天津多微信息技术有限公司 | 一种分布式虚拟环境中多场景图的构建方法 |
CN104680581A (zh) * | 2015-03-05 | 2015-06-03 | 西安电子科技大学 | 三维环境中的建筑物体选择方法 |
CN105957132A (zh) * | 2016-04-21 | 2016-09-21 | 北京大学 | 包含高度复杂绘制元素的三维场景高性能绘制优化方法 |
Non-Patent Citations (2)
Title |
---|
"3D Texture Mapping in Multi-view Reconstruction";Zhaolin Chen 等;《ISVC 2012》;20121231;第359-371页 * |
"基于OpenGL的地图渲染引擎设计与实现";徐泽骅 等;《地理信息世界》;20151231;第22卷(第6期);第32-36页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106952328A (zh) | 2017-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106952328B (zh) | 一种大规模宏观虚拟场景的绘制方法与*** | |
CN111508052B (zh) | 三维网格体的渲染方法和装置 | |
Woo et al. | A survey of shadow algorithms | |
CN102096941B (zh) | 虚实融合环境下的光照一致性方法 | |
CN114581589A (zh) | 图像处理方法及相关装置 | |
US9582929B2 (en) | Dynamic skydome system | |
CN107452048A (zh) | 全局光照的计算方法及装置 | |
McLaren et al. | Visualisation of digital terrain models: techniques and applications | |
CN111784833A (zh) | 基于WebGL的洪水演进态势三维动态可视化展示方法 | |
CN113806654A (zh) | 一种基于地理信息的虚拟空间*** | |
Venceslas et al. | Real time rendering of atmospheric scattering and volumetric shadows | |
Trembilski et al. | Surface-based efficient cloud visualisation for animation applications. | |
Nishita et al. | Modeling and rendering of various natural phenomena consisting of particles | |
Nakamae et al. | Compositing 3D images with antialiasing and various shading effects | |
KR101208826B1 (ko) | 깊이 텍스처의 등고선을 기반으로 한 실시간 다각형 앰비언트 오클루전 방법 | |
Nilsson | 3D Cloud Visualization In Real-Time | |
Kolivand | Shadow and sky color rendering technique in augmented reality environments | |
Pereira et al. | Array-tracing-a middleware to provide ray tracing capabilities to augmented reality libraries | |
Kol | Real-time Cloud Rendering on the GPU | |
Ueng et al. | Interpolation and visualization for advected scalar fields | |
KR101210796B1 (ko) | 깊이 텍스처를 이용한 실시간 다각형 앰비언트 오클루전 방법 | |
Koo et al. | An efficient point rendering using octree and texture lookup | |
Konttinen et al. | Real-time illumination and shadowing by virtual lights in a mixed reality setting | |
Stojanovic et al. | Comparison of advanced and standard real-time 3D rendering methods for interactive landscapes (Short paper version) | |
Lai et al. | An Effective Algorithm Research of Scenario Voxelization Organization and Occlusion Culling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |