CN107918942B - 压缩图元列表的方法和设备、以及图形渲染系统 - Google Patents

压缩图元列表的方法和设备、以及图形渲染系统 Download PDF

Info

Publication number
CN107918942B
CN107918942B CN201711103894.7A CN201711103894A CN107918942B CN 107918942 B CN107918942 B CN 107918942B CN 201711103894 A CN201711103894 A CN 201711103894A CN 107918942 B CN107918942 B CN 107918942B
Authority
CN
China
Prior art keywords
index
primitive
cache
domain point
primitives
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
Application number
CN201711103894.7A
Other languages
English (en)
Other versions
CN107918942A (zh
Inventor
S·菲什威克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN107918942A publication Critical patent/CN107918942A/zh
Application granted granted Critical
Publication of CN107918942B publication Critical patent/CN107918942B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/004Predictors, e.g. intraframe, interframe coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

本发明实施例提供用于在计算机图形系统中压缩图元列表的方法、设备及图形渲染系统,属于计算机图形处理技术领域。所述方法包括:将用于定义表面数据的被曲面细分的面片的图元列表中的第一图元的域点索引存储在缓存中;将在图元列表中用于压缩一个或多个随后的图元的预测域点索引存储在缓存中;比较图元列表中下一个图元的域点索引和存储在缓存中的域点索引,以确定匹配索引的缓存位置;针对图元列表中的图元重复预测域点索引的存储和重复域点索引的比较;在图元列表中的图元序列上确定各自匹配索引的缓存位置的重复模式;以及通过指定以下来生成序列中图元的压缩的域点索引:(i)匹配索引的在缓存位置的模式,以及(ii)模式重复的次数。

Description

压缩图元列表的方法和设备、以及图形渲染系统
本申请是申请日为2012年03月08日、申请号为201280012362.1、名称为“图块渲染系统中的被曲面细分的图元索引列表的压缩”的中国发明专利申请的分案申请。
技术领域
本发明涉及在三维计算机图形渲染系统中压缩由面片(patch)的曲面细分(tessellation)所生成的图元(primitive)数据的方法和装置。
背景技术
在计算机图形中使用曲面细分将低细节(low-detail)细分面转换为较高细节的图元。曲面细分将高阶面(high-order surface)打碎成适于渲染的结构。这一方法允许图形流水线(pipeline)评估较低细节(较少的多边形数量)模型并用较高细节来渲染。换言之,由高阶方程(例如,立方或平方)定义的面被分成多个平坦的图元,典型地是用于渲染的三角形。
在计算机图形工业中高阶面被众所周知并常被称为“面片”。这些面片是通常定义一组控制点的多项式方程的函数,所述控制点依据变量‘t’(用于二维中标绘的曲线)或两个变量‘u’和‘v’(用于三维中标绘的曲面)间的参数关系来描述曲线的形状。图1示出了贝塞尔(Bezier)面片,它是通常在3D计算机图形中使用的高阶面的示例。在贝塞尔面110上的点‘P’100由域坐标u,v 120(也被作为参数坐标)和相应的控制点ki,j 130的函数来定义。
Figure GDA0002837124310000011
这里A和B是如下所定义的常数:
Figure GDA0002837124310000021
以及
Figure GDA0002837124310000022
应该注意到P(u,v)的值在体积(volumn)140的范围内,也被认为是由控制点ki,j130所描述的凸包(convex hull)。也应注意到贝塞尔面片只是一种可能的面公式化的示例,而存在用于计算机图形系统中的众多其他的可能。
曲面细分是众所周知将高阶面/面片再分为位于原始面的平面上和原始面的边界内的多个毗邻的图元(如图1所示)的技术。曲面细分器的再分方案通常通过使用标准化(0到1)坐标系而在面片的域中被执行。这样做的结果是曲面细分过程独立于最终面上存在的任意弯曲。面片的域可以是四边形、三角形或线形并且这些域通常被再分为许多更小的基于,例如点、线和三角。这些图元通过域点的互连来定义,其位置由曲面细分方法和设置来定义。
图2示出了利用二进制再分法对贝塞尔四方形面片的域点的曲面细分。具有16个域点且每条轴线间隔为0.25的域200表示出曲面细分的面片中域点的最小数目,这和定义贝塞尔面所需要的控制点的数目相同。一级曲面细分在210处被应用,这导致在位于原始组的点之间的中间点处的间隔处生成了另一组域点。第二级曲面细分220在210中生成的点之间的中点处引入了另一组域点。这个过程可以一直重复直到达到合适级别的曲面细分。
曲面细分的级别受曲面细分应用控制并且可由视觉质量度量来决定,例如在距离相机特定距离处需要多少多边形才能给出曲面的平滑呈现等。可替换的,所应用的曲面细分级别可由有效的计算能力来决定,利用使用更高级别的曲面细分来改善视觉质量的更强大的系统。应该注意到二进制再分只代表一种可能的曲面细分方法并且此处仅做为一个示例而被呈现。
微软的Direct3D11(D3D11)应用程序接口(API)引入了用于在图形流水线中的曲面细分的二进制再分的可编程的替代方案,本文将对该替代方案做说明。其他API,例如OpenGL4.0,提供了对于高阶面曲面细分的类似功能。这些程序接口通常可以由硬件来加速。图3示出了D3D11 API所需的图形流水线。顶点着色器(Vertex Shader)300中得到用于面片的单独控制点组并使用可编程硬件以本领域技术人员周知的方式应用任意数学转换。经转换的控制点然后被传到外壳着色器(Hull Shader)310,外壳着色器310计算用于面片边缘的曲面细分因子并对这些控制点施加定义修改的进一步的应用。
用于面片的边缘曲面细分因子被传送给曲面细分单元320。曲面细分分两个部分进行,域曲面细分和连接性曲面细分。域曲面细分将面片再分为多个被称为域点的点。这些域点的位置通过曲面细分方法决定并且这些域点以类似于图2所述的方法被提供了曲面细分参数,但是例如D3D11 API所规定的那些方法,不要求域点被按照有规律的间隔(例如,2的幂(power of two))放置。连接性曲面细分根据固定的功能算法确定了有多少生成的域点被结合用来产生被曲面细分的图元,固定的功能算法的运行由D3D11 API来定义。如本领域技术人员所周知的,固定的功能域和连接性曲面细分算法的细节描述超出了本文的范围并由API充分定义。
被曲面细分的域点被传送到域着色器330,域着色器330以可编程的方式用外壳着色器所生成的面片的控制点来将这些域点结合起来。典型地,域着色器将采用已知的曲面公式,例如贝塞尔面片(如以上对图1的描述),生成映射到面片上的域点以产生图元顶点。然后利用周知的技术,例如位移映射来进一步修改生成的顶点。位移映射是一种技术,其中高阶面曲面细分的结果使用数学函数或从纹理贴图(texture map)被抽样的高度而被位移。从面片表面的顶点的位移映射的引入,引入了顶点不再位于由面片的控制点所定义的凸包中的可能性。所述域着色器的输出被传送到几何体着色器340。
尽管所公开的方法同样适用于不基于图块(tile)的系统,但是为了说明的目的,本发明的实施方式将按照在基于图块的渲染系统中的曲面细分来描述。基于图块的渲染系统是众所周知的。这些架构将图像再分为多个矩形块或图块。图4示出了典型的包括纹理和着色步骤的基于图块的系统的架构。
基于图块的渲染通常分为两个阶段,第一阶段被称为几何体处理阶段490,几何体处理阶段490可进行以下操作。
首先,图元/命令获取单元400从外部存储器中检索命令和图元数据并经其传送给顶点着色器单元401。然后利用周知的方法,如块402和403所示的修剪/剔除(clip/cull)和投影,将图元和命令数据转化(transform)为屏幕空间。
然后数据被提供给贴图(tiling)单元410,贴图单元410将来自屏幕空间几何的对象数据插入至已定义的一组矩形区域或图块中的每一个的对象列表里。对于每个图块的对象列表包括图元,这些图元全部或部分存在于该图块中并被储存在贴图(tiled)屏幕空间几何体缓存420中。针对屏幕上的每个图块都存在对象列表,虽然一些对象列表中没有数据。可设想一个系统,在其中代替将对象转换成屏幕的坐标系以用于贴图,将图块转换为对象的坐标系并且在该域中执行贴图,这同样是可能的。为了这个目的可在图块和几何体间使用任意普通的坐标系。
基于图块的渲染的第二阶段被称为光栅化阶段491,光栅化阶段491中进行以下操作。
图块参数获取单元430从贴图屏幕空间几何体缓存中读取由贴图单元生成的对象列表,图块参数获取单元430将图块一个接一个提供给隐藏面消除(HSR)单元440。HSR单元通过处理图块中的每个图元并仅将可见的数据传送给着色单元450来移除对最终场景无用的面(通常因为它们被其他面所掩盖)。
着色单元从HSR单元中获得数据并通过使用纹理单元460利用该数据来获取纹理,以及利用周知的技术对可见对象中的每个像素进行着色(shade)。然后着色单元将经纹理处理的并经着色的数据反馈给芯片上的图块缓存470。因为操作被应用至芯片上的图块缓存,所需的外部至芯片的数据通信流的总量被最小化。
一旦每个图块被处理完,产生的数据将被写至被渲染的场景缓存480中。
典型地,无曲面细分的常规系统近似于几何体,例如曲面,仅具有有限数目的多边形来保持可接受的性能。与其他可行方式相比,曲面细分的最常见的应用是将面片用作较多数量的多边形的紧凑表示。更紧凑的表示的实际好处是在图元/命令获取(400)阶段中减少了带宽。
一组图元(例如从面片中生成的那些图元)的贴图,常通过贴图该组的边界框来执行。这样所需的计算量与单独铺设每个图元所需的相比有显著减小。凸包常形成对从平面面片生成的图元的合适的(convenient)边界框的基础,然而,因为位移映射允许图元顶点扩展至面片的凸包的边界之外,这并不总是与D3D11 API一起使用的合适的方法。
将高阶面的可编程曲面细分加到基于图块的渲染架构上的常见方法是首先将场景中的每个面片曲面细分成图元并应用任意位移映射。随后,生成的图元可被贴图并且利用常见的基于图块的渲染流水线被处理。尽管很简单,但是这种方式需要在图形流水线的早期期间将面片数据扩展到众多图元中。数据扩展导致了与经贴图的屏幕空间几何体缓存(420)相关联的存储器和带宽需求显著增加,抵消了在图元/命令获取中取得的好处,并且相对于不使用经贴图的屏幕空间几何体缓存的非贴图架构,将基于图块的系统置于不利的处境。因此期望在贴图之前避免全部数据扩展并反而存储面片及期望使用从那些面片中生成图元的方法。
在我们的英国专利申请no.1007348.3中描述了将高阶面片的曲面细分加到基于图块的渲染架构的更有效的方法,并且在图5中示意性地示出。在这个经改进的双途径(two-pass)系统中,渲染流水线的几何体处理阶段590被扩展用来确定面片的曲面细分期间成成的多边形是否全部或部分的存在于图块中。如果多边形在场景中的最终位置位于图块的可视区域中,则该多边形被认为存在于该图块中。如果多边形在场景中的位置全部落在图块的可视区域中则该多边形全部存在于该图块中。如果多边形的至少一部分落在图块的可视区域中则该多边形部分存在于该图块中。全部或部分存在于图块中的多边形在图块中可以是全部或部分可见的,或者如果被其他多边行掩盖则在最终场景中可以是不可见的。可选的,被掩盖的多边形可以被检测到或者从全部或部分存在于图块中的多边形的列表中被移除。如果来自面片的一个或多个多边形全部或部分存在于图块中,则面片而不是多边形被存储在针对该图块的对象列表中。注意:如果只有少量来自面片的多边形可见,则有望存储这些多边形以最小化数据量。分配存在于图块中的几何体的过程通常被称为“贴图”或“分仓(binning)”。
在面片数据上执行初始化曲面细分途径并且通过执行顶点着色和外壳着色来确定来自每个面片的被曲面细分的图元的位置。如果由面片的曲面细分所产生的图元中的任何图元存在于图块中,则该面片必须被加到经贴图的屏幕空间几何体缓存中的用于该图块的对象列表中。通过仅存储在光栅化阶段重做曲面细分所需的面片控制点组和曲面细分参数,与存储标杆(post)曲面细分图元几何体所需的数据量相比,存储在被曲面细分的空间几何体缓存中的数据量显著减小。应该注意的是,在顶点和外壳着色已经被执行之后,面片控制点可以被存储以避免在光栅化期间重复曲面细分计算的那些部分。
因为在贴图过程中已执行全部曲面细分,存储列表是可能的,在曲面细分后来自面片的图元的列表将全部或部分地存在于图块中。该列表允许在后期的曲面细分过程根据每个面片仅重建图块中所需的那些图元的可能。
顶点着色器单元501和外壳着色器单元502如同上述以标准D3D11曲面细分流水线而运行。外壳着色器单元将计算出的边缘曲面细分因子传送给域曲面细分单元503和连接性曲面细分单元504二者,同时还将经处理的控制点数据传送给域着色器单元505。
域曲面细分单元生成与域点索引值相关的域点,并且域点连接性曲面细分单元指定了来自面片的域点索引的列表,该域点索引指定了来自该面片的域点索引的列表,该列表指定了图元索引和顺序,域点应该被按照顺序连接以生成图元。
图元顶点被传送给可选的高速缓存单元506,高速缓存单元506缓存之前由域着色器单元生成的图元顶点。应当注意高速缓存并不是必须的,但构成被曲面细分的面片的图元的互联性质意味着高速缓存的存在能显著减小通过域着色器单元处理的图元顶点的数目。图元顶点不存在于高速缓存中时则要求域着色器单元提供该图元顶点。
因为域着色器单元只是贴图被曲面细分的几何体所需的一部分,域着色器单元仅处理图元顶点数据的位置部分。高速缓存单元将构成图元的图元顶点传递给修剪和剔除单元510,修剪和剔除单元510移除屏幕的可视区域外的所有图元并可选地移除落在采样位置之间的后面的和/或落在采样位置间的非常小的图元。应当注意的是修剪和剔除操作破坏了从被曲面细分的面片生成的图元的有规律的顺序,并且应该注意这可能影响随后的压缩操作的性能。因此,可选地将修剪和剔除延迟到流水线中的后期阶段。
任何剩余的图元被传送至投影单元511,投影单元511将剩余的一个或多个图元顶点转化为将由贴图单元512进行贴图的屏幕空间。贴图单元512确定哪些图元全部或部分存在于每个图块中并将描述图元顶点的域点索引的列表传送至可选的索引压缩单元513。
将参考在索引压缩单元513中所使用的压缩方法来描述本发明的实施方式。该单元负责将用于定义存在于每个图块中的图元的域点索引的列表有效地压缩成被压缩的图元列表。该压缩减小了写入每个图块几何体列表中的数据量,减小了对存储和带宽的需求。
然后外壳着色器的输出和被压缩的图元列表的参考被写入经贴图的屏幕空间几何体缓存514。
流水线中的稍后阶段可以利用外壳着色器的输出来仅重新生成那些全部或部分存在于当前图块中的图元。来自被曲面细分的面片的不是全部或部分寻在与当前图块中的图元无需通过曲面细分处理来产生。
本发明示出了对由贴图被曲面细分的几何体所产生的域点索引的列表的有效压缩方案。
已经存在一些用于减小存储几何体所需的数据量的压缩方案。这些方案中最常见的是三角形带状的使用。三角形带状是描述共享顶点的被连接的三角形图元的有效方法。在用三个顶点定义第一个三角形后,定义每个新的三角形只需要增加一个顶点、并共享针对之前的三角形图元进行定义的最后两个顶点。图6示出了由四个相连的三角形图元组成的示例性三角形带状。在不使用三角形带状的情况下,索引的列表将不得不被存储为四个单独的三角形:ABC、CBD、CDE、EDF。然而,利用三角形带状,这些可被存储为顶点序列ABCDEF。该序列将被解码为三角形组ABC、BCD、CDE、DEF,然后每一个偶数(even-numbered)三角形(从1开始计数)将被颠倒(reverse)导致原始三角形图元的一致的顺时针/逆时针顺序。
三角形带状能有效的压缩长时间运行(long runs of)的相邻三角形,但对于更复杂的几何体的效果不佳。由贴图被曲面细分的面片所产生的几何体包括用于减小有效三角形带状压缩的结构,例如共享一个公用顶点的多个三角形,被称为三角形扇,还包括三角形图元的顺时针/逆时针顶点顺序的改变以及由铺设过程导致的序列中的缺失三角形。图7示出了典型的三角形面片到三角形图元的低级别曲面细分。能看出被曲面细分的几何体包括多个三角形扇和三角形的顺序的多酚变化,使得其不适用于使用三角形带状的有效压缩。从被曲面细分的面片中移除一些三角形图元(作为贴图的结果)可进一步减小三角形带状作为一种压缩方法的有效性。
在计算机图形中顶点缓存和索引缓存是周知的。图23所示的是索引缓存压缩的示意性示例,其为一种用于压缩索引流的周知方法。来自最近看见的图元的索引的列表被存储在索引缓存2320中。当增加新图元时,图元2310的未压缩的域点索引与索引缓存中的内容在2330处被比较。可用在缓存中的位置代替存储完整的索引值来表示已存在于索引缓存中的任意索引值。假定可用比索引值本身更少的比特数来描述在索引缓存中的位置,2390就实现了压缩。
参考使用索引缓存被压缩的所列举的图6的示例。读入初始图元ABC。在遇到这个图元前缓存中没有这些索引。因此必须充分阐明这些索引并且用这些索引来初始化缓存。在初始化之后,缓存位置0包含索引A,缓存位置1包含索引B,缓存位置2包含索引C。可使用指示缓存中的位置的方括号记法:[0]=A,[1]=B,[2]=C。现在第二个图元CBD可被定义为2个索引缓存位置和新遇到的索引D:[2][1]D。一旦缓存被占满,可用例如先进先出(FIFO)或最近最少使用(LRU)的替换策略来引入新到的索引。顶点/索引缓存对于之前已遇到的索引来说是有效的压缩方法,但通常每个图元至少要有一个索引不存在于以前的图元的缓存中。
针对被曲面细分的几何体的压缩,Jon Hasselgren等人提出了一种利用边界框方法来判定每个图块中存在哪些多边形的可替换方法(“Automatic Pre-TessellationCulling”,ACM Trans.on Graph.,Vol.28,pp 19(2009))。在该方法中,如果要进行曲面细分,区间数学(interval mathematics)被用于针对每个面片确定从基础面片可能位移的范围,被曲面细分的表面可以获得该基础面片。利用该可能的位移范围,可产生围绕面片的保守的边界框,该边界框描述出来自该面片的图元的所有可能的位置。然后,可投影和贴图该边界框来确定在曲面细分后该面片全部或部分存在于哪个图块。虽然这一方法减小了对被曲面细分的面片的扩充的图元几何体的存储需求,边界框的保守性导致面片被包括在图块中,在曲面细分后这些面片将即不全部也不部分地存在于这些图块中。而且,对于面片的边界框只能指定在曲面细分被执行之后来自面片的被细分的被曲面细分的图元可能存在于图块中并意味着在一些图块中会包括不必要的面片。这些不必要的面片导致在图形流水线上随后的计算和渲染的浪费。边界框方法也无法识别来被曲面细分的面片的那些图元存在于每个图块中,并且因此与单独考虑每个来自被曲面细分的面片的图元的方法相比,边界框方法执行比较不好的贴图。紧密位置和正常边界的计算减小被曲面细分的图元的边界框的大小并且因此可被用来减小所包含的图块的数目。然而,在用函数进行位移和可选的进一步的位移映射处理后,针对被曲面细分的面片的边界的计算是计算密集型处理,而且对于复杂的用户可编程函数该结果将造成无限的边界,该函数包括难以限定的方面——例如随机噪声函数。
发明内容
本发明的实施方式提供了用于压缩由贴图被曲面细分的几何体产生的可见图元索引列表的有效方法和装置。
将场景中的每个面片曲面细分为其构成图元,并且由于经贴图的屏幕空间几何体缓存中的数据扩张,相比于原始面片数据,在贴图前先采用位移映射,大幅增加了对存储和带宽二者的需求。然而在贴图阶段期间,面片可被曲面细分以确定那些图元将全部或部分地存在于每个图块中。图块不存储源于曲面细分的大量图元,而是图块可以存储基础面片和用于执行该面片的曲面细分所必要的曲面细分参数,以及列表,该列表中的由所述曲面细分所产生的图元存在于每个图块中。如果面片的曲面细分所产生的图元都没有全部或部分地存在于图块中,则面片无需被存储在该图块中。与存储来自每个面片的全部被曲面细分的图元相比,这一技术显著节省了对存储和带宽的需求。能通过压缩来自该面片的图元的列表实现进一步减少每个图块几何体的数据,这些图元全部或部分存在于每个图块中并且被存储在被曲面细分的屏幕空间几何体缓存中。
通常来自被曲面细分的面片的图元仅有一些全部或部分存在于图块中。来自面片的图元不存在于图块中,因为它们反而位于另一个图块中,它们被其他对象/图元所堵塞,并由于方位而被修剪/采集(背面剔除),或者因为它们在屏幕的可视区域外。因此存在于任一图块中的图元的列表是由图块的曲面细分所产生的组中的图元总数的子集(其中子集可包括该组中的每一个图元)。尽管存在于图块中的图元的列表有可能会随意丢失每个图块中的一些图元,实际情况还是趋向于列出位置(locality),即,如果一个图元存在于图块中,很可能相邻图元也存在于同一图块中。应当注意的是,可选择的,可通过使用修剪/剔除操作来增加该位置,该修剪/剔除操作避免移除来自被曲面细分的面片的孤立(isolated)的图元。利用位置原则和潜在的(underlying)被曲面细分的面的几何体的知识,比另外的使用无知觉压缩方案可达到的压缩相比,允许更有效的压缩存在于每个图块中的图元的列表。
来自经曲面细分的面片的图元的子集可以被存储为定义那些图元的索引的列表。在不压缩的情况下,定义每个图元的所需的索引的数目与在该图元中存在的顶点的数目相等,即,一条线由两个顶点来定义,而一个三角形由三个顶点来定义。本发明的第一方面是一种新颖的压缩方案,该压缩方案不仅在索引缓存中存储之前的图元的索引或图元的索引,还增加了一个或多个预测索引值,该预测索引值可以被用在随后的图元的定义中。准确的预测在任意网格中的下一个图元所需的索引值是不可能的,然而被曲面细分的面片的内部结构的常识允许产生有用的预测索引值,该预测索引值可以被插入到索引缓存中。这一方法将被称为“利用预测的索引缓存压缩”。
本发明的第二方面体现在利用预测的索引缓存压缩的结果的第二阶段压缩中。在插入到索引缓存中的预测值正确的区域中,访问索引缓存的模式(pattern)将具有重复的结构。这些重复的缓存访问模式的出现可归因于潜在的几何体和由所公开的利用预测的索引缓存压缩方法所产生的正确预测。发生的重复模式通过定义正在重复的缓存访问模式和该模式被重复的次数而自身可以被压缩。在长时间运行重复缓存访问模式时,该“缓存访问模式压缩”可以显著减小必须要存储在每个图块中的几何体的数据的量,该重复缓存访问模式在用于预测被高度曲面细分的面片的索引缓存压缩中是很常见的。
本发明的第三也是最后一个方面体现为对所有剩余的未存在于缓存中的索引的压缩,因为它们在之前的图元中没出现并且也没有被本发明的第一方面准确预测出。这些完整的索引值可出现在图块中的第一图元上或者在因为它们没有全部或部分存在于图块中而使得来自面片的图元丢失的情况下。域点索引可被存为用于识别几何结构的基础标识符部分和用于识别所请求的顶点及其域点索引的沿着该几何机构的偏移,沿着该几何结果存在多个顶点。因此沿着同一几何结构的多个索引可以由单个基础标识符值和多个偏移值来描述,并且最小的比特数可以被用于基础标识符和偏移部分。
附图说明
现在将参考附图详细通过示例的方式来描述本发明的优选实施方式,其中:
图1示出了贝塞尔面片;
图2示出了使用二进制再分的曲面细分的过程,图2示出了面片的域点的曲面细分;
图3示出了D3D11可编程的曲面细分流水线;
图4示出了基于已知的图块的渲染系统的原理图,图4示出了基于贴图的渲染系统;
图5示出了扩展为包括可编程曲面细分的基于图块的渲染系统的几何体处理过程;
图6示出了示例性三角形带状网格;
图7示出了使用三角形图元的D3D11三角形面片,其使用奇数分隔、最小内部减小及边缘曲面细分因子4、10和50而被产生,图7示出了使用三角形图元和不同边缘曲面细分因子的D3D11被曲面细分的三角形面片;
图8示出了使用具有域点索引的三角形图元的D3D11被曲面细分的方形面片,其使用奇数分割和施加到每个边缘上的曲面细分因子3而被产生,图8示出了使用具有域点索引的三角形图元的D3D11被曲面细分的四方形面片;
图9示出了使用具有图元索引的三角形图元的D3D11被曲面细分的方形面片,其使用奇数分割和施加到每个边缘上的曲面细分因子3而被产生,图9示出了使用具有图元索引的三角形图元的D3D11被曲面细分的四方形面片;
图10示出了使用具有域点索引的线图元的D3D11曲面细分的面片,其使用奇数分割和施加到细节/密度(即水平/垂直边缘)上的曲面细分因子3而被产生;
图11示出了使用具有域点索引的线图元的D3D11被曲面细分的面片,其使用奇数分割和施加到细节/密度(即水平/垂直边缘)上的曲面细分因子3而被产生;
图12示出了相对于被着色的图块区域的D3D11被曲面细分的方形面片的贴图,图12示出了使用三角形图元的D3D11被曲面细分的四方形面片且着色的图块区域被覆盖;
图13示出了在根据所选的图元索引的列表的连接性重算期间不全部或部分存在于被着色的图块部位内的图元被包括在图块中的情况,图13示出了针对被着色的图块区域来贴上三角形图元;
图14示出了使用包含之前图元的域点索引的索引缓存的D3D11的被曲面细分的方形面片的压缩,图14示出了使用三角形图元的被曲面细分的四方形面片的索引缓存压缩;
图15示出了D3D11方形面片的线图元曲面细分中的下一个域点的预测,图15示出了四方形面片的线图元曲面细分中的下一个域点的D3D11域点预测;
图16示出了当遇到一个新行时,D3D11方形面片的线图元曲面细分中的下一个域点的预测,图16示出了在新行起始点处四方形面片的线图元曲面细分中的下一个域点的D3D11域点预测;
图17示出了D3D11被曲面细分的方形面片中的域索引的环状结构,图17示出了域点索引的环状结构的使用三角形图元的D3D11被曲面细分的面片;
图18示出了用于D3D11方形面片的三角形图元曲面细分中的下一个域点的域点索引预测,图18示出了使用三角形图元和域点预测的D3D11被曲面细分的面片;
图19示出了使用具有源自单独顶点的预测索引缓存压缩的D3D11被曲面细分的方形面片的压缩,图19示出了具有源自单独顶点的域点索引预测的被曲面细分的四方形面片的索引缓存压缩;
图20示出了使用具有源自单独顶点的预测索引缓存压缩的由面片曲面细分引起的一系列相连的三角形图元的压缩,图20示出了来自具有源自单独顶点的域点索引预测的被曲面细分的面片的重复几何体的索引缓存压缩;
图21示出了通过将域点索引指定为环号和环偏移的D3D11被曲面细分的面片的压缩,图21示出了使用三角形图元的D3D11被曲面细分的面片,其示出了使用环号和环偏移来指明被压缩的域点索引;
图22示出了通过将域点索引指定为线号和线偏移的D3D11被曲面细分的面片的压缩,图22示出了使用线图元的D3D11被曲面细分的面片,其示出使用行号和行偏移来指明被压缩的域点索引;
图23示出了使用现有技术索引缓存压缩方法的索引压缩块的装置,图23示出了现有技术索引缓存压缩方法的索引缓存压缩块;
图24示出了索引压缩块的装置,其使用了公开的利用域点索引预测方法的索引缓存压缩,图24示出了索引压缩块,其示出了所提出的利用域点索引预测方法的索引压缩;
图25示出了索引缓存压缩块的装置,该装置使用了本公开的利用域点索引预测方法的索引缓存压缩,该域点索引预测方法扩展为包括对不存在于预测的索引缓存中的域点索引的压缩,图25示出了索引压缩块,其示出了所提出的利用域点索引预测的索引压缩和使用基础标识符和偏移的索引压缩。
具体实施方式
面片曲面细分在<u,v>域空间中产生位置由面片的曲面细分参数和固定的功能曲面细分方案确定的域点的栅格。曲面细分算法可生成源于面片的三角形、线性或点图元。
D3D11的固定功能曲面细分方案产生用于面片的域点并给每个域点分配索引。域点按照螺旋模式产生,该螺旋模式沿着面片的每个外缘向内移动直到达到该面片的中心。索引被按照域点产生的顺序编号并且因此沿着螺旋从最小索引值(即此示例中的0)递增到对于该曲面细分等级的最大索引值(即此示例中的15)。图8示出了使用奇数细分和施加于每个边的边缘曲面细分因子3将方形面片分隔为三角形图元的示例性D3D11曲面细分。从中可看到被编号的域点的螺旋模式。
D3D11的曲面细分的连接性方案使用了固定的功能算法来将域点连接到图元中。在图8中,曲面细分连接性算法已经产生了三角形图元,每个三角形图元由三个域点来定义,可使用对应的域点索引来引用这些域点。用于确定域点的连接性的方法由所使用的曲面细分系统(在D3D11中)来定义,理解本发明无需对此做进一步讨论。本领域的技术人员可理解可采用任何一种连接性算法。可看出,假定按顺时针方向定义三角形,被曲面细分的表面包括三角形图元,其中每个图元都可以由三个域点索引来定义,例如:{0,1,12}、{12,1,13}、{13,1,12}等。可替换的,不给域点分配索引,而是如图9所示,由曲面细分连接性处理所产生的图元可以按照其产生顺序而被分配图元索引。其中,每个图元(三角形)被从0到16编号。
和三角形图元一样,D3D11的固定功能曲面细分器可以通过在进行到下一行前按顺序进展穿过面片的光栅扫描过程中定义域点来产生线和点图元。图10示出了示例性D3D11线图元曲面细分,其中采用了奇数再分和为三的细节/密度曲面细分因子(即相当于水平/垂直边缘曲面细分因子)。按照域点产生的顺序对索引编号并且因此按照光栅扫描序列递增,光栅扫描序列在进行到下一行前沿着每行递增。D3D11的曲面细分的连接性方案使用固定功能算法来将域点连接到图元中。在线图元的情况中,每个图元由两个域点索引来定义。用于确定域点的连接性的方法由D3D11的曲面细分连接性算法来定义。可看出,图10中所示的被曲面细分的表面包括线图元,其中每个图元可由两个域点索引来定义,例如:{0,1}、{1,2}、{2,3}等。可替换的,如图11所示,可按照图元产生的顺序向其分配标识符(0,1,2等)。
在基于图块的渲染中,有必要确定哪些来自每个被曲面细分的面片的图元存在于每个图块中。图12示出了和图8所示相同的被曲面细分的表面,但具有额外的已着色的被覆盖图块区域1201。该图块区域示出了当矩形图块被投影到面片的域中时的该矩形图块的可见区域,即可见的图块和面片的交集。全部或部分与图块区域重叠的图元可被称为全部或部分存在于该图块中并且必须被包含在该图块的对象列表中。在这一示例中,由索引{0,1,12}、{12,1,13}、{13,1,2}、{2,3,13}、{3,4,13}和{11,0,12}定义的三角形与图块区域重叠并且因此部分或全部存在于该图块中(此示例中它们都是部分地存在于该图块中)。来自被曲面细分的面片的所有其他图元不与已着色的图块区域间相交,因此不存在于该图块中,并且在渲染期间也不需要该其他图元以用显示图块的内容。部分或全部存在于图块中的图元被添加到该图块的对象列表中,而来自该被曲面细分的面片的其他图元则未被添加。在此示例中,存储了在渲染期间所需的来自面片的图元的最小集合。
在之前的英国专利申请no.10077348.4中已经公开了使用双途径曲面细分过程来进行曲面细分的基于图块的渲染流水线。在该系统中,第一途径曲面细分过程识别面片,该面片中包含全部或部分存在于每个图块中的图元,而第二曲面细分途径在每个图块的渲染期间被用来再造来自每个面片的存在于图块中的图元。这种基于图块的渲染机构中的贴图阶段和渲染阶段的固有分离(inherent separation)要求必须将经贴图的几何体写到存储器中直到随后在流水线中因为渲染而需要该几何体并将其读出。因此期望压缩描述存在于每个图块中的几何体的对象列表数据以最小化对用于存储的存储器的需求和用于读/写图元到存储器的相关带宽的需求。
本发明的实施方式提供了压缩存在于每个图块中的几何体的有效方法。压缩的重点是实现当投影到被曲面细分的面片的域上全部或部分存在于图块中的图元将通常列出位置,换言之,如果一个图元存在于图块中,其相邻的图元很可能也将存在于该图块中。在图9或图11所示的面片的情况中,其中存在于图块中的图元由图元索引值来定义,很可能该位置将导致具有连续的图元索引的图元被存储到相同的图块中。这些连续的图元索引可以易被压缩为一系列(a run of)递增的值或者连续值之间的差异的游程编码(run lengthencoding)。类似地,在图8和图10中所示的面片的情况中,其中利用域点索引的结构化列表定义图元,可利用一类似系列的递增的值或者连续值之间的差异的游程编码来首先对域点索引进行分类和压缩。在这些情况下,分类过程使得能实现简单和有效的压缩,然而由于索引分类过程会丢失这些域点的结构和连接性。
为使用这种压缩方案,每当在流水线的后期阶段要使用这些数据时,需要重新计算曲面细分连接性。此外,对来自存在于图块中的图元的域点索引的分类列表中的图元可见性的重新计算不再能保证图块中的三角形组最小。考虑到图13所示的示例,其中相对于已着色的图块区域1101,来自面片的四个三角形图元(A、B、C和D)被贴图。图元A、B和D部分或全部的存在于该图块中并且因此图元索引{1,2,3}、{3,4,5}和{5,6,1}应该被包含在该图块中。图元C不存在于该图块中因此很明确它的域点索引不应该被添加到该图块中。
如果分类的压缩将被使用,用于描述存在于该图块中的图元的域点索引列表将为{1,2,3,4,5,6}。尽管不是很明确被添加到该图块中,图元C的每个域点索引(即1,3和5)已经出现在该图块的域点索引的分类列表中。会出现这种情况是因为不存在于该图块中的图元C的域点索引被存在于该图块中的图元A、B和D所共享。当重新计算曲面细分连接性时,除非被明确排出,否则三角形C将因此被错误的认为存在于该图块而被重新产生。
在一些应用中,包含小数目的不需要的三角形不会造成严重超支。类似地,在仅需要从面片中排除小数目的图元的情况下,存储从需要该图块中排除的图元的列表比存储那些包含的图元的列表更好。
在许多应用中,为了避免在流水线的后期重新计算曲面细分连接性,期望保存该面片的初始曲面细分的连接性信息。因此需要保存连接性信息的压缩方案。如图14所示考虑四方形面片至三角形图元的曲面细分。表格中包括被曲面细分的面片中图元的未被压缩的域点索引列表。不能用简单的不分类的差异的游程编码(run length encoding ofdifferences)对以未被压缩的域点索引格式存在的数据进行分类。类似地,图7中所示的三角形扇类型的存在和图元顺序的突变限制了例如三角形带状的常规压缩方案可实现的压缩,因为在每个不连接处附加了相关开支。如之前图7所示的高等级的曲面细分可以包含非常多三角形扇和三角形带状的过渡(transition)。因此,常规索引缓存压缩是更合适的常规压缩机制。
在D3D11中每个面片可被曲面细分成多达4225个域点。利用三角形连接性曲面细分这些过渡可将其细分为8192个三角形图元。如果用3个域点索引定义每一个通过曲面细分处理所产生的三角形,则该被曲面细分的面片将需要24,756个域点。以未被压缩的形式存储图元每个图元索引将需要13个比特并且很可能仅对于该图元网格就需要24,756*13=42.3千字节的数据。在D3D11的说明书中明确定义了D3D11曲面细分算法将产生多少域点/三角形这一细节,细节仅供参考和了解。
常规索引缓存压缩减小了存储需求。如果缓存中或之前的域点索引中存在当前图元中的域点索引,则仅需要存储器其在缓存中的位置而非整个域点索引。至于D3D11的曲面细分算法所产生的三角形图元,出现在缓存中的13比特的域点索引值可被2比特的缓存位置所取代(假设缓存中仅含有3个在之前的三角形图元中出现过的域点索引)。值得注意的是,为了使用索引缓存压缩,在每个索引值前需要有1个比特的标志用来指示其后跟着的是完整的13比特的域点索引值还是2比特的缓冲位置。
图14示出了对未被压缩的图元域点索引列表应用常规索引缓存压缩的结果。该缓存包括之前的三角形图元的三个域点索引。方括号中的值表明所需的域点索引的缓存位置,其中[0]是缓存中的第一个值。在产生比特流输出中,每个未出现在缓存中的域点索引必须被‘0’比特来表示,以指示缓存中没有该索引,并在其后跟着完整的13比特的索引值。出现在缓存中的每个域点索引应该用‘1’比特来表示,以指示缓存中有该索引,并在其后跟着2比特的缓存位置。提供了示出的针对曲面细分的面片的索引缓存压缩比特流的结果。
可看出被曲面细分的面片的未经压缩的存储需要18个三角形图元,每个存储用3*13比特索引值=702bits来定义。常规索引缓存压缩能用21个完整的域点索引值和33个缓存位置(1比特的缓存命中(hit)标志+2比特的缓存位置)来存储相同的几何体,每个索引值需要14个比特(1比特的无缓存标志后跟着13比特的域点索引值)。相当于(21x14)+(33x 3)=393比特。因此实现了大约44%的压缩。
根据缓存中增加的一个或多个预测域点索引值可改进常规索引缓存压缩。对随意编号的图元网格生成有效的预测机制是不可能的。通过约束曲面细分应用的压缩方案,可使用域点索引的内在位置和潜在结构来产生有效的域点索引预测。使用本发明所体现的方法能实现非常成功的仅利用域点索引(即缓存中的值)的域点索引预测方案。
图24示出了索引压缩块的改进装置。在此架构中,来自最近看到的图元的索引的列表被存储在索引缓存2420中。该索引缓存被扩展为包括一个或多个预测域点索引值。索引选择2421识别出现在之前图元索引中的域点索引值,该域点索引值被用来作为预测索引值的基础,后文中被称为选中的索引。本专利公开了选择方法。之后根据本专利所公开的方法,由索引预测2422修改选中的索引以利用预测修改器产生一个或多个预测索引值。可选地可通过在索引预测2423中的进一步的修改来移除已存在于索引缓存中的预测索引值。当增加一个新的图元时,2430可比较图元的未经压缩的域点索引2410和索引缓存,该索引缓存包括之前的图元索引和预测索引二者。所有已经出现的索引值可用包括预测索引缓存中的缓存位置来表示,而非存储完整的索引值。假定可以使用比索引缓存值自身更少的比特来表示在具有预测的索引缓存中的位置,则2490可实现压缩。
域点索引预测方案取决于曲面细分算法所用的图元的类型。在点图元的情况下,由单个域点索引来定义点。在使用域点索引A处理当前图元后,下一个域点索引很可能是A+1。我们可以认为选中的索引是域点索引A并且预测修改规则是+1。相应的可产生预测域点索引值A+1并将其存储在索引缓存中。
在线图元的情况下,由两个域点索引A和A+1来定义线。在处理了当前图元后,索引A和A+1被存储在索引缓存中并仅需要1比特的缓存位置。通过将缓存扩展为包括预测索引值,需要2比特的缓存位置。两比特的缓存位置码运行访问四个索引值,即用于之前的线图元的两个索引和两个预测索引值。因此对于线图元,有两个有效的预测域点索引值为A+2和A+3(即,最高的域点索引值的被用作选中的索引(即A+1)并且预测修改值是选中的索引加1和选中的索引加2)。
图15示出了通过包括缓存中的最高域点索引值加1的域点索引值所产生的益处。之前的线图元由域点索引{4,5}来定义。因此预测索引值是{6,7}。可以看出该面片中的下一个线图元可由域点索引{5,6}来定义。这两个索引都出现在具有预测索引的索引缓存中(一个来自之前的图元而另一个是预测索引值),所以实现了有效的预测和由此的压缩。
图16示出了通过包括两个预测域点索引值所产生的益处,这两个预测域点索引值是缓存中的最高域点索引值加1和最高域点索引值加2。之前的线图元由域点索引{6,7}来定义。因此预测索引值是{8,9}。可以看出该面片中的下一个线图元在新的行上并且因此不能再使用任何一个之前的图元的索引。相应地,常规索引缓存压缩系统将不包括所需的两个域点索引值中的任一个。可以看出该面片中的下一个线图元由域点索引{8,9}来定义。这两个索引都出现在具有预测索引的索引缓存中(两个都是预测值),所以实现了有效预测和由此的压缩。
在三角形图元的情况下,被曲面细分的面片的几何结构可被看成包括一系列域点的同心环。图7示出了在每个边缘上应用偶数(even)曲面细分因子5的四方形面片的三角形曲面细分的简单示例。该面片可被看成仅有4个环构成,这些环由域点索引范围{0,…,23}{24,…,39}{40,…,47}和最后一个由单个域点索引{48}构成的环构成。可以看出两个环间的面片跨度中产生的每个三角形图元具有位于外环边缘的三角形图元上的至少一个顶点和位于内环边缘的三角形图元上的至少一个顶点。因此面片中的每个三角形图元可用外环边缘上的域点(A)和内环边缘上的域点(B)来定义。因此我们可以将每个图元指定为通过连接外环边缘上的两个域点(A,A+1)和内环边缘上的域点(B)或者连接外环边缘上的域点(A)和内环边缘上的两个域点(B,B+1)来产生。此后环上的单独域点被称为‘单独域点索引’。其他环上的两个相邻的域点将被称为‘域点索引对’。
在被曲面细分的面片中的每个三角形图元由三个域点索引来定义。之前的图元的域点索引被存储在常规索引缓存中。可用用于指示一个预测域点索引值的除去第四码值的两比特码来访问这三个索引。公开了一种用于下一个图元中所需的域点索引值的有效预测方案。该预测域点索引值是单独域点索引值加1。注意:对于逆时针方向定义的三角形,该预测域点索引值将是单独域点索引值减1。
图18示出了通过包括缓存中的单独域点索引值加1的域点索引值(即单域点索引被用作选中的索引并且施加的预测修改值是+1)所产生的益处。之前的三角形图元由域点索引{26,27,41}来定义。可以看出索引缓存中的值包括必须是域点索引对的两个相邻的域点索引值{26,27}和必须是单独域点索引孤立的域点索引值{41}。因此可直接根据存储在索引缓存中的值来确定单独域点索引,而不需要附加的关于来自曲面细分器的关于当前正在处理的环的信息。相应地,一个高于单域点索引值的预测值被添加到索引缓存,以形成具有包含域点索引值{26,27,41,42}的索引缓存。在面片中的下一个图元由域点索引{41,27,42}来定义,这些域点索引都出现在缓存中(两个来自之前的图元而一个根据本发明所公开的域点预测方法得到),所以实现了有效的预测和因此的压缩。
可替换的预测方法(或者在具有更大索引缓存的环境中的补充(complimentary)预测方法)是将在外部环的开始处存储域点索引值。该域点索引值很可能被复用,因为通常环中的最终三角形与该环中的第一个三角形相连。虽然与以上公开的单独域点索引加1的预测方案相比通常无效,而当曲面细分因子很小时或者当在曲面细分因子很大时存储内环中的三角形时,它变得很有用。与通常不具有预测常规索引缓存中所采用的简单地保存之前的三角形图元中的域点相比,这是很好的备选方案。
面片中的少数三角形图元可用以下方式来定义:单域点索引和域点索引对不是直接根据出现在缓存中值来确定。在图8中可看到这种情况,其中被曲面细分的四方形面片包括由域点索引{12,13,14}定义的三角形图元。因为这三个域点索引都是连续的,所以哪个域点索引值是单独域点索引值且哪个应该被用作选中的索引是不明显的。可替换的,会出现三个非递增域点索引定义三角形图元的情况。图8中可到的情况,其中被曲面细分的四方形面片包括由域点索引{15,10,12}定义的三角形图元。因为这三个域点索引都不是连续的,所以哪个域点索引值是将被用作选中的索引的单独域点索引值是不明显的。在这些情况中,必须使用一种可替换的索引选择方法。合适的替换方案包括增加一个预测修改值,该预测修改值是大于或小于存在于缓存中或之前描述过最小域点索引值、中间域点索引值或最大域点索引值,以及增加外环的第一域点索引值。本专利中之后的举例是可在这些无法识别单独域点索引值得特殊情况上采用的通用原则:具有加1的预测修改值的缓存中的中间域点索引值将被作为选中的域点索引值。在图中用单词“MED”来表明该域点索引中值。
为了使缓存的效果最佳,如果预测域点索引值已存在于该缓存中,期望可以避免出现重复。在这些情况中,预测域点索引值可被以上概述的可替换方案中的一个取代或者一直递增直到找到不存在于该缓存中的域点索引值为止。本专利中之后的举例将在该复制缓存索引情况中采用通用原则:使用缓存中的最大域点索引值加1来取代预测域点索引值。在图中这将用单词“MAX”来表示。
图19示出了利用预测的索引缓存压缩,其使用与之前利用常规索引缓存压缩而被压缩的并在图4中示出的相同的四方形。索引缓存开始时是空的,而产生的第一个图元具有域点索引{0,1,12}。注意:开始时索引缓存中可能已被植入一些预测值例如{0,1,2,3}或从两个外环得到的两个第一域点索引值即{0,1}{12,13},而非空缓存。假设最初空索引缓存,则定义面片中的第一图元的头三个域点索引值必须使用完整的域点索引值来存储。
之前已经示出了被曲面细分的面片的未被压缩存储需要18个三角形图元,每个存储由3*13比特索引值=702比特来定义(0%压缩)。常规索引缓存压缩将其减少到21个完整域点索引值和33个缓存位置(1比特的命中缓存标识+2比特的缓存位置)一共是393个比特(44%压缩),其中每个完整域点索引值需要14比特(1比特的无缓存标记后跟着13比特的域点索引值)。可以看出利用预测标志的索引缓存压缩可进一步将其减少到15个完整域点索引值和39个缓存位置(1比特的缓存命中标志+2比特的缓存位置)共327比特(55%压缩),其中每个完整域点索引值需要14比特表示(1比特的无缓存标志后跟着13比特的域点索引值)。即使从这个简单示例中也可以看出利用预测的索引缓存压缩表示了表现经压缩的面片所需的数据的大大减小。
面片的三角形曲面细分中的一种常见数据结构是三角形带状。在被高度曲面细分的面片中,这种重复几何体的形式常沿着环的边缘出现。公开了在利用预测方法的索引缓存方法中准确的域点索引值预测增加了在重复几何体处的缓存位置访问的重复模式,该重复几何体包括三角形带状。
图20示出了在利用预测的索引缓存压缩后的典型的三角形带状。显然,使用单独域点索引值加1的方法产生预测在这种三角形带状场景中非常有效,如通过每个域点索引值被准确预测并存在于索引缓存中所阐述的。可以看出,在声明了初始三角形后,缓存访问模式的重复模式被建立,例如{[2],[1],[X]}后跟着{[1],[X],[2]}。很重要的是要注意到缓存位置值将总是依赖于序列中的第一三角形中所用的域点索引的顺序。因此{[2],[1],[X]}后跟着{[1],[X],[2]}并不是特别指定的模式。如果第一三角形的域点索引的顺序不同,则可能出现不同的顺序,例如{[3],[2],[X]}后跟着{[X],[3],[2]}。然而,要注意到该重复的模式中多次使用了预测域点索引[X]。缓存访问模式的重复只是由于在缓存中存在正确的预测索引值时是可能的。当认识到缓存访问模式是重复的之后,可以对其做进一步压缩。所提出的压缩这些缓存访问模式的方法是首先在重复模式开始时指定两个初始缓存访问,这两个初始缓存访问后跟随用来指示该缓存访问模式应该被重复多少次的重复值。图20的示例中具有如下结构:
{A,A+1,B},
{[2],[1],[3]},{[1],[3],[2]}
重复2次
{[2],[1],[X]}
通过允许使用含小数的值来表示缓存访问模式应该被重复的次数的值,可对其做进一步改进,例如:
{A,A+1,B},
{[2],[1],[X]},{[1],[X],[2]}
重复2.5次
然而利用预测的索引缓存压缩目的是准确地预测下一个图元所需的域点索引值,当预测不准确时会出现问题。在这些情况中需要存储完整的域点索引值。所需要的索引值不存在于索引缓存中,这常出现在来自面片的第一个图元中和当来自被曲面细分的面片的图元丢失时(可能是由贴图引起的问题)。
因此期望在被压缩的形式中指定不存在于索引缓存中的域点索引值。通常,在D3D11面片中的域点索引值需要13个比特来覆盖可能值的范围。不是存储每一个不存在于索引缓存中的域点索引值,可能的是预计算域点索引的范围并且如果该域点索引值的范围需要用少于13个比特来表示,则可实现压缩并且存储压缩的域点索引。根据D3D11域曲面细分算法可容易地确定存在于面片中的域点索引的数目,该数目不依赖于曲面细分连接性过程。因为按照提供的曲面细分因子的面片的域点的最大数量可以在压缩和后来的解压缩阶段一直被计算,所以用于存储每个索引值得比特数总是已知的,不需要比特流中的任意额外开支。
在三角形图元的情况中,公开了通过将每个域点索引定义为环号和围绕被选中的环的偏移,可将域点索引值进一步压缩为被压缩的域点索引。环号定义了该被压缩的域点索引的基本标识符。图21阐述了经三角形图元曲面细分后的四方形面片,示出以R:O的格式将被编号为环号(R)后跟随围绕环的偏移(O)的域点索引。因此来自面片的已着色的三角形图元可以按照该格式被压缩的域点索引{2:0,1:1,2:1}来定义。根据D3D11域曲面细分算法和所要求的边缘曲面细分因子可以很容易的确定在被曲面细分的面片中存在多少个环(此情况中是4)以及每个环的索引值。据此可知需要多少比特来表示存在于被曲面细分的面片中的最大数量的环(此情况中是2比特)以及需要多少比特来表示围绕每个环的偏移。很重要的是要注意到即使在有许多域点存在于外环上的高曲面细分级别,内环将总是需要更少的比特来表示围绕该环的最大偏移。因为用于围绕每个环的偏移的比特数不依赖于用于围绕该面片中其他环的偏移的比特数,因此可以实现显著的节省。
在图21所示的举例中,利用三角形图元、偶数曲面细分和应用到每个边缘的曲面细分因子5来曲面细分四方形面片。根据D3D11域曲面细分算法能预计算出产生的面将具有49个域点顶点并且将包括4个环。也可根据该域曲面细分算法知道环中的第一域点索引是0、24、40和48。每个索引的环号总是需要最多2比特。我们还知道存在在外环(R=0)中需要5比特的环偏移的24个域点、在环号1(R=1)中需要4比特偏移的16个域点、在环R=1中需要3比特偏移的8个域点及在环R=3中不需要偏移比特的单独一个域点。相应的,环号将总是用固定的比特数来定义并且据此用于定义环偏移的比特数也是已知的。
因此由被压缩的域点索引{2:0,1:1,2:1}定义的已着色三角形可用下列比特流来完全表示:
10-000,01-0001,10-001
比特流包括对于R=2是2比特的环号后跟着的3比特的环偏移,对于R=1是2比特的环号后跟着4比特的环偏移,以及对于R=2是两比特的环号后跟着3比特的偏移。可以看出,之前已知道多少个比特被用于表示对于每个环的偏移,这考虑了不需要任何开支来解释每个环偏移需要多少个比特的有效数据流。
以相似的方法,上述的环号和环偏移方法可被进一步被再分为环号、边缘号和沿着每个边缘的偏移。
在线图元中,公开了域点索引值可被表示为行号和沿着该行的偏移。行号定义了被压缩的域点索引的基本标识符。图22示出了具有生成的36个域点的线图元曲面细分的面片。被压缩的域点索引在括号中被示出,具有以R:O的形式提供的行号(R)和行偏移(O)。为了表示从0到35的域点索引范围,需要6比特的域点索引。利用被压缩的域点索引,这6个行号可用3比特的值且沿着每条线的6个偏移位置来定义也可由3个比特来定义。表面上看这对在该示例中被压缩的域点索引没什么好处。
然而公开了根据一些图元将沿着相同的环/边缘/行存在的实现可获得进一步的压缩。在上述线图元的情况下,每行的行号仅需被定义一次且随后的所有偏移将继续使用相同的行号直到该行号被更新。在此情况下需要用1比特的标志来指示其后跟着的域点索引是应该重复使用之前行号(‘0’)还是要应该读入新行号(‘1’)。在面片的开始处,当前行号可以被初始化为R=0,允许图块中的甚至第一域点的压缩。
类似的,在三角形图元的情况中不需要定义用于每个域点索引的环号。每个图元在两个环间总是有跨度的,所以只需要保持对外环号或内环号的跟踪并将每个域点索引的环号部分指定为一比特标志,以用来识别该点是位于外环(0)还是位于内环(1)。该方法减少了存储被压缩的域点索引的环号部分所需的比特数。
而且,通常多个图元将沿着同一个环和/或环边缘存在,因此不需重复该环号/边缘号直到遇到新的环/边缘。环号重复使用按照与对于多域点索引的线号重复使用相同的方式被执行并且可进一步减少存储被压缩的域点索引的环号所需要的比特数。
图25示出了之前在图24中所示的具有域点预测索引缓存压缩的装置,其被扩展为包括用于不存在于索引缓存中的域点索引的压缩的装置。用于当前面片2510的曲面细分因子被传送给面片分析器2520。该面片分析器执行曲面细分的自己以足以产生完整的曲面细分面片的索引。对于面片中的每个基础(即依赖于所需的曲面细分模式的环、边缘或行),第一索引值被存在面片数据缓存2530中或可以根据需要而被产生。当已知两个连续基础的第一索引值时,差异定义了沿着该基础的最大偏移。因此可以使用该信息来判定要唯一地识别每个基础所需的最小比特数和对于每个基础要唯一地识别沿着每个基础的任意偏移所需的最小比特数。
在此架构中,当增加了新图元时,2430将比较图元2410的未被压缩的域点索引和索引缓存2420,该索引缓存2420包括之前的域点索引和预测的索引二者。所有存在于索引缓存中的索引值都可以在索引缓存中有其位置,通过2590将该位置直接写入被压缩的域点索引列表2490中(连同指示已发生缓存命中的标志一起)。在索引缓存2591中的索引值无效的情况中,索引被传送给索引值压缩器2540并被转换成基数和偏移。索引值压缩器用面片数据缓存中的有效数据来判定索引属于哪个基础且偏移沿着该基础。然后被压缩的索引可以使用存储不具有开支的每个项所必须的最小数量的比特而被存储在被压缩的域点索引列表2490中,以用于指定多少比特将被用于基础和偏移项或标志,偏移项或标志用来指示一个数结束和下一个开始。在最简单的压缩格式中,被压缩的数据可包括1)用于指示缓存缺失的的1比特的标志;2)仅使用够用的比特来识别哪个可能的基础存在于当前面片中的基数;3)仅使用够用的比特来识别沿着当前基础的可能偏移的范围的偏移。
如本专利所公开的,索引值压缩器可被配置为产生其他输出格式。这些其他输出格式中的一些需要索引值压缩器知道之前的图元来识别沿着相同基础或两个相邻基础间的跨度产生的索引。这可以或者通过本地缓存/历史或者通过使用通过可选连接2550已存在于索引缓存2420中的数据来实现。
与常规几何体压缩方法相比,所公开的从面片的曲面细分产生的被曲面细分的几何体数据的压缩表现出了对用于存储写入至寄存器的域点索引列表所需的比特数的有了相当大的减小。

