CN102915563A - 三维网格模型透明绘制的方法及其系统 - Google Patents
三维网格模型透明绘制的方法及其系统 Download PDFInfo
- Publication number
- CN102915563A CN102915563A CN2012103298757A CN201210329875A CN102915563A CN 102915563 A CN102915563 A CN 102915563A CN 2012103298757 A CN2012103298757 A CN 2012103298757A CN 201210329875 A CN201210329875 A CN 201210329875A CN 102915563 A CN102915563 A CN 102915563A
- Authority
- CN
- China
- Prior art keywords
- chained list
- unit
- texture
- sheet
- grid model
- 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.)
- Pending
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本发明适用于计算机绘图技术领域,提供了一种三维网格模型透明绘制的方法及其系统,所述方法包括如下步骤:A、在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;B、将所有的所述链表根据所述片元的深度进行排序;C、对已排序的所述片元的属性信息进行合成,获得所述每个像素的颜色值;D、将所述每个像素位置上的所述像素的颜色值复制到显示缓冲区,在显示窗口显示所述三维网格模型。借此,本发明提高了三维网格模型透明绘制的精度和速度。
Description
技术领域
本发明涉及计算机绘图技术领域,尤其涉及一种三维网格模型透明绘制的方法及其系统。
背景技术
计算机图形图像绘制技术是指一种使用数学算法将二维或三维图形转化为计算显示器的栅格形式的技术。该技术大量应用在3D游戏和动画,计算机辅助设计,电影特效,数字医学等领域。三维空间的几何模型简称为三维模型,主要有线框模型、表面模型和实体模型三种表示方法,其中表面模型运用最为广泛,网格模型是表面模型的一种常用形式。
传统的网格绘制技术中,都是基于光栅化的方法,先把网格的所有三角形投影到视平面然后根据屏幕的分辨率进行离散化得到片元,经过一定的判断条件,最终得到屏幕上每个像素的像素值。由于使用图形学硬件绘制的过程中,绘制的顺序不是虚拟照相机观察的方向从前往后或从后往前按顺序进行绘制,而是一种乱序的绘制。对于不透明的网格绘制,在这个过程中使用z缓冲区(z-buffer)来记录片元距离视平面的距离,取最靠近视平面的片元作为屏幕的像素输出,以此来解决网格之间的遮挡问题。而对于透明或半透明的网格,使用传统图形硬件基于乱序的绘制会引起透明网格多个片元合成计算到屏幕最终像素的合成顺序不正确,最终导致绘制出的网格之间的层次关系不正确。
现有处理网格透明绘制上常见的是使用逐层深度剥离(Depth Peeling)以及在此基础上改进的多种增强深度剥离的方法,如“在高深度复杂性场景中绘制透明面的系统和方法”中的混合型层剥离和连贯层剥离两种方法以及“同时遮蔽透明度图形处理”、“倍增遮蔽透明度图形处理”中使用多采样技术多次迭代绘制合成透明效果。
深度剥离对网格数据根据当前视角的深度,从近到远或从远到近逐层分离,这种方案缺点在于透明显示的精度不足,有固定的深度层数限制,如果很多三角网格的片断在同一层,深度剥离的效果很差,导致绘制的透明效果时显示不出网格之间的层次结构;另外,当处理大规模的网格数据时,由于使用传统图形渲染管线,每次剥离需要对传统的Z深度缓存区及模版缓存区进行读写,所以每次只能剥离1-2层,完成最终的绘制需要多次剥离和绘制操作,绘制速度慢,效率低。
即使增强的深度剥离技术如“混合型层剥离”及“连贯层剥离”先对一些面进行预排序或对模型空间预排序,减少乱序的面的数量,但仍不能避免使用传统图形渲染管线及传统的图形缓冲区进行绘制来实现深度剥离这一基本步骤,因此每次只能剥离少数面,需要多次剥离才能达到理想的效果,所以效率仍不能满足需求。而使用多采样技术的透明效果绘制,使用多采样技术提高了深度剥离面的数量和效率,但每次剥离仍然对面的数量有限制,受限于图形硬件对多采样技术中每个像素多采样数量,仍然需要多次迭代绘制及缓冲区交换数据才能得到最终结果,对于复杂深度的网格模型的透明绘制,效率依然不能满足需求。
综上可知,现有的三维网格模型透明绘制的技术在实际使用上,显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种三维网格模型透明绘制的方法及其系统,以提高三维网格模型透明绘制的精度和速度。
为了实现上述目的,本发明提供一种三维网格模型透明绘制的方法,所述方法包括如下步骤:
A、在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;
B、将所有的所述链表根据所述片元的深度进行排序;
C、对已排序的所述片元的属性信息进行合成,获得所述每个像素的颜色值;
D、将所述每个像素位置上的所述像素的颜色值复制到显示缓冲区,在显示窗口显示所述三维网格模型。
根据所述的方法,所述步骤A包括:
A1、对所述三维网格模型的绘制进行初始化;
A2、输入所述三维网格模型,并进行光栅化处理,获得所述每个像素的位置的片元的数据;
A3、对每个所述片元进行并行处理,使每个所述片元存储在共享存储纹理内;
A4、查看所述片元进行并行处理的结果,并根据剩余的所述片元的数量进行相应的处理。
根据所述的方法,所述步骤A1包括:
A11、将每个像素对应的存储在所有所述片元的链表共享的存储区域;
A12、建立一个与所述显示窗口分辨率一致的表头二维纹理;
A13、建立一个与所述显示窗口分辨率一致的信号量二维纹理;
A14、初始化所述三维网格模型的全局片元计算器。
根据所述的方法,所述步骤A3包括:
A31、根据当前所述像素位置,读取所述信号量二维纹理对应位置的数值,并根据所述数值执行相应的操作;
A32、根据当前所述片元对应的像素位置和所述全局片元计算器的读数,将所述片元的相关信息以及在所述片元在当前像素位置上链表的第一元素在所述链表共享的存储区域的位置信息存储在所述链表共享的存储区域;
A33、修改所述表头二维纹理,在对应的像素位置上改写为所述链表共享的存储区域的所述片元的位置信息;
A34、将所述信号量置为0,开放对当前所述链表的控制;
A35、将所述片元从图形处理中去除。
根据所述的方法,在所述步骤A1中对三维网格模型的绘制区域采用图形处理器中的纹理进行存储;
在所述步骤A3中使用片断着色器对每个所述片元进行并行处理;
在所述步骤A4中查询所述片断着色器处理结果,在有剩下未被擦除的片元时,增加所述共享存储纹理的存储空间;在没有剩下未被擦除的片元时,将所有所述片元存储到对应的像素位置的链表内。
根据所述的方法,所述链表共享的存储区域采用图形处理器中的纹理进行存储;所述链表共享的存储区域包括数据部分和指针部分;
所述片元的相关信息包括:所述片元的颜色、不透明度或者深度。
根据所述的方法,所述步骤B包括:
B1、使用所述片断着色器并行遍历每个像素位置上对应的链表,并存储在一个临时缓存数组中;
B2、使用所述片断着色器对每个链表的临时缓存数组中的片元根据其深度进行排序。
根据所述的方法,所述步骤B1包括:
B11、所述片断着色器读取所述每个像素位置链表头部的表头二维纹理,获得所述链表的头部信息;
B12、为所述每条链表新创建一个临时片元存储区,存储每个链表的所有片元;
B13、依次读取每个所述链表中元素,将所述元素中的片元数据复制到所述临时片元存储区中。
根据所述的方法,所述链表和/或固定数组保存其当前位置上的片元数据时将基于相同像素位置的片元作为一个片元集合保存。
为了实现本发明的另一发明目的,本发明还提供了一种用于实现上述任一项所述的方法的系统,所述系统包括:
保存模块,用于在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;
排序模块,用于将所有的所述链表根据所述片元的深度进行排序;
获取模块,用于对已排序的所述片元的属性信息进行合成,获得所述每个像素的颜色值;
显示模块,用于将所述每个像素位置上的所述像素的颜色值复制到显示缓冲区,在显示窗口显示所述三维网格模型。
本发明通过使用了可动态调整大小的链表来存储每个像素位置上的片元数据,提高了三维网格模型透明显示时的精度;另外,通过使用片断着色器对片元进行并行存储、排序及合成的方法,提高了绘制的速度,也增加了数据的吞吐量,在输入大规模的网格数据时,仍能保持绘制的实时性。
附图说明
图1是本发明第一实施例提供的三维网格模型透明绘制的系统结构示意图;
图2是本发明第二实施例提供的三维网格模型透明绘制的方法;
图3A是本发明一个实施例提供的肝脏及周边血管网格模型透明绘制前效果图;
图3B是本发明一个实施例提供的肝脏及周边血管网格模型透明绘制后效果图;
图4A是本发明一个实施例提供的龙模型透明绘制前效果图;
图4B是本发明一个实施例提供的龙模型透明绘制后效果图;
图5A是本发明一个实施例提供的女神模型透明绘制前效果图;
图5B是本发明一个实施例提供的女神模型透明绘制后效果图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参见图1,在本发明的第一实施例中,提供了三维网格模型透明绘制的系统100,所述系统包括:
保存模块10,用于在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;
排序模块20,用于将所有的所述链表根据所述片元的深度进行排序;
获取模块30,用于对已排序的所述片元的属性信息进行合成,获得所述每个像素的颜色值;
显示模块40,用于将所述每个像素位置上的所述像素的颜色值复制到显示缓冲区,在显示窗口显示所述三维网格模型。
在该实施中,提出了一种三维网格模型透明绘制的系统100,利用该三维网格模型透明绘制的系统100进行三维网格模型透明绘制,无需多次迭代绘制,无需进行深度剥离,解决现有技术中三维网格模型透明绘制精度不足、效率低下的问题。与基于深度剥离的方法不同的是,本发明第一实施例提供的三维网格模型透明绘制的系统100不是基于深度剥离的思想,不必进行剥离操作,而是一次把所有的片元排序后得到正确的合成顺序,然后一次绘制即可得最终结果。因此,不需要对深度、模版等传统缓冲区的多次读写操作,提高了绘制的效率。本发明的多个实施例完全基于新一代的OpenGL 4.0及以上版本(如OpenGL 4.1、OpenGL4.2等)可编程管线及扩展来实现。透明绘制精度的提高使用了新的图形硬件及新的图形接口OpenGL 4.0及以上版本的支持,动态修改纹理数据,使用了可动态调整大小的链表来存储片元,因此没有对透明面的层数限制。三维网格模型透明绘制效率的提高通过减少调用图形硬件绘制的次数,使用新的硬件与软件支持,对链表排序后直接对链表中的片元合成后一次绘制完成。另一方面,该实施例中的透明绘制是指网格模型在被计算机绘制时,光线可以透过这个网格模型,可以观察到被网格模型表面遮掩的物体。使用透明绘制的方法,可以方便用户观察到物体内部的信息,确定内部物体在当前网格模型的位置关系。
参见图2,在本发明的第二实施例中,提供一种三维网格模型透明绘制的方法,所述方法包括如下步骤:
步骤S201中,在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;该步骤由保存模块10实现;
步骤S202中,将所有的所述链表根据所述片元的深度进行排序;该步骤由排序模块20实现;
步骤S203中,对已排序的所述片元的属性信息进行合成,获得所述每个像素的颜色值;该步骤由获取模块30实现;
步骤S204中,将所述每个像素位置上的所述像素的颜色值复制到显示缓冲区,在显示窗口显示所述三维网格模型;该步骤由显示模块40实现。
在该实施例中,所述步骤S201中,在绘制区域每个像素的位置都使用一个链表保存当前位置上的片元数据。网格的片元数据是指由三维世界的几何模型以视角方向投影到二维视平面后光栅化离散为一定分辨率的像素块,与常规的二维图片的像素块不同,这种片元数据不仅存储颜色属性(RGBA值),还存储着深度信息。片元的深度是指当前片断在当前视角方向的深度。而链表是指一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。链表相对于固定数组的优势在于可以在程序运行时动态控制结点的数量,而固定数组必须在程序编译运行前就要固定所能存储数据的多少。参见图3A~图5B显示采用本发明提供的方法及系统对多种模型进行透明绘制后与透明绘制前的效果对比。
具体的,在所述步骤S202中,对所有链表根据片元的深度进行排序;
在所述步骤S203中,对已排序的片元的颜色进行合成,最终得到每个像素的颜色值。根据每个链表中的片元的颜色、不透明度等属性,使用片断着色器将已根据深度排序好的片元以从远往近或从近到远的顺序进行叠加合成,得到该链表对应像素位置上像素的颜色值。每个链表的最终颜色值的计算过程,基于片元的Alpha通道的数值进行混合,假设处于同一像素位置上的片元已根据当前视角的深度从后到前排序,遵循以下计算公式可得到该链表的最终颜色:
colors+1=colors+Fs×(1-colors·Alpha)
在所述步骤S204中,将每个像素位置上最终的像素颜色值复制到显示缓冲区,在屏幕上显示出来。由此,可以获得三维网格模型透明绘制的效果图。
在本发明的第三实施例中,所述步骤S201包括:
A1、对所述三维网格模型的绘制进行初始化;该步骤可由保存模块10中的初始化子模块实现;
A2、输入所述三维网格模型,并进行光栅化处理,获得所述每个像素的位置的片元的数据;该步骤可由保存模块10中的输入子模块实现;
A3、对每个所述片元进行并行处理,使每个所述片元存储在共享存储纹理内;该步骤可由保存模块10中的并行处理子模块实现;
A4、查看所述片元进行并行处理的结果,并根据剩余的所述片元的数量进行相应的处理;该步骤可由保存模块10中的查看子模块实现。
具体的,所述步骤A1包括:
A11、将每个像素对应的存储在所有所述片元的链表共享的存储区域;
A12、建立一个与所述显示窗口分辨率一致的表头二维纹理;
A13、建立一个与所述显示窗口分辨率一致的信号量二维纹理;
A14、初始化所述三维网格模型的全局片元计算器。
而所述步骤A32包括:
A31、根据当前所述像素位置,读取所述信号量二维纹理对应位置的数值,并根据所述数值执行相应的操作;
A32、根据当前所述片元对应的像素位置和所述全局片元计算器的读数,将所述片元的相关信息以及在所述片元在当前像素位置上链表的第一元素在所述链表共享的存储区域的位置信息存储在所述链表共享的存储区域;
A33、修改所述表头二维纹理,在对应的像素位置上改写为所述链表共享的存储区域的所述片元的位置信息;
A34、将所述信号量置为0,开放对当前所述链表的控制;
A35、将所述片元从图形处理中去除。
优选的,在所述步骤A1中对三维网格模型的绘制区域采用图形处理器中的纹理进行存储;
在所述步骤A3中使用片断着色器对每个所述片元进行并行处理;
在所述步骤A4中查询所述片断着色器处理结果,在有剩下未被擦除的片元时,增加所述共享存储纹理的存储空间;在没有剩下未被擦除的片元时,将所有所述片元存储到对应的像素位置的链表内。
优选的,所述链表共享的存储区域采用图形处理器中的纹理进行存储;所述链表共享的存储区域包括数据部分和指针部分;所述片元的相关信息包括:所述片元的颜色、不透明度或者深度。
在该实施例中的链表使用OpenGL读写图形处理器(GPU)中的纹理来进行模拟。通过下述步骤实现三维网格模型透明绘制的方法的,首先执行步骤S201的操作,具体包括:
a)初始化。
①每个像素对应的存储片元的链表使用一个所有链表一起共享的存储区域,这个区域使用图形处理器中的纹理进行存储,下面称为“共享存储纹理”,为下面通过OpenGL4.0或以上版本的可编程管线中的片断着色器(FragmentShader)对链表元素读取、修改做准备。
这个共享的存储区域的每个单元都由两部分组成:第一部分是数据部分,存储片元的颜色、不透明度或者深度等信息。第二部分是指针部分,存储的是与该片元同一像素位置上的前一个被处理的片元在共享存储纹理的位置。共享存储纹理的大小是可变的,能根据片元的数量动态增加存储区域的大小。每次存储区域的动态增加,是通过使用着色器后统计没有存入链表的片元数量来确定的,如果存储空间是足够的,经过片断着色器处理后剩下的片元数量为0,否则不为0,为仍未存储进链表的片元的数量。
②建立一个与当前显示窗口分辨率一致的表头二维纹理,纹理中的每个单元记录的是当前单元对应的像素位置的链表头部,这个头部包含了一个指针,指向的是当前像素位置上链表的第一个元素在共享存储纹理的位置。
③建立一个与当前显示窗口分辨率一致的信号量二维纹理,记录的是当前链表是否有其它线程在操作,决定了是否能在当前线程对当前链表进行新增结点操作,防止多个线程对同一链表同时进行操作导致的冲突。初始化该纹理,全置为0。
④初始化全局片元计数器,用于记录当前所有已经被处理的片元的数量,初始值为0。
b)输入网格模型,将网格投影到二维视平面上,并进行光栅化,得到离散的像素块,即片元。所述网格模型可以由透明、半透明或不透明的网格组成。
c)使用片断着色器,对每个片元进行并行处理,使其存储在共享存储纹理内,每个片元的处理都是独立的。步骤如下:
①根据当前的像素位置,读取信号量二维纹理对应位置的数值,如果当前信号量为1,说明有其它线程在操作当前链表,则进行等待,等待信号量为0时执行下一步操作。如果当前信号量为0,则改写当前信号量,置其为1,防止其它线程操作当前链表。
②根据当前片元对应的像素位置和全局片元计数器的读数,把片元的颜色、不透明度、深度等信息以及在当前像素位置上链表的第一个元素在共享存储纹理的位置一并在共享存储纹理存储起来。
③修改步骤S201的a)的②步骤存储的表头二维纹理,在对应的像素位置上改写为刚才在共享存储纹理存储的片元的位置。
④将当前信号量置为0,放开对当前链表的控制,允许其它线程操作当前链表。
⑤如果上述①②③④操作都成功,则把该片元从图形处理器的流水线中擦除;否则,说明共享存储纹理空间不足,则不擦除该片元。
d)查询片断着色器处理结果,获取剩下未被擦除的片元的数量,如果数量不为0,说明共享存储纹理的空间不足,增加共享存储纹理空间后,返回到步骤S201的a)。如果数量为0,说明已经成功把所有片元都处理完毕,所有片元都存储进对应像素位置的链表内,跳转到步骤S202。
在本发明的第四实施例中,所述步骤S202包括:
B1、使用所述片断着色器并行遍历每个像素位置上对应的链表,并存储在一个临时缓存数组中;该步骤可由排序模块20中的片断着色器实现;
B2、使用所述片断着色器对每个链表的临时缓存数组中的片元根据其深度进行排序;该步骤可由排序模块20中的片断着色器实现。
所述步骤B1包括:
B11、所述片断着色器读取所述每个像素位置链表头部的表头二维纹理,获得所述链表的头部信息;
B12、为所述每条链表新创建一个临时片元存储区,存储每个链表的所有片元;
B13、依次读取每个所述链表中元素,将所述元素中的片元数据复制到所述临时片元存储区中。
在上述多个实施例中,所述链表和/或固定数组保存其当前位置上的片元数据时将基于相同像素位置的片元作为一个片元集合保存。
在该实施例中,步骤S202,对所有链表根据片元的深度进行排序;具体的操作包括:
a)使用片断着色器并行遍历每个像素位置上对应的链表,并存储在一个临时缓存数组中。
遍历的过程如下:①在片断着色器中读取步骤S201的a)的②步骤中的记录每个像素位置链表头部的表头二维纹理,得到链表的头部信息,即链表的第一个元素在共享存储纹理的位置。
②为每条链表新创建一个临时片元存储区,存储每个链表的所有片元。
③读取每个链表第一个元素,将元素中的片元数据(颜色、不透明度、深度)复制到临时片元存储区中,根据元素的指针,获得下一个元素的访问位置,读取下一个元素,以此类推读取整个链表。链表读取完毕后,跳转到步骤S202的b)。
b)使用片断着色器对每个链表的临时缓存数组中的片元根据其深度进行排序,使得每个链表中的片元都是以从远到近或从近到远的方式进行排列的。排序算法可以选择冒泡排序、桶排序、快速排序、堆排序、双调排序等方法。
在上述多个实施例中,可以包括以下的操作方式:
步骤S201使用链表保存片元时,将几个基于相同像素位置的片元作为一个片元集合,也称为页,保存在共享存储纹理,链表的结构变为:每个元素由一个页及指向下一个页的指针构成。此后遍历片元也是在此基础上从每次遍历一个片元变为每次遍历一个页。
步骤S202中,在某种对绘制精度要求不高的情况下,使用固定数组代替链表保存片元。
步骤S203中,在精度要求提高的情况下,可以以高于显示窗口分辨率的方法对片元进行采样,并保存在以此种高分辨率的像素排列对应的链表中。此时,步骤S201的a)的②中建立的用于记录每个链表第一个元素位置的表头二维纹理的分辨率也与此种高分辨率一致。
步骤S204中,在图形硬件支持和OpenGL扩展下,可以使用GPU的全局显存中的数组代替步骤S201中的纹理。
上述的三维网格模型透明绘制的系统100的多个模块可以为软件单元,硬件单元或软硬件结合单元。
参见图4,在本发明的第六个实施例中,对于一个透明的网格模型,依照本发明采用如下技术步骤进行绘制:
步骤S201中,在绘制区域每个像素的位置都使用一个链表保存对应位置上的网格模型的片元数据。具体的实施方法如下:
a)定义链表的数据结构,链表由表头和结点组成。链表的结点包含了两部分:片元数据(即片元的颜色、不透明度、深度等属性)和指针(即下一个结点的位置)。链表的表头是一个指针,存储的是第一个结点在实际存储空间中的位置。显示窗口的每个像素位置都对应了一条链表,存储相应位置上的片元。使用OpenGL4.0或以上版本的接口在系统中申请三个纹理,即共享存储纹理、表头二维纹理和信号量二维纹理。表头二维纹理的大小设置为显示窗口的分辨率大小,即存储了每个像素位置上对应链表的表头。共享存储纹理存储的是所有链表的所有结点,其大小在算法运行过程中会根据绘制过程中链表的结点数量的增长动态增加大小。信号量二维纹理大小与显示窗口的分辨率大小一致,记录的是当前链表是否有线程在对其操作。
设置一个全局的片元计数器,记录当前所有已被处理的片元的数量,用于在处理片元过程中为每一个链表结点安排一个全局唯一的存储位置,初始化值为0。
b)通过OpenGL提供的接口,输入网格模型的信息,包括网格模型的顶点位置、法向量、颜色、不透明度等属性。使用OpenGL中内置的投影变换操作,将网格投影到二维视平面上,并进行光栅化,得到片元。
c)使用OpenGL提供的片断着色器,及OpenGL4.0及以后版本提供的运行在片断着色器中修改纹理的扩展操作,将片元存储在其对应像素位置的链表中,并通过全局片元计数器,更新每个链表表头。如果共享存储纹理的空间足够,在链表中存储了当前处理的片元后,擦除当前处理的片元,否则不擦除当前处理的片元。使用信号量二维纹理保证片断着色器对同一个链表的操作是串行执行的,避免多个线程同时对同一链表进行写操作导致的冲突。
d)查询片断着色器的处理结果,获取未擦除的片元数量。如果未擦除的片元的数量大于0,说明共享存储纹理的存储空间不足,需要为共享存储纹理重新分配更大的空间,跳转回步骤a)中。如果未擦除的片元数量为0,说明共享存储纹理存储空间足够,继续下面的步骤。
步骤S202中,对所有链表内的片元根据片元的深度进行排序。
a)使用OpenGL提供的片断着色器,访问表头二维纹理,获取每个链表的第一个结点在共享存储纹理中的位置。为每个链表建立一个临时存储数组,用于保存链表中所有片元的信息。根据得到的每个链表的第一个结点的位置,使用片断着色器访问共享存储纹理,得到结点的数据,将结点中的片元信息保存在临时存储数组中,并根据当前结点中的指针,获得下一个结点的位置,以此类推,可以遍历所有链表中的所有结点。
b)对每个链表的临时存储数组根据片元的深度信息进行排序,可以选择从后到前或从前到后的顺序,排序的算法可以使用冒泡排序、桶排序、快速排序、堆排序、双调排序等。
步骤S203中,对临时存储数组中已排序的片元,根据片元的颜色、不透明度,以当前视角方向从后到前或从前到后的方法进行颜色合成。遵循以下计算公式可得到每条链表中所有片元的最终合成颜色:
colors+1=colors+Fs×(1-colors·Alpha)
步骤S204中,使用OpenGL提供的接口,将把每个链表片元的最终合成颜色值复制到显示缓冲区,并显示在屏幕的显示窗口中。
输入数据1为人体上腹部肝脏及周边血管网格模型,网格的顶点数量为244166个,三角形数量为688472个。
输入数据2、3为斯坦福大学计算机图形学实验室公开的Dragon和Lucy模型,以便用于与其它透明绘制方法进行性能比较。在显示窗口分辨率512*512下,可得到表1各算法的性能比较。由表1可以得到以下结论,本发明中的透明绘制方法相对于传统的深度剥离及其增强算法在性能上大大提高,可以保证在大规模网格数据输入时仍能保持实时性。
表1多种不同透明绘制算法性能比较
在本发明的第七实施例中,提供了使用页的方式组织片元。本实施例提供的绘制方法是第六实施例的变形方法,将多个片元组成一个片元的集合,称为“页”。链表的结构变为:每个结点存储的是一个页及下一个页的指针(即下一个页在共享存储纹理中的实际存储位置),使用此方法能在常规实施方法的基础上提高读写链表中数据的效率。
优选的,可以采用上述实施例中步骤S201~步骤S204实现,具体的采用如下步骤进行绘制:
步骤S201中,在绘制区域每个像素的位置都使用一个链表保存对应位置上的网格模型的片元数据。具体的实施方法如下:
a)定义链表的数据结构,链表由表头和结点组成。链表的结点包含了两部分:数据部分(包含了一个组片元的集合,即一“页”,页中保存了每个片元的颜色、不透明度、深度等属性)和指针部分(即下一个结点的位置)。链表的表头是一个指针,存储的是第一个结点在实际存储空间中的位置。显示窗口的每个像素位置都对应了一条链表,存储相应位置上的片元。使用OpenGL4.0或以上版本的接口在系统中申请五个纹理,即共享存储纹理、链表指针纹理、表头二维纹理、信号量二维纹理、像素计数二维纹理。表头二维纹理的大小设置为显示窗口的分辨率大小,即存储了每个像素位置上对应链表的表头。共享存储纹理存储的是所有链表的所有结点中的数据部分,其大小在算法运行过程中会根据绘制过程中链表的结点数量的增长动态增加大小。链表指针纹理存储的是所有链表中所有结点的指针部分,保存的是结点的数据部分在共享存储纹理中的实际位置。信号量二维纹理大小与显示窗口的分辨率大小一致,记录的是当前链表是否有线程在对其操作。像素计数二维纹理,是记录每个像素位置上已被处理的片元数量,用于根据每一页的片元数量来确定当前处理片元在页内的偏移地址。
设置一个全局的片元计数器,记录当前所有已被处理的片元的数量,用于在处理片元过程中为每一个链表结点安排一个全局唯一的存储位置,初始化值为0。
b)通过OpenGL提供的接口,输入网格模型的信息,包括网格模型的顶点位置、法向量、颜色、不透明度等属性。使用OpenGL中内置的投影变换操作,将网格投影到二维视平面上,并进行光栅化,得到片元。
c)使用OpenGL提供的片断着色器,及OpenGL4.0及以后版本提供的运行在片断着色器中修改纹理的扩展操作,将片元存储在其对应像素位置的链表中,并通过全局片元计数器,更新每个链表表头。如果共享存储纹理的空间足够,更新像素计数二维纹理,并在链表中存储了当前处理的片元后,擦除当前处理的片元,否则不擦除当前处理的片元。使用信号量二维纹理保证片断着色器对同一个链表的操作是串行执行的,避免多个线程同时对同一链表进行写操作导致的冲突。使用像素计数二维纹理保证每一个片元能正确地获取到页内的存储位置。
d)查询片断着色器的处理结果,获取未擦除的片元数量。如果未擦除的片元的数量大于0,说明共享存储纹理与链表指针纹理的存储空间不足,需要为它们重新分配更大的空间,跳转回步骤a)中。如果未擦除的片元数量为0,说明共享存储纹理与链表指针纹理存储空间足够,继续下面的步骤。
步骤S202中,对所有链表内的片元根据片元的深度进行排序。
a)使用OpenGL提供的片断着色器,访问表头二维纹理,获取每个链表的第一个结点的数据部分在共享存储纹理中的位置及每个链表的第一个结点的指针部分在链表指针纹理中的位置。为每个链表建立一个临时存储数组,保存链表中所有片元的信息。根据得到的每个链表的第一个结点数据部分的存储位置,使用片断着色器访问共享存储纹理,得到结点的数据,将结点中的片元信息保存在临时存储数组中,并读取链表指针纹理,获取当前结点的指针部分,获得下一个结点在共享存储纹理的位置,以此类推,以一次一页的方式读取多个片元,可以遍历所有链表中的所有结点,并提高读取的效率。
b)对每个链表的临时存储数组根据片元的深度信息进行排序,可以选择从后到前或从前到后的顺序,排序的算法可以使用冒泡排序、桶排序、快速排序、堆排序、双调排序等。
步骤S203中,对临时存储数组中已排序的片元,根据片元的颜色、不透明度,以当前视角方向从后到前或从前到后的方法进行颜色合成。遵循以下计算公式可得到每条链表中所有片元的最终合成颜色:
colors+1=colors+Fs×(1-colors·Alpha)
步骤S204中,使用OpenGL提供的接口,将把每个链表片元的最终合成颜色值复制到显示缓冲区,并显示在屏幕的显示窗口中。
在本发明的第八实施例中,可以采用变形方法——使用固定数组代替链表保存片元。此方法为第六实施例的简化方法,使用于一些场景及网格深度复杂度固定或简单的情况。本实施例使用固定数值代替链表来保存片元,数据结构相对于实施例1的方法进行了简化。本实施例采用上述实施例中步骤S201~步骤S204实现,具体的采用以以下步骤进行绘制:
步骤S201中,在绘制区域每个像素的位置都使用一个固定数组保存对应位置上的网格模型的片元数据。具体的实施方法如下:
a)定义数组的数据结构,数组由数组元素和下标组成。数组的元素存储片元数据(即片元的颜色、不透明度、深度等属性),元素以一种固定的顺序形式进行组织,确定当前元素的下标就可以访问该数组的元素。显示窗口的每个像素位置都对应了一个固定数组,存储相应位置上的片元。使用OpenGL4.0或以上版本的接口在系统中申请三个纹理,即固定数组三维纹理、数组下标二维纹理和信号量二维纹理。固定数组三维纹理的大小与显示窗口的分辨率大小及像素位置上的片元的最大数量有正相关的关系,其大小会在算法运行过程中会根据绘制过程中所有像素位置上的片元的最大数量的增长动态增加大小。数组下标二维纹理的大小与显示窗口的分辨率一致,记录的是当前像素位置上的固定数组中最新已存储片元的元素的下标。信号量二维纹理大小与显示窗口的分辨率大小一致,记录的是当前固定数组是否有线程在对其操作。
b)通过OpenGL提供的接口,输入网格模型的信息,包括网格模型的顶点位置、法向量、颜色、不透明度等属性。使用OpenGL中内置的投影变换操作,将网格投影到二维视平面上,并进行光栅化,得到片元。
c)使用OpenGL提供的片断着色器,及OpenGL4.0及以后版本提供的运行在片断着色器中修改纹理的扩展操作,根据数组下标二维纹理的指示,将片元存储在其对应像素位置的固定数组的对应下标中。如果固定数组三维纹理的空间足够,在固定数组中存储了当前处理的片元后,擦除当前处理的片元,否则不擦除当前处理的片元。使用信号量二维纹理保证片断着色器对同一个链表的操作是串行执行的,避免多个线程同时对同一链表进行写操作导致的冲突。
d)查询片断着色器的处理结果,获取未擦除的片元数量。如果未擦除的片元的数量大于0,说明固定数组三维纹理的存储空间不足,需要为固定数组三维纹理重新分配更大的空间,跳转回步骤a)中。如果未擦除的片元数量为0,说明固定数组三维纹理存储空间足够,继续下面的步骤。
步骤S202中,对所有固定数组内的片元根据片元的深度进行排序。
a)使用OpenGL提供的片断着色器,通过数组下标二维纹理获取当前固定数组中存有片元的元素的最大下标,得到固定数组的访问范围。访问固定数组三维纹理,为每个固定数组建立一个临时存储数组,用于保存固定数组中所有片元的信息。
b)对每个固定数组的临时存储数组根据片元的深度信息进行排序,可以选择从后到前或从前到后的顺序,排序的算法可以使用冒泡排序、桶排序、快速排序、堆排序、双调排序等。
步骤S203中,对临时存储数组中已排序的片元,根据片元的颜色、不透明度,以当前视角方向从后到前或从前到后的方法进行颜色合成。遵循以下计算公式可得到每个固定数组中所有片元的最终合成颜色:
colors+1=colors+Fs×(1-colors·Alpha)
步骤S204中,使用OpenGL提供的接口,将把步骤S203中,中的片元的最终合成颜色值复制到显示缓冲区,并显示在屏幕的显示窗口中。
在本发明的第九实施例中,其采用的变形方法——更精细的透明显示,高于显示窗口分辨率采样网格数据。本实施例在第六~第八实施例的基础上,使用OpenGL提供的多重采样技术,以高于显示窗口的分辨率采样数据,得到更精细的片元,在合成最终颜色的过程中,将多个链表或固定数组的最终合成颜色进行混合,得到显示窗口中像素的最终颜色值。
本方法在第六~第八实施例中的任一绘制方法中都可进行如下的改进步骤:
步骤S201中,在第六~第八实施例中,所有与显示窗口的分辨率相关的纹理的大小变为以显示窗口分辨率2n(n=1,2,3,4..)倍数的分辨率相关。
步骤S202中,在第六~第八实施例中的步骤S201的b)步骤改进为通过OpenGL的接口输入网格数据后,在光栅化的过程中以显示窗口分辨率2n(n=1,2,3,4..)倍数的分辨率进行光栅化,得到更精细的片元。
步骤S203中,在实施例第六~第八实施例中的步骤S203中,得到每个链表或每个固定数组的最终合成颜色之后,进行如下步骤改进:根据每个链表或固定数组所在的像素位置,可以得到显示窗口中每个实际像素与2n(n=1,2,3,4..)个链表或固定数组的最终合成颜色相关。对与每个实际像素关联的2n(n=1,2,3,4..)个链表或固定数组的最终合成颜色进行混合,得到显示窗口每个实际像素的最终颜色值。
在本发明的第十实施例中,采用GPU全局显存中的数组代替纹理存储数据。
本实施例在第六~第九实施例的基础上,使用OpenGL提供的扩展操作,将实施例第六~第九实施例中的纹理都变为GPU全局显存中的数组,但是数据的结构及组织方式没有发生改变。
本实施例在第六~第九实施例任一方法中都可进行如下的改进步骤:
步骤S201中,在第六~第九实施例的步骤S201的a)中,使用OpenGL 4.0或以上版本提供的接口,申请GPU全局显存中的数组,用于代替使用OpenGL4.0或以上版本的接口在系统中申请纹理来用于数据的存储。在第六实施例中,共享存储纹理、表头二维纹理和信号量二维纹理均被GPU显存中的数组代替,变为共享存储数组、表头二维数组和信号量二维数组。在第七实施例中,共享存储纹理、链表指针纹理、表头二维纹理、信号量二维纹理、像素计数二维纹理被共享存储数组、链表指针数组、表头二维数组、信号量二维数组、像素计数二维数组代替。在第八实施例中,固定数组三维纹理、数组下标二维纹理和信号量二维纹理被固定数组三维数组、数组下标二维数组和信号量二维数组代替。在第九实施例中,与第六~第八实施例的变化一致。
步骤S202中,在第六~第九实施例的步骤S201和步骤S202中,中的纹理的读写操作,被全局显存中数组的读写操作代替。
综上所述,本发明通过使用了可动态调整大小的链表来存储每个像素位置上的片元数据,提高了三维网格模型透明显示时的精度;另外,通过使用片断着色器对片元进行并行存储、排序及合成的方法,提高了绘制的速度,也增加了数据的吞吐量,在输入大规模的网格数据时,仍能保持绘制的实时性。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1.一种三维网格模型透明绘制的方法,其特征在于,所述方法包括如下步骤:
A、在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;
B、将所有的所述链表根据所述片元的深度进行排序;
C、对已排序的所述片元的属性信息进行合成,获得所述每个像素的颜色值;
D、将所述每个像素位置上的所述像素的颜色值复制到显示缓冲区,在显示窗口显示所述三维网格模型。
2.根据权利要求1所述的方法,其特征在于,所述步骤A包括:
A1、对所述三维网格模型的绘制进行初始化;
A2、输入所述三维网格模型,并进行光栅化处理,获得所述每个像素的位置的片元的数据;
A3、对每个所述片元进行并行处理,使每个所述片元存储在共享存储纹理内;
A4、查看所述片元进行并行处理的结果,并根据剩余的所述片元的数量进行相应的处理。
3.根据权利要求2所述的方法,其特征在于,所述步骤A1包括:
A11、将每个像素对应的存储在所有所述片元的链表共享的存储区域;
A12、建立一个与所述显示窗口分辨率一致的表头二维纹理;
A13、建立一个与所述显示窗口分辨率一致的信号量二维纹理;
A14、初始化所述三维网格模型的全局片元计算器。
4.根据权利要求3所述的方法,其特征在于,所述步骤A3包括:
A31、根据当前所述像素位置,读取所述信号量二维纹理对应位置的数值,并根据所述数值执行相应的操作;
A32、根据当前所述片元对应的像素位置和所述全局片元计算器的读数,将所述片元的相关信息以及在所述片元在当前像素位置上链表的第一元素在所述链表共享的存储区域的位置信息存储在所述链表共享的存储区域;
A33、修改所述表头二维纹理,在对应的像素位置上改写为所述链表共享的存储区域的所述片元的位置信息;
A34、将所述信号量置为0,开放对当前所述链表的控制;
A35、将所述片元从图形处理中去除。
5.根据权利要求4所述的方法,其特征在于,在所述步骤A1中对三维网格模型的绘制区域采用图形处理器中的纹理进行存储;
在所述步骤A3中使用片断着色器对每个所述片元进行并行处理;
在所述步骤A4中查询所述片断着色器处理结果,在有剩下未被擦除的片元时,增加所述共享存储纹理的存储空间;在没有剩下未被擦除的片元时,将所有所述片元存储到对应的像素位置的链表内。
6.根据权利要求4所述的方法,其特征在于,所述链表共享的存储区域采用图形处理器中的纹理进行存储;所述链表共享的存储区域包括数据部分和指针部分;
所述片元的相关信息包括:所述片元的颜色、不透明度或者深度。
7.根据权利要求5所述的方法,其特征在于,所述步骤B包括:
B1、使用所述片断着色器并行遍历每个像素位置上对应的链表,并存储在一个临时缓存数组中;
B2、使用所述片断着色器对每个链表的临时缓存数组中的片元根据其深度进行排序。
8.根据权利要求7所述的方法,其特征在于,所述步骤B1包括:
B11、所述片断着色器读取所述每个像素位置链表头部的表头二维纹理,获得所述链表的头部信息;
B12、为所述每条链表新创建一个临时片元存储区,存储每个链表的所有片元;
B13、依次读取每个所述链表中元素,将所述元素中的片元数据复制到所述临时片元存储区中。
9.根据权利要求1所述的方法,其特征在于,所述链表和/或固定数组保存其当前位置上的片元数据时将基于相同像素位置的片元作为一个片元集合保存。
10.一种用于实现如权利要求1~9任一项所述的方法的系统,其特征于所述系统包括:
保存模块,用于在三维网格模型的绘制区域每个像素的位置使用链表和/或固定数组保存其当前位置上的片元数据;
排序模块,用于将所有的所述链表根据所述片元的深度进行排序;
获取模块,用于对已排序的所述片元的属性信息进行合成,获得所述每个像素的颜色值;
显示模块,用于将所述每个像素位置上的所述像素的颜色值复制到显示缓冲区,在显示窗口显示所述三维网格模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103298757A CN102915563A (zh) | 2012-09-07 | 2012-09-07 | 三维网格模型透明绘制的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103298757A CN102915563A (zh) | 2012-09-07 | 2012-09-07 | 三维网格模型透明绘制的方法及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102915563A true CN102915563A (zh) | 2013-02-06 |
Family
ID=47613912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012103298757A Pending CN102915563A (zh) | 2012-09-07 | 2012-09-07 | 三维网格模型透明绘制的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102915563A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995684A (zh) * | 2014-05-07 | 2014-08-20 | 广东粤铁瀚阳科技有限公司 | 超高分辨率平台下的海量影像并行处理显示方法及系统 |
CN108022285A (zh) * | 2017-11-30 | 2018-05-11 | 杭州电魂网络科技股份有限公司 | 地图渲染方法及装置 |
CN108475327A (zh) * | 2016-01-13 | 2018-08-31 | 虞晶怡 | 三维采集与渲染 |
CN110134309A (zh) * | 2019-05-20 | 2019-08-16 | 河南思维轨道交通技术研究院有限公司 | 绘图方法、装置、电子设备及存储介质 |
CN110505465A (zh) * | 2019-08-30 | 2019-11-26 | 京东方科技集团股份有限公司 | 数据传输方法、三维图像显示方法、装置及电子设备 |
CN111145085A (zh) * | 2019-12-26 | 2020-05-12 | 上海霁目信息科技有限公司 | 拣选片元的方法和模型栅格化的方法、系统、设备和介质 |
CN112419141A (zh) * | 2020-07-29 | 2021-02-26 | 上海幻电信息科技有限公司 | 图片处理方法、装置、计算机设备 |
CN114637559A (zh) * | 2020-12-15 | 2022-06-17 | 博泰车联网科技(上海)股份有限公司 | 显示开机界面的方法、系统、设备及存储介质 |
WO2023169002A1 (zh) * | 2022-03-11 | 2023-09-14 | 腾讯科技(深圳)有限公司 | 软光栅化的方法、装置、设备、介质及程序产品 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1691069A (zh) * | 2004-04-20 | 2005-11-02 | 香港中文大学 | 采用多图形处理器加速方格片元过滤的实时体绘制方法 |
-
2012
- 2012-09-07 CN CN2012103298757A patent/CN102915563A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1691069A (zh) * | 2004-04-20 | 2005-11-02 | 香港中文大学 | 采用多图形处理器加速方格片元过滤的实时体绘制方法 |
Non-Patent Citations (2)
Title |
---|
JASON C. YANG ET AL: "Real-time Concurrent Linked List Construction on the GPU", 《COMPUTER GRAPHICS FORUM》, vol. 29, no. 4, 30 June 2010 (2010-06-30) * |
刘芳等: "基于桶内动态融合的透明现象的高效绘制", 《计算机辅助设计与图形学学报》, vol. 22, no. 3, 31 March 2010 (2010-03-31) * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995684B (zh) * | 2014-05-07 | 2017-01-25 | 广州瀚阳工程咨询有限公司 | 超高分辨率平台下的海量影像并行处理显示方法及系统 |
CN103995684A (zh) * | 2014-05-07 | 2014-08-20 | 广东粤铁瀚阳科技有限公司 | 超高分辨率平台下的海量影像并行处理显示方法及系统 |
CN108475327A (zh) * | 2016-01-13 | 2018-08-31 | 虞晶怡 | 三维采集与渲染 |
CN108022285A (zh) * | 2017-11-30 | 2018-05-11 | 杭州电魂网络科技股份有限公司 | 地图渲染方法及装置 |
CN108022285B (zh) * | 2017-11-30 | 2021-04-20 | 杭州电魂网络科技股份有限公司 | 地图渲染方法及装置 |
CN110134309B (zh) * | 2019-05-20 | 2020-12-08 | 河南思维轨道交通技术研究院有限公司 | 绘图方法、装置、电子设备及存储介质 |
CN110134309A (zh) * | 2019-05-20 | 2019-08-16 | 河南思维轨道交通技术研究院有限公司 | 绘图方法、装置、电子设备及存储介质 |
US11528470B2 (en) | 2019-08-30 | 2022-12-13 | Beijing Boe Optoelectronics Technology Co., Ltd. | Data transmission method, method of displaying three-dimensional image, data transmission device and three-dimensional image display device |
CN110505465B (zh) * | 2019-08-30 | 2022-08-23 | 京东方科技集团股份有限公司 | 数据传输方法、三维图像显示方法、装置及电子设备 |
CN110505465A (zh) * | 2019-08-30 | 2019-11-26 | 京东方科技集团股份有限公司 | 数据传输方法、三维图像显示方法、装置及电子设备 |
CN111145085A (zh) * | 2019-12-26 | 2020-05-12 | 上海霁目信息科技有限公司 | 拣选片元的方法和模型栅格化的方法、系统、设备和介质 |
CN111145085B (zh) * | 2019-12-26 | 2023-09-22 | 上海杰图天下网络科技有限公司 | 拣选片元的方法和模型栅格化的方法、系统、设备和介质 |
CN112419141A (zh) * | 2020-07-29 | 2021-02-26 | 上海幻电信息科技有限公司 | 图片处理方法、装置、计算机设备 |
CN114637559A (zh) * | 2020-12-15 | 2022-06-17 | 博泰车联网科技(上海)股份有限公司 | 显示开机界面的方法、系统、设备及存储介质 |
CN114637559B (zh) * | 2020-12-15 | 2023-11-24 | 博泰车联网科技(上海)股份有限公司 | 显示开机界面的方法、系统、设备及存储介质 |
WO2023169002A1 (zh) * | 2022-03-11 | 2023-09-14 | 腾讯科技(深圳)有限公司 | 软光栅化的方法、装置、设备、介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102915563A (zh) | 三维网格模型透明绘制的方法及其系统 | |
CN104025181B (zh) | 用于去耦合采样的基于分类的块延迟着色体系结构 | |
US8570322B2 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
USRE42638E1 (en) | Resample and composite engine for real-time volume rendering | |
US10055883B2 (en) | Frustum tests for sub-pixel shadows | |
CN102890829B (zh) | 一种基于gpu的渲染地形的方法 | |
WO1997005576A9 (en) | Method and apparatus for span and subspan sorting rendering system | |
WO1997005576A1 (en) | Method and apparatus for span and subspan sorting rendering system | |
CN103810669A (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
CN101124613A (zh) | 片段着色管线中增加的按比例缩放性 | |
US20100231600A1 (en) | High bandwidth, efficient graphics hardware architecture | |
US20230269391A1 (en) | Adaptive Pixel Sampling Order for Temporally Dense Rendering | |
CN108335349A (zh) | 利用神经网络滤波图像数据 | |
CN101373541B (zh) | 医学图像体绘制方法及装置 | |
US11120609B2 (en) | Reconstruction for temporally dense ray trace rendering | |
Vasilakis et al. | A survey of multifragment rendering | |
US11941743B2 (en) | Generation of sample points in rendering applications using elementary interval stratification | |
WO2008091958A2 (en) | Terminating spatial partition hierarchies by a priori bounding memory | |
US20210398253A1 (en) | Adding greater realism to a computer-generated image by smoothing jagged edges | |
US6982719B2 (en) | Switching sample buffer context in response to sample requests for real-time sample filtering and video generation | |
Okuyan et al. | Direct volume rendering of unstructured tetrahedral meshes using CUDA and OpenMP | |
Kaufman et al. | A survey of architectures for volume rendering | |
WO2023196120A1 (en) | Variable rate tessellation | |
Molnar | The PixelFlow texture and image subsystem | |
WILLCOCKS | Sparse volumetric deformation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130206 |