CN1741066B - 在图形硬件中细分几何图像 - Google Patents
在图形硬件中细分几何图像 Download PDFInfo
- Publication number
- CN1741066B CN1741066B CN2005100929729A CN200510092972A CN1741066B CN 1741066 B CN1741066 B CN 1741066B CN 2005100929729 A CN2005100929729 A CN 2005100929729A CN 200510092972 A CN200510092972 A CN 200510092972A CN 1741066 B CN1741066 B CN 1741066B
- Authority
- CN
- China
- Prior art keywords
- data
- vertex
- segmentation
- several picture
- graphic memory
- 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.)
- Expired - Fee Related
Links
- 230000011218 segmentation Effects 0.000 claims description 55
- 238000004040 coloring Methods 0.000 claims description 27
- 238000003860 storage Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000003139 buffering effect Effects 0.000 claims description 2
- 230000009471 action Effects 0.000 description 23
- 238000000034 method Methods 0.000 description 22
- 238000005516 engineering process Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 238000013507 mapping Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 6
- 238000005070 sampling Methods 0.000 description 6
- 239000007787 solid Substances 0.000 description 5
- 238000007906 compression Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 244000062793 Sorghum vulgare Species 0.000 description 3
- 238000011960 computer-aided design Methods 0.000 description 3
- 235000019713 millet Nutrition 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 230000001788 irregular Effects 0.000 description 2
- 241000283973 Oryctolagus cuniculus Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000005452 bending Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
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
-
- 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/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- 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/20—Finite element generation, e.g. wire-frame surface description, tesselation
- G06T17/205—Re-meshing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
一种系统可以包括图形存储器、数据总线、处理器和顶点着色器。数据总线可以有效地(operatively)连接到图形存储器。处理器可以经由数据总线向图形存储器发送顶点数据。顶点着色器可以从图形存储器中读取顶点数据,并且可以将所述顶点数据细分成细分后的顶点数据。顶点着色器还可以将细分后的顶点数据写入图形存储器。
Description
技术领域
所要求保护的发明的实现总地可以涉及处理图形图像,更具体地说,涉及处理使用几何图像的图形图像。
背景技术
图1是图示了典型的图形处理100的流程图。代表图形图像的几何体可以被提交给图形流水线(动作110)。这样的几何体一般可以包括三角形,但是也可以包括四边形以及任何其他类型的几何体。然后,顶点着色器(vertex shader)可以执行以下处理操作来处理几何体,例如变换并且照明(lighting)每个多边形,确定顶点的颜色,在必要的情况下确定法线(normal)等(动作120)。顶点着色器一般包括实施指令集以对与顶点相关的数据进行操作的硬件。这样的数据可以包括顶点位置、顶点法线以及每顶点纹理坐标。这些值也可以随后由着色硬件用来在多边形上内插,以创建着色后的图像。
接着,多边形可以被剪贴(clip)到屏幕的适当的位置上(动作130)。然后,像素着色器(pixel shader)可以着色每个多边形(动作140)。像素着色器一般包括在每一片段被交与屏幕之前,当它通过图形流水线时对其执行一组指令的硬件。像素着色器和顶点着色器可以具有相同或不同的指令集。此外,它们执行的指令集可能不同于显示给程序员的指令。
在着色之后,如果某一特定像素位于任何先前绘制的像素之前,则它可以被写入帧缓冲器(动作150)。在一些图形引擎中,可能存在阿尔发混合操作。阿尔发混合操作是便于实现部分透明对象的一种机制,并且可以通过在传统的三维(3D)图形流水线中所使用的颜色通道之外的附加通道来实现。
近来,已提出了一种表示图形图像的表面几何体的技术,该技术具有一些优势。这样一种技术可以将任意的图形表面重新编网到一个被称为“几何图像”的完全规则的结构上。几何图像可以捕获图形图像的表面几何体,成为二维(2D)阵列(array)的量化点。可以使用与几何图像相同的表面参数化过程,将诸如法线和/或颜色等表面信号存储在类似的2D图像中。有关几何图像的进一步讨论可以在以下文章中找到,例如Xianfeng Gu等人的“几何图像”,SIGGRAPH 2002会议论文集,第355-361页;F.Losasso等人的“平滑几何图像”,Eurographics 2003,第138-145和273页。为了更好地理解什么是几何体,以及它可以如何表示3D图形对象,将提供简要的解释。
图2图示了从3D模型210形成几何图像250的过程(例如参见Hughes Hoppe,“计算机图形从不规则到完全规则的网格化(Irregular to Completely Regular Meshing InComputer Graphics)”International Meshing Roundtable,2002年9月)。3D模型210可以被概念化为一个在3D空间内弯曲、扭曲以形成3D网格的二维(2D)形状。模型210可以包括由顶点及顶点间的边形成的几何形状(例如,三角形、四边形等)网格。在模型210中的顶点可以在3D坐标系统中具有相关联的空间坐标值(例如[x,y,z]坐标)。
3D模型210可以沿着它的边来切割,以形成一个不同的(例如,非兔子形状的)2D形状。切割线220图示了这样一种切割。这个不同的形状可以使用公知的技术来扭曲或参数化,以形成规则形状230。规则形状230可以包括相互连接的来自模型210的顶点(例如图示为三角形),其中切割线220位于形状230的外边上。因此,规则形状230既保留模型210中顶点的[x,y,z]位置值,又保留这些顶点之间的连接关系。应当注意,虽然规则形状230被图示为方形,但是也可以使用其他类型的规则形状(例如圆形等)。
规则形状230中的多边形可以被有规律地采样,以生成采样形状240。在采样形状240中的每个采样点可以是一个新的顶点,其保留了位置值(例如[x,y,z]坐标)并且隐含地连接到采样图像240中的其他顶点。即,在采样图像240中的顶点可以通过对规则形状230的规则采样,经由边被连接到它们上、下、左、右侧的其他顶点。
可以通过将采样图像240中的顶点的三通道[x,y,z]坐标映射到三通道的RGB空间,即[r,g,b]坐标,将采样图像240转换为红/绿/蓝(RGB)(或任何其他颜色空间)色图像,以产生几何图像250。在几何图像250中的每个像素可以代表模型210中的一个采样顶点,其中像素的红、绿、蓝值表示所述采样顶点的[x,y,z]空间位置。利用在几何图像250中的给定像素的相邻像素来确定模型210中的对应采样顶点的相邻顶点。换言之,通过几何图像250中的相邻像素来获知模型210中的相邻顶点,并且通过几何图像250中像素的颜色值来获知这些顶点的位置值。
虽然已经关于位置信息解释了几何图像250,但是可以针对与模型210的顶点相关联的任何信息来生成几何图像250。例如,法线也可以由几何图像250来表示,而法线就是指向空间的[x,y,z]向量。同样,颜色值和/或纹理坐标也可以由几何图像250来表示。将模型表示为图像可以允许我们使用现有的图像处理算法,例如图像压缩算法。
虽然压缩几何图像是可能的,但是这些几何图像即使被压缩,在一些情况下也可以通过数据总线被发送到图形处理器。在一些情形中,数据总线的带宽可能会限制能够由图形处理器从几何图像中显示出来的分辨率和/或视觉保真度。
发明内容
为解决以上问题,本发明提供了用于在图形硬件中细分几何图像的系统、方法和装置。
根据本发明的一个方面,提供了一种系统,包括:图形存储器;有效连接到所述图形存储器的数据总线;经由所述数据总线向所述图形存储器发送顶点数据的处理器;和顶点着色器,其从所述图形存储器中读取所述顶点数据,将所述顶点数据细分成细分后的顶点数据,并且将所述细分后的顶点数据写入所述图形存储器。
根据本发明的另一个方面,提供了一种系统,包括:存储具有第一分辨率的第一几何图像的存储器;顶点着色器,其将所述第一几何图像细分成第二几何图像,所述第二几何图像具有高于所述第一分辨率的第二分辨率,并且所述顶点着色器将所述第二几何图像存储在所述存储器中;和准备所述第二几何图像用于显示的像素着色器。
根据本发明的又一个方面,提供了一种方法,包括:获得具有第一大小的第一几何图像;存储所述第一几何图像;将所述第一几何图像细分成具有第二大小的第二几何图像,所述第二大小大于所述第一大小;并且存储所述第二几何图像。
根据本发明的再一个方面,提供了一种装置,包括:存储图形数据的存储器;和顶点着色器,其从所述存储器读取图形数据,由所读取的图形数据生成新的图形数据,并且将所述新的图形数据写入所述存储器。
根据本发明的再又一个方面,提供了一种方法,包括:从存储器中读取具有第一分辨率的顶点数据;从所述存储器中读取具有低于所述第一分辨率的第二分辨率的法线数据;并且使用所述法线数据准备所述顶点数据用于显示。
附图说明
附图被包含在说明书中并构成了说明书的一部分,它们图示了与本发明的原理相一致的一种或多种实现方式,并且与文字描述部分一起用于解释这些实现方式。这些图不一定是按比例绘制的,重点在于图示说明本发明的原理。在附图中,
图1是图示了典型的图形处理的流程图;
图2图示了几何图像的形成过程;
图3图示了示例性的系统;以及
图4是图示了细分图形数据的过程的流程图。
具体实施方式
以下详细的描述参考附图。在不同的图中可以使用相同的标号来标识相同或相似的元件。在以下描述中,出于解释而非限制的目的,阐述了一些具体的细节,例如具体的结构、体系结构、接口、技术等,以提供对所要求保护的发明的各个方面的完整理解。然而,获知本公开内容的本领域技术人员将清楚的是,在偏离这些具体细节的其他实施例中也可以实现所要求保护的发明的各个方面。在一些情况下,省略了对公知的设备、电路和方法的描述,以免因不必要的细节模糊了对本发明的描述。
图3图示了示例性的系统300。系统30可以包括主存储器310、处理器320、数据总线330、图形存储器340、一个或多个顶点着色器350、一个或多个像素着色器360以及帧缓冲器370。在一些实现方式中,元件340-370中的一个或多个可以被包括在经由数据总线330与处理器320相连的、物理上独立的图形卡中。在一些实现方式中,元件340-370可以与元件310和320位于公共的电路板(例如主板、子板等)上。在一些实现方式中,元件350和360中的一个或多个可以是某一设备的一部分(例如,该设备的核)中的部件,处理器320可以包括在同一设备的另一部分(例如,另一个核)中。
主存储器310可以包括存储几何图像的存储设备。主存储器310可以包括随机访问存储器(RAM)器件,例如动态RAM(DRAM)、双数据率RAM(DDR RAM)等。主存储器310可以存储预先计算的几何图像和/或从中可计算出几何图像的图形数据。
处理器320可以包括通用处理器、专用处理器和/或专门配置的逻辑。处理器320可以被设置为经由数据总线330将几何图像从主存储器310分发到图形存储器340。处理器320可以在程序的控制下,经由数据总线330来发送几何图像,所述程序例如是绘制(rendering)、游戏、图形创建或其他类型的与图形相关的程序。在一些实现方式中,处理器320可以由主存储器310中的其他信息来计算几何图像,并将几何图像存储在主存储器310中。在一些实现方式中,处理器320可以在经由数据总线330传输几何图像之前对其进行压缩(例如,利用JPEG 2000或其他无损方案)。
数据总线330可以将处理器320连接到图形存储器340。数据总线330可以使用典型的互连协议,或者可以使用定制的通信协议。数据总线330可具有相关的带宽,该值定义了在给定的时间内它可以传输的最大数据量。在一些实现方式中,数据总线330的带宽可能会限制系统300的其他部分(例如着色器350和/或360)的性能。在一些实现方式中,数据总线330的带宽可能不会限制系统300的整体性能。
图形存储器340可以包括存储几何图像的存储设备。图形存储器340可以包括随机访问存储器(RAM)器件,例如动态RAM(DRAM)、双数据率RAM(DDR RAM)等。图形存储器340可以接收并存储来自处理器320和顶点着色器350的几何图像。除了经由写操作来存储几何图像外,图形存储器340还可以经由读操作将这些几何图像提供给顶点着色器350和像素着色器360。例如,图形存储器340可以存储与几何图像相关联的各种“每顶点”数据。这样的顶点数据可以包括顶点位置、纹理坐标、颜色坐标或法线向量中的一个或多个。
顶点着色器350可以被设置为从图形存储器340中读取顶点数据,并且细分所述顶点数据以生成更高分辨率的顶点数据。顶点着色器350可以具有并行体系结构,并且可以具有例如比像素着色器360更大的指令集。顶点着色器350可以使用各种不同的顶点生成程序和细分方案来增大顶点数据的分辨率,后面将进一步地描述。顶点着色器350也可以将高分辨率的顶点数据写入图形存储器340。
由于访问图形存储器340的带宽比较宽,所以顶点着色器350可以将相对大量的高分辨率数据写入图形存储器340。典型的细分方案可以将几何图像中的数据量增大到四倍(bya factor of four)。顶点着色器350可以被设置为针对给定的几何图像执行一级或多级的细分,并且存储在图形存储器340中的经过一次细分的顶点数据例如可以被顶点着色器350用来生成第二级的细分数据(例如,以更高/更细的分辨率),以存储在图形存储器340中。
像素着色器360可以被设置为从图形存储器340中读取细分后的顶点数据,并准备用于显示。像素着色器360例如可以比顶点着色器350具有更高带宽的到图形存储器340的连接,并且像素着色器360在指令数量和指令集方面可能比顶点着色器350受到更多的限制。例如,像素着色器360可以被设置为从图形存储器340读取新的、高分辨率的几何图像,光栅化(rasterize)所述图像,并且将光栅化的像素数据发送到帧缓冲器370。在一些实现方式中,像素着色器360可以使用来自处理器320的低分辨率的几何图像(这些图像可能保留在图形存储器340中)作为显示图元(primitive)来光栅化新的几何图像。
帧缓冲器370可以被设置为接收来自像素着色器360的像素数据,并且在必要时,在显示之前缓冲这些数据。帧缓冲器370还可能在图形处理器(未示出)的控制下,将数据输出到显示器或显示接口。
图4是图示了细分图形数据的过程400的流程图。虽然为简单起见,可以相对于系统300来描述过程400,但是所要求保护的发明在这方面不一定受到限制。
处理可以开始于处理器320获得用于一幅图像中的顶点位置的纹理、几何图像以及任何其他相关值(动作410)。在一些实现方式中,处理器320可以计算出这些值,而在一些实现方式中,处理器320可以从主存储器310中读取这些值。除了获得几何图像外,处理器320还可以创建纹理坐标映射(map)和颜色坐标映射中的一个或多个。创建几何图像(例如,沿着边路径(edge path)切割网,并将产生的图参数化到一个方形中)的详细过程例如可以参考以下文章:Xianfeng Gu等人的“几何图像”,SIGGRAPH 2002会议论文集,第355-361页。这样的纹理映射、几何图像、和/或颜色映射可以被实现为具有指定宽度和高度的数组(array)。
可以用和图2中的顶点映射相同的方式来创建纹理、颜色和/或法线映射。对于纹理而言,tu和tv可以分别存储在红色和绿色通道中。同样,对于颜色而言,r、g和b值可以被存储到用于纹理映射的r、g和b值中。因为纹理一般情况下只是颜色的阵列,所以颜色和纹理映射都使用r、g和b。最后,法线的x、y和z值可以被存储到纹理映射的r、g和b通道中。应当注意,这种映射(mapping)无需局限为2D结构(例如图像)。相反,这里所描述的技术可以通过占用被映射到r、g、b和(必要时)阿尔法中的任意数量的通道,而支持纹理、法线和颜色。如果需要四条通道以上的与顶点相关的信息或数据,那么可以使用额外的纹理映射来获得这一信息。因此,参考图2所描述的技术可以与某种程度上任意的和/或复杂的顶点数据一起使用。
同样在动作410中,处理器320可以在纹理、几何图像和颜色被细分一次或多次时为它们创建占位符(placeholder)数组。这种占位符数组可以使用最少的带宽,以简化形式通过数据总线330来发送,以保留图形存储器340中的空间供细分后的纹理、几何图像等使用。在一些实现方式中,可以由顶点着色器350响应于来自处理器320的命令,在本地生成所述占位符数组。在任何情况下,占位符数组都被初始化为0,并被存储在图形存储器340中。
处理可以继续,其中由处理器320经由数据总线330将纹理、几何图像和任何其他值(例如,颜色坐标和/或法线向量)发送到图形存储器340(动作420)。在一些实现方式中,处理器320可以将纹理、几何图像以及任何其他值提交给图形应用编程接口(API),该接口可以将纹理和几何图像传输到图形存储器340。在一些实现方式中,纹理、几何图像等可以在通过数据总线330传输之前进行压缩(例如,利用JPEG 2000一类的无损方案)。
顶点着色器350可以从图形存储器340读取所存储的纹理、几何图像以及任何其他值(统一称为“顶点数据”),并且可以细分顶点数据(动作430)。如前所述,二维图像(例如几何图像)的细分可以将图像的分辨率增大到约四倍。在一些实现方式中,顶点着色器350可以使用Catmull-Clark技术来实现细分,上述技术概述于Ed Catmull和Jim Clark的“任意拓扑网上递归生成的B-Spline表面(Recursively Generated B-Spline Surfaces on ArbitraryTopological Meshes)”,Computer Aided Geometric Design,第10卷,No.6,1978。
然而,顶点着色器350也可以采用其他细分技术。在一些实现方式中,顶点着色器350可以使用蝶形技术来细分顶点数据,所述蝶形技术概述于Stephen Junkins的“细分现实性:采用细分表面用于实时可缩放照相现实主义(Subdividing Reality:Employing SubdivisionSurface for Real Time Scalable photorealism)”,游戏开发者会议论文集,2000。在一些实现方式中,顶点着色器350可以使用Loop技术来细分顶点数据,所述循环技术概述于C.T.Loop,“基于三角形的平滑细分表面(Smooth Subdivision Surfaces Based on Triangles)”,犹他大学数学系的硕士论文,1987年8月。在一些实现方式中,顶点着色器350可以使用Doo-Sabin技术来细分顶点数据,所述技术概述于D.Doo和M.Sabin的“非常点附近的递归分割表面的行为(Behavior of Recursive Division Surfaces Near Extraordinary Points)”,Computer Aided Design(计算机辅助设计),第10卷,No.6,1978。
顶点着色器350可以将细分并输出后的顶点数据写入图形存储器340(动作440)。在一些实现方式中,顶点着色器350用输出的顶点数据覆写图形存储器340中的一个或多个占位符数组。在一些实现方式中,顶点着色器350可以根据需要,为输出的顶点数据在图形存储器340中创建新的结构。
取决于所希望的细分级数,顶点着色器350可以重复动作430和440一次或多次,如图4中的虚线箭头所示。例如,如果需要一次以上的细分操作(例如,为了得到更高的分辨率),顶点着色器350可以读取在前面的动作440中被存储在图形存储器340中的经过一次细分的(如果动作430是重复第二次的话,则是经过两次细分的)输出顶点数据,并进一步细分该数据。因为细分可以依赖于具有前一分辨率的顶点数据(例如,先前细分的输出),所以在一些实现方式中,顶点着色器350可以覆写和/或删除具有更高分辨率的顶点数据,以空出图形存储器340中的空间。例如,当执行第二级(或更高级别的)细分时,从处理器320发送而来的原始顶点数据可以被覆写和/或删除。
在细分时也可以采用其他技术来节省图形存储器340中的空间和/或系统300的其他资源。例如,可以通过不像相关几何图像那样完全地细分纹理、法线和/或颜色坐标,从而节省图形存储器340中的空间。在这样的情形中,像素着色器360可以只是引用更低级别的细分(例如,仅一次细分的数据用于两次或更多次细分的分辨率),并且针对每次查找只除以4。作为一个实施例,如果不希望与对应的256x256几何图像一起生成和/或存储256x256的法线映射,则可以由像素着色器360反之使用64x64分辨率级的法线映射。对于在位置阵列中指标(index)(32,32)处的条目,像素着色器360可以在处理期间引用64x64法线映射中的位置(8,8)。因此,像素着色器360在格式化已经由顶点着色器350细分为更高分辨率的其他顶点数据(例如,几何图像或其他结构)时,可以使用具有较低分辨率的一个或多个映射(例如,法线映射)。
在一些实现方式中,可以计算出适当的法线,然后可以在旧的法线映射中查找最靠近的法线。所得到的法线数据可以被存储在任意大小的法线映射中。也可以使用其他技术来避免对于给定的分辨率完全细分图形存储器340中的所有图形数据。
可能在某些区域(例如在几何图像内的区域)中不希望进行细分。对于这些区域,现有的几何图像、法线图像和/或纹理映射可以弃之不用。对于希望进行细分的其他区域,可以采用某种细分方案(例如Catmull-Clark)。对于两种区域(例如被细分的以及不被细分的)之间的边界,可以复制一些顶点信息。
另一种节省图形存储器340空间的技术可以是利用无损压缩方案来压缩存储其中的数据(例如,原始顶点数据和/或细分后的顶点数据)。一种适于压缩例如细分后几何图像的方案可以是JPEG 2000,它可以取得大约2.5到1的压缩比。数据压缩可以取代其他技术,或者与其他技术一起用,以用来减少存储在图形存储器340中的数据量。
处理可以继续,其中像素着色器360准备存储在图形存储器340中的细分后顶点数据,以用于显示(动作450)。像素着色器360可以光栅化和/或以其他方式格式化所存储的顶点数据(例如几何图像、颜色映射等),以用于显示。在一些实现方式中,像素着色器360可以使用一个或多个低分辨率的顶点数据集合(例如原始几何图像)作为显示图元,来准备细分后的顶点数据。虽然未在图4中明确示出,但是格式化后的图形图像随后可以从帧缓冲器370中显示。
在一些实现方式中,对于给定的数据总线330所承载的数据带宽,利用顶点着色器350来细分顶点数据的上述系统和方案可以增大显示数据的视觉保真度/分辨率。例如,使用数据总线330的大部分或几乎全部数据带宽的顶点数据可以由顶点着色器350来细分,相对于不这样做而因数据总线330的带宽导致的显示分辨率而言,细分后将使显示分辨率增大。在一些实现方式中,这样一种细分方案可以有助于使用比不进行细分时更少的数据总线330带宽而产生给定的视觉保真度/分辨率。例如,显示分辨率可以与不执行细分时保持相同,但是细分使得前一种情况在分辨率相同时可以使用少得多的数据总线330带宽。
为了进一步帮助理解上述系统300和过程400,将给出一个实施例。在这个实施例中,处理器320可以在动作410中创建或从主存储器310中读取三个nxn(n是一个整数,例如8、16、32等)的数组G0、T0和C0。G0可以是一个几何图像。T0可以是纹理坐标映射,每个位置包含对应的纹理坐标。C0可以是颜色坐标映射,每个位置包含对应的红、绿、蓝色值。G0、T0和C0可以处于原始分辨率(例如8x8,16x16等)。
同样在动作410中,对于每种期望的细分级别(例如,两级),处理器320和/或顶点着色器350都可以为具有各自细分分辨率的G0、T0和C0中的每一个创建占位符数组/映射。对于第一级细分,G1、T1和C1可以用4*nx4*n的大小/分辨率来创建,因为细分可以将数组/映射的大小/分辨率增大到四倍。对于第二级细分,G2、T2和C2可以用4*4*nx4*4*n(即16nx16n)的大小/分辨率来创建。为方便起见,G1、T1、C1、G2、T2和C2可以被初始化为0。
在动作420中,处理器320可以经由数据总线330将结构G0、T0、C0、G1、T1、C1、G2、T2和C2发送到图形存储器340。在一些实现方式中,可以使用图形API来完成这种操作。这一操作可以初始化图形存储器340中的空间,以由顶点着色器350随后来填充。
然后,顶点着色器350可以在动作430中细分G0、T0和C0,以生成第一细分顶点数据G1、T1和C1。例如,如果所采用的具体细分方案是Catmull-Clark细分方案,那么用于某一面的新面点可以通过对形成该面的旧点求平均而计算出来。新的边点可以通过将旧边的中点与共享一边的面的两个新面点的均值求平均而计算出来。新的顶点可以通过对Q/n+(2*R)/n+(S*(n-3))/n求平均而计算出来,其中Q等于与旧顶点邻接的所有面的新面点的均值;R等于入射在旧顶点上的所有旧边的中点的均值,而S是所述旧顶点。在一些实现方式中可以使用不同于Catmull-Clark的其他细分方案。
当G1、T1和C1中的每一组点被创建时,顶点着色器350可以在动作440中将对应的占位符结构中的值存储在图形存储器340中。当第一次细分全部完成后,顶点着色器350可以在动作430中进一步细分G1、T1和C1,以生成第二次细分后的顶点数据G2、T2和C2。顶点着色器350可以在动作440中将对应的占位符结构G2、T2和C2中被进一步细分后的值存储在图形存储器340中。如前所述,G1、T1或C1可能在一些实现方式中不会受到第二级细分。像素着色器360可以从图形存储器340中读取最终细分完成的顶点数据(例如,如果全都被两次细分,则是G2、T2和C2),并经由帧缓冲器370准备该数据用于显示。在G0、T0和C0不全被细分两次的实现方式中,像素着色器360可以准备G2以及一个或多个较少细分的结构(例如T1和/或C1)用于显示。
虽然以上示意性的实施例包括了特定的实现方式,但是所要求保护的发明不一定局限于此。例如,初始顶点数据可以包括与G0、T0和C0不同的图形数据,例如法线数据。由顶点着色器350执行的细分的次数可以少于或多于两次。类似地,在一些实现方式中可以使用不同于Catmull-Clark的细分方案。
上述对一种或多种实现方式的描述提供了图示说明和文字描述,但是不希望是穷尽性的,或者将本发明的范围限制到所公开的精确形式。参照以上教导可以实现多种修改和变化,或者可以从本发明各种实现方式的实施中获得这些修改和变化。
例如,虽然这里相对于顶点着色器350描述了细分方案,但是在一些实现方式中,也可以使用其他图形硬件来实现细分。只要这些其他的硬件(例如其他类型的着色器)具有从图形存储器340读取数据并且向其中写入数据的能力,它就是适合的。
此外,这里所描述的细分方案可以在一些实现方式中由顶点着色器350根据需要(例如,基本实时地)来执行,并且在一些实现方式中它可以由顶点着色器350预先计算出来。另外,在一些实现方式中,顶点着色器350可以将细分后的顶点数据直接发送到像素着色器360,而不是先写入图形存储器340。
此外,图4中的动作不必以示出的顺序来实施;也不是所有的动作都一定要执行。另外,那些不依赖于其他动作的动作可以与其他动作并行执行。另外,这个附图中至少有一部分动作可以实现为指令或者多组指令,这些指令在机器可读介质上实现。
在本申请的说明书中所使用的任何元件、动作或指令都不应被解释为对本发明是关键的或必不可少的,除非明确指出。另外,用在这里,冠词“a”想要包括单数或复数项。在本质上偏离本发明的精神和原理的情况下,可以对所要求保护的发明的上述实现方式进行多种修改和改变。这里想要把所有这样的修改和改变都包括在本公开的范围之内,并受所附权利要求书的保护。
Claims (9)
1.一种系统,包括:
图形存储器,所述图形存储器储存具有第一大小的第一几何图像;
处理器;
将所述图形存储器耦合到所述处理器的具有第一带宽的数据总线;
不同于所述数据总线的第二总线;
顶点着色器,所述顶点着色器在所述第二总线上耦合到所述图形存储器,所述顶点着色器将所述第一几何图像细分为具有第二大小的第二几何图像,所述第二大小比所述第一大小大,其中所述第二总线具有第二带宽,该第二带宽大于所述第一带宽,并且所述图形存储器在所述第二总线上从所述顶点着色器储存所述第二几何图像。
2.如权利要求1所述的系统,所述顶点着色器读取包括所述几何图像的顶点数据。
3.如权利要求2所述的系统,其中所述顶点数据还包括颜色数据、纹理数据或法线数据。
4.如权利要求2所述的系统,其中所述处理器被设置为使用应用编程接口(API)来发送所述顶点数据。
5.如权利要求2所述的系统,其中,由所述处理器发送的顶点数据使用所述第一带宽的大部分。
6.如权利要求2所述的系统,还包括:
像素着色器,所述像素着色器从所述图形存储器中读取细分后的顶点数据,并且准备所述细分后的顶点数据用于显示。
7.如权利要求6所述的系统,其中所述像素着色器光栅化所述细分后的顶点数据。
8.如权利要求6所述的系统,还包括:
帧缓冲器,所述帧缓冲器缓冲并输出准备好的细分后顶点数据,所述准备好的细分后顶点数据来自所述像素着色器。
9.如权利要求2所述的系统,还包括:
在所述处理器将所述顶点数据发送到所述图形存储器之前存储所述顶点数据的主存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/926,875 | 2004-08-26 | ||
US10/926,875 US7750914B2 (en) | 2004-08-26 | 2004-08-26 | Subdividing geometry images in graphics hardware |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110007806XA Division CN102081804B (zh) | 2004-08-26 | 2005-08-26 | 在图形硬件中细分几何图像 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1741066A CN1741066A (zh) | 2006-03-01 |
CN1741066B true CN1741066B (zh) | 2011-03-30 |
Family
ID=35431953
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110007806XA Expired - Fee Related CN102081804B (zh) | 2004-08-26 | 2005-08-26 | 在图形硬件中细分几何图像 |
CN2005100929729A Expired - Fee Related CN1741066B (zh) | 2004-08-26 | 2005-08-26 | 在图形硬件中细分几何图像 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110007806XA Expired - Fee Related CN102081804B (zh) | 2004-08-26 | 2005-08-26 | 在图形硬件中细分几何图像 |
Country Status (7)
Country | Link |
---|---|
US (5) | US7750914B2 (zh) |
JP (1) | JP2008511074A (zh) |
CN (2) | CN102081804B (zh) |
DE (1) | DE112005002076T5 (zh) |
GB (1) | GB2431324B (zh) |
TW (1) | TWI330782B (zh) |
WO (1) | WO2006026118A1 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005179942A (ja) | 2003-12-17 | 2005-07-07 | Denso Corp | 自動車用ワイヤレス送受信機 |
JP4566120B2 (ja) * | 2005-11-21 | 2010-10-20 | 株式会社バンダイナムコゲームス | プログラム、情報記憶媒体及び画像生成システム |
JP4201207B2 (ja) * | 2005-11-21 | 2008-12-24 | 株式会社バンダイナムコゲームス | プログラム、情報記憶媒体及び画像生成システム |
US8130227B2 (en) | 2006-05-12 | 2012-03-06 | Nvidia Corporation | Distributed antialiasing in a multiprocessor graphics system |
US7948489B1 (en) * | 2007-05-30 | 2011-05-24 | Adobe Systems Incorporated | Minimizing tessellation of surfaces |
US8217936B1 (en) | 2007-05-30 | 2012-07-10 | Adobe Systems Incorporated | Minimizing tessellation of surfaces |
US7868885B2 (en) * | 2007-06-22 | 2011-01-11 | Microsoft Corporation | Direct manipulation of subdivision surfaces using a graphics processing unit |
US20090033659A1 (en) * | 2007-07-31 | 2009-02-05 | Lake Adam T | Real-time luminosity dependent subdivision |
US20110310102A1 (en) * | 2010-06-17 | 2011-12-22 | Via Technologies, Inc. | Systems and methods for subdividing and storing vertex data |
GB201103699D0 (en) | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphic processing |
GB201103698D0 (en) * | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphics processing |
US9087409B2 (en) * | 2012-03-01 | 2015-07-21 | Qualcomm Incorporated | Techniques for reducing memory access bandwidth in a graphics processing system based on destination alpha values |
US10559123B2 (en) | 2012-04-04 | 2020-02-11 | Qualcomm Incorporated | Patched shading in graphics processing |
US10699361B2 (en) * | 2012-11-21 | 2020-06-30 | Ati Technologies Ulc | Method and apparatus for enhanced processing of three dimensional (3D) graphics data |
US9940446B2 (en) | 2013-07-25 | 2018-04-10 | Siemens Healthcare Diagnostics Inc. | Anti-piracy protection for software |
US9417911B2 (en) | 2014-03-12 | 2016-08-16 | Live Planet Llc | Systems and methods for scalable asynchronous computing framework |
US9905046B2 (en) | 2014-04-03 | 2018-02-27 | Intel Corporation | Mapping multi-rate shading to monolithic programs |
US20160155261A1 (en) * | 2014-11-26 | 2016-06-02 | Bevelity LLC | Rendering and Lightmap Calculation Methods |
US9704217B2 (en) | 2015-04-20 | 2017-07-11 | Intel Corporation | Apparatus and method for non-uniform frame buffer rasterization |
US11379941B2 (en) * | 2016-09-22 | 2022-07-05 | Advanced Micro Devices, Inc. | Primitive shader |
CN106683162A (zh) * | 2017-01-18 | 2017-05-17 | 天津大学 | 一种面向嵌入式GPU多着色器结构的后置顶点Cache设计方法 |
CA3059439A1 (en) | 2017-04-13 | 2018-10-18 | Spirox, Inc. | Nasal implant and delivery tool for a nasal implant |
CN111242333B (zh) * | 2017-08-16 | 2021-04-06 | 北京嘀嘀无限科技发展有限公司 | 网约车订单处理方法、系统、终端及服务器 |
US12067753B2 (en) | 2021-08-16 | 2024-08-20 | Tencent America LLC | 2D UV atlas sampling based methods for dynamic mesh compression |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2765075B2 (ja) | 1989-07-26 | 1998-06-11 | 松下電器産業株式会社 | 厨房装置 |
JPH0521178A (ja) | 1991-07-11 | 1993-01-29 | Toshiba Lighting & Technol Corp | 放電ランプ高周波点灯装置 |
US6747644B1 (en) * | 1995-08-04 | 2004-06-08 | Sun Microsystems, Inc. | Decompression of surface normals in three-dimensional graphics data |
US5963209A (en) * | 1996-01-11 | 1999-10-05 | Microsoft Corporation | Encoding and progressive transmission of progressive meshes |
JPH1173527A (ja) * | 1997-06-30 | 1999-03-16 | Sun Microsyst Inc | グラフィカル・オブジェクトの規則的にタイリングされた表面部分を表現する3次元幾何データの圧縮および伸張 |
JP3705923B2 (ja) * | 1998-04-09 | 2005-10-12 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理装置および画像処理方法、プログラム提供媒体、並びにデータ提供媒体 |
US6356263B2 (en) * | 1999-01-27 | 2002-03-12 | Viewpoint Corporation | Adaptive subdivision of mesh models |
US6587104B1 (en) * | 1999-09-30 | 2003-07-01 | Microsoft Corporation | Progressive hulls |
US6891533B1 (en) * | 2000-04-11 | 2005-05-10 | Hewlett-Packard Development Company, L.P. | Compositing separately-generated three-dimensional images |
WO2001095257A1 (en) * | 2000-06-08 | 2001-12-13 | Imagination Technologies Limited | Tiling and compression for rendering 3d images |
US6476225B2 (en) * | 2001-02-15 | 2002-11-05 | Boehringer Ingelheim Pharma Kg | Process for purifying 20(S)-camptothecin |
US6914610B2 (en) * | 2001-05-18 | 2005-07-05 | Sun Microsystems, Inc. | Graphics primitive size estimation and subdivision for use with a texture accumulation buffer |
JP3840966B2 (ja) | 2001-12-12 | 2006-11-01 | ソニー株式会社 | 画像処理装置およびその方法 |
US6765584B1 (en) * | 2002-03-14 | 2004-07-20 | Nvidia Corporation | System and method for creating a vector map in a hardware graphics pipeline |
US7009605B2 (en) | 2002-03-20 | 2006-03-07 | Nvidia Corporation | System, method and computer program product for generating a shader program |
US20040012600A1 (en) | 2002-03-22 | 2004-01-22 | Deering Michael F. | Scalable high performance 3d graphics |
US6982714B2 (en) * | 2002-05-01 | 2006-01-03 | Microsoft Corporation | Systems and methods for providing a fine to coarse look ahead in connection with parametrization metrics in a graphics system |
US7071936B2 (en) * | 2002-05-01 | 2006-07-04 | Microsoft Corporation | Systems and methods for providing signal-specialized parametrization |
GB2415118B (en) * | 2002-05-10 | 2006-04-05 | Imagination Tech Ltd | An interface and method of interfacing between a parametic modelling unit and a polygon based rendering system |
US8482559B2 (en) * | 2002-11-04 | 2013-07-09 | Ati Technologies Ulc | Method and apparatus for triangle tessellation |
US6839062B2 (en) * | 2003-02-24 | 2005-01-04 | Microsoft Corporation | Usage semantics |
US7148890B2 (en) * | 2003-04-02 | 2006-12-12 | Sun Microsystems, Inc. | Displacement mapping by using two passes through the same rasterizer |
US7151543B1 (en) * | 2003-04-16 | 2006-12-19 | Nvidia Corporation | Vertex processor with multiple interfaces |
US7379599B1 (en) * | 2003-07-30 | 2008-05-27 | Matrox Electronic Systems Ltd | Model based object recognition method using a texture engine |
US7382369B2 (en) * | 2003-10-10 | 2008-06-03 | Microsoft Corporation | Systems and methods for robust sampling for real-time relighting of objects in natural lighting environments |
US7948490B2 (en) * | 2003-10-22 | 2011-05-24 | Microsoft Corporation | Hardware-accelerated computation of radiance transfer coefficients in computer graphics |
US7567252B2 (en) * | 2003-12-09 | 2009-07-28 | Microsoft Corporation | Optimizing performance of a graphics processing unit for efficient execution of general matrix operations |
US7236170B2 (en) * | 2004-01-29 | 2007-06-26 | Dreamworks Llc | Wrap deformation using subdivision surfaces |
US7109987B2 (en) * | 2004-03-02 | 2006-09-19 | Ati Technologies Inc. | Method and apparatus for dual pass adaptive tessellation |
US7154500B2 (en) * | 2004-04-20 | 2006-12-26 | The Chinese University Of Hong Kong | Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer |
US7436405B2 (en) * | 2004-05-14 | 2008-10-14 | Microsoft Corporation | Terrain rendering using nested regular grids |
-
2004
- 2004-08-26 US US10/926,875 patent/US7750914B2/en not_active Expired - Fee Related
-
2005
- 2005-08-04 TW TW094126575A patent/TWI330782B/zh not_active IP Right Cessation
- 2005-08-12 WO PCT/US2005/028696 patent/WO2006026118A1/en active Application Filing
- 2005-08-12 JP JP2007529925A patent/JP2008511074A/ja active Pending
- 2005-08-12 GB GB0700150A patent/GB2431324B/en not_active Expired - Fee Related
- 2005-08-12 DE DE112005002076T patent/DE112005002076T5/de not_active Ceased
- 2005-08-26 CN CN201110007806XA patent/CN102081804B/zh not_active Expired - Fee Related
- 2005-08-26 CN CN2005100929729A patent/CN1741066B/zh not_active Expired - Fee Related
-
2010
- 2010-05-26 US US12/787,520 patent/US7956860B2/en not_active Expired - Fee Related
-
2011
- 2011-04-29 US US13/097,312 patent/US8044957B2/en not_active Expired - Fee Related
- 2011-09-21 US US13/238,231 patent/US8217942B2/en not_active Expired - Fee Related
-
2012
- 2012-06-26 US US13/533,232 patent/US8462159B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8217942B2 (en) | 2012-07-10 |
GB2431324A (en) | 2007-04-18 |
CN102081804A (zh) | 2011-06-01 |
US8044957B2 (en) | 2011-10-25 |
TW200609728A (en) | 2006-03-16 |
US8462159B2 (en) | 2013-06-11 |
TWI330782B (en) | 2010-09-21 |
US20120262459A1 (en) | 2012-10-18 |
US7956860B2 (en) | 2011-06-07 |
US20120007867A1 (en) | 2012-01-12 |
US20060044313A1 (en) | 2006-03-02 |
CN1741066A (zh) | 2006-03-01 |
JP2008511074A (ja) | 2008-04-10 |
DE112005002076T5 (de) | 2007-07-19 |
US20100231591A1 (en) | 2010-09-16 |
CN102081804B (zh) | 2013-07-31 |
US7750914B2 (en) | 2010-07-06 |
US20110205230A1 (en) | 2011-08-25 |
WO2006026118A1 (en) | 2006-03-09 |
GB2431324B (en) | 2010-09-29 |
GB0700150D0 (en) | 2007-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1741066B (zh) | 在图形硬件中细分几何图像 | |
US8570322B2 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
Kalaiah et al. | Modeling and rendering of points with local geometry | |
US8115767B2 (en) | Computer graphics shadow volumes using hierarchical occlusion culling | |
US6704018B1 (en) | Graphic computing apparatus | |
Borgeat et al. | Gold: interactive display of huge colored and textured models | |
US8725466B2 (en) | System and method for hybrid solid and surface modeling for computer-aided design environments | |
Boubekeur et al. | A flexible kernel for adaptive mesh refinement on GPU | |
CN107993279B (zh) | 一种场景精确表达方法 | |
Yoon | Real-time massive model rendering | |
CN1655191A (zh) | 基于可编程图形硬件的多边形网格模型的快速体素化方法 | |
US20050151734A1 (en) | Method and apparatus for rendering, storing and editing voxel objects | |
Schneider et al. | Real-time rendering of complex vector data on 3d terrain models | |
US20230042578A1 (en) | Method for Generating a Hierarchical Data Structure, Hierarchical Data Structure, and Method for Streaming Three-Dimensional Objects | |
Knoll et al. | Coherent multiresolution isosurface ray tracing | |
CN116261740A (zh) | 基于每个信道压缩纹理数据 | |
Döllner | Geovisualization and real-time 3D computer graphics | |
KR100868396B1 (ko) | 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법 | |
Liang et al. | InfNeRF: Towards Infinite Scale NeRF Rendering with O (log n) Space Complexity | |
Chang et al. | Hierarchical image-based and polygon-based rendering for large-scale visualizations | |
Gebbie et al. | Fast Realistic Rendering of Global Worlds Using Programmable Graphics Hardware 5. | |
Khanduja | Multiple dataset visualization (MDV) framework for scalar volume data | |
Blais et al. | GoLD: Interactive Display of Huge Colored and Textured Models | |
Palmer | Evaluating Reconfigurable Texture Units for Programmable Graphics Cards | |
Domaratius | Chemnitz, January 25, 2007 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110330 Termination date: 20180826 |