Claims (20)

1.一种用于在计算机图形系统中压缩图元列表的方法,所述方法包括:
将用于定义表面数据的被曲面细分的面片的图元列表中的第一图元的域点索引存储在缓存中;
将在所述图元列表中用于压缩一个或多个随后的图元的预测域点索引存储在所述缓存中;
比较所述图元列表中下一个图元的域点索引和存储在所述缓存中的所述域点索引,以确定匹配索引的缓存位置;
针对所述图元列表中的图元重复所述预测域点索引的存储和重复所述域点索引的比较;
从所述图元列表中的图元序列上的各自匹配索引的所述缓存位置,确定对于具有重复结构的所述缓存的缓存位置访问模式;以及
通过指定以下来生成所述序列中图元的压缩的域点索引:(i)针对所述匹配索引的所述缓存的所述缓存位置访问模式,以及(ii)所述模式重复的次数。
2.根据权利要求1所述的方法,该方法还包括由存储在所述缓存中的所述域点索引计算所述预测域点索引。
3.根据权利要求1或2所述的方法,该方法还包括根据所述表面数据的被曲面细分的面片的几何图形计算所述预测域点索引。
4.根据权利要求1或2所述的方法,其中所述模式重复的次数是整数。
5.根据权利要求1或2所述的方法,其中所述模式重复的次数是小数。
6.根据权利要求1或2所述的方法,其中所述图元是一个或多个点、线或三角形。
7.根据权利要求1或2所述的方法,该方法还包括输出针对所述被曲面细分的面片压缩的域点索引的说明,所述说明包括,针对所述被曲面细分的面片的图元序列的:(i)针对所述匹配索引的所述缓存的缓存位置访问模式,以及(ii)每一种模式重复的对应次数。
8.用于在计算机图形系统中压缩图元列表的设备,包括:
缓存,用于存储将用于定义表面数据的被曲面细分的面片的图元列表中的第一图元的域点索引,以及用于存储将在所述图元列表中用于压缩一个或多个随后的图元的预测域点索引;
比较器,用于比较所述图元列表中下一个图元的域点索引和存储在所述缓存中的所述域点索引,以确定匹配索引的缓存位置;
其中所述设备被配置为从所述图元列表中的图元序列上的各自匹配索引的所述缓存位置,确定对于具有重复结构的所述缓存的缓存位置访问模式;以及通过指定以下来进一步压缩所述序列中图元的压缩的域点索引:(i)针对所述匹配索引的所述缓存的所述缓存位置访问模式,以及(ii)所述模式重复的次数。
9.根据权利要求8所述的设备,其中所确定的所述匹配索引的缓存位置表示所述图元列表中的所述下一个图元的压缩域点索引。
10.根据权利要求8或9所述的设备,其中所述设备被配置为由存储在所述缓存中的所述域点索引计算所述预测域点索引。
11.根据权利要求8或9所述的设备,其中所述设备被配置为基于所述表面数据的被曲面细分的面片的几何图形计算所述预测域点索引。
12.根据权利要求8或9所述的设备,其中所述模式重复的次数是整数。
13.根据权利要求8或9所述的设备,其中所述模式重复的次数是小数。
14.根据权利要求8或9所述的设备,其中所述图元是点、线或三角形。
15.根据权利要求8或9所述的设备,所述设备进一步包括输出,用于针对所述序列中的所述图元,通过输出(i)针对所述匹配索引的所述缓存的所述缓存位置访问模式,以及(ii)所述模式重复的次数,来输出压缩的域点索引。
16.一种能够使用被曲面细分的几何结构的图形渲染系统,包括:
曲面细分器,用于生成定义表面数据的被曲面细分的面片的图元列表中的图元的域点索引;
缓存,用于存储域点索引,所述存储的域点索引包括用于所述图元列表中的第一图元的域点索引,以及属于所述图元列表中一个或多个随后的图元的对应的预测域点索引;
比较器,用于比较所述图元列表中下一个图元的域点索引和存储在所述缓存中的所述域点索引,以确定与所述下一个图元的所述域点索引匹配的索引的缓存位置;
其中所述系统被配置为从所述图元列表的图元序列中的图元的对应域点索引匹配的索引的所述缓存位置,确定对于具有重复结构的所述缓存的缓存位置访问模式,以及指定:(i)针对所述匹配索引的所述缓存的所述缓存位置访问模式,以及(ii)所述图元序列中所述模式重复的次数。
17.根据权利要求16所述的图形渲染系统,其中所述图元是点、线或三角形中的一个。
18.根据权利要求17所述的图形渲染系统,其中所述缓存被配置为取决于所述图元是点、线还是三角形,来存储表示所述预测索引值的若干比特。
19.根据权利要求16-18中的任一权利要求所述的图形渲染系统,该系统进一步包括索引值压缩器,用于针对所述图元列表中没有当前存储在所述缓存中的域点索引的图元,压缩完整的域点索引。
20.根据权利要求16-18中的任一权利要求所述的图形渲染系统,其中所述图元是三角形图元,且所述完整的域点索引被压缩为一个环号,以及通过所述环号标识的围绕所述环的偏移。
CN201711103894.7A 2011-03-09 2012-03-08 压缩图元列表的方法和设备、以及图形渲染系统 Active CN107918942B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB1104066.4A GB201104066D0 (en) 2011-03-09 2011-03-09 Compression of a tessellated primitive index list in a tile rendering system
GB1104066.4 2011-03-09
CN201280012362.1A CN103415872B (zh) 2011-03-09 2012-03-08 图块渲染系统中的被曲面细分的图元索引列表的压缩

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201280012362.1A Division CN103415872B (zh) 2011-03-09 2012-03-08 图块渲染系统中的被曲面细分的图元索引列表的压缩

