CN104737208B - 曲面细分单元中的顶点次序 - Google Patents
曲面细分单元中的顶点次序 Download PDFInfo
- Publication number
- CN104737208B CN104737208B CN201380055201.5A CN201380055201A CN104737208B CN 104737208 B CN104737208 B CN 104737208B CN 201380055201 A CN201380055201 A CN 201380055201A CN 104737208 B CN104737208 B CN 104737208B
- Authority
- CN
- China
- Prior art keywords
- summit
- shape
- domain
- subdivision
- coordinate
- 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
Classifications
-
- 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
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明描述用于曲面细分的***及方法。这些***及方法可将域划分成包含第一部分的多个部分。所述***及方法还可确定在所述第一部分内存在的第一形状集合的顶点的坐标,其中所述第一形状集合中的每一形状包含在所述第一部分的第一边缘上的至少一个顶点。在确定所述第一形状集合的所述顶点的坐标之后,所述***及方法可确定在所述第一部分内存在的第二形状集合的顶点的坐标。所述第二形状集合中的每一形状与所述第一形状集合中的至少一个形状共享至少一个顶点,且所述第二形状集合中并无所述形状包含在所述第一部分的所述第一边缘上的顶点。
Description
技术领域
本发明涉及用于视频处理的技术,且更具体来说,涉及使用经曲面细分基元的视频处理。
背景技术
计算装置越来越需要高级二维(2D)及三维(3D)图形应用。举例来说,计算装置逐渐提供游戏、角色动画、图形菜单***及需要高级图形呈现的其它应用。此高级图形呈现(尤其具有3D图形)涉及实质上大量数据处理。高级图形呈现的质量可受处理资源的量、可用处理资源的能力、可用电力的量及其类似者限制。
举例来说,需要处于高呈现速率(例如,测量为每秒若干帧)的高级图形呈现的应用可在可用计算资源上放置显著应变。可用计算资源上的应变可归因于被放置在计算资源上的大负载而导致其它应用中的性能降低、低质量图形呈现或两者。在例如个人数字助理(PDA)等移动计算装置、无线通信装置、全球定位装置及其类似者的情况下,对于图形呈现所需要的计算密集型数据处理可消耗移动计算装置的大量可用电力。
多媒体处理器可包含耦合到图形处理单元(GPU)的通用中央处理单元(CPU)。GPU专用于执行图形呈现操作以在显示器上显示计算机化的图形。GPU内置有高度并行结构,其为一系列复合图形相关算法提供比常规通用CPU更有效的处理。在于CPU上执行的图形相关算法需要图形处理时,CPU曲面细分图形,且向GPU提供曲面细分以用于呈现到显示器。GPU的高度并行性质允许GPU在显示器上比通过CPU将图像直接抽取到显示器更快速地创建复合三维图像。GPU可以用于广泛多种应用中,且于例如视频游戏应用、复合图形用户接口应用、用于工程或艺术应用的计算机辅助设计程序或使用2D或3D图形的任何其它类型的软件应用等图形密集型应用中极为常见。
现代GPU架构可包含曲面细分级。所述曲面细分级可为GPU内的硬件,且可经配置以执行特定固定功能。作为一个实例,GPU的曲面细分级可将四域或三角域曲面细分成较小的三角形。域可被认为是图像的一部分,且可包含四个侧(四域)或三个侧(三角域)。在具有有限大小的顶点重用缓冲器中缓冲顶点,且输出用于三角形的连接性信息。归因于顶点重用缓冲器的有限大小,在连接性信息进入时需要重新计算一些顶点。一些实例方法每一时钟周期产生约1个基元。然而,对于所有实施方案并不一定都是这种情况。
发明内容
一般来说,本发明中描述的技术是针对确定沿着在用于曲面细分的域内的环的边缘的第一及第二部分的点的坐标。在实例中,例如位于曲面细分器中的点产生器可通过跟在针对给定曲面细分水平计算曲面细分三角形的序列或次序之后来处理域。从曲面细分单元输出的基元的排序可能影响在后续级处的顶点重用。因此,技术可选择允许重用在顶点重用缓冲器大小界限内的顶点的排序(有时被称作遍历)。如本文中所描述,可执行遍历以使得可重用所计算的顶点信息。
本文中所描述的各种***、方法及装置提供输出基元的经改变次序以有效地利用顶点重用缓冲器,以便最小化需要计算的顶点的时间坐标的数目。此情形可减少域着色器调用的数目。域着色器将顶点的坐标转变成有形的某物(例如,3D空间中的点)以供域着色器的下游使用。减少域着色器调用的数目可节约电力,且增加性能。
在一个实例中,本发明描述用于对域进行曲面细分的曲面细分单元,其中曲面细分单元将域划分成包含第一部分的多个部分。曲面细分单元确定在第一部分内存在的第一形状集合的顶点的坐标,其中第一形状集合中的每一形状包含在第一部分的第一边缘上的至少一个顶点。在确定第一形状集合的顶点的坐标之后,确定在第一部分内存在的第二形状集合的顶点的坐标。第二形状集合中的每一形状与第一形状集合中的至少一个形状共享至少一个顶点。另外,第二形状集合中并无形状包含在第一部分的第一边缘上的顶点。
在另一实例中,本发明描述对域进行曲面细分的方法,其包含将域划分成包含第一部分的多个部分。所述方法还确定在第一部分内存在的第一形状集合的顶点的坐标,其中第一形状集合中的每一形状包含在第一部分的第一边缘上的至少一个顶点。在确定第一形状集合的顶点的坐标之后,确定在第一部分内存在的第二形状集合的顶点的坐标。第二形状集合中的每一形状与第一形状集合中的至少一个形状共享至少一个顶点。另外,第二形状集合中并无形状包含在第一部分的第一边缘上的顶点。
在另一实例中,本发明描述用于对域进行曲面细分的曲面细分单元,所述曲面细分单元包含用于将域划分成包含第一部分的多个部分的装置。曲面细分单元进一步包含用于确定在第一部分内存在的第一形状集合的顶点的坐标的装置,其中第一形状集合中的每一形状包含在第一部分的第一边缘上的至少一个顶点。在确定第一形状集合的顶点的坐标之后,用于确定在第一部分内存在的第二形状集合的顶点的坐标的装置。第二形状集合中的每一形状与第一形状集合中的至少一个形状共享至少一个顶点。第二形状集合中并无形状包含在第一部分的第一边缘上的顶点。
在另一实例中,本发明描述包括指令的非暂时性计算机可读媒体,所述指令在于接收器装置执行中时致使可编程处理器通过执行以下步骤对域进行曲面细分。处理器将域划分成包含第一部分的多个部分。处理器确定在第一部分内存在的第一形状集合的顶点的坐标,其中第一形状集合中的每一形状包含在第一部分的第一边缘上的至少一个顶点。在确定第一形状集合的顶点的坐标之后,确定在第一部分内存在的第二形状集合的顶点的坐标。第二形状集合中的每一形状与第一形状集合中的至少一个形状共享至少一个顶点。第二形状集合中并无形状包含在第一部分的第一边缘上的顶点。
在另一实例中,本发明描述一种装置,其包含中央处理单元(CPU)及图形处理单元(GPU)。GPU包含用于对域进行曲面细分的曲面细分单元。曲面细分单元经配置以将域划分成包含第一部分的多个部分。曲面细分单元还经配置以确定在第一部分内存在的第一形状集合的顶点的坐标,其中第一形状集合中的每一形状包含在第一部分的第一边缘上的至少一个顶点。在确定第一形状集合的顶点的坐标之后,确定在第一部分内存在的第二形状集合的顶点的坐标。第二形状集合中的每一形状与第一形状集合中的至少一个形状共享至少一个顶点。第二形状集合中并无形状包含在第一部分的第一边缘上的顶点。
随附图式及以下描述中阐述一或多个实例的细节。其它特征、目标及优势将从所述描述及所述图式以及从权利要求书显而易见。
附图说明
图1为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的实例的图形处理单元(GPU)的实例的框图。
图2为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的另一实例的GPU的另一实例的框图。
图3为说明输出用于曲面细分的顶点的实例技术的图。
图4为说明可需要在图3中说明的技术中重新计算的点的图。
图5A及5B为说明根据本发明中所描述的一或多个实例的划分成多个基元的域的图形图。
图6为说明根据本发明中所描述的一或多个实例的连接到顶点重用缓冲器的曲面细分单元的实例的框图。
图7为说明根据本发明中所描述的一或多个实例的用于输出三角域的顶点的实例技术的图。
图8为说明根据本发明中所描述的一或多个实例的用于输出四域的顶点的实例技术的图。
图9为说明根据本发明中所描述的一或多个实例的用于输出四域的顶点的另一实例技术的图。
图10为说明根据本发明中所描述的一或多个实例的用于输出四域的顶点的另一实例技术的图。
图11为说明根据本发明中所描述的一或多个实例的用于具有一具有奇数个区段的边缘的三角域的实例技术的图。
图12为说明根据本发明中所描述的一或多个实例的用于具有一具有奇数个区段的边缘的四域的实例技术的图。
图13为说明根据本发明中所描述的一或多个实例的对域进行曲面细分的实例方法的流程图。
图14为说明根据本发明中所描述的一或多个实例的实例算法与其它可能遍历方案之间的比较的图。
图15为说明根据本发明中所描述的一或多个实例的实例算法与其它可能遍历方案之间的另一比较的图。
图16为说明根据本发明中所描述的一或多个实例的实例算法与其它可能遍历方案之间的另一比较的图。
图17为说明根据本发明中所描述的一或多个实例的实例算法与其它可能遍历方案之间的另一比较的图。
图18为说明根据本发明中所描述的一或多个实例的实例算法与其它可能遍历方案之间的另一比较的图。
具体实施方式
例如膝上型计算机、平板计算机、智能电话及数字媒体播放器等现代移动装置可包含CPU(中央处理单元)、图形处理单元(GPU)及***存储器。在作为执行应用程序的部分呈现图形时,CPU将指令及图形数据发射到GPU。在一些实例中,图形数据可呈顶点的形式,所述顶点可包括一或多个数据结构,所述数据结构描述2D或3D空间中的点。
于CPU上执行的应用程序可根据应用程序编程接口(API)与GPU通信。举例来说,作为两个实例,应用程序可根据由开发的API或由科纳斯组织开发的API与GPU通信。出于说明的目的,且为了容易理解,通常在DirectX及OpenGL API的情境下描述本发明中描述的技术。然而,本发明的方面不应被视为限于DirectX及OpenGLAPI,且本发明中描述的技术也可扩展到其它API。
DirectX及OpenGL各自定义将由GPU实施的图形处理管道。这些图形处理管线可包含可编程级以及固定功能级的组合。例如Direct3D 11API及OpenGL 4.x API等API的一些最新版本包含将由GPU执行的曲面细分过程。
曲面细分过程是指将对象的表面的部分(其被称作域)划分成多个较小部分,且将较小部分互连在一起。这导致了与曲面细分之前的表面相比较更高度详细的表面。曲面细分允许于CPU上执行的应用程序定义具有低分辨率的表面(此举可需要较少的点),且允许GPU产生较高分辨率表面。
举例来说,曲面细分级可为将域划分成多个三角形的硬件单元。域着色器接着可获取域中的三角形的顶点,且将顶点转换成贴片。此将表面转换成多个基元导致更详细表面。GPU可接收粗略表面的信息,且产生高分辨率表面,而非接收高分辨率表面的信息。接收高分辨率表面而非粗略表面的信息可为带宽效率低下的,因为定义高分辨率表面所需要的信息的量可比定义粗略分辨率表面所需要的信息的量大得多。作为实例,GPU的曲面细分级可接收域。作为一个实例,GPU的曲面细分级可将域划分成较小三角形。在较小三角形连接在一起时,所得图像部分可能看起来比原始图像部分更详细。根据本发明中所描述的技术,将域划分成较小三角形及较小三角形的后续连接可被认为是曲面细分。
借助于曲面细分,可实现计算高效率,因为于CPU上执行的应用程序可能不需要产生较高分辨率表面,且可替代地将较高分辨率表面的产生分担到GPU。此外,也可实现带宽高效率,因为CPU可需要发射用于表面的较少点的信息,因为与较高分辨率表面相比较,低分辨率表面包含较少点,且GPU可需要检索表面的较少点。
如上文所描述,GPU将曲面细分过程应用于贴片。贴片可被认为是特定类型的基元。由一起形成表面的部分的一或多个控制点定义贴片。举例来说,可将例如球面等对象划分成多个表面。在此实例中,表面可为弯曲表面,所述弯曲表面在组合时形成球面。可将表面中的每一者划分成一或多个贴片,其中贴片中的每一者是由一或多个控制点定义。
通常,例如曲面细分级124等曲面细分单元可将域划分成包含第一部分的多个部分。曲面细分单元可确定在第一部分内存在的第一形状集合的顶点的坐标,其中第一形状集合中的每一形状包含在第一部分的第一边缘上的至少一个顶点。例如位于曲面细分器(即曲面细分单元)中的点产生器可通过“遍历”来处理域。“遍历”指示针对给定曲面细分水平计算曲面细分三角形的序列或次序。从曲面细分单元输出的基元的排序可能会影响在后续级处的顶点重用。因此,可选择允许重用在顶点重用缓冲器大小界限内的顶点的排序。如本文中所描述,可执行遍历以使得可重用所计算的顶点信息以最小化域着色器的执行。
本文中所描述的各种***、方法及装置提供输出基元的经改变次序以有效地利用顶点重用缓冲器以便最小化顶点未命中。此情形可减少域着色器调用的数目。域着色器获取域中的三角形的顶点,且将顶点转换成贴片的顶点以供域着色器的下游使用。减少域着色器调用的数目可节约电力,且增加性能。
在确定从曲面细分单元输出的基元的排序时,可考虑以下情形:例如(1)通常可需要保留当前曲面细分器速度,所述曲面细分器速度可为每一时钟周期一个基元,(2)算法不应太复杂,及(3)仅在曲面细分器单元中进行改变可为优选的。在一些实例中,可不对重用逻辑作出改变。重用逻辑为可用以确定是否将所需要的顶点信息存储于顶点重用缓冲器中的一系列硬件比较器,例如互斥或门(异或门)。
通常,可通过以下方式来实现重用:将域划分成越来越小的部分或子部分直到可作为一个集合“遍历”数个三角形而不溢出顶点重用缓冲器为止。举例来说,部分或子部分可具有数目足够小的三角形以允许遍历整个部分或子部分而不溢出顶点重用缓冲器。将理解尽管三角形具有三个顶点,但由于在三角形之间的顶点共享,需要存储的顶点的总数通常将不为部分或子部分中的三角形的数目的三倍。另外,还将理解,例如在不再需要所述顶点的顶点信息时,可改写在部分或子部分中的一些顶点而不需要后续域着色器调用。在一些实例中,技术假定具有三十二组存储位置的顶点重用缓冲器,然而,本发明中所描述的技术不限于具有三十二组存储位置的顶点重用缓冲器。或者,部分或子部分可大于例如三十二组顶点信息,但可布置遍历的路径以使得可出现一或多个重用。举例来说,选择路径遍历以使得所有需要的重用在改写之前出现可为可能的。在其他状况下,选择允许在重用存储于顶点重用缓冲器中的顶点数据的至少一部分时出现一些改写的路径可为有利。
控制点可由坐标(例如,二维贴片的x及y坐标或三维贴片的x、y及z坐标)定义,且控制点可被认为是贴片的顶点。贴片中可存在任何数目个控制点。举例来说,在一些实例中,贴片中的控制点的数目可在一个控制点直到三十二个控制点之间。贴片中的控制点的数目可为固定的或用户定义的。
不同于其它基元类型,贴片内的控制点可以任何方式彼此连接。换句话说,不存在其中连接贴片的控制点的预定义方式。举例来说,标准三角基元包含三个顶点,且以特定方式定义基元,其中三个顶点彼此连接以形成三角形。另一方面,可不需要以任何特定方式连接控制点以形成形状。而是,作为一个实例,贴片中的一些控制点可彼此连接以形成三角形,相同贴片中的其它控制点可彼此连接以形成矩形,且相同贴片中的又其它控制点可彼此连接以形成八角形。作为另一实例,也有可能控制点与另一控制点连接以形成相同类型的形状(例如,经连接以仅形成多个三角形)。
定义表面的贴片的控制点可定义低分辨率表面。在曲面细分过程的情况下,添加额外细节以创建较高分辨率表面。举例来说,返回参看球面的实例。要是使用控制点来形成球面,球面将呈现为锯齿状的,具有阶梯状的点,而非平滑弯曲表面。在曲面细分之后,添加额外点以使得在连接这些点时,球面看起来好像其为平滑球面。
根据DirectX API及OpenGL 4.x API两者,曲面细分过程包含两个着色器及固定功能单元。着色器为于GPU的可编程着色器核心上执行且提供实质上功能灵活性的软件应用程序。举例来说,着色器可用以计算具有高度灵活性的图形硬件上的呈现效果。固定功能单元为执行固定功能且可能不提供功能灵活性的硬接线逻辑单元。然而,有可能使用可编程着色器译码器实施固定功能单元的功能以提供额外功能灵活性。仅仅出于说明的目的,用提供受限制功能灵活性的固定功能单元来描述本发明中针对固定功能单元所描述的功能。
在DirectX API中,经配置以实施曲面细分过程的图形处理管线包含耦合到曲面细分级的外壳着色器级,所述曲面细分级耦合到域着色器级。DirectX API中的外壳着色器级及域着色器级可形成曲面细分过程的两个着色器,且曲面细分级可形成曲面细分过程的固定功能单元。图形处理管线中的其它级类似于不实施曲面细分过程的DirectX API中的那些级。
在OpenGL 4.x API中,经配置以实施曲面细分过程的图形处理管线包含耦合到基元产生器的曲面细分控制着色器,所述基元产生器耦合到曲面细分评估着色器。OpenGL4.x中的曲面细分控制着色器及曲面细分评估着色器可形成曲面细分过程的两个着色器,且基元产生器可形成曲面细分过程的固定功能单元。图形处理管线中的其它级可类似于不实施曲面细分过程的OpenGL API中的那些级。
图1为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的实例的图形处理单元(GPU)的实例的框图。图1说明装置110,所述装置包含图形处理单元(GPU)112、***存储器114及中央处理单元(CPU)116。装置110的实例包含(但不限于)移动无线电话、包含视频显示器的视频游戏控制台、移动视频会议单元、膝上型计算机、桌上型计算机、电视机顶盒及其类似者。
CPU 116可执行各种类型的应用程序。应用程序的实例包含网络浏览器、电子邮件应用程序、电子数据表、视频游戏或产生可视对象以供显示的其它应用程序。用于执行一或多个应用程序的指令可存储于***存储器114内。CPU 116可将所产生的可视对象的图形数据发射到GPU 112以用于进一步处理。
举例来说,GPU 112可为允许进行大规模平行处理的专用硬件,所述硬件良好地起作用以用于处理图形数据。以此方式,CPU 116分担了较佳由GPU 112操纵的图形处理。CPU116可根据特定应用程序处理接口(API)与GPU 112通信。此类API的实例包含的API及科纳斯组织的然而,本发明的方面不限于DirectX及OpenGLAPI,且可扩展到已开发、当前正在开发或将来待开发的其它类型的API。
除了定义GPU 112接收来自CPU 116的图形数据的方式之外,API可定义GPU 112将实施的特定图形处理管线。图1中的GPU 112说明Direct3D 11API所定义的图形处理管线。如更详细描述的,图2说明OpenGL 4.x API的图形处理管线。
CPU 116及GPU 112的实例包含(但不限于)数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路。在一些实例中,GPU 112可为包含集成及/或离散逻辑电路的专用硬件,所述电路为GPU 112提供适合于图形处理的大规模平行处理能力。在一些情况下,GPU 112还可包含通用处理,及可被称为通用GPU(GPGPU)。本发明中所描述的技术也可适用于其中GPU 112为GPGPU的实例。
***存储器114可包括一或多个计算机可读存储媒体。***存储器114的实例包含(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器或可用以载运或存储呈指令及/或数据结构形式的所要程序代码及可由计算机或处理器存取的任何其它媒体。
在一些方面中,***存储器114可包含致使CPU 116及/或GPU 112执行在本发明中归于CPU 116及GPU 112的功能的指令。因此,***存储器114可为包括致使例如CPU 116及GPU 112的一或多个处理器执行各种功能的指令的计算机可读存储媒体。
在一些实例中,***存储器114可被视为非暂时性存储媒体。术语“非暂时性”可指示存储媒体未体现于载波或传播信号中。然而,术语“非暂时性”不应解释为意指***存储器114是不可移动的。作为一个实例,可从装置110移除***存储器114,及将所述***存储器移动到另一装置。作为另一实例,可将实质上类似于***存储器114的***存储器***到装置110中。在某些实例中,非暂时性存储媒体可存储可能随时间而改变(例如,在RAM中)的数据。
CPU 116上的应用程序的执行致使CPU 116产生连接在一起以形成可视内容的多个基元。基元的实例包含点、线、三角形、正方形或任何其它类型的多边形。CPU 116可通过其相应的顶点来定义这些基元。举例来说,CPU 116可定义所述顶点的坐标及色值。坐标值可为三维(3D)坐标或2D坐标。
根据本发明中描述的技术,在一些状况下,CPU 116还可产生被称作贴片的特殊类型的基元。类似于其它基元类型,贴片可由被称作贴片的控制点的多个顶点定义。不同于其它基元类型,贴片可不为任何特定形状。举例来说,CPU 116可以任何方式使贴片的控制点互连,以使得互连的控制点形成任何所要形状。对于例如三角形等其它基元类型,CPU 116可定义其中使顶点互连的特定方式(例如,使得顶点的互连产生三角形)。
而且,不同于其它基元类型,贴片中的控制点的数目可能是可变的。举例来说,于CPU 116上执行的应用程序可定义对于贴片允许的控制点的最大数目,或可为用户定义的控制点的最大数目。在一些实例中,贴片中的控制点的数目可为一个到三十二个控制点;然而,本发明中描述的技术不限于此。
CPU 116可出于曲面细分的目的利用控制贴片。如上文所描述,曲面细分过程是指CPU 116定义低分辨率的可视对象的表面的一部分,且曲面细分所述部分以产生表面的较高分辨率版本。举例来说,CPU 116可定义贴片的控制点以使得在互连控制点时贴片形成可视对象的表面的一部分。如果仅从贴片的控制点形成表面,那么表面可能不会呈现高分辨率,且可呈现为锯齿状的。借助于曲面细分,将额外基元添加到贴片,以使得在基元互连时,其将细节添加到贴片,此举增加了贴片的分辨率,且产生较高质量的可视内容。
GPU 112可经配置以实施曲面细分。以此方式,CPU 116可能不需要定义创建较高分辨率贴片所需要的所有额外基元的顶点,这节约了由CPU 116执行的计算。而且,CPU 116可需要发射较少顶点(例如,控制点的顶点,且将不会添加基元的顶点),且GPU 112可对应地需要接收较少顶点,这归因于对***存储器114的较少存取而促进了带宽高效率。
为了执行图形操作,GPU 112可实施图形处理管线。图形处理管线包含执行如由于GPU 112上执行的软件或固件定义的功能,及由经硬接线以执行极特定功能的固定功能单元执行功能。于GPU 112上执行的软件或固件可被称为着色器,且着色器可于GPU 112的一或多个着色器核心上执行。着色器向用户提供功能灵活性,因为用户可设计着色器以任何可想象的方式执行所要任务。然而,固定功能单元以其中固定功能单元执行任务的方式硬接线。因此,固定功能单元可能不会提供太多的功能灵活性。
如上文所指示,图1中所说明的图形处理管线为实质上如由Direct3D 11定义的图解处理管线。在此实例中,GPU 112可包含以下各者中的一或多者:输入汇编程序级118、顶点着色器级120、外壳着色器级122、曲面细分级124、域着色器级126、几何着色器级128、光栅化器级131、像素着色器级132及输出合并级134。GPU 112可包含比所说明的级更多的级,且在一些实例中,GPU 112可不必包含所有所说明的级。而且,提供所述级的特定排序用于说明目的且不应被视为限制。
在本发明中描述的技术中,CPU 116可将贴片的控制点输出到***存储器114。GPU112接着可从***存储器114检索控制点。以此方式,CPU 116可将控制点发射到GPU 112。如本发明中所使用的,CPU 116向GPU 112进行发射或GPU 112从CPU 116进行接收通常可包含CPU 116写入到***存储器114,GPU 112从所述***存储器进行接收。或者,对于CPU 116有可能直接发射到GPU 112,且对于GPU 112直接从CPU 116进行接收。
输入汇编程序级118可从***存储器114读取控制点(如由CPU 116所定义),且汇编控制点以形成贴片。举例来说,输入汇编程序级118可读取控制点的坐标、色值及其它此类信息。坐标、色值及其它此类信息通常可被称为控制点的属性。基于控制点的属性输入汇编程序级118可确定贴片的通用布局。以此方式,输入汇编程序级118可汇编控制点以形成贴片。输入汇编程序级118可为固定功能单元。
顶点着色器级120可处理来自输入汇编程序级118的顶点(例如,贴片的控制点)。举例来说,顶点着色器级120可执行每顶点操作,例如变换、蒙皮、变形及每顶点照明。顶点着色器级120可为着色器。
外壳着色器级122接收如由顶点着色器级120处理的贴片的控制点,处理控制点及输出经处理贴片的控制点。换句话说,外壳着色器级122接收如由顶点着色器级120处理的输入贴片,处理输入贴片及输出一输出贴片。外壳着色器级122可执行用于处理输入贴片的各种功能。举例来说,外壳着色器级122可修改控制点的坐标以改变控制点的位置,或甚至可添加或删除控制点。
另外,外壳着色器级122可确定指示多少基元将被添加到由外壳着色器级122产生的贴片(即,输出贴片)的值。外壳着色器级122可利用各种准则来确定多少基元将被添加到贴片。下文描述两个实例准则,外壳着色器级122可利用所述实例准则来确定多少基元将被添加到贴片。然而,本发明的方面不限于此,且外壳着色器级122可利用任何准则来确定多少基元应被添加到贴片。
作为一个实例,外壳着色器级122可利用指示贴片的深度的信息来确定应添加多少基元。举例来说,从观察者的角度进一步远离的贴片可不需要高分辨率,因为距离较远的对象在真实生活中呈现为模糊的。然而,从观察者的角度较近的贴片可需要较高分辨率,因为距离较近的对象在真实生活中呈现为更清晰的。在此实例中,外壳着色器级122可确定较少基元应被添加到进一步远离的贴片,且更多基元应被添加到相对于彼此较近的贴片。
作为另一实例,外壳着色器级122可基于贴片的大小确定应添加多少基元。对于较小大小的贴片,外壳着色器级122可确定应添加较少基元,因为贴片包含较小面积。对于较大大小的贴片,外壳着色器级122可确定应添加更多基元,因为贴片包含较大面积。
基于应添加多少基元的确定,外壳着色器级122可将域类型及指示多少基元将被添加到贴片的值输出到曲面细分级124。在Direct3D 11 API中,指示多少基元将被添加到贴片的值被称作细分因子(tessfactor)。
域可被认为是曲面细分级124出于曲面细分目的而使用的模板形状。域类型的实例包含线、三角形、四方形(例如,四个边的多边形)或任何其它类型的多边形。域可为二维(2D)形状,即使贴片定义三维(3D)表面或2D表面。在域为线时,域可为一维(1D)形状(即,线),即使贴片定义3D表面、2D表面或1D表面。出于说明的目的,本发明中描述的技术是关于为2D表面的域而描述的。举例来说,用三角形或四方形的域形状来描述所述技术。
在一些实例中,外壳着色器级122可不显式地指示域类型。而是,曲面细分级124可基于所发射的细分因子的数目确定域类型。举例来说,四个细分因子的存在可指示域类型为三角域类型,且六个细分因子的存在可指示域类型为四域类型。
在一些实例中,四域可由2D笛卡耳坐标(u,v)定义。在一些实例中,三角域可由重心坐标定义。重心坐标利用三个坐标来识别三角形内的任何点。举例来说,三角域的顶点可被定义为(u,v,w),如下文所更详细描述。三角形内的任何点的位置由指示其到顶点的接近度的顶点加权来定义。举例来说,点到顶点越近,其顶点加权越高,且点距顶点越远,其顶点加权越低。
作为实例,假设用重心坐标(u,v,w)来定义三角形的顶点如下:(1,0,0)、(0,1,0)及(0,0,1)。在此实例中,中心点位于(1/3,1/3,1/3),因为中心点距顶点中的每一者同样远。而且,在顶点坐标的给定定义的情况下,在此实例中,三角域内的任何点的u、v及w坐标的和应等于一。
仅出于说明的目的描述笛卡耳及重心坐标,且不应将其视为限制性的。在其它实例中,有可能用重心坐标或笛卡耳坐标来定义四域,且用笛卡耳坐标或重心坐标定义三角域。一般来说,可使用任何坐标系来定义任何类型的域。
曲面细分级124可将域曲面细分(例如,划分)成多个基元。在此实例中,应理解曲面细分级124并未将由外壳着色器级122输出的贴片划分成基元,而是将域划分成基元。在一些实例中,曲面细分级124甚至可能并未存取由外壳着色器级122输出的贴片。曲面细分级124可为固定功能单元,但本发明的方面不需要限于此。
曲面细分级124可利用由外壳着色器级122输出的细分因子将域曲面细分(例如,划分)成多个基元。举例来说,除了定义域类型(例如,三角形或四方形)之外,细分因子可定义在域内将包含多少环。
环可为域内的一系列同心形状,其中同心形状为与域形状相同的形状。举例来说,如果域形状为四方形,那么四方形的周边可被认为是外环。外壳着色器级122可定义内环的数目,所述内环可为在四域内存在的较小大小的一系列四方形。类似地,如果域形状为三角形,那么三角形的周边可被认为是外环,且内环可为在三角域内存在的较小大小的一系列三角形。
除了定义域内的环的数目之外,细分因子定义沿着环存在的点。沿着环存在的点不应与控制点混淆。控制点定义贴片。沿着环存在的点为由曲面细分级124基于细分因子产生的点。在域内且不在贴片内产生这些点。
而且,曲面细分级124将这些点连接在一起以将域划分成多个基元。举例来说,假设曲面细分级124将会将域划分成的基元为三角形。在此实例中,曲面细分级124可将沿着外环存在的一个点与沿着内环存在的两个点连接以形成三角基元。或者,曲面细分级124可将沿着外环存在的两个点与沿着内环存在的一个点连接以形成三角基元。以此方式,通过定义域类型、域内的环的数目及沿着外环及内环的点的数目,外壳着色器级122可定义曲面细分级124应将域划分成的基元的数目。
在一些实例中,可沿着环的边缘存在的点的数目可为一个点到六十五个点。举例来说,如果域类型为三角形,那么三角域的每一边缘可存在最多65个点。类似地,如果域类型为四方形,那么方形的每一边缘可存在最多65个点。然而,本发明中描述的技术不限于具有最大六十五个点的边缘。
此外,对于外环及内环,沿着环存在的点的数目可不同。举例来说,沿着外环的边缘存在的点的数目可大于或小于沿着内环的边缘存在的点数目。也有可能沿着外环及内环的边缘存在的点的数目为相同的点数目。
此外,沿着相同环的边缘的点数目可不同。举例来说,对于三角域,沿着边缘中的一者存在的点的数目可不同于沿着另一个边缘或两个边缘存在的点的数目。类似地,对于四域,沿着边缘中的一者存在的点的数目可不同于沿着一个、两个或所有其它三个剩余边缘存在的点的数目。对于环的边缘中的每一者,也有可能具有相同的点数目。
如上文所描述,在一些实例中,曲面细分级124可不将贴片划分成多个基元。因此,在一些实例中,曲面细分级124可不接收例如控制点的数目、控制点的位置或贴片的大小等任何信息。在无关于贴片的大小及控制点的位置的任何信息的情况下,曲面细分级124可能不能够定义所使用的域的大小或域的顶点的特定坐标。
为了解决此情形,曲面细分级124可依赖于用于定义域的顶点以及用于确定域内的互连点的位置的经归一化的坐标系。作为归一化坐标的一个实例,曲面细分级124可在u、v坐标中将四域的顶点定义为:(0,0)、(1,0)、(0,1)及(1,1),其为单位正方形。曲面细分级124可在u、v、w坐标中将三角域的顶点定义为:(0,0,1)、(0,1,0)及(1,0,0),其为等边三角形。曲面细分级124可确定在此经归一化的坐标系中的多个基元的互连顶点的坐标。
曲面细分级124可在经归一化的坐标系(例如,在适用的情况下,u、v坐标或u、v、w坐标)中将域的多个基元的顶点输出到域着色器级126。域着色器级126的功能可为将如从曲面细分级124接收的顶点坐标映射到贴片。举例来说,虽然曲面细分级124可能不接收如由外壳着色器级122定义的贴片的信息,但域着色器级126可从外壳着色器级122接收此信息。
域着色器级126可执行由曲面细分级124输出的每一顶点坐标。在来自外壳着色器级122的贴片的控制点的坐标的情况下,域着色器级126可确定贴片上的如由曲面细分级124输出的顶点的位置。因为曲面细分级124输出由曲面细分级124产生的多个基元的顶点,且域着色器级126将这些基元添加到贴片,所以外壳着色器级122、曲面细分级124及域着色器级126的组合一起将额外基元添加到贴片。此导致与由CPU116定义的贴片相比较,被添加到贴片的基元的网格产生较高分辨率的更详细贴片。以此方式,外壳着色器级122、曲面细分级124及域着色器级126实施曲面细分过程。
如本文中所描述,可将域划分成多个部分,所述部分可为相同大小的部分。在一些实例中,技术可输出所述部分内的三角形的顶点,以使得如果在两个三角形之间共享顶点,那么技术可每一顶点执行域着色器一次。换句话说,如果在部分内的第一三角形与第二三角形之间共享顶点,且技术执行域着色器以在曲面细分级124输出第一三角形的顶点时转换顶点的坐标,那么技术可确保在曲面细分级124输出第二三角形的顶点时,顶点在顶点重用缓冲器中是可用的。以此方式,技术可仅执行域着色器一次以将顶点的坐标从域中的坐标转换成第一及第二三角形之间的共享顶点的贴片的坐标,而非在曲面细分级124输出顶点作为第一三角形的顶点的部分时执行域着色器,及接着在曲面细分级124输出顶点作为第二三角形的顶点的部分时再次执行域着色器。
在一些实例中,部分内的三角形的数目可能太大,或顶点重用缓冲器的大小可能太小,从而不能保证在部分内的三角形之间共享的顶点在由曲面细分级124输出这些三角形中的每一者的顶点时在顶点重用缓冲器中是可用的。为了解决此情形,在一些实例中,曲面细分级124可进一步将部分划分成子部分。曲面细分级124可实施子部分中的每一者内的在本发明中所描述的顶点输出方案。举例来说,曲面细分级124可将部分划分成子部分以使得曲面细分级124可确保子部分内的三角形的共享顶点将在曲面细分级124输出此些三角形的顶点时在顶点重用缓冲器中是可用的。
以此方式,曲面细分级124可处理部分或子部分以使得可有效地使用顶点重用缓冲器以便最小化或减小顶点未命中,所述顶点未命中可在需要不存储于重用缓冲器中的顶点的坐标时出现。举例来说,顶点未命中可在输出尚未由域着色器处理及存储于重用缓冲器中的顶点的坐标时出现。顶点未命中还可例如在顶点先前已由域着色器处理及存储于重用缓冲器中时出现,但所述数据已被改写。技术以此方式处理顶点以通过通常在将所述顶点上的信息改写于重用缓冲器中之前处理包含特定顶点的每一三角形来减小输出在重用缓冲器中不可用的顶点的次数。然而,将理解此情形可能不是总是可能的。因此,一些实例可试图减少存储于重用缓冲器中的数据的重新计算的数目,而非将这些计算限于每一顶点的单个域着色器调用。因此,各种实例可减少域着色器调用的数目。在一些状况下,将域着色器调用的数目减少到每一顶点一个可为可能的,在其他状况下,仅有可能减少而非消除域着色器中的重新计算。
几何着色器级128接收由域着色器级126添加到贴片的基元的顶点,且可进一步产生基元的额外顶点以添加甚至更多分辨率。光栅化器级130从几何着色器级128接收基元,且将基元转换成像素以供显示。举例来说,基元可被定义为指示基元的互连的向量,且可在坐标空间中定义,所述坐标空间独立于将显示图像的显示器。光栅化器级130将这些向量转换成显示器坐标,且执行例如移除经封闭的基元内的点等任何额外功能。
像素着色器级132接收如由光栅化器级130输出的像素,且执行后处理以将色值指派给将显示的像素中的每一者。举例来说,像素着色器级132可接收存储于***存储器114中的恒定值、存储于***存储器114中的纹理数据及任何其它数据以产生例如色值等每像素输出。像素着色器级132还可输出指示像素的不透明性的不透明度值。
输出合并级134可执行任何最终像素处理。举例来说,输出合并级134可利用深度信息以进一步确定是否应从显示移除像素中的任一者。输出合并级134还可执行混合操作以产生最终像素值。
输出合并级134可将最终像素值输出到通常位于***存储器114内但可位于GPU112内的帧缓冲器。显示器处理器(未图示)可从帧缓冲检索像素值,且致使装置110的显示器(未图示)的像素相应地照明像素值以致使显示器显示图像。
如上文所描述,曲面细分级124将域内的外部及内环的点互连以产生域内的多个基元。在实例中,曲面细分级124可通过按特定次序进行遍历来处理域。举例来说,可执行遍历以使得可重用所计算的顶点信息。可选择用于处理输出基元的次序以有效地(或至少更高效地)利用顶点重用缓冲器。
在确定从曲面细分级124输出的基元的排序时,可考虑以下情形:例如(1)可需要保留当前曲面细分器速度以允许以及时方式处理基元,所述曲面细分器速度可为每一时钟周期一个基元,(2)算法不应太复杂,及(3)仅在曲面细分级124中进行改变可为优选的。在一些实例中,可不对重用逻辑作出改变。如上文所论述,重用逻辑为可用以确定是否将所需要的顶点信息存储于顶点重用缓冲器中的一系列硬件比较器,例如互斥或门(异或门)。在一些实例中,重用逻辑可为重用缓冲器中的控制器(图9中说明),所述控制器将存储于重用缓冲器中的三十二个存储的三十四个位索引与传入顶点的三十四个位索引进行比较。将理解在其它实例中,重用缓冲器的大小可不同,且索引可包含较多或较少的位。如下文关于图7及8将论述,可分别按选定的次序遍历四域及三角域以最有效地(或至少更高效地)利用顶点重用缓冲器以便最小化顶点未命中。
如上文所描述,曲面细分单元可将域划分成多个部分,且可确定部分内的形状(例如,三角形)的顶点。举例来说,每一部分可包含多个形状。这些形状可由形状的集合表示。举例来说,形状的多个集合形成部分内的形状。
根据本发明中所描述的技术中的一些,曲面细分单元可确定在域的部分内的第一形状集合内的形状的顶点的坐标。对于每一顶点,域着色器可将坐标转换成贴片的坐标,且将坐标存储于重用缓冲器中。对于共享顶点(例如,在第一形状集合内的两个三角形所共有的顶点),可不需要执行域着色器,因为经转换坐标可能已经存储于重用缓冲器中。
在输出第一形状集合内的形状的顶点的坐标之后,曲面细分单元可输出第二形状集合内的形状的顶点。为了最小化域着色器的执行,曲面细分单元可输出第二形状集合中的形状的顶点以使得与第一形状集合中的形状的顶点共享第二形状集合中的形状的许多顶点。因为第一形状集合及第二形状集合共享许多顶点,所以本发明中所描述的实例技术可最小化域着色器的执行。
举例来说,第一形状集合可沿着部分的第一边缘定位。再次,可将域划分成多个部分。部分中的每一者可包含多个边缘,且第一形状集合可沿着部分中的一者的边缘中的一者(即,多个边缘中的第一边缘)定位。在本发明中所描述的技术中,第二形状集合中的每一形状可与第一形状集合的至少一个形状共享至少一个顶点。而且,第二形状集合中并无形状可包含在部分的第一边缘上的顶点。
在本发明中所描述的技术中,曲面细分单元可遍历第一形状集合,且接着遍历第二形状集合,其中上文描述了第一形状集合与第二形状集合之间的关系。因为在第一形状集合与第二形状集合之间共享许多顶点,且曲面细分单元在遍历第一形状集合之后立即遍历第二形状集合,所以许多经转换坐标在重用缓冲器中仍可是可用的。因此,可减少执行域着色器的次数。
图2为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的另一实例的图形处理单元(GPU)的另一实例的框图。举例来说,图1说明实质上根据Direct3D 11API制定的图形处理管线。图2说明实质上根据OpenGL 4.x API的图形处理管线。
OpenGL 4.x图形处理管线可以与Direct3D 11图形处理管线实质上类似的方式起作用。因此,出于简洁的目的,参看图1来描述类似于Direct3D 11图形处理管线及OpenGL4.x图形处理管线两者的组件。
如图2的实例中所说明,GPU 112包含输入汇编程序136、顶点着色器138、曲面细分控制着色器140、基元产生器142、曲面细分评估着色器144、几何着色器146、剪除单元148、光栅化器150、片段着色器152及后处理器154。类似于图1,在图2中所说明的实例中,GPU112可包含比图2中所说明的组件多或少的组件。而且,出于说明的目的提供单元的特定次序,且不应将其视为限制性的。
以某些方式,具有OpenGL 4.x图形处理管线的曲面细分过程可实质上类似于具有Direct3D 11图形处理管线的曲面细分过程。举例来说,OpenGL 4.x曲面细分过程可依赖于贴片及控制点,其方式类似于上文关于图1所描述的方式。举例来说,图2的输入汇编程序136及顶点着色器138可实质上分别与图1的输入汇编程序级118及顶点着色器级120类似地起作用。
举例来说,在图2中,基元产生器142可与曲面细分单元等效或类似。曲面细分单元可确定沿着域内的第一环的第一边缘存在的点的数目。另外,曲面细分单元可确定沿着域内的第一环的第一边缘存在的点的第一部分的坐标的第一集合。曲面细分单元还可基于第一部分的坐标的第一集合确定沿着域内的第一环的第一边缘存在的点的第二部分的坐标的第二集合。曲面细分单元还可经配置以将沿着第一环的第一边缘存在的点与沿着第二环的第二边缘存在的点拼接,以将域划分成映射到贴片的多个基元。
作为曲面细分的更多实例,图2的曲面细分控制着色器140可实质上与图1的外壳着色器级122类似地起作用。然而,曲面细分控制着色器140输出曲面细分水平,所述曲面细分水平可类似于Direct3D 11的细分因子。举例来说,OpenGL 4.x的曲面细分水平可定义域类型、域内的环的数目及每一环边缘的点的数目。
基元产生器142可以与曲面细分级124实质上类似的方式起作用。举例来说,基元产生器142可利用曲面细分水平及域类型将域划分成多个基元。
图2的曲面细分评估着色器144可实质上与图1的域着色器级126类似地起作用。举例来说,曲面细分评估着色器144可从基元产生器142接收所产生的基元的顶点,且将基元添加到由曲面细分控制着色器140输出的贴片。以此方式,OpenGL 4.x API的图形处理管线可对贴片执行曲面细分以增加贴片的分辨率。另外,类似于上文,关于图3,可例如在点产生器中预定及实施输出基元的次序以有效地利用顶点重用缓冲器来最小化或至少降低顶点未命中。举例来说,可通过按特定次序进行遍历来处理域以使得可重用所计算的顶点信息。如上文所论述,可选择用于处理输出基元的次序以最有效地(或至少更高效地)利用顶点重用缓冲器以便最小化顶点未命中。此情形可减少曲面细分评估着色器144调用的数目。
几何着色器146可实质上与几何着色器级128类似地起作用。图2中的剪除单元148及光栅化器150的组合可实质上与图3中的光栅化器级30类似地起作用。图2中的片段着色器152及后处理器154可实质上分别与图3中的像素着色器级132及输出合并级134类似地起作用。后处理器154可将最终像素值输出到帧缓冲器,且显示器处理器可从帧缓冲器检索像素值,且致使显示器根据像素值进行照明以显示图像。
如上文所描述,图2的曲面细分控制着色器140、基元产生器142及曲面细分评估着色器144实质上分别与图3的外壳着色器级122、曲面细分级124及域着色器级126类似地起作用,以用于实施曲面细分过程。因此,Direct3D 11及OpenGL 4.x API两者依赖于两个可编程着色器单元及一个固定功能单元来实施曲面细分过程。
出于概括性的目的,可用第一曲面细分着色器单元、曲面细分单元及第二曲面细分着色器单元来描述本发明中描述的技术。第一曲面细分着色器单元的实例包含外壳着色器级122及曲面细分控制着色器140。曲面细分单元的实例包含曲面细分级124及基元产生器142。第二曲面细分着色器单元的实例包含域着色器级126及曲面细分评估着色器144。
而且,Direct3D 11使用术语“细分因子”,且OpenGL 4.x使用可被视为类似术语的术语“曲面细分水平”。出于概括性的目的,本发明使用术语“曲面细分因子”实例,其包含细分因子及曲面细分水平。以此方式,第一着色器单元可被认为是将曲面细分因子输出到曲面细分单元,且曲面细分单元可响应于曲面细分因子将顶点输出到第二着色器单元。
应注意虽然Direct3D 11及OpenGL 4.x利用两个着色器单元及一个固定功能单元,但本发明中描述的技术不限于此。举例来说,在其它***中有可能第一及第二着色器单元为固定功能单元,且曲面细分单元为着色器单元。作为另一实例,所有的单元可为固定功能单元或所有的单元可为着色器单元,或其任何组合。
因此,在一些实例中,可以考虑第一单元执行类似于第一着色器单元的功能,但可为着色器单元或固定功能单元,第二单元执行类似于曲面细分单元的功能,但可为着色器单元或固定功能单元,且第三单元执行类似于第二着色器单元的功能,但可为着色器单元或固定功能单元。此外,尽管第一着色器单元、曲面细分单元及第二着色器单元经说明为图1及2中的单独单元,但本发明的方面不限于此。图1及2中所说明的这些单元及图形处理管线的可能任一单元可一起组合成共同单元。因此,虽然为易于描述单独地描述这些单元的功能性,但这些单元可以共享硬件实施或经实施为相异组件。
图3为说明输出用于曲面细分的顶点的实例技术的图。在图3的实例曲面细分解决方案中,将为三角域的域160的整个区域划分成较小的三角形162。箭头164、166、168、170说明三角形162可经处理及映射到贴片的次序。在概念上,将理解例如三角形162等各种三角形的顶点存在于通常由平行箭头164、166、168及170的线所组成的环上。举例来说,三角形162包含存在于外环上的两个顶点及存在于内环上的一个顶点。更一般化地,一些三角形可具有存在于外环上的两个顶点及存在于内环上的一个顶点,例如三角形162,而其它三角形可具有存在于外环上的一个顶点及存在于内环上的两个顶点。
如图3中所说明,点产生器可通过从最外环一直“遍历”到中心环170来处理域,所述最外环为域160的边界。“遍历”指示针对给定曲面细分水平计算曲面细分三角形的序列或次序。如图3中所说明,针对给定曲面细分水平计算曲面细分三角形的序列或次序以螺旋状方式一次一个环地进行。
此算法的问题在于归因于顶点重用缓冲器的受限制大小,在算法完成输出第一环164上的三角形且前进到下一环时,前两个环164、166的边界上的所有顶点将为顶点未命中(例如,不存在于顶点重用缓冲器中)。换句话说,出现顶点信息的损失,因为顶点缓冲器并未大到足以存储所有所计算的坐标。
图4为说明可需要在图3中说明的技术中重新计算的点的图。如图4中所说明,由于顶点未命中,可能需要重新计算一些点。举例来说,在使用路径172时,可需要重新计算内环上的十八个顶点中的每一者(例如顶点174)。应注意将改写这些顶点,因为在遍历路径172时,不仅将存储内环上的十八个顶点,而且还将存储外环上的二十四个顶点。因此,对于能够存储三十二个顶点的信息的顶点重用缓冲器,如果使用所说明路径次序,那么这些四十二个顶点将溢出顶点重用缓冲器。
在实例中,比单宽度环更宽的“遍历”可用以减少顶点未命中。举例来说,遍历路径可不仅仅表示最外环。例如可遍历双环。不幸的是,如果需要能够每一时钟周期处理一个基元,那么此方法通常将需要更多的点产生器单元。遍历“圆环”(例如同时处理两个行)快速收敛于每一基元1.3个顶点且保持在那里。甚至更宽的遍历可能不会使处理快太多,仅仅实现每一基元最大<1.5个顶点。另外,用于此处理的硬件可消耗显著更多的电力,且占据多得多的裸片面积。
图5A及5B为说明根据本发明中所描述的一或多个实例的划分成多个基元的域的图形图。举例来说,图5A说明划分(即,曲面细分)成多个基元的三角域176,且图5B说明划分成多个基元的四域178。
在图5A及5B中,形成三角形的点的互连可基于曲面细分因子。举例来说,上文所描述的曲面细分单元可包含第一单元,所述第一单元确定沿着域内的第一环的第一边缘(例如图5A的三角域176及图5B中所说明的经划分的四域178的边缘)存在的点的数目。如图5A及5B中所说明,可将域划分(即,曲面细分)成多个基元。如图5A中所说明,可将三角域的每一边缘划分成相同数目个区段。此情形被称作均匀曲面细分。四域也可被划分成相同数目个区段,且具有均匀曲面细分。然而,如图5B中所说明,四域178为不均匀曲面细分。
如下文所更详细描述的,曲面细分单元可确定沿着域内的第一环的第一边缘存在的点的第一部分的坐标的第一集合,及基于第一部分的坐标的第一集合确定沿着域内的第一环的第一边缘存在的点的第二部分的坐标的第二集合。如图5A及5B中所说明,可将不同环划分成不同数目的坐标。如本文中所描述,接着可以减少域着色器调用的数目的方式遍历这些环。另外,点的第一部分中的坐标(每一点)的每一集合可与点的第二部分中的坐标(点)的对应集合对称。
部分内的三角形的数目及顶点重用缓冲器的大小可指示顶点重用缓冲器是否将在处理给定部分时溢出。如果部分内的三角形的数目太大或顶点重用缓冲器的大小太小,那么可在由曲面细分级124输出这些三角形中的每一者的足够顶点以填充顶点重用缓冲器时删除最老的条目。因此,如果需要所述顶点信息,那么所删除的条目(或多个条目)将不可用。因此,在需要的情况下将需要进行重新计算。为了解决此情形,在一些实例中,曲面细分级124可将部分进一步划分成子部分。曲面细分级124可实施子部分中的每一者内的在本发明中所描述的顶点输出方案。在一个实例中,曲面细分级124可将部分划分成子部分以确保可处理子部分内的三角形的所有顶点而不会发生溢出。将理解顶点重用缓冲器中的各种顶点可在其不再被需要时被改写。在一些实例中,此情形可以先进先出的方式进行。在此情况下,先进的最老的条目为将改写的第一值。另外,在三角形之间共享一些顶点。
将理解可修改本文中所描述的***及方法以针对除三十二之外的不同顶点重用缓冲器大小进行调整。如下文更详细地描述,曲面细分单元还可经配置以将沿着第一环的第一边缘存在的点与沿着第二环的第二边缘存在的点拼接,从而将域划分成经映射到贴片的多个基元。
图6为说明根据本发明中所描述的一或多个实例的包含连接到域着色器184及顶点重用缓冲器186的曲面细分单元182的实例***或子***180的框图。曲面细分单元182可经配置以将域曲面细分(例如,划分)成多个基元。如本文中所描述,曲面细分器单元182(例如,曲面细分器)可将域划分成多个三角形。域着色器184接着可获取域中的三角形的顶点,且将顶点转换成贴片的顶点。包含外部点产生器及内部点产生器一对点产生器188可通过按序列或次序遍历曲面细分三角形来处理贴片。举例来说,开始于三角形1,外部点产生器将产生三角形1的两个垂直顶点,且内部点产生器将产生第三顶点。连接性产生器190将连接三个顶点,指示这三个顶点属于三角形1,且输出顶点。顶点重用缓冲器186的控制器192可确定所输出的顶点是否在顶点重用缓冲器186中,且调用不在顶点重用缓冲器186中的每一顶点的域着色器184的实例。
接着,外部点产生器将产生三角形2的顶点,且内部点产生器将产生三角形2的两个垂直顶点。连接性产生器190将连接三个顶点,指示这三个顶点属于三角形2,且输出顶点。顶点重用缓冲器186的控制器192将确定所输出的顶点是否在顶点重用缓冲器186中,且调用不在顶点重用缓冲器186中的每一顶点的域着色器184的实例,等等。
从曲面细分单元输出的基元的排序可影响在后续级处的顶点重用。因此,可选择允许在顶点重用缓冲器大小界限内的顶点的重用的排序。可预定由点产生器使用的遍历次序。另外,由点产生器使用的遍历次序可为用于遍历曲面细分三角形以使得可重用所计算的顶点信息的次序。
本文中所描述的各种***、方法及装置以可最有效地利用或可至少更高效地利用顶点重用缓冲器186以便最小化顶点未命中的方式提供输出基元的改变次序。此情形可减少域着色器184调用的数目。例如在下文论述的图7到9中说明不同遍历次序(也被称作路径)的各种实例。这些仅为实例次序,通常,在域中的特定三角形处开始、遍历额外三角形且接着遍历另一系列的三角形(所述三角形中的一或多者共享顶点)的任何次序可用以增加顶点重用。
如上文所描述,可将域(例如,三角形、四方形)划分成环。环可为域内的一系列同心形状,其中同心形状为与域形状相同的形状。举例来说,如果域形状为四方形,那么四方形的周边可被认为是外环。内环可为在四域内存在的较小大小的一系列四方形。类似地,如果域形状为三角形,那么三角形的周边可被认为是外环,且内环可为在三角域内存在的较小大小的一系列三角形。
域着色器184可从来自外壳着色器的经变换控制点及来自曲面细分单元182的UV坐标产生表面几何形状。另外,将理解可例如在使用重心坐标时由曲面细分单元182提供UVW坐标。可针对由固定功能曲面细分器单元182产生的每一顶点调用域着色器184。输入可为域上的点的UV坐标以及来自外壳着色器的所有输出数据(包含控制点及贴片常数)。域着色器184的输出可为顶点。然而,如上文所描述,因为顶点重用缓冲器186的大小可受限制,所以在算法完成输出例如第一环上的三角形且前进到下一环时,前两个环的边界上的所有顶点可为顶点未命中(例如,不存在于顶点重用缓冲器186中)。换句话说,出现顶点信息的损失,因为顶点重用缓冲器186并未大到足以存储所有所计算的坐标。此情形可导致额外域着色器184调用,除非以使得可重用所计算的顶点信息的方式执行遍历,如本文中所描述。
在一些实例中,顶点重用缓冲器186可为包含存储器以存储三十二组所计算的坐标的缓冲器。然而,将理解在其它实例中可使用不同大小的顶点重用缓冲器186。顶点重用缓冲器186可用以存储由域着色器184计算的坐标。通常,存储于顶点重用缓冲器186中的坐标不为UV坐标。UV坐标通常可为到域着色器184的一个输入,其可从来自外壳着色器的经变换控制点及来自曲面细分单元182的UV(或UVW)坐标产生表面几何形状。来自域着色器184的输出接着可存储于顶点重用缓冲器186中。UV或坐标可充当到重用缓冲器186中的索引。
如本文中所描述,顶点重用缓冲器186可为三十二个位置深度重用高速缓冲存储器。曲面细分单元可例如产生UV坐标(u,v),其可为三十四个位(对于u 17个位且对于v 17个位)。这三十四个位可用以索引顶点。因此,顶点重用缓冲器186可存储UV坐标(u,v)作为指示由域着色器184计算的哪一所存储的顶点信息在顶点重用缓冲器186中可用的索引。
UV坐标可与顶点重用缓冲器186中的条目相比较。举例来说,一些实施例可使用一系列比较器(例如位于顶点重用缓冲器186中的异或门)来执行用以确定条目是否在顶点重用缓冲器186中的比较。重用高速缓冲存储器存储三十四个位索引。比较器可将三十四个位索引与可存储于顶点重用缓冲器186中的三十二个存储的三十四个位索引相比较。如果传入索引匹配重用表中的索引,那么出现命中。否则,出现未命中。在出现命中时,不需要调用域着色器184,因为所需要的信息存储于顶点重用缓冲器186中,且可从此处存取。否则,如果出现未命中,那么通常将调用域着色器184。在一个实例中,***比较器可经配置以将平行的给定三角形的所有三个三角形索引与重用表中的三十二个条目相比较,其中每一条目为索引(三十四个位)。
举例来说,如果三十二个条目中的任一者匹配三十四个位索引,那么所述顶点存储于顶点重用缓冲器186中,且并一定是由域着色器184计算(或重新计算)。而是,其可从顶点重用缓冲器186读取。否则出现顶点未命中,且需要由域着色器184计算(或重新计算)顶点信息。另外,可从FIFO中读取来自重用高速缓冲存储器的一个条目以为顶点未命中的新计算的信息腾出空间。如所描述,顶点重用缓冲器186可存储由域着色器184计算的顶点信息。此未命中(u,v)可被用作经发布给着色器***以用于顶点处理(域着色器184处理)的新索引。
在出现顶点未命中时,可在顶点提取器解码器(VFD)及高阶定序器(HLSQ)之前的块基元控制器(PC)将UV坐标发送到VFD,所述VFD也可在HLSQ之前。VFD将UV坐标发送到HLSQ,所述HLSQ也可在着色器单元之前。HLSQ将UV坐标发送到着色器单元(SP),且将UV坐标加载到GPR中。这是三十二个光纤当中制作波的一个光纤(一个线)。一旦这样组成了波,其便可经发布以用于执行域着色器184。
图7为说明根据本发明中所描述的一或多个实例的用于输出三角域的顶点的实例技术的图。所提议的方法可使用遍历图案,所述遍历图案当相比于关于图3及4论述的那些图案时可被视为更复杂的。在图7中,说明四域的遍历图案。在图7中说明的实例中,可通过按数字次序(例如,1、2、3、4等)“遍历”来执行曲面细分。此次序将允许重用顶点重用缓冲器186中的值,此举会降低对重新计算顶点的需求。
如图7中所说明,可将四域200划分成四个不同部分202、204、206、208。可单独地处理每一部分202、204、206、208。出于此论述的目的,部分208将被视为第一部分。将理解部分202、204、206、208中的任一者可被视为第一部分。
现参考部分208,可通过按数字次序进行遍历、例如在“1”处的外缘处开始及继续向内(例如2、3、4、5、6、7、8)执行曲面细分。举例来说,曲面细分单元可将域划分成包含第一部分的多个部分。曲面细分单元可确定在第一部分内存在的第一形状集合的顶点的坐标(例如,第一形状集合包含标记为1到8的三角形),其中第一形状集合中的每一形状包含在第一部分的第一边缘上的至少一个顶点。在确定第一形状集合的顶点的坐标之后,曲面细分单元可确定在第一部分内存在的第二形状集合的顶点的坐标(例如,第二形状集合包含标记为9到16的三角形)。第二形状集合中的每一形状与第一形状集合中的至少一个形状共享至少一个顶点。此外,第二形状集合中并无形状包含在第一部分的第一边缘上的顶点。此情形可允许在那些顶点的顶点信息仍在顶点重用缓冲器186中时处理额外顶点。
顶点重用缓冲器186可存储由域着色器184计算的三十二组坐标。因此,在曲面细分单元182(例如,点产生器188及连接性产生器190)从例如在9处的外缘向内遍历到16时,1到8的8个值中的每一者在顶点重用缓冲器186中可为可用的。另外,在一些实例中,与部分208共享的沿着部分206的边缘的值可在部分208中从1遍历到8时在顶点重用缓冲器186中为可用的。在从9遍历到16之后,曲面细分可通过按数字次序进行遍历而继续,例如在“17”处的外缘处开始,且向内继续。
在图7的所说明的实例中,每一部分202、204、206、208包含数个三角形。在实例中,针对部分202、204、206、208计算的值的每一集合可存储于顶点重用缓冲器186中以供在处理所述部分时使用。(还要注意顶点重用缓冲器186可包含例如用于所计算的顶点信息的三十二个存储位置。)
如图7中所说明,部分208具有足够小数目的三角形以允许遍历整个部分208而不溢出顶点重用缓冲器186。更确切地说,需要存储的顶点的数目足够小以使得顶点重用缓冲器186不会溢出,假定具有例如三十二个存储空间的顶点重用缓冲器。将理解尽管三角形具有三个顶点,但由于三角形之间的顶点共享,需要存储的顶点的总数通常将不为部分或子部分中的三角形的数目的三倍。另外,例如在不再需要所述顶点的顶点信息时,还将理解可改写部分或子部分中的一些顶点而不需要后续域着色器调用。
在从1到8遍历三角形时,将存储十个顶点,留下二十二个存储空间。在遍历三角形9到16时,所需要的顶点中的五个将已经在顶点重用缓冲器186中为可用的,且将不需要调用域着色器184来计算所述顶点。另外,将不需要来自三角形1到8的顶点中的五个来计算三角形9到16,且可从顶点重用缓冲器186舍弃这些顶点。换句话说,可舍弃沿着第一边缘212的顶点。将理解在处理部分206时可需要重新计算这些顶点,但形成部分208的处理时不会再次需要所述顶点。过程可按数字次序继续,按需要重用顶点,且在不需要所述顶点来处理部分208时舍弃顶点。
然而,在另一实例中,可维持与沿着部分202、204、206及208的一或多个边缘的顶点相关的信息以供处理另一部分202、204、206及208时使用。举例来说,第一边缘212为由部分206及208共享的边缘。在一些状况下,维持沿着第一边缘212的顶点的顶点信息供处理部分206及208两者时使用可为可能的。更确切地说,可遍历三角形1到8,且可存储十个顶点的信息。接着,可遍历三角形9到16,且可存储额外五个顶点的信息。三角形9到16与三角形1到8共享五个顶点。现在存储的顶点的总数可为十五,假定在开始处理部分208之前信息不存储于顶点重用缓冲器中。应注意顶点重用缓冲器186尚未溢出,且可处理整个部分208而不舍弃任何顶点信息。如果接下来处理部分206,那么沿着第一边缘212的顶点的顶点信息在顶点重用缓冲器186仍可为可用的。虽然整个部分208的顶点信息可存储于顶点重用缓冲器186,但其仍可适用于不再需要的右边顶点信息。
曲面细分单元182可包含两个点产生器188(内部及外部)及连接性产生器190。如本文中所论述,可按数字次序遍历三角形。举例来说,在一个***中,首先可遍历三角形1到8。在四域200中,外部点产生器可产生四域200的三角形1到8右边的顶点,且内部点产生器可产生四域200的三角形1到8左边的顶点。曲面细分单元182中的连接性产生器190可将三角形1到8拼接在一起,获取来自内部及外部点产生器输出两者的顶点。
更确切地说,开始于三角形1,外部点产生器将产生三角形1的两个垂直顶点,且内部点产生器将产生第三顶点。连接性产生器将连接三个顶点,指示这三个顶点属于三角形1,且输出顶点。顶点重用缓冲器186的控制器192(即,顶点重用逻辑)将确定所输出的顶点是否在顶点重用缓冲器186中,且调用不在顶点重用缓冲器186中的每一顶点的域着色器184的实例。
接着,外部点产生器将产生三角形2的顶点,且内部点产生器将产生三角形2的两个垂直顶点。连接性产生器190将连接三个顶点,指示这三个顶点属于三角形2,且输出顶点。顶点重用缓冲器186的控制器192将确定所输出的顶点是否在顶点重用缓冲器186中,且调用不在顶点重用缓冲器186中的每一顶点的域着色器184的实例,等等。
在此实例中,点产生器188及连接性产生器190首先建构三角形1,接着建构三角形2,其方式为从三角形1“遍历”到三角形2,且接着继续数值遍历三角形3到8。因此,三角形1到8可被视为在第一部分(在此实例中为部分208)内存在的第一形状集合。如图7中所说明,在第一部分内存在的第一形状集合包含至少一个顶点,例如在第一部分208的第一边缘212上的210(且有时为两个)。举例来说,顶点210为三角形6、6及7的顶点。三角形5及7包含在第一边缘212上的两个顶点,而三角形6包含在第一边缘212上的仅一个顶点。
接着,点产生器188将以通常相同方式“遍历”三角形9到16。三角形9到16可被视为在第一部分208内存在的第二形状集合。外部点产生器可产生四域200的三角形9到16的右边的顶点,且内部点产生器可产生四域200的三角形9到16的左边的顶点。曲面细分单元182中的连接性产生器190可开始拼接三角形9到16,获取来自内部及外部点产生器输出两者的顶点。对于部分208中的三角形中的其余者以及其它部分202、204、206中的三角形可继续此过程。如图7中所说明,形状(三角形9到16)的第二集合中的每一形状与第一形状集合中的至少一个形状共享至少一个顶点,例如顶点214。另外,如图7中所说明,第二形状集合中并无形状包含在第一部分208的第一边缘212上的顶点。
在实例中,第一边缘212可存在于四域200的两个边界216、218之间。另外,第一部分208可包含四个边缘,以使得至少四个边缘中的第一212及第二边缘220存在于域的边界内,且其中四个边缘中的第三及第四边缘各自存在于域218、222的边界上。
将理解可按各种次序处理部分202、204、206及208。实例遍历方案通常导致域着色器184的较少调用,因为与围绕环遍历相比较,更多的顶点在顶点重用缓冲器186中是可用的。还将理解可按除1到8、后跟着9到16、17到24及25到32之外的各种次序处理形状的集合。举例来说,25到32可被视为第一形状集合,且形状17到24可被视为第二形状集合。另外,形状的集合的定向可改变,例如三角形1、2、9、10、17、18、25、26可为第一形状集合。此外,还将理解部分的大小可与图7的实例中的大小不同。
图8为说明根据本发明中所描述的一或多个实例的用于输出四域的顶点的实例技术的图。所提议的方法可使用遍历图案,所述遍历图案当相比于关于图3及4论述的那些图案时可被视为更复杂的。在图7中,说明三角域的遍历图案。在图7中说明的实例中,可通过按数字次序(例如,1、2、3、4等)“遍历”来执行曲面细分。此次序将允许重用顶点重用缓冲器186中的值,此举会降低对重新计算顶点的需求。
如图8中所说明,可将三角域225划分成三个不同部分227、229、231。可单独地处理每一部分227、229、231。出于此实例的目的,部分231可被视为第一部分,然而将理解,部分227、229、213中的任一者可被视为第一部分。现参看部分231,可通过按数字次序遍历、例如在外缘处、在“1”处开始及向内继续(例如,2、3、4、5、6、7、8)来执行曲面细分。
类似于上文图7的论述,曲面细分单元可确定在第一部分231内存在的形状(例如,三角形1到8)的第一集合的顶点的坐标。第一形状集合中的每一形状包含在第一部分的第一边缘233上的至少一个顶点。在确定形状(三角形1到8)的第一集合的顶点的坐标之后,确定在第一部分231内存在的形状(三角形9到16)的第二集合的顶点的坐标。形状(三角形9到16)的第二集合中的每一形状与形状(三角形1到8)的第一集合的至少一个形状共享至少一个顶点,例如顶点236。另外,第二形状集合中并无形状包含在第一部分231的第一边缘233上的顶点。另外,如图8中所说明,两个边缘235存在于三角域225的边界上,且两个边缘237存在于三角域225的边界内。
顶点重用缓冲器186可存储由域着色器184计算的三十二组坐标。因此,在点产生器从例如在9处的外缘向内遍历到16时,1到8的8个值中的每一者可在顶点重用缓冲器186中为可用的。另外,在一些实例中,沿着与部分231共享的部分229的边缘的值可在部分231中从1遍历到8时在顶点重用缓冲器186中可用。在从9遍历到16之后,曲面细分可通过按数字次序遍历而继续,例如在17处的外缘处开始且向内继续到24,后跟着25到31。接着可跟着路径33、34、35等遍历部分227。应注意,此路径允许重用在231与227之间的边缘的所计算的值。(再次注意顶点重用缓冲器186可包含例如用于所计算的顶点信息的集合的三十二个存储位置。)
如本文中所论述,曲面细分单元182可包含两个点产生器188(内部及外部)及连接性产生器190单元。在三角域225中,外部点产生器可产生在三角域225的三角形1到8右边的顶点,且内部点产生器可产生在三角域225的三角形1到8左边的顶点。曲面细分单元182中的连接性产生器190可开始拼接三角形1到8,获取来自内部及外部点产生器输出两者的顶点。接着,点产生器188将“遍历”三角形9到16。对于部分231中的三角形的其余者及其它部分227、229中的三角形可继续此过程。将理解可按各种次序处理部分227、229及231。
类似于图7的实例的论述,在图8的实例中,部分231具有足够小数目的三角形以允许遍历整个部分而不溢出顶点重用缓冲器186。在从1到8遍历三角形,将存储十个顶点,留下二十二个存储空间。在遍历三角形9到16时,所需要的顶点中的五个将已经在顶点重用缓冲器186中为可用的,且将不需要调用域着色器184来计算所述顶点。另外,将不需要来自三角形1到8的顶点中的五个来计算三角形9到16,且可从顶点重用缓冲器186舍弃这些顶点。因此,针对部分227、229、231计算的值的每一集合可存储于顶点重用缓冲器186中以供处理所述部分时使用。图7及8说明分别用于低曲面细分水平的四方形及三角形实例。关于下文论述的图9说明用于大于30的曲面细分水平的实例。
图9为说明根据本发明中所描述的一或多个实例的用于输出四域的顶点的另一实例技术的图。图9说明用于大于30的曲面细分水平的实例。在上文所论述的图7及8的低曲面细分水平实例中的每一者中,可通过按数字次序1、2、3、4等进行“遍历”来执行曲面细分。此次序将允许重用缓冲器,此举降低了对重新计算顶点的需求。在大于三十的曲面细分水平的实例中,一直遍历到中心可为不切实际的,因此在一个实例中,***可必须分割高度的遍历,例如15(或每一遍历30个三角形)。图9中说明此情形。
举例来说,可将四域250划分成包含部分252的四个部分。可将部分进一步划分成子部分,例如254及256。以此方式,可单独地遍历每一子部分以允许来自存储于顶点重用缓冲器186中的数据的顶点重用。然而,将理解顶点数据的一些再生可为必要的,例如在子部分254及256之间的边界258处。举例来说,曲面细分单元可确定第一子部分260的第一形状集合的顶点的坐标。第一子部分的第一形状集合存在于第一子部分258内。第一子部分260的第一形状集合中的每一形状包含在第一子部分254的第一边缘262上的至少一个顶点。在确定第一子部分254的第一形状集合的顶点的坐标之后,曲面细分单元可确定在第一子部分260内存在的子部分264的第二形状集合的顶点的坐标。第一子部分264的第二形状集合中并无形状包含在第一子部分254的第一边缘262上的顶点。
如本文中所描述,存在顶点重用缓冲器186大小与所选择的路径之间的关系。举例来说,较大的顶点重用缓冲器可允许较长的遍历路径。然而,不增加顶点重用缓冲器大小的大小可为优选的。举例来说,较大的重用缓冲器大小可增加用以确定有多少信息存储于顶点重用缓冲器186中的顶点重用逻辑的复杂性。另外,顶点重用缓冲器186可具有固定大小。举例来说,顶点重用缓冲器186可在与曲面细分单元分离的组件中,且避免重新设计包含顶点重用缓冲器186的组件可为优选的。
图10为说明根据本发明中所描述的一或多个实例的用于输出四域375的顶点的另一实例技术的图。在不均匀曲面细分状况下,域的边缘具有不同曲面细分因子,内部具有不同于边缘的曲面细分因子,或两者。举例来说,在边缘具有不同于内部的曲面细分因子的状况下,***可不以关于图7到9所表明的方式进行遍历。而是,此状况可通过处置最外环或最外环的部分(其中出现违规行为)及接着处置域的内部来进行处理。举例来说,如图10中所说明,算法的一个实例可按数字次序继续进行,开始于边缘1,且以区域2、3、4、……、12继续。应注意,不同于图7到8,如图10中所说明,数目1到12指示用于处理由数个三角形所组成的区域的实例次序,而非用于个别三角形自身的次序。因此,基本上四方形的每一象限(或三角形状况下的三分之一,其并未进行说明)将夹在其两个相邻半边缘之间。通常,可按遍历次序执行曲面细分,所述遍历次序通常重用存储于顶点重用缓冲器186中的数据。举例来说,按1到12的次序进行遍历可重用沿着四域375的不同部分之间的边界377计算的大多数数据。
图11为说明根据本发明中所描述的一或多个实例的用于具有一具有奇数个区段的边缘的三角域的实例技术的图。图12为说明根据本发明中所描述的一或多个实例的用于具有一具有奇数个区段的边缘的四域的实例技术的图。
如图11和12中所说明,具有奇数侧长度的域可沿中心轴***。在此类实例中,点产生器可通过单独地遍历每一部分来处理贴片。此情形并不意欲指示可不选择次序以使得可在贴片、三角形300或四方形325的不同部分之间发生重用。从曲面细分单元输出的基元的排序可影响在后续级处的顶点重用。因此,可选择允许重用在顶点重用缓冲器大小界限内的顶点的排序。如本文中所描述,可执行遍历以使得可重用所计算的顶点信息。
举例来说,如图11中所说明,300可包含部分302、304、306及中心308。可单独地遍历部分302、304、306及中心308。举例来说,可使用从外边缘到内部的遍历方案,例如通常类似于关于图8所论述的遍历方案的方案。可单独地遍历中心。如将理解,中心308与部分302、304、306中的至少一者之间的一些重用可为可能的。还应了解,虽然不一定是在图11的特定实例中,但可视需要应用关于图9及10所论述的概念以处理较大曲面细分值及不均匀曲面细分。举例来说,在每一部分302、304、306中,曲面细分单元可在另一部分的边界处从边缘遍历到内部,而不会在例如顶点的数目小于顶点重用缓冲器186的大小时溢出顶点重用缓冲器186。再次,将理解尽管三角形具有三个顶点,但由于三角形之间的顶点共享,需要存储的顶点的总数通常将不为部分或子部分中的三角形的数目的三倍。因此,类似于图8的论述,通常可出现重用。然而,必要时,具有奇数侧长度及较大曲面细分因子的域的部分可被进一步划分成子部分,如关于图9所论述。应注意中心308为单个三角形,且因此可在不进一步被划分的情况下进行操纵。然而,在一些实例中,在具有较高曲面细分值的情况下,不同地划分成部分及子部分可为可能的。包含具有奇数数目个区段的边缘的域的不均匀曲面细分也是有可能的。
如图12中所说明,四方形325可包含部分327、329、331、333。可单独地遍历部分327、329、331、333。举例来说,可使用从外部边缘到内部的遍历方案,例如通常类似于关于图7所论述的遍历方案的方案。还应了解,虽然在图12的特定实例中并非必要的,但可视需要应用关于图9及10所论述的概念以处理较大曲面细分值及不均匀曲面细分。举例来说,在每一部分327、329、331、333中,曲面细分单元可在另一部分的边界处从边缘遍历到内部,同时处理足够低数目的顶点以使得顶点重用缓冲器186不会溢出。因此,类似于图7的论述,通常可出现重用。然而,必要时,具有奇数侧长度及较大曲面细分因子的域的部分可被进一步划分成子部分,如关于图9所论述。包含具有奇数数目个区段的边缘的域的不均匀曲面细分也是可能的。
在另一实例中,均匀遍历方案将给予比不均匀遍历方案更佳的结果,一个实例***可在曲面细分单元182的设置级处确定关于所有曲面细分因子是否相等的旗标。因为大多数应用并未利用自适应曲面细分,所以此举将会获得性能优势。
图13为说明根据本发明中所描述的一或多个实例的用于曲面细分的实例方法的流程图。仅出于说明的目的,参考图6。如上文所描述,图6提供曲面细分单元的实例。曲面细分单元的实例包含图1的曲面细分级124及图2的基元产生器142以及图6的曲面细分单元182。
在实例***中,曲面细分单元可将贴片划分成多个部分(350)。在一些状况下,例如曲面细分单元可将四域划分成四个部分。类似地,在另一实例中,曲面细分单元可将三角域划分成三个部分。在一些状况下,曲面细分单元接着可进一步将四域或三角域划分成子部分。以此方式,可在群组中处理部分或子部分以使得可有效地使用顶点重用缓冲器186以便最小化或减少顶点未命中。此举可减少域着色器184调用的数目。举例来说,部分或子部分可具有足够小数目的三角形,少于三十二对三角形,从而允许遍历整个部分或子部分而不溢出顶点重用缓冲器。将理解尽管三角形具有三个顶点,但由于三角形之间的顶点共享,需要存储的顶点的总数通常将不为部分或子部分中的三角形的数目的三倍。另外,还将理解例如在不再需要所述顶点的顶点信息时,可改写部分或子部分中的一些顶点而不需要后续域着色器调用。
在一些实例中,部分内的三角形的数目可能太大,或顶点重用缓冲器的大小可能太小,从而不能保证在部分内的三角形之间共享的顶点在由曲面细分级124输出这些三角形中的每一者的顶点时在顶点重用缓冲器中是可用的。为了解决此情形,在一些实例中,曲面细分级124可进一步将部分划分成子部分。曲面细分级124可实施子部分中的每一者内的在本发明中所描述的顶点输出方案。举例来说,曲面细分级124可将部分划分成子部分以使得曲面细分级124可确保子部分内的三角形的共享顶点将在曲面细分级124输出此些三角形的顶点时在顶点重用缓冲器中是可用的。
另外,多个部分可包含第一部分,所述第一部分可为将处理的第一部分。在实例中,第一部分可为图7的部分208或图8的部分231。如上文所论述,可通过遍历三角形1到8,后跟着三角形9到16、17到24及25到32按次序处理第一部分。
在实例***中,曲面细分单元可确定在第一部分内存在的第一形状集合的顶点的坐标(352)。在实例中,第一形状集合中的每一形状可包含在第一部分的第一边缘(例如图7的第一边缘212或图8的第一边缘233)上的至少一个顶点。
取决于从曲面细分单元输出的基元的排序,可在后续级处重用存储于顶点重用缓冲器186中的顶点信息。因此,可选择允许重用在顶点重用缓冲器大小界限内的顶点的排序。如上文所论述,不增加缓冲器大小可为有利的。
曲面细分单元可确定在第一部分内存在的第二形状集合的顶点的坐标(354)。此情形可在确定第一形状集合的顶点的坐标之后出现(352)。第二形状集合的每一形状与第一形状集合的至少一个形状共享至少一个顶点。此外,第二形状集合中并无形状包含在第一部分的第一边缘上的顶点。输出基元的次序可有效地利用顶点重用缓冲器186以便最小化顶点未命中(例如,不存在于顶点重用缓冲器186中的所需要的顶点信息)。此情形可通过增加存储于顶点重用缓冲器186中的先前计算的信息的重用而减少域着色器184调用的数目。减少域着色器184调用的数目可节约电力,且增加性能。
通常,可通过以下方式来实现重用:将贴片划分成越来越小的部分或子部分直到可作为一个集合“遍历”数个三角形而不溢出顶点重用缓冲器186为止。举例来说,部分或子部分可具有数目足够小的三角形以允许遍历整个部分或子部分而不溢出顶点重用缓冲器。尽管三角形具有三个顶点,但由于在三角形之间的顶点共享,需要存储的顶点的总数通常将不为部分或子部分中的三角形的数目的三倍。另外,例如在不再需要所述顶点的顶点信息时,可改写在部分或子部分中的一些顶点而不需要后续域着色器调用。(在一些实例中,顶点重用缓冲器186通常可具有三十二个存储位置。)或者,可设定部分或子部分的大小以使得例如可从边缘遍历部分或子部分到预定内部位置,同时仅填充顶点重用缓冲器186的一半,以使得可在从边缘遍历另一部分到预定内部位置且填充顶点重用缓冲器186的另一半时使用所述所存储的信息。在又另一实例中,可设定贴片的一或多个部分或子部分的大小,使得每一遍次几乎填满顶点重用缓冲器186,且在后续遍次中,顶点重用缓冲器186中的顶点信息可以使用,且接着由新的顶点信息改写。本文中提供额外较多的特定实例。
图14为说明根据本发明中所描述的一或多个实例的实例算法与其它可能遍历方案之间的比较的图。图提供理想重用状况500、当前方法502、遍历双环504及遍历单环506的实例的说明。实例是针对具有均匀曲面细分水平1..64的三角域(即所有边缘及内部上的相同曲面细分因子)。如图14中所说明,纵轴为基元的数目除以顶点未命中的数目的比率。横轴为曲面细分水平。
图15为说明根据本发明中所描述的一或多个实例的实例算法与其它可能遍历方案之间的另一比较的图。图提供理想重用状况510、均匀状况512、双环状况514及单环状况516的三角域结果的说明。类似于图14,如图15中所说明,纵轴为基元的数目除以顶点未命中的数目的比率。横轴为曲面细分水平。
图16为说明根据本发明中所描述的一或多个实例的实例算法与其它可能遍历方案之间的另一比较的图。图提供理想重用状况520、均匀状况522、双环状况524及单环状况526的四域结果的说明。类似于图14到15,如图16中所说明,纵轴为基元的数目除以顶点未命中的数目的比率。横轴为曲面细分水平。
图17为说明根据本发明中所描述的一或多个实例的实例算法与其它可能遍历方案之间的另一比较的图。图提供三角域性能损失对理想的说明。图17说明单环530、不均匀534及均匀536遍历方案的性能损失(对理想)。另外,对于内部曲面细分水平2..64,图17说明最差的532个可能外部曲面细分水平结果。如图17中所说明,纵轴指示性能损失。横轴为曲面细分水平。
图18为说明根据本发明中所描述的一或多个实例的实例算法与其它可能遍历方案之间的另一比较的图。图提供四域性能损失对理想的说明。图18说明单环540、不均匀544及均匀546遍历方案的性能损失(对理想)。另外,对于内部曲面细分水平2..64,图18说明最差的542个可能外部曲面细分水平结果。如图18中所说明,纵轴指示性能损失。横轴为曲面细分水平。
在一或多个实例中,所描述的功能可以用硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么可将所述功能作为一或多个指令或代码存储在计算机可读媒体上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一或多个计算机或一个或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码及/或数据结构的任何可用媒体。借助于实例而非限制,此类计算机可读媒体可包括随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置或可用来存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。如本文所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘用激光以光学方式复制数据。上文的组合也应包含在计算机可读媒体的范围内。
代码可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。而且,可将所述技术完全实施于一或多个电路或逻辑元件中。
本发明的技术可以在广泛多种装置或设备中实施,包括无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。确切地说,如上文所描述,各种单元可结合合适的软件和/或固件组合在硬件单元中,或通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述各种实例。这些及其它实例在所附权利要求书的范围内。
Claims (41)
1.一种用于对域进行曲面细分的曲面细分单元,所述曲面细分单元包括电路,其中所述曲面细分单元经配置以:
将所述域划分成包含第一部分的多个部分;
基于所述第一部分中的形状的数目及重用缓冲器的大小,至少将所述第一部分划分成多个子部分,以使得对所述子部分的第一子部分内的多个形状的坐标的存储不会溢出所述重用缓冲器;
确定在所述第一子部分内存在的第一形状集合的顶点的坐标,其中所述第一形状集合中的每一形状包含在所述第一部分的第一边缘上的至少一个顶点,其中所述第一形状集合中的至少一个形状包含在所述域的边界上的至少一个顶点,且其中所述第一部分的所述第一边缘不是所述域的所述边界之一;及
在确定所述第一形状集合的所述顶点的坐标之后,确定在所述第一子部分内存在的第二形状集合的顶点的坐标,
其中所述第一形状集合中的由所述曲面细分单元最后确定坐标的形状与第二形状集合中的由所述曲面细分单元首先确定坐标的形状不共享顶点,
其中所述第二形状集合中的每一形状与所述第一形状集合中的至少一个形状共享至少一个顶点,且所述第二形状集合中的至少一个形状包含在所述域的与所述第一形状集合中的所述至少一个形状相同的边界上的至少一个顶点;且
其中所述第二形状集合中并无所述形状包含在所述第一部分的所述第一边缘上的顶点;
在确定在所述第一子部分中的形状的顶点的坐标之后,确定所述第一部分的第二子部分的第一形状集合的顶点的坐标,其中所述第二子部分的所述第一形状集合中的每一形状包括在所述第二子部分的第一边缘上的至少一个顶点;
在确定所述第二子部分的所述第一形状集合的所述顶点的坐标之后,确定所述第二子部分的第二形状集合的顶点的坐标,
其中所述第二子部分的所述第二形状集合中没有形状包括所述第二子部分的所述第一边缘上的顶点;以及
输出所确定的所述第一子部分的所述第一形状集合的坐标、所确定的所述第一子部分的所述第二形状集合的坐标、所确定的所述第二子部分的所述第一形状集合的坐标以及所述第二子部分的所述第二形状集合的坐标,以用于图形处理。
2.根据权利要求1所述的曲面细分单元,其中所述域为三角域,且其中将所述域划分成三个部分。
3.根据权利要求1所述的曲面细分单元,其中所述域为四域,且其中将所述域划分成四个部分。
4.根据权利要求1所述的曲面细分单元,其中所述第一部分的所述第一边缘存在于所述域的两个边界之间,其中所述两个边界中的一者包含所述第一子部分的所述第一形状集合中的包含在所述域的所述边界上的所述至少一个顶点的所述至少一个形状的所述边界。
5.根据权利要求1所述的曲面细分单元,其中所述第一部分包括至少四个边缘,且其中所述至少四个边缘的第一边缘及第二边缘存在于所述域的边界内,且其中所述四个边缘的第三边缘及第四边缘各自存在于所述域的边界上。
6.根据权利要求1所述的曲面细分单元,其中在所述域包含具有奇数侧长度的侧时,所述域偏离所述侧的中心轴而***。
7.根据权利要求1所述的曲面细分单元,其中为划分所述域,所述曲面细分单元经配置以将所述域划分成具有相对于所述第一部分的不均匀曲面细分因子的至少一个部分,且其中所述曲面细分单元经进一步配置以与确定所述第一部分中的顶点的坐标分离地确定在具有所述不均匀曲面细分因子的所述部分内存在的顶点的坐标。
8.根据权利要求7所述的曲面细分单元,其中具有相对于所述第一部分的不均匀曲面细分因子的所述至少一个部分沿着所述域的边界存在。
9.一种对域进行曲面细分的方法,其包括:
用图形处理单元GPU将所述域划分成包含第一部分的多个部分;
用所述GPU基于所述第一部分中的形状的数目及重用缓冲器的大小至少将所述第一部分划分成多个子部分,以使得对所述子部分的第一子部分内的多个形状的坐标的存储不会溢出所述重用缓冲器;
用所述GPU确定在所述第一子部分内存在的第一形状集合的顶点的坐标,其中所述第一形状集合中的每一形状包含在所述第一部分的第一边缘上的至少一个顶点,其中所述第一形状集合中的至少一个形状包含在所述域的边界上的至少一个顶点,且其中所述第一部分的所述第一边缘不是所述域的所述边界之一;及用所述GPU在确定所述第一形状集合的所述顶点的坐标之后,确定在所述第一子部分内存在的第二形状集合的顶点的坐标,
其中所述第一形状集合中被最后确定坐标的形状与第二形状集合中被首先确定坐标的形状不共享顶点,其中所述第二形状集合中的每一形状与所述第一形状集合中的至少一个形状共享至少一个顶点,且所述第二形状集合中的至少一个形状包含在所述域的与所述第一形状集合中的所述至少一个形状相同的边界上的至少一个顶点;且
其中所述第二形状集合中并无所述形状包含在所述第一部分的所述第一边缘上的顶点;
在确定在所述第一子部分中的形状的顶点的坐标之后,用所述GPU确定所述第一部分的第二子部分的第一形状集合的顶点的坐标,其中所述第二子部分的所述第一形状集合中的每一形状包括在所述第二子部分的第一边缘上的至少一个顶点;
在确定所述第二子部分的所述第一形状集合的顶点的坐标之后,用所述GPU确定所述第二子部分的第二形状集合的顶点的坐标,
其中所述第二子部分的所述第二形状集合中没有形状包括在所述第二子部分的所述第一边缘上的顶点;
基于所确定所述第一子部分的所述第一形状集合的顶点的坐标、所确定的所述第一子部分的所述第二形状集合的顶点的坐标、所确定的所述第二子部分的所述第一形状集合的顶点的坐标以及所确定的所述第二子部分的所述第二形状集合的顶点的坐标,用所述GPU将基元添加到贴片;
用所述GPU对所述贴片的所述基元执行图形处理以产生待显示的像素的像素值;以及
用所述GPU输出所述像素值。
10.根据权利要求9所述的方法,其中所述域为三角域,且其中将所述域划分成三个部分。
11.根据权利要求9所述的方法,其中所述域为四域,且其中将所述域划分成四个部分。
12.根据权利要求9所述的方法,其中所述第一部分的所述第一边缘存在于所述域的两个边界之间,其中所述两个边界中的一者包含所述第一子部分的所述第一形状集合中的包含在所述域的所述边界上的所述至少一个顶点的所述至少一个形状的所述边界。
13.根据权利要求9所述的方法,其中所述第一部分包括至少四个边缘,且其中所述至少四个边缘的第一边缘及第二边缘存在于所述域的边界内,且其中所述四个边缘的第三边缘及第四边缘各自存在于所述域的边界上。
14.根据权利要求9所述的方法,其中在所述域包含具有奇数侧长度的侧时,所述域偏离所述侧的中心轴而***。
15.根据权利要求9所述的方法,其中将所述域划分成多个部分进一步包括将所述域划分成具有相对于所述第一部分的不均匀曲面细分因子的至少一个部分,及与确定所述第一部分中的顶点的坐标分离地确定在具有所述不均匀曲面细分因子的所述部分内存在的顶点的坐标。
16.根据权利要求15所述的方法,其中具有相对于所述第一部分的不均匀曲面细分因子的所述至少一个部分沿着所述域的边界存在。
17.一种图形处理单元GPU,所述GPU包括:
电路,其包含用于对域进行曲面划分的曲面细分单元,所述曲面细分单元包括:
用于将所述域划分成包含第一部分的多个部分的装置;
用于基于所述第一部分中的形状的数目及重用缓冲器的大小至少将所述第一部分划分成多个子部分,以使得对所述子部分的第一子部分内的多个形状的坐标的存储不会溢出所述重用缓冲器的装置;用于确定在所述第一子部分内存在的第一形状集合的顶点的坐标的装置,其中所述第一形状集合中的每一形状包含在所述第一部分的第一边缘上的至少一个顶点,其中所述第一形状集合中的至少一个形状包含在所述域的边界上的至少一个顶点,且其中所述第一部分的所述第一边缘不是所述域的所述边界之一;
用于在确定所述第一形状集合的所述顶点的坐标之后确定在所述第一子部分内存在的第二形状集合的顶点的坐标的装置,
其中所述第一形状集合中被最后确定坐标的形状与第二形状集合中被首先确定坐标的形状不共享顶点,
其中所述第二形状集合中的每一形状与所述第一形状集合中的至少一个形状共享至少一个顶点,且所述第二形状集合中的至少一个形状包含在所述域的与所述第一形状集合中的所述至少一个形状相同的边界上的至少一个顶点;且
其中所述第二形状集合中并无所述形状包含在所述第一部分的所述第一边缘上的顶点;
用于在确定在所述第一子部分中的形状的顶点的坐标之后,确定所述第一部分的第二子部分的第一形状集合的顶点的坐标的装置,其中所述第二子部分的所述第一形状集合中的每一形状包括在所述第二子部分的第一边缘上的至少一个顶点;
用于在确定所述第二子部分的所述第一形状集合的所述顶点的坐标之后,确定所述第二子部分的第二形状集合的顶点的坐标的装置,其中所述第二子部分的所述第二形状集合中没有形状包括在所述第二子部分的所述第一边缘上的顶点;以及
用于输出所确定的所述第一子部分的所述第一形状集合的坐标、所确定的所述第一子部分的所述第二形状集合的坐标、所确定的所述第二子部分的所述第一形状集合的坐标以及所确定的所述第二子部分的所述第二形状集合的坐标,以用于图形处理的装置。
18.根据权利要求17所述的图形处理单元GPU,其中所述域为三角域,且其中将所述域划分成三个部分。
19.根据权利要求17所述的图形处理单元GPU,其中所述域为四域,且其中将所述域划分成四个部分。
20.根据权利要求17所述的图形处理单元GPU,其中所述第一部分的所述第一边缘存在于所述域的两个边界之间,其中所述两个边界中的一者包含所述第一子部分的所述第一形状集合中的包含在所述域的所述边界上的所述至少一个顶点的所述至少一个形状的所述边界。
21.根据权利要求17所述的图形处理单元GPU,其中所述第一部分包括至少四个边缘,且其中所述至少四个边缘的第一边缘及第二边缘存在于所述域的边界内,且其中所述四个边缘的第三边缘及第四边缘各自存在于所述域的边界上。
22.根据权利要求17所述的图形处理单元GPU,其中在所述域包含具有奇数侧长度的侧时,所述域偏离所述侧的中心轴而***。
23.根据权利要求17所述的图形处理单元GPU,其中将所述域划分成多个部分进一步包括将所述域划分成具有相对于所述第一部分的不均匀曲面细分因子的至少一个部分,且其中所述曲面细分单元经进一步配置以与确定所述第一部分中的顶点的坐标分离地确定在具有所述不均匀曲面细分因子的所述部分内存在的顶点的坐标。
24.根据权利要求23所述的图形处理单元GPU,其中具有相对于所述第一部分的不均匀曲面细分因子的所述至少一个部分沿着所述域的边界存在。
25.一种包括指令的非暂时性计算机可读媒体,所述指令在执行时致使可编程处理器执行以下步骤:
将域划分成包含第一部分的多个部分;
基于所述第一部分中的形状的数目及重用缓冲器的大小至少将所述第一部分划分成多个子部分,以使得对所述子部分的第一子部分内的多个形状的坐标的存储不会溢出所述重用缓冲器;
确定在所述第一子部分内存在的第一形状集合的顶点的坐标,其中所述第一形状集合中的每一形状包含在所述第一部分的第一边缘上的至少一个顶点,其中所述第一形状集合中的至少一个形状包含在所述域的边界上的至少一个顶点,且其中所述第一部分的所述第一边缘不是所述域的所述边界之一;及
在确定所述第一形状集合的所述顶点的坐标之后,确定在所述第一子部分内存在的第二形状集合的顶点的坐标,
其中所述第一形状集合中被最后确定坐标的形状与所述第二形状集合中被首先确定坐标的形状不共享顶点,其中所述第二形状集合中的每一形状与所述第一形状集合中的至少一个形状共享至少一个顶点,且所述第二形状集合中的至少一个形状包含在所述域的与所述第一形状集合中的所述至少一个形状相同的边界上的至少一个顶点;且
其中所述第二形状集合中并无所述形状包含在所述第一部分的所述第一边缘上的顶点;
在确定在所述第一子部分中的形状的顶点的坐标之后,确定所述第一部分的第二子部分的第一形状集合的顶点的坐标,其中所述第二子部分的所述第一形状集合中的每一形状包括在所述第二子部分的第一边缘上的至少一个顶点;
在确定所述第二子部分的所述第一形状集合的所述顶点的坐标之后,确定所述第二子部分的第二形状集合的顶点的坐标,
其中所述第二子部分的所述第二形状集合中没有形状包括在所述第二子部分的所述第一边缘上的顶点;以及
输出所确定的所述第一子部分的所述第一形状集合的坐标、所确定的所述第一子部分的所述第二形状集合的坐标、所确定的所述第二子部分的第一形状集合的坐标以及所确定的所述第二子部分的所述第二形状集合的坐标,以用于图形处理。
26.根据权利要求25所述的计算机可读媒体,其中所述域为三角域,且其中将所述域划分成三个部分。
27.根据权利要求25所述的计算机可读媒体,其中所述域为四域,且其中将所述域划分成四个部分。
28.根据权利要求25所述的计算机可读媒体,其中所述第一部分的所述第一边缘存在于所述域的两个边界之间,其中所述两个边界中的一者包含所述第一子部分的所述第一形状集合中的包含在所述域的所述边界上的所述至少一个顶点的所述至少一个形状的所述边界。
29.根据权利要求25所述的计算机可读媒体,其中所述第一部分包括至少四个边缘,且其中所述至少四个边缘的第一边缘及第二边缘存在于所述域的边界内,且其中所述四个边缘的第三边缘及第四边缘各自存在于所述域的边界上。
30.根据权利要求25所述的计算机可读媒体,其中在所述域包含具有奇数侧长度的侧时,所述域偏离所述侧的中心轴而***。
31.根据权利要求25所述的计算机可读媒体,其中致使所述处理器将所述域划分成多个部分的所述指令进一步包括致使所述处理器将所述域划分成具有相对于所述第一部分的不均匀曲面细分因子的至少一个部分,及与确定所述第一部分中的顶点的坐标分离地确定在具有所述不均匀曲面细分因子的所述部分内存在的顶点的坐标的指令。
32.根据权利要求31所述的计算机可读媒体,其中具有相对于所述第一部分的不均匀曲面细分因子的所述至少一个部分沿着所述域的边界存在。
33.一种用于对域进行曲面细分的装置,其包括:
中央处理单元CPU;以及
图形处理单元GPU,其经配置以接收指示域的信息,所述GPU包含:
用于对所述域进行曲面细分的曲面细分单元,所述曲面细分单元经配置以:
将所述域划分成包含第一部分的多个部分;
基于所述第一部分中的形状的数目及重用缓冲器的大小至少将所述第一部分划分成多个子部分,以使得对所述子部分的第一子部分内的多个形状的坐标的存储不会溢出所述重用缓冲器;
确定在所述第一子部分内存在的第一形状集合的顶点的坐标,其中所述第一形状集合中的每一形状包含在所述第一部分的第一边缘上的至少一个顶点,其中所述第一形状集合中的至少一个形状包含在所述域的边界上的至少一个顶点,且其中所述第一部分的所述第一边缘不是所述域的所述边界之一;及
在确定所述第一形状集合的所述顶点的坐标之后,确定在所述第一子部分内存在的第二形状集合的顶点的坐标,
其中所述第一形状集合中的由所述曲面细分单元最后确定坐标的形状与第二形状集合中的由所述曲面细分单元首先确定坐标的形状不共享顶点,其中所述第二形状集合中的每一形状与所述第一形状集合中的至少一个形状共享至少一个顶点,且所述第二形状集合中的至少一个形状包含在所述域的与所述第一形状集合中的所述至少一个形状相同的边界上的至少一个顶点;且
其中所述第二形状集合中并无所述形状包含在所述第一部分的所述第一边缘上的顶点;
在确定在所述第一子部分中的形状的顶点的坐标之后,确定所述第一部分的第二子部分的第一形状集合的顶点的坐标,其中所述第二子部分的所述第一形状集合中的每一形状包括在所述第二子部分的第一边缘上的至少一个顶点;
在确定所述第二子部分的所述第一形状集合的所述顶点的坐标之后,确定所述第二子部分的第二形状集合的顶点的坐标,
其中所述第二子部分的所述第二形状集合中没有形状包括在所述第二子部分的所述第一边缘上的顶点;以及
输出所确定的所述第一子部分的所述第一形状集合的坐标、所确定的所述第一子部分的所述第二形状集合的坐标、所确定的所述第二子部分的所述第一形状集合的坐标以及所确定的所述第二子部分的所述第二形状集合的坐标,以用于图形处理。
34.根据权利要求33所述的装置,其中所述域为三角域,且其中将所述域划分成三个部分。
35.根据权利要求33所述的装置,其中所述域为四域,且其中将所述域划分成四个部分。
36.根据权利要求33所述的装置,其中所述第一部分的所述第一边缘存在于所述域的两个边界之间,其中所述两个边界中的一者包含所述第一子部分的所述第一形状集合中的包含在所述域的所述边界上的所述至少一个顶点的所述至少一个形状的所述边界。
37.根据权利要求33所述的装置,其中所述第一部分包括至少四个边缘,且其中所述至少四个边缘的第一边缘及第二边缘存在于所述域的边界内,且其中所述四个边缘的第三边缘及第四边缘各自存在于所述域的边界上。
38.根据权利要求33所述的装置,其中在所述域包含具有奇数侧长度的侧时,所述域偏离所述侧的中心轴而***。
39.根据权利要求33所述的装置,其中为了划分所述域,所述曲面细分单元经配置以将所述域划分成具有相对于所述第一部分的不均匀曲面细分因子的至少一个部分,且其中所述曲面细分单元经进一步配置以与确定所述第一部分中的顶点的坐标分离地确定在具有所述不均匀曲面细分因子的所述部分内存在的顶点的坐标。
40.根据权利要求39所述的装置,其中具有相对于所述第一部分的不均匀曲面细分因子的所述至少一个部分沿着所述域的边界存在。
41.根据权利要求33所述的装置,其进一步包括:
域着色器,其耦合到所述曲面细分单元且经配置以将所述域中的形状的所述顶点的坐标转换成贴片的顶点的坐标;
顶点重用缓冲器,其耦合到所述域着色器且经配置以存储来自所述域着色器的所述贴片的所述顶点的所述坐标;
在所述重用缓冲器内的控制器,所述控制器包含经配置以确定所述顶点重用缓冲器何时存储由所述曲面细分单元所需要的顶点的坐标的重用逻辑控制;及
其中所述曲面细分单元经进一步配置以在所述控制器指示所述顶点重用缓冲器不存储由所述曲面细分单元所需要的顶点的坐标时调用所述域着色器,且在所述控制器指示所述顶点重用缓冲器存储由所述曲面细分单元所需要的顶点的坐标时从所述顶点重用缓冲器读取所述坐标。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/659,675 US9305397B2 (en) | 2012-10-24 | 2012-10-24 | Vertex order in a tessellation unit |
US13/659,675 | 2012-10-24 | ||
PCT/US2013/061448 WO2014065978A2 (en) | 2012-10-24 | 2013-09-24 | Vertex order in a tessellation unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104737208A CN104737208A (zh) | 2015-06-24 |
CN104737208B true CN104737208B (zh) | 2017-09-22 |
Family
ID=49510491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380055201.5A Expired - Fee Related CN104737208B (zh) | 2012-10-24 | 2013-09-24 | 曲面细分单元中的顶点次序 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9305397B2 (zh) |
EP (1) | EP2912635A2 (zh) |
JP (1) | JP6017698B2 (zh) |
CN (1) | CN104737208B (zh) |
WO (1) | WO2014065978A2 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9111360B2 (en) * | 2013-03-14 | 2015-08-18 | Nvidia Corporation | Technique for improving the performance of a tessellation pipeline |
US9659399B2 (en) * | 2013-08-23 | 2017-05-23 | Nvidia Corporation | System, method, and computer program product for passing attribute structures between shader stages in a graphics pipeline |
KR101555426B1 (ko) * | 2014-02-07 | 2015-09-25 | 고려대학교 산학협력단 | 지형 렌더링 방법 및 장치 |
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
US20160093102A1 (en) * | 2014-09-25 | 2016-03-31 | Peter L. Doyle | Efficient tessellation cache |
GB2552260B (en) * | 2015-06-05 | 2019-04-10 | Imagination Tech Ltd | Tessellation method |
US10726619B2 (en) * | 2015-10-29 | 2020-07-28 | Sony Interactive Entertainment Inc. | Foveated geometry tessellation |
US20170140570A1 (en) * | 2015-11-13 | 2017-05-18 | Intel Corporation | Facilitating efficeint centralized rendering of viewpoint-agnostic graphics workloads at computing devices |
US10242496B2 (en) * | 2017-04-24 | 2019-03-26 | Intel Corporation | Adaptive sub-patches system, apparatus and method |
US10580209B2 (en) * | 2018-03-06 | 2020-03-03 | Qualcomm Incorporated | Removal of degenerated sub-primitives in tessellation |
GB2572617B (en) | 2018-04-05 | 2021-06-16 | Imagination Tech Ltd | Blending hardware |
GB2579113B (en) | 2019-05-31 | 2021-04-21 | Imagination Tech Ltd | Rendering optimisation |
US11010862B1 (en) * | 2019-11-14 | 2021-05-18 | Advanced Micro Devices, Inc. | Reduced bandwidth tessellation factors |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4930092A (en) * | 1987-01-20 | 1990-05-29 | Auto-Trol Technology Corporation | Polygon display apparatus and method |
CN101894358A (zh) * | 2009-04-29 | 2010-11-24 | 英特尔公司 | 图像形成技术 |
GB2488907A (en) * | 2011-03-09 | 2012-09-12 | Imagination Tech Ltd | Compressing a list of primitives from a tessellated patch of surface data |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6597356B1 (en) | 2000-08-31 | 2003-07-22 | Nvidia Corporation | Integrated tessellator in a graphics processing unit |
US6664960B2 (en) * | 2001-05-10 | 2003-12-16 | Ati Technologies Inc. | Apparatus for processing non-planar video graphics primitives and associated method of operation |
JP2003233823A (ja) * | 2002-02-06 | 2003-08-22 | Shinnichi Electronics Kk | スロットマシーン又はパチスロ機の画像表示装置、スロットマシーン又はパチスロ機の画像表示装置に於ける画像表示方法及び画像表示プログラム |
GB2388507B (en) * | 2002-05-10 | 2005-11-09 | Imagination Tech Ltd | An interface and method of interfacing between a parametric modelling unit and a polygon based rendering system. |
US6940505B1 (en) | 2002-05-20 | 2005-09-06 | Matrox Electronic Systems Ltd. | Dynamic tessellation of a base mesh |
US7209137B2 (en) | 2002-09-12 | 2007-04-24 | International Business Machines Corporation | Efficient triangular shaped meshes |
US8169437B1 (en) | 2008-07-09 | 2012-05-01 | Nvidia Corporation | Distributed tessellation topology generator |
US20100164954A1 (en) * | 2008-12-31 | 2010-07-01 | Sathe Rahul P | Tessellator Whose Tessellation Time Grows Linearly with the Amount of Tessellation |
US8884957B2 (en) * | 2009-09-09 | 2014-11-11 | Advanced Micro Devices, Inc. | Tessellation engine and applications thereof |
US8537158B2 (en) * | 2009-12-02 | 2013-09-17 | Microsoft Corporation | Parallel triangle tessellation |
US20110310102A1 (en) | 2010-06-17 | 2011-12-22 | Via Technologies, Inc. | Systems and methods for subdividing and storing vertex data |
US8854374B2 (en) | 2011-12-23 | 2014-10-07 | Advanced Micro Devices, Inc. | Tessellation patterns |
-
2012
- 2012-10-24 US US13/659,675 patent/US9305397B2/en not_active Expired - Fee Related
-
2013
- 2013-09-24 CN CN201380055201.5A patent/CN104737208B/zh not_active Expired - Fee Related
- 2013-09-24 EP EP13783712.6A patent/EP2912635A2/en not_active Ceased
- 2013-09-24 WO PCT/US2013/061448 patent/WO2014065978A2/en active Application Filing
- 2013-09-24 JP JP2015539607A patent/JP6017698B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4930092A (en) * | 1987-01-20 | 1990-05-29 | Auto-Trol Technology Corporation | Polygon display apparatus and method |
CN101894358A (zh) * | 2009-04-29 | 2010-11-24 | 英特尔公司 | 图像形成技术 |
GB2488907A (en) * | 2011-03-09 | 2012-09-12 | Imagination Tech Ltd | Compressing a list of primitives from a tessellated patch of surface data |
Also Published As
Publication number | Publication date |
---|---|
US9305397B2 (en) | 2016-04-05 |
WO2014065978A3 (en) | 2014-09-04 |
JP2015536500A (ja) | 2015-12-21 |
US20140111513A1 (en) | 2014-04-24 |
EP2912635A2 (en) | 2015-09-02 |
JP6017698B2 (ja) | 2016-11-02 |
CN104737208A (zh) | 2015-06-24 |
WO2014065978A2 (en) | 2014-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104737208B (zh) | 曲面细分单元中的顶点次序 | |
US10242481B2 (en) | Visibility-based state updates in graphical processing units | |
EP2946364B1 (en) | Rendering graphics data using visibility information | |
US9569811B2 (en) | Rendering graphics to overlapping bins | |
CN104584083B (zh) | 通过对称边缘***进行表面曲面细分 | |
US8570322B2 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
US7561156B2 (en) | Adaptive quadtree-based scalable surface rendering | |
US9754405B1 (en) | System, method and computer-readable medium for organizing and rendering 3D voxel models in a tree structure | |
US20100164955A1 (en) | Image forming techniques | |
JP6400601B2 (ja) | テッセレーションのためのドメイン座標の出力順序付け | |
CN104584082B (zh) | 在图形处理中的基元的缝合 | |
US20100141666A1 (en) | Method and Apparatus for Spatial Binning on a GPU and Global Path Planning to Avoid Spatially Binned Objects | |
US8854374B2 (en) | Tessellation patterns | |
GB2542131B (en) | Graphics processing method and system for processing sub-primitives | |
CN114820906B (zh) | 图像渲染方法、装置、电子设备及存储介质 | |
US20140204080A1 (en) | Indexed streamout buffers for graphics processing | |
GB2542133A (en) | Graphics processing method and system for processing sub-primitives | |
US9082204B2 (en) | Storage structures for stitching primitives in graphics processing | |
CN102667850A (zh) | 图像处理技术 | |
CN105122310A (zh) | 用于基于瓦片的渲染的帧内时戳 | |
US20090295798A1 (en) | System, method, and computer program product for a tessellation engine using a geometry shader | |
US9196079B2 (en) | Accelerated compute tessellation by compact topological data structure | |
CN105301652A (zh) | 一种三维地震数据固定轴向切片动态判断体绘制方法 | |
Kuth et al. | Edge‐Friend: Fast and Deterministic Catmull‐Clark Subdivision Surfaces | |
CN117765204A (zh) | 曲面细分方法、装置和图形处理单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170922 Termination date: 20210924 |
|
CF01 | Termination of patent right due to non-payment of annual fee |