Publications (2)

Publication Number Publication Date
CN107918942A CN107918942A (zh) 2018-04-17
CN107918942B true CN107918942B (zh) 2021-06-01

Family

ID=43923495

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201711103894.7A Active CN107918942B (zh) 2011-03-09 2012-03-08 压缩图元列表的方法和设备、以及图形渲染系统
CN201280012362.1A Active CN103415872B (zh) 2011-03-09 2012-03-08 图块渲染系统中的被曲面细分的图元索引列表的压缩

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201280012362.1A Active CN103415872B (zh) 2011-03-09 2012-03-08 图块渲染系统中的被曲面细分的图元索引列表的压缩

Country Status (5)

Country Link
US (2) US8730236B2 (zh)
CN (2) CN107918942B (zh)
DE (1) DE112012001132B4 (zh)
GB (3) GB201104066D0 (zh)
WO (1) WO2012120261A2 (zh)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9633458B2 (en) * 2012-01-23 2017-04-25 Nvidia Corporation Method and system for reducing a polygon bounding box
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9319065B2 (en) * 2012-03-15 2016-04-19 Nokia Technologies Oy Encoding and decoding of data
US9286122B2 (en) 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
KR101980200B1 (ko) * 2012-07-12 2019-05-20 삼성전자주식회사 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법
US9626797B2 (en) * 2012-10-05 2017-04-18 Autodesk, Inc. Generating a consensus mesh from an input set of meshes
US9305397B2 (en) * 2012-10-24 2016-04-05 Qualcomm Incorporated Vertex order in a tessellation unit
US10032243B2 (en) * 2012-10-26 2018-07-24 Nvidia Corporation Distributed tiled caching
US8941676B2 (en) 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
GB2544679B (en) 2012-12-20 2017-08-16 Imagination Tech Ltd Tessellating patches of surface data in tile based computer graphics rendering
US9299123B2 (en) 2013-01-22 2016-03-29 Qualcomm Incorporated Indexed streamout buffers for graphics processing
US9483861B2 (en) * 2013-03-15 2016-11-01 Qualcomm Incorporated Tile-based rendering
US9626789B2 (en) * 2013-05-07 2017-04-18 Advanced Micro Devices, Inc. Implicit texture map parameterization for GPU rendering
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
KR102072656B1 (ko) 2013-07-16 2020-02-03 삼성전자 주식회사 캐시를 포함하는 테셀레이션 장치, 그의 동작 방법, 및 상기 장치를 포함하는 시스템
KR102053351B1 (ko) 2013-08-12 2019-12-06 삼성전자주식회사 테셀레이션 데이터 생성 방법과 상기 방법을 수행할 수 있는 장치들
KR102066533B1 (ko) 2013-11-19 2020-01-16 삼성전자 주식회사 도메인 쉐이딩 방법과 이를 수행하는 장치들
GB2520365B (en) * 2013-12-13 2015-12-09 Imagination Tech Ltd Primitive processing in a graphics processing system
GB2526359B (en) * 2014-05-23 2020-07-22 Advanced Risc Mach Ltd Graphics processing systems
GB2524121B (en) 2014-06-17 2016-03-02 Imagination Tech Ltd Assigning primitives to tiles in a graphics processing system
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
US10055857B2 (en) * 2014-08-29 2018-08-21 Ati Technologies Ulc Extension of the MPEG/SC3DMC standard to polygon meshes
US10235338B2 (en) 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US10217272B2 (en) * 2014-11-06 2019-02-26 Intel Corporation Zero-coverage rasterization culling
KR20160063081A (ko) * 2014-11-26 2016-06-03 삼성전자주식회사 선택적 테셀레이션 방법 및 장치
KR102327144B1 (ko) 2014-11-26 2021-11-16 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법
US9659407B2 (en) * 2015-01-26 2017-05-23 MediaTek Singapore, Pte. Lte. Preemptive flushing of spatial selective bins for deferred graphics processing
US10089775B2 (en) 2015-06-04 2018-10-02 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
US10403025B2 (en) 2015-06-04 2019-09-03 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
GB2539042B (en) * 2015-06-05 2019-08-21 Imagination Tech Ltd Tessellation method using displacement factors
US10068372B2 (en) 2015-12-30 2018-09-04 Advanced Micro Devices, Inc. Method and apparatus for performing high throughput tessellation
US10217280B2 (en) * 2016-11-17 2019-02-26 Advanced Micro Devices, Inc. Identifying primitives in input index system
CN106557573B (zh) * 2016-11-24 2019-11-19 中铁第五勘察设计院集团有限公司 基于目录索引结构的不规则三角网数据存储格式定义和数据处理方法
US10460418B2 (en) * 2017-02-10 2019-10-29 Microsoft Technology Licensing, Llc Buffer index format and compression
US10417787B2 (en) 2017-02-15 2019-09-17 Microsoft Technology Licensing, Llc Index buffer block compression
US10600142B2 (en) * 2017-11-02 2020-03-24 Advanced Micro Devices, Inc. Compression and decompression of indices in a graphics pipeline
KR102554419B1 (ko) * 2017-12-26 2023-07-11 삼성전자주식회사 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
US10580209B2 (en) * 2018-03-06 2020-03-03 Qualcomm Incorporated Removal of degenerated sub-primitives in tessellation
GB2572625B (en) 2018-04-05 2020-06-17 Imagination Tech Ltd Ordering in tessellation operations
GB2572620C (en) * 2018-04-05 2021-10-20 Imagination Tech Ltd Accessing Primitive Data
US10733690B2 (en) * 2018-05-17 2020-08-04 Intel Corporation GPU mixed primitive topology type processing
CN108776982A (zh) * 2018-05-31 2018-11-09 苏州蜗牛数字科技股份有限公司 一种基于调色板压缩图片的显示方法
US11062500B2 (en) * 2018-12-28 2021-07-13 Intel Corporation Apparatus and method for ray tracing with grid primitives
US11244421B2 (en) 2019-01-29 2022-02-08 Imagination Technologies Limited Memory for storing untransformed primitive blocks
US12002145B2 (en) 2020-08-17 2024-06-04 Intel Corporation Apparatus and method for efficient graphics processing including ray tracing
US11995767B2 (en) 2020-08-17 2024-05-28 Intel Corporation Apparatus and method for compressing ray tracing acceleration structure build data
US12118643B2 (en) * 2021-12-23 2024-10-15 Nvidia Corporation Hardware-accelerated nearest neighbor queries for arbitrary data primitives
CN114494651B (zh) * 2022-04-18 2022-09-02 龙芯中科(合肥)技术有限公司 曲面细分处理方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1849601A (zh) * 2003-09-08 2006-10-18 皇家飞利浦电子股份有限公司 索引和搜索图形元素的方法和设备
CN101384987A (zh) * 2006-02-20 2009-03-11 皇家飞利浦电子股份有限公司 用于得到特定区域显示对象在外部显示器上的图形表示的方法
CN101403909A (zh) * 2008-11-12 2009-04-08 山东理工大学 三角网格细分曲面nc刀轨生成方法
CN101526955A (zh) * 2009-04-01 2009-09-09 清华大学 一种基于草图的网络图元自动提取方法和系统
CN101918921A (zh) * 2008-01-27 2010-12-15 思杰系统有限公司 用于远程提供三维图形的方法和系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864342A (en) * 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
KR100239303B1 (ko) 1997-01-21 2000-01-15 전주범 윤곽선 영상의 초기정점 부호화 방법
JP2002008060A (ja) 2000-06-23 2002-01-11 Hitachi Ltd データ処理方法、記録媒体及びデータ処理装置
US6816161B2 (en) * 2002-01-30 2004-11-09 Sun Microsystems, Inc. Vertex assembly buffer and primitive launch buffer
US8207965B2 (en) * 2006-07-11 2012-06-26 Adobe Systems Incorporated Rewritable compression of triangulated data
US7369446B2 (en) 2006-07-13 2008-05-06 Atmel Corporation Method and apparatus to prevent high voltage supply degradation for high-voltage latches of a non-volatile memory
US8462149B2 (en) * 2008-04-18 2013-06-11 Electronics And Telecommunications Research Institute Method and apparatus for real time 3D mesh compression, based on quanitzation
GB201007348D0 (en) * 2010-04-30 2010-06-16 Imagination Tech Ltd Programmable tessellation in a tile based rendering system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1849601A (zh) * 2003-09-08 2006-10-18 皇家飞利浦电子股份有限公司 索引和搜索图形元素的方法和设备
CN101384987A (zh) * 2006-02-20 2009-03-11 皇家飞利浦电子股份有限公司 用于得到特定区域显示对象在外部显示器上的图形表示的方法
CN101918921A (zh) * 2008-01-27 2010-12-15 思杰系统有限公司 用于远程提供三维图形的方法和系统
CN101403909A (zh) * 2008-11-12 2009-04-08 山东理工大学 三角网格细分曲面nc刀轨生成方法
CN101526955A (zh) * 2009-04-01 2009-09-09 清华大学 一种基于草图的网络图元自动提取方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Real-Time Patch-Based Sort-Middle Rendering on Massively Parallel Hardware";Charles Loop etal.;《Microsoft Research》;20090531;第1-18页 *

Also Published As

Publication number Publication date
DE112012001132B4 (de) 2023-02-23
CN103415872B (zh) 2017-12-15
GB2488907B (en) 2013-09-04
US20120229464A1 (en) 2012-09-13
GB2503309A (en) 2013-12-25
GB201104066D0 (en) 2011-04-20
CN103415872A (zh) 2013-11-27
GB201305044D0 (en) 2013-05-01
US20140168221A1 (en) 2014-06-19
DE112012001132T5 (de) 2014-02-27
GB2503309B (en) 2014-08-20
US8730236B2 (en) 2014-05-20
GB2503309A8 (en) 2014-01-22
US8736607B1 (en) 2014-05-27
GB2488907A (en) 2012-09-12
WO2012120261A2 (en) 2012-09-13
CN107918942A (zh) 2018-04-17
GB201204150D0 (en) 2012-04-25
WO2012120261A3 (en) 2013-04-25

Similar Documents

Publication Publication Date Title
CN107918942B (zh) 压缩图元列表的方法和设备、以及图形渲染系统
US7324115B2 (en) Display list compression for a tiled 3-D rendering system
US10339703B2 (en) Device and method to compute shadow in a 3D scene
US8004521B2 (en) Graphic rendering method and system comprising a graphic module
US8725466B2 (en) System and method for hybrid solid and surface modeling for computer-aided design environments
US20230108967A1 (en) Micro-meshes, a structured geometry for computer graphics
US20160260249A1 (en) Method and apparatus for processing computer graphics primitives in tile-based graphics rendering system
JP5579193B2 (ja) タイルベースの3dコンピュータグラフィックシステムのマルチレベルディスプレイコントロールリスト
US7039241B1 (en) Method and apparatus for compression and decompression of color data
EP1596339A1 (en) Terrain rendering using nested regular grids
US20070018988A1 (en) Method and applications for rasterization of non-simple polygons and curved boundary representations
US20230048381A1 (en) Context determination for planar mode in octree-based point cloud coding
US11210821B2 (en) Graphics processing systems
KR20140144688A (ko) 장면에서의 불투명도 레벨을 추정하는 방법, 및 이에 대응하는 디바이스
KR20150099414A (ko) 3d 장면의 기하 이미지를 처리하는 방법 및 장치
Sander et al. Progressive buffers: view-dependent geometry and texture lod rendering
Yusov Real-time deformable terrain rendering with DirectX 11
Chajdas et al. Scalable rendering for very large meshes
Derzapf et al. Parallel view-dependent out-of-core progressive meshes
CN118923118A (zh) 无需占用图的基于v-pcc的动态纹理网格编码
Lei et al. Virtual surgery system
Zhang et al. Static partitioning octree-based animation compression

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