CN104956402B - 用于曲面细分的域坐标的输出排序 - Google Patents
用于曲面细分的域坐标的输出排序 Download PDFInfo
- Publication number
- CN104956402B CN104956402B CN201380071623.1A CN201380071623A CN104956402B CN 104956402 B CN104956402 B CN 104956402B CN 201380071623 A CN201380071623 A CN 201380071623A CN 104956402 B CN104956402 B CN 104956402B
- Authority
- CN
- China
- Prior art keywords
- domain
- diagonal bars
- primitive
- bars band
- band
- 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
-
- 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
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
本发明描述用于曲面细分的系统和方法。为进行曲面细分,曲面细分单元可将域划分成多个部分,且至少一个部分为相邻部分。所述曲面细分单元可输出沿着在所述相邻部分内的对角线条带的基元的域坐标以增大对应于所述域坐标的分片坐标存储在重用缓冲器中的可能性。
Description
技术领域
本发明涉及用于图形处理的技术,且更具体来说,涉及图形处理中的曲面细分。
背景技术
图形处理单元(GPU)可实施包含曲面细分级的图形处理管线。曲面细分级将表面转换成GPU上的多个基元,从而导致更详细的表面。举例来说,GPU可接收用于粗糙表面的信息,和产生高分辨率表面,而非接收用于高分辨率表面的信息。接收用于高分辨率表面而非粗糙表面的信息可为带宽效率低下的,因为定义高分辨率表面所需要的信息量可比定义粗糙表面所需要的信息量大得多。
发明内容
一般来说,本发明中描述的技术是针对曲面细分单元输出在域内于曲面细分期间产生的基元的域坐标的顺序。例如,曲面细分单元可将域划分成多个部分,且所述部分中的至少一者可为相邻部分。曲面细分单元可输出按对角线条带排列的基元的域坐标,其中对角线条带驻留在相邻部分内。
在一个实例中,本发明描述一种用于曲面细分的方法。所述方法包含用曲面细分单元将域划分成多个部分。在此实例中,所述部分中的至少一者为相邻部分。所述方法还包含用所述曲面细分单元输出在处于所述相邻部分内的第一对角线条带内的基元的域坐标,和用所述曲面细分单元输出在处于所述相邻部分内的第二对角线条带内的基元的域坐标。在此实例中,所述第二对角线条带呈以下中的一者:与所述第一对角线条带平行,或与所述第一对角线条带相切。所述方法还包含用所述曲面细分单元输出在处于所述相邻部分内的第三对角线条带内的基元的域坐标。在此实例中,所述第三对角线条带与至少所述第一对角线条带平行。并且,在此实例中,在所述第三对角线条带内的基元的一数目不同于在所述第一对角线条带和所述第二对角线条带内的基元的一数目。
在一个实例中,本发明描述一种装置,其包含包括曲面细分单元的图形处理单元(GPU)。所述曲面细分单元经配置以将域划分成多个部分。在此实例中,所述部分中的至少一者为相邻部分。所述曲面细分单元还经配置以输出在处于所述相邻部分内的第一对角线条带内的基元的域坐标,和输出在处于所述相邻部分内的第二对角线条带内的基元的域坐标。在此实例中,所述第二对角线条带呈以下中的一者:与所述第一对角线条带平行,或与所述第一对角线条带相切。所述曲面细分单元还经配置以输出在处于所述相邻部分内的第三对角线条带内的基元的域坐标。在此实例中,所述第三对角线条带与至少所述第一对角线条带平行。并且,在此实例中,在所述第三对角线条带内的基元的一数目不同于在所述第一对角线条带和所述第二对角线条带内的基元的一数目。所述装置还包含重用缓冲器,其经配置以存储对应于在所述第一、第二和第三对角线条带内的基元的所述输出的域坐标中的一或多者的分片坐标。
在一个实例中,本发明描述一种装置,其包括图形处理单元(GPU)。所述GPU包含用于将域划分成多个部分的装置。在此实例中,所述部分中的至少一者为相邻部分。所述GPU还包含用于输出在处于所述相邻部分内的第一对角线条带内的基元的域坐标的装置,和用于输出在处于所述相邻部分内的第二对角线条带内的基元的域坐标的装置。在此实例中,所述第二对角线条带呈以下中的一者:与所述第一对角线条带平行,或与所述第一对角线条带相切。所述GPU还包含用于输出在处于所述相邻部分内的第三对角线条带内的基元的域坐标的装置。在此实例中,所述第三对角线条带与至少所述第一对角线条带平行。并且,在此实例中,在所述第三对角线条带内的基元的一数目不同于在所述第一对角线条带和所述第二对角线条带内的基元的一数目。
在一个实例中,本发明描述一种计算机可读存储媒体,其包括存储于其上的指令,所述指令当经执行时使一或多个处理器将域划分成多个部分。在此实例中,所述部分中的至少一者为相邻部分。所述指令还使所述一或多个处理器输出在处于所述相邻部分内的第一对角线条带内的基元的域坐标,和输出在处于所述相邻部分内的第二对角线条带内的基元的域坐标。在此实例中,所述第二对角线条带呈以下中的一者:与所述第一对角线条带平行,或与所述第一对角线条带相切。所述指令还使所述一或多个处理器输出在处于所述相邻部分内的第三对角线条带内的基元的域坐标。在此实例中,所述第三对角线条带与至少所述第一对角线条带平行。并且,在此实例中,在所述第三对角线条带内的基元的一数目不同于在所述第一对角线条带和所述第二对角线条带内的基元的一数目。
一或多个实例的细节陈述于随附图式和以下描述中。其它特征、目标和优势将从所述描述和图式以及从权利要求书显而易见。
附图说明
图1为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的实例的图形处理单元(GPU)的实例的概念图。
图2为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的另一实例的GPU的另一实例的概念图。
图3为说明输出用于曲面细分的顶点的域坐标的实例技术的图。
图4为说明输出用于曲面细分的顶点的域坐标的另一实例技术的图。
图5为说明输出用于曲面细分的顶点的域坐标的另一实例技术的图。
图6为进一步详细说明根据本发明中所描述的一或多个实例的GPU的框图。
图7为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的实例技术的图。
图8为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。
图9为说明根据本发明中所描述的一或多个实例的连接性产生器输出的域的相邻部分的实例的图。
图10为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。
图11为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。
图12为说明根据本发明中所描述的一或多个实例的连接性产生器输出的域的相邻部分的另一实例的图。
图13为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。
图14A和14B为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的实例技术的图。
图15A和15B为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的实例技术的图。
图16A和16B为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的实例技术的图。
图17为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。
图18为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。
图19为说明根据本发明所描述的一或多个实例的实例操作的流程图。
图20为说明根据本发明中所描述的一或多个实例技术的实例操作的另一流程图。
图21到27为说明通过实施本发明中描述的一或多个实例技术和实施一或多个其它技术达成的结果的比较的曲线图。
图28为说明包括如在图1和2中所展示的GPU的装置的框图。
具体实施方式
例如膝上型计算机、平板计算机、智能电话和数字媒体播放器和现代移动装置包含CPU(中央处理单元)、图形处理单元(GPU)和系统存储器。在作为执行应用程序的部分呈现图形时,CPU将指令和图形数据传输到GPU。在一些实例中,图形数据可呈顶点的形式,所述顶点可包括一或多个数据结构,所述数据结构描述2D或3D空间中的点。
在CPU上执行的应用程序可根据应用程序编程接口(API)与GPU通信。举例来说,应用程序可根据由开发的API或由科纳斯组织(Khronos Group)开发的API(作为两个实例)与GPU通信。为了说明和理解的目的,大体在DirectX和OpenGL API的情况下来描述本发明中描述的技术。然而,本发明的各方面不应被视为限于DirectX和OpenGL API,且本发明中描述的技术也可扩展到其它API。
DirectX和OpenGL各定义将由GPU实施的图形处理管线。这些图形处理管线可包含可编程级以及固定功能级的组合。例如Direct3D 11 API和OpenGL 4.x API的API的一些最近版本包含将由GPU执行的曲面细分过程。
曲面细分过程指将对象的表面的一部分(被称作分片)划分成多个较小部分,且将较小部分互连在一起。与曲面细分前的表面相比,此导致更高度详细表面。曲面细分允许在CPU上执行的应用程序按低分辨率定义表面,这可需要极少的点,且允许GPU产生较高分辨率表面。
为了实施曲面细分,GPU可包含曲面细分单元,其可为固定功能单元,但本发明的各方面不需要曲面细分单元为固定功能单元。曲面细分单元的实例包含曲面细分级(在DirectX管线中)和基元产生器(在OpenGL 4.x管线中)。曲面细分单元可经配置以在域内构建基元。不应将此域与分片混淆。分片为将呈现的对象的表面的一部分。可将域视为曲面细分单元构建基元所在的模板,且域与分片分开。曲面细分单元可定义在域坐标内的基元的顶点。域坐标是基于在曲面细分单元本地且由曲面细分单元用以定义域内的点的坐标系统。
域着色器(在DirectX管线中)或曲面细分评估着色器(在OpenGL 4.x管线中)可从曲面细分单元接收域坐标且将域坐标变换到修补坐标。分片坐标是基于由GPU用于定义分片内的点的坐标系统。可将域着色器或曲面细分评估着色器视为将在域内的基元的顶点的域坐标映射到分片内的点(例如,分片内的基元的顶点),且互连分片内的这些映射点以对分片添加分辨率(例如,添加分片内的基元以对分片添加分辨率)。
在一些实例中,曲面细分单元可将用于基元的每一顶点的域坐标输出到重用缓冲器,重用缓冲器有时被称作后变换顶点高速缓冲存储器(PTVC)。控制器可确定重用缓冲器是否存储用于由曲面细分单元输出的域坐标的分片坐标。如果控制器确定重用缓冲器不存储用于由曲面细分单元输出的域坐标的分片坐标,那么控制器可使域着色器或曲面细分评估着色器的实例执行以将域内的基元的顶点的域坐标变换成用于将添加到分片内的基元的顶点的分片坐标。控制器可接着将分片坐标存储在重用缓冲器中。然而,如果控制器确定重用缓冲器已存储用于由曲面细分单元输出的域坐标的分片坐标,那么控制器可不使域着色器或曲面细分评估着色器的实例执行。
一般来说,域着色器或曲面细分评估着色器的执行可需要大量处理时间,这可使曲面细分过程放慢。本发明中描述的技术涉及曲面细分单元可输出域内的基元的顶点以增大重用缓冲器已存储用于由曲面细分单元输出的基元的顶点的域坐标的分片坐标的可能性的顺序。与其它技术相比,此可潜在地导致域着色器或曲面细分评估着色器的执行的较少情况,这又可导致曲面细分过程的较快完成。
在本发明中描述的技术中,曲面细分单元可按特定顺序输出域中的基元的顶点。如更详细地描述,曲面细分单元可输出在域的一部分内的基元的顶点。例如,曲面细分单元可将域划分成多个部分。所述部分中的至少一者可涵盖域内的相邻区域,且可被称作相邻部分。如更详细地描述,域的相邻部分可意为在所述部分内不存在不包括域内的基元的间隙。
如更详细地描述,曲面细分单元可输出基元的顶点,其中将基元按一或多个对角线条带排列于相邻部分内。举例来说,曲面细分单元可输出驻留在第一对角线条带内的基元的顶点,其中第一对角线条带驻留在相邻部分内。
在输出驻留于第一对角线条带内的基元的顶点后,曲面细分单元可输出驻留在第二对角线条带内的基元的顶点,其中第二对角线条带驻留在相邻部分内。在一些实例中,第二对角线条带可与第一对角线条带平行。在其它实例中,第二对角线条带可与第一对角线条带相切。
在输出驻留在第二对角线条带内的基元的顶点后,曲面细分单元可接着输出驻留在第三对角线条带内的基元的顶点,等等。第三对角线条带可与第一对角线条带平行。曲面细分单元可输出对角线条带内的基元,直到曲面细分单元完成输出在域的部分中的一者内的基元。曲面细分单元可以实质上类似方式输出在域中的另一部分内的基元。
图1为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的实例的图形处理单元(GPU)的实例的概念图。图1说明包含图形处理单元(GPU)12、系统存储器14和中央处理单元(CPU)16的装置10。装置10的实例包含(但不限于)移动无线装置(例如,无线电话)、包含视频显示器的视频游戏控制台、移动视频会议单元、膝上型计算机、桌上型计算机、平板计算机、电视机顶盒和类似者。
CPU 16可执行各种类型的应用程序。应用程序的实例包含网络浏览器、电子邮件应用程序、电子数据表、视频游戏或产生可视对象以供显示的其它应用程序。用于执行一或多个应用程序的指令可存储于系统存储器14内。CPU 16可将所产生的可视对象的图形数据传输到GPU 12以用于进一步处理。
例如,GPU 12可为允许大规模并行处理的专用硬件,所述硬件良好地起作用以用于处理图形数据。以此方式,CPU 16分担了优选地由GPU 12操纵的图形处理。CPU 16可根据特定应用程序处理接口(API)与GPU 12通信。此些API的实例包含的API和科纳斯组织的然而,本发明的方面不限于DirectX和OpenGL API,且可扩展到已开发、当前正在开发或将来待开发的其它类型的API。
除了定义GPU 12将从CPU 16接收图形数据的方式之外,API还可定义GPU 12将实施的特定图形处理管线。图1中的GPU 12说明由DirectX 11.x API定义的图形处理管线,例如,Direct3D 11 API。如更详细描述的,图2说明OpenGL 4.x API的图形处理管线。
CPU 16和GPU 12的实例包含(但不限于)数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路。在一些实例中,GPU 12可为包含集成和/或离散逻辑电路的专用硬件,所述电路为GPU 12提供适合于图形处理的大规模并行处理能力。在一些情况下,GPU 12还可包含通用处理,且可被称作通用GPU(GPGPU)。本发明中描述的技术也可适用于GPU 12为GPGPU的实例。
系统存储器14可包括一或多个计算机可读存储媒体。系统存储器14的实例包含(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器或可用以载运或存储呈指令和/或数据结构形式的所要程序代码且可由计算机或处理器存取的任何其它媒体。
在一些方面中,系统存储器14可包含使CPU 16和/或GPU 12执行在本发明中归于CPU 16和GPU 12的功能的指令。因此,系统存储器14可为具有存储于其上的指令的计算机可读存储媒体,所述指令当经执行时使一或多个处理器(例如,CPU 16和GPU 12)执行各种功能。
在一些实例中,系统存储器14可被视为非暂时性存储媒体。术语“非暂时性”可指示存储媒体未体现于载波或传播信号中。然而,术语“非暂时性”不应被解释为意味着系统存储器14在其内容物中不可移动或必须静止。作为一个实例,可从装置10去除系统存储器14,和将所述系统存储器移动到另一装置。作为另一实例,可将实质上类似于系统存储器14的系统存储器插入到装置10中。在某些实例中,非暂时性存储媒体可存储可随时间过去而改变(例如,在RAM中)的数据。
CPU 16上的应用程序的执行使CPU 16产生连接在一起以形成可视内容的多个基元。基元的实例包含点、线、三角形、正方形或任何其它类型的多边形。CPU 16可通过其相应的顶点来定义这些基元。例如,CPU 16可定义所述顶点的坐标和色值。坐标值可为三维(3D)坐标或2D坐标。
在一些情况下,CPU 16也可产生被称作分片的特殊类型的基元。类似于其它基元类型,分片可由被称作分片的控制点的多个顶点定义。不同于其它基元类型,分片可不为任何特定形状。例如,CPU 16可以任何方式使分片的控制点互连,以使得互连的控制点形成任何所要形状。对于例如三角形的其它基元类型,CPU 16可定义使顶点互连的特定方式(例如,使得顶点的互连产生三角形)。
并且,不同于其它基元类型,分片中的控制点的数目可为可变的。例如,执行于CPU16上的应用程序可定义对于分片允许的控制点的最大数目,或可为用户定义的控制点的最大数目。在一些实例中,分片中的控制点的数目可为一个到三十二个控制点;然而,本发明中描述的技术不限于此。
CPU 16可出于曲面细分的目的利用控制分片。如上所述,曲面细分过程指CPU 16定义低分辨率的可视对象的表面的一部分,且曲面细分所述部分以产生表面的较高分辨率版本。例如,CPU 16可定义分片的控制点以使得在互连控制点时,分片形成可视对象的表面的一部分。如果表面将仅从分片的控制点形成,那么表面可不按高分辨率出现且可出现锯齿。通过曲面细分,可将额外基元添加到分片,使得当基元经互连时,这些基元的互连对分片添加细节,这增大了分片的分辨率且导致较高质量可视内容。
GPU 12可经配置以实施曲面细分。以此方式,CPU 16可不需要定义用于需要用来产生较高分辨率分片的所有额外基元的顶点,这节省了由CPU 16执行的计算。并且,CPU 16可能需要传输极少顶点(例如,控制点的顶点,且非将添加的基元的顶点),GPU 12可对应地需要接收极少顶点,这促进了归因于对系统存储器14的极少存取的频宽效率。
为了执行图形操作,GPU 12可实施图形处理管线。图形处理管线包含执行如由在GPU 12上执行的软件或固件定义的功能,和由经硬接线以执行特定功能的固定功能单元执行功能。在GPU 12上执行的软件或固件可被称作着色器,且着色器可在GPU 12的一或多个着色器核心上执行。着色器给用户提供功能灵活性,因为用户可设计着色器按任何可设想的方式执行所要的任务。然而,固定功能单元经针对固定功能单元执行任务的方式而硬接线。因此,固定功能单元可不提供许多功能灵活性,例如,由软件或固件提供的可编程功能灵活性。
如上所指示,图1中所说明的图形处理管线为实质上如由Direct3D 11定义的图形处理管线。在此实例中,GPU 12可包含以下各者中的一或多者:输入汇编程序级18、顶点着色器级20、外壳着色器级22、曲面细分级24、域着色器级26、几何着色器级28、光栅化器级30、像素着色器级32和输出合并级34。GPU 12可包含比所说明的级多的级,且在一些实例中,GPU 12可未必包含所有所说明的级。而且,出于说明目的提供所述级的特定排序,且不应将其视为限制性的。
在本发明中描述的技术中,CPU 16可将分片的控制点输出到系统存储器14。GPU12可接着从系统存储器14检索控制点。以此方式,CPU 16可将控制点传输到GPU 12。如本发明中所使用的,CPU 16向GPU 12传输或GPU 12从CPU 16接收通常可包含CPU 16写入到系统存储器14,GPU 12从所述系统存储器读取。替代地,CPU 16直接传输到GPU 12和GPU 12直接从CPU 16接收可为可能的。
输入汇编程序级18可从系统存储器14读取如由CPU 16定义的控制点,且汇编所述控制点以形成分片。举例来说,输入汇编程序级18可读取控制点的坐标、色彩值和其它此信息。坐标、色彩值和其它此信息可通常被称作控制点的属性。基于控制点的属性,输入汇编程序级18可确定分片的大体布局。以此方式,输入汇编程序级18可汇编控制点以形成分片。输入汇编程序级18可为固定功能逻辑单元或可编程单元。
顶点着色器级20可处理来自输入汇编程序级18的顶点(例如,分片的控制点)。例如,顶点着色器级20可每顶点执行例如变换、换肤、变形和每顶点照亮的操作。顶点着色器级20可为着色器。
外壳着色器级22接收如由顶点着色器级20处理的分片的控制点,处理所述控制点,且输出用于经处理分片的控制点。换句话说,外壳着色器级22接收如由顶点着色器级20处理的输入分片,处理所述输入分片,且输出一输出分片。外壳着色器级22可执行用于处理输入分片的各种功能。例如,外壳着色器级22可修改控制点的坐标以改变控制点的位置,或可甚至添加或删除控制点。
此外,外壳着色器级22可确定指示有多少基元将被添加到由外壳着色器级22产生的分片(即,输出分片)的值。外壳着色器级22可利用各种准则来确定有多少基元将被添加到分片。下文所描述为外壳着色器级22可利用以确定有多少基元将被添加到分片的两实例准则。然而,本发明的方面不限于此,且外壳着色器级22可利用任何准则来确定有多少基元应被添加到分片。
作为一个实例,外壳着色器级22可利用指示分片的深度的信息确定应添加多少基元。举例来说,从观看者的角度看来更远离的分片可不需要高分辨率,这是因为在距离上更远的对象在现实中显得模糊。然而,从观看者的角度看来更靠近的分片可能需要较高分辨率,这是因为在距离上更靠近的对象在现实中显得更清晰。在此实例中,外壳着色器级22可确定应将极少基元添加到更远离的分片,且应将较多基元添加到相对于彼此更靠近的分片。
作为另一实例,外壳着色器级22可基于分片的大小确定应添加多少基元。对于较小大小的分片,外壳着色器级22可确定应添加极少基元,这是因为分片涵盖较小区域。对于较大大小的分片,外壳着色器级22可确定应添加较多基元,这是因为分片涵盖较大区域。
基于应添加多少基元的确定,外壳着色器级22可将域类型和指示有多少基元将被添加到贴片的值输出到曲面细分级24。在Direct3D 11 API中,指示有多少基元将被添加到贴片的值被称作曲面细分因子(tessfactor)。
域可被视为曲面细分级24针对曲面细分目的使用的模板形状。域类型的实例包含线、三角形、四边形(例如,四个边的多边形)或任何其它类型的多边形。域可为二维(2D)形状,即使分片定义三维(3D)表面或2D表面。当域为线时,域可为一维(1D)形状(即,线),即使分片定义3D表面、2D表面或1D表面。为了说明的目的,本发明中描述的技术是关于域为2D表面来描述的。举例来说,按为三角形或四边形的域形状来描述所述技术。
在一些实例中,外壳着色器级22可不明确地指示域类型。相反地,曲面细分级24可基于传输的曲面细分因子的数目确定域类型。例如,四个曲面细分因子的存在可指示域类型为三角域类型,且六个曲面细分因子的存在可指示域类型为四域类型。
在一些实例中,四域可由二维(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坐标的总和应等于一。
只是为了说明的目的来描述笛卡耳和重心坐标,且不应将其视为限制性。在其它实例中,按重心坐标或笛卡耳坐标定义四域且按笛卡耳坐标或重心坐标定义三角域可为可能的。一般来说,可使用任一坐标系统来定义任一类型的域。
曲面细分级24可将域曲面细分成多个基元(例如,在域内构建多个基元)。应理解,在此实例中,曲面细分级24未在将由外壳着色器级22输出的分片曲面细分成基元,而相反地,将域曲面细分成基元。在一些实例中,曲面细分级24可甚至不能够存取由外壳着色器级22输出的分片。曲面细分级24可为固定功能单元,但本发明的各方面不需要受如此限制。
曲面细分级24可利用由外壳着色器级22输出的曲面细分因子来将域曲面细分成多个基元。例如,除了定义域类型(例如,三角形或四边形)之外,曲面细分因子也可定义有多少环将包含在域内。
环可为域内的一系列同心形状,其中同心形状为与域形状相同的形状。例如,如果域形状为四边形,那么四边形的外围可被视为外环。外壳着色器级22可定义内环的数目,内环可为驻留在四域内的多个系列的较小大小的四边形。类似地,如果域形状为三角形,那么三角形的外围可被视为外环,且内环可为驻留在三角域内的多个系列的较小大小的三角形。
除了定义域内的环的数目之外,曲面细分因子也定义沿着环驻留的点。不应将沿着环驻留的点与控制点混淆。控制点定义分片。沿着环驻留的点为由曲面细分级24基于曲面细分因子定义的点。这些点产生于域内,且不在分片内。
并且,曲面细分级24连接在一起以在域内构建多个基元的正是这些点。例如,假定曲面细分级24将构建的基元为三角形。在此实例中,曲面细分级24可将沿着外环驻留的一个点与沿着内环驻留的两个点连接以形成三角基元。替代地,曲面细分级24可将沿着外环驻留的两个点与沿着内环驻留的一个点连接以形成三角基元。以此方式,通过定义域类型、在域内的环的数目和沿着外环与内环的点的数目,外壳着色器级22可定义曲面细分级24应在域内构建的基元的数目。
在一些实例中,可沿着环的边缘驻留的点的数目可为一个点到六十五个点。例如,如果域类型为三角形,那么三角域的每个边缘可存在多达65个点。类似地,如果域类型为四边形,那么四边形的每个边缘可存在多达65个点。然而,本发明中描述的技术不限于边缘具有最大六十五个点。
此外,沿着环驻留的点的数目可针对外环与内环不同。例如,沿着外环的边缘驻留的点的数目可多于或少于沿着内环的边缘驻留的点的数目。沿着外环与内环的边缘驻留的点的数目为相同数目个点也可为可能的。
此外,沿着同一环的边缘的点的数目可不同。例如,对于三角域,沿着边缘中的一者驻留的点的数目可不同于沿着另一边缘或两个边缘驻留的点的数目。类似地,对于四域,沿着边缘中的一者驻留的点的数目可不同于沿着一个、两个或所有三个其它其余边缘驻留的点的数目。环的边缘中的每一者具有相同数目个点也可为可能的。
如上所述,在一些实例中,曲面细分级24可不将分片划分成多个基元。因此,在一些实例中,曲面细分级24可不接收例如控制点的数目、控制点的位置或分片的大小的任何信息。在无关于分片的大小和控制点的位置的任何信息的情况下,曲面细分级24可不能够定义使用的域的大小或用于域的顶点的特定坐标。
为了解决此,曲面细分级24可依赖于经归一化的坐标系以用于定义域的顶点,以及用于确定在域内的互连点的位置。作为归一化的坐标的一个实例,曲面细分级24可以u,v坐标将四域的顶点定义为:(0,0)、(1,0)、(0,1)和(1,1),这是单位正方形。曲面细分级24可以u,v,w坐标将三角域的顶点定义为:(0,0,1)、(0,1,0)和(1,0,0),这是等边三角形。曲面细分级24可确定用于在此经归一化的坐标系中的多个基元的互连顶点的坐标。换句话说,曲面细分级24可使用本地经归一化的坐标系定义域内的基元的顶点的坐标。在本发明中,如由曲面细分级24定义的顶点的坐标可被称作域坐标,这是因为这些坐标是关于用于域的经归一化的坐标系。
在说明的图形管线中,域着色器26可接收用于经归一化的坐标系中的多个基元的顶点的域坐标(例如,如可适用的u,v坐标或u,v,w坐标)。域着色器级26的功能可为将如从曲面细分级24接收的顶点的域坐标映射到分片上。例如,虽然曲面细分级24可不接收如由外壳着色器级22定义的分片的信息,但域着色器级26可从外壳着色器级22接收这些信息。
域着色器级26可将用于基元的顶点的域坐标变换成将添加到分片的基元的顶点的分片坐标。分片坐标可为相对于由GPU 12使用的坐标系统的坐标,且定义分片中的点。例如,域中的基元的顶点的域坐标可基于用以定义2D域中的点的经归一化的坐标系。然而,可按三维来定义分片,且域着色器级26可变换顶点的域坐标以识别分片上的点。
例如,域着色器级26可从外壳着色器22接收分片的控制点的坐标。通过来自外壳着色器级22的分片的控制点的坐标,域着色器级26可确定在分片上的如由曲面细分级24输出的顶点的位置。在分片上的此识别的点可为用于将添加到分片的基元的顶点。
曲面细分级24可将用于顶点的域坐标输出到重用缓冲器(图1中未图示,且更详细地展示于图6中)。重用缓冲器可被称作后变换顶点高速缓冲存储器(PTVC)。控制器(图1中未图示,且更详细地展示于图6中)可确定重用缓冲器是否存储对应于由曲面细分单元24输出的顶点的域坐标的分片坐标。如在本发明中所使用,对应于由曲面细分单元24输出的顶点的域坐标的分片坐标指通过变换域坐标产生的分片坐标。
如果控制器确定重用缓冲器不存储对应于域坐标的分片坐标,那么控制器可执行域着色器级26的具现化。域着色器级26可接收由曲面细分级24输出的顶点的域坐标,将域坐标变换到分片坐标,且将分片坐标存储在重用缓冲器中。如果控制器确定重用缓冲器存储对应于域坐标的分片坐标,那么控制器可不执行域着色器级26的具现化。在任一情况下,控制器可接着进一步沿着图形管线输出分片坐标。
因为曲面细分级24输出由曲面细分级24产生的多个基元的顶点,且域着色器级26将这些基元添加到分片,所以外壳着色器级22、曲面细分级24与域着色器级26的组合一起将额外基元添加到分片。此导致经添加到分片的基元的网,从而如与由CPU 16定义的分片相比,创造更高分辨率、更详细的分片。以此方式,外壳着色器级22、曲面细分级24和域着色器级26实施曲面细分过程。
几何着色器级28接收由域着色器级26添加到分片的基元的顶点,且可进一步产生用于基元的额外顶点以添加甚至更多分辨率。光栅化器级30从几何着色器级28接收基元,且将基元转换成像素以用于显示。例如,基元可被定义为指示基元的互连的向量,且可定义于独立于将显示图像的显示器的坐标空间中。光栅化器级30将这些向量转换成显示器坐标,且执行任何额外功能,例如,去除经遮住的基元内的点。
像素着色器级32接收如由光栅化器级30输出的像素,且执行后处理以将色值指派给待显示的像素中的每一者。例如,像素着色器级32可接收存储在系统存储器14中的恒定值、存储在系统存储器14中的纹理数据和任何其它数据以每像素产生输出,例如,色彩值。像素着色器级32也可输出指示像素的不透明性的不透明度值。
输出合并级34可执行任何最终像素处理。例如,输出合并级34可利用深度信息进一步确定是否应去除显示像素中的任何者。输出合并级34也可执行掺合操作以产生最终像素值,其可包含亮度和色度值或红-绿-蓝(RGB)值。
输出合并级34可将最终像素值输出到通常位于系统存储器14内但可位于GPU 12内的帧缓冲器。显示处理器(未图示)可从帧缓冲器检索像素值且使装置10的显示器(未图示)的像素(例如,经由红、绿和蓝像素分量)按根据像素值的指定强度等级照亮以使显示器显示图像。
如上所述,不论何时重用缓冲器不存储用于域内的基元的顶点的对应的域坐标的分片坐标时,控制器可执行域着色器级26的具现化。一般来说,域着色器级26的执行可为处理集中型且耗时,且可能需要限制域着色器级26需要执行的次数。例如,域中的第一基元与第二基元可共享两个顶点。在此实例中,在曲面细分级24输出第一基元的顶点的域坐标后,控制器可执行域着色器级26的三次具现化(即,每个顶点一次),且将所得分片坐标存储在重用缓冲器中。接着,在曲面细分级24输出用于第二基元的顶点的域坐标后,控制器可执行域着色器级26的一次具现化。在此情况下,重用缓冲器可已存储用于在第一与第二基元之间共享的两个顶点的分片坐标。因此,控制器可需要针对第二基元的未共享顶点仅执行域着色器级26的一次具现化。
然而,归因于重用缓冲器的有限存储能力,当曲面细分级24第二次输出用于共享的顶点的域坐标时,用于在两个基元之间共享的顶点的分片坐标不再存储在重用缓冲器中可为可能的。举例来说,在先前实例中,归因于重用缓冲器的有限存储能力,当曲面细分单元24输出第二基元的顶点的域坐标时,对应于在第一与第二基元之间共享的顶点中的一或两者的域坐标的分片坐标不再存储在重用缓冲器中可为可能的。
此可导致执行域着色器级26的具现化,以用于变换先前经变换到分片坐标的域坐标。举例来说,在对应于共享的顶点的域坐标的分片坐标存储在重用缓冲器中的以上实例中,控制器可仅执行域着色器级26的一次具现化以将第二基元的未共享顶点的域坐标变换到分片坐标。然而,在对应于共享的顶点的域坐标的分片坐标未存储在重用缓冲器的以上实例中,控制器可执行域着色器级26的三次具现化以将第二基元的三个顶点的域坐标变换到分片坐标。
先前存储的分片坐标可不在重用缓冲器中可用,这是因为重用缓冲器可实施先进先出替换方案。例如,当重用缓冲器满(例如,重用缓冲器内的每一槽存储分片坐标)时,重用缓冲器可去除(即,淘汰)最早存储的分片坐标以释放出存储空间用于待存储的接下来的分片坐标。如果去除的分片坐标对应于用于一基元的与另一基元共享的顶点的域坐标,那么当曲面细分级24输出另一基元的顶点时,控制器可引起域着色器级26的另一具现化的执行以将顶点的域坐标重新变换成分片坐标。
本发明中描述的技术是针对曲面细分级24输出基元的顶点的顺序。在一些实例中,曲面细分级24可按增大共享的顶点保持存储在重用缓冲器中的可能性的此顺序来输出基元的顶点。例如,在输出第一基元的顶点后,曲面细分级24可按以下顺序输出顶点:当曲面细分级24输出随后基元的顶点时,第一基元的与这些随后基元共享的顶点在重用缓冲器内。
此外,基元的输出顺序可为使得当重用缓冲器满时,不存在具有其域坐标对应于最早存储的分片坐标的顶点的许多其余基元。举例来说,在先进先出替换方案中,当重用缓冲器满时,重用缓冲器可去除最早存储的分片坐标。这些分片坐标可对应于基元内的顶点的域坐标,其中所述顶点不与许多其它基元共享。以此方式,即使重用缓冲器去除这些分片坐标,仍可存在对域着色器级26的具现化的数目的有限影响,如以下更详细地描述。
如上所述,外壳着色器级22可定义域内的环的数目和沿着环的每一边缘驻留的点的数目。曲面细分级24又可按由外壳着色器级22定义的方式沿着环放置点。这些点形成由曲面细分级24在域中创造的基元的顶点。曲面细分级24可将这些顶点互连在一起以形成基元且输出用于这些基元的顶点的域坐标。
根据本发明中描述的技术,在输出用于基元的顶点的域坐标前,曲面细分级24可将域划分成多个部分。所述部分中的至少一者可涵盖域内的相邻区域,且可被称作相邻部分。一般来说所述部分中的每一者为相邻部分可为可能的;然而,本发明的方面不受如此限制。
相邻部分可由多个边缘界定。多个边缘形成曲面细分级24曲面细分的域内的外围,且所述部分可为外围内的域的相邻区域。在本发明中描述的技术中,相邻部分可包含域内落在相邻部分的外围内的任一基元。
举例来说,术语相邻意味着在所述部分内不存在不包括域内的基元的间隙。例如,如果域内的基元在所述部分的外围内,那么那个基元为所述部分的部分。为了进一步辅助理解相邻部分的概念,不应将相邻部分与用以构建域内的基元的环混淆。
一些其它技术输出在用以构建基元的环中的每一者内的基元。在这些实例中,不同于曲面细分级24的曲面细分级首先输出沿着外环的基元。此外环形成域中的间隙。例如,域内的中心点落在由环涵盖的域的区域内,但当输出环内的顶点的域坐标时,这些其它技术的曲面细分级不包括中心点。换句话说,这些环不应被视为相邻部分,这是因为排除在环内的区域为环的部分。
根据本发明中描述的技术,曲面细分级24可输出基元的顶点,其中将基元按一或多个对角线条带排列于相邻部分内。基元的对角线条带包含四个侧,其中四个侧中的两个平行。两个平行侧可各包含在对角线条带内的基元中的每一者的至少一个顶点。并且,在两个平行侧中的每一者上的顶点的数目可不同。
例如,假定对角线条带包含三个基元。在此实例中,对角线条带的平行侧中的第一侧可包含三个点,且对角线条带的平行侧中的第二侧可包含两个点。通过将在第一侧上的三个点与在第二侧上的两个点互连,曲面细分单元可构建对角线条带内的三个基元。在此实例中,在第一侧上的三个点可形成三个顶点,且在第二侧上的两个点可形成两个顶点。因为在对角线条带内的基元共享顶点,所以曲面细分级24可使用仅沿着对角线条带的平行侧中的第一侧驻留的三个顶点和沿着对角线条带的平行侧中的第二侧驻留的两个顶点构建三个基元。
在一些实例中,曲面细分级24可输出驻留在第一对角线条带内的基元的顶点,其中第一对角线条带驻留在相邻部分内。在输出驻留于第一对角线条带内的基元的顶点后,曲面细分级24可输出驻留在第二对角线条带内的基元的顶点,其中第二对角线条带驻留在相邻部分内。
在一些实例中,第二对角线条带可与第一对角线条带平行。在这些实例中,在第二对角线条带内的基元的数目可不同于在第一对角线条带内的基元的数目。在其它实例中,第二对角线条带可与第一对角线条带相切。在这些实例中,在第二对角线条带内的基元的数目可与在第一对角线条带内的基元的数目相同。
在输出驻留在第二对角线条带内的基元的顶点后,曲面细分级24可接着输出驻留在第三对角线条带内的基元的顶点。第三对角线条带可与第一对角线条带平行。并且,驻留在第三对角线条带内的基元的数目可不同于驻留在第一和第二对角线条带内的基元的数目。
曲面细分级24可输出对角线条带内的基元,直到曲面细分级24完成输出在域的部分中的一者内的基元。曲面细分级24可以实质上类似方式输出在域中的另一部分内的基元。
通过以上文所描述的方式输出顶点,GPU 12可执行域着色器级26的极少具现化。例如,归因于重用缓冲器的有限大小,重用缓冲器可不能够存储由曲面细分级24输出的所有顶点。举例来说,如上所述,当重用缓冲器满且域着色器级26正试图存储新变换的分片坐标时,重用缓冲器可实施先进先出替换方案。本发明中描述的技术可增大以下可能性:在域着色器级26将第一基元的顶点从域坐标变换到分片坐标后,在曲面细分级24输出在第二对角线条带内的基元的顶点的域坐标前,不将用于与第二基元共享的顶点的分片坐标淘汰出重用缓冲器,且类似地针对第三对角线条带。
如上所述,曲面细分级24可将域划分成多个部分。曲面细分级24将域划分成多个部分的方式可基于由外壳着色器级22输出的曲面细分因子和重用缓冲器中的存储槽的数目(即,重用缓冲器的存储能够)。例如,对于四域,外壳着色器级22可输出环的每一侧将划分成的区段的数目。沿着环的每一侧的区段的数目为由外壳着色器级22输出的曲面细分因子的一个实例。
四域的每一侧将划分成的区段的数目可指示在四域的每一侧上的点的数目。举例来说,如果一侧将划分成五个区段,那么曲面细分级24可确定在所述侧上存在六个点(在所述侧的各端上的各一个点,和在中间将所述侧划分成五个区段的四个点)。
对于所述四域,外壳着色器级22可输出定义垂直侧将划分成的区段的数目的用于垂直侧的曲面细分因子。此曲面细分因子可被称作fy。外壳着色器级22也可输出定义水平侧将划分成的区段的数目的用于水平侧的曲面细分因子。此曲面细分因子可被称作fx。
曲面细分级24可确定这两个曲面细分因子中的哪一者在值上较小(或可能相等)(例如,是否fx≤fy,或是否fy≤fx)。假定两者中的较小者被称作f1。并且,假定重用缓冲器中的存储槽的数目为C。在此实例中,曲面细分级24可确定f1+1是否小于或等于C-2。如果f1+1小于或等于C-2,那么曲面细分级24可将四域划分成两个部分(例如,将四域划分成对),其中两个部分中的一或两者为相邻部分。
在此实例中,曲面细分级24可输出在两个部分的第一相邻部分内的第一对角线条带、接着第一相邻部分内的第二对角线条带内的基元的顶点的域坐标。在此实例中,第二对角线条带可与第一对角线条带相切,且第一对角线条带与第二对角线条带中的基元的数目可相同。接着,曲面细分级24可输出在第一相邻部分的第三对角线条带内的基元的顶点的域坐标。第三对角线条带可与第一对角线条带平行,且第三对角线条带内的基元的数目可不同于第一和第二对角线条带内的基元的数目。
曲面细分级24可以类似方式重复输出基元的域坐标,直到曲面细分级24结束输出第一相邻部分内的基元。曲面细分级24可接着继续进行第二相邻部分,且以实质上类似方式输出在第二相邻部分内的顶点的域坐标。在f1+1小于或等于C-2的实例中,输出基元的域坐标可被称作曲面细分级24的第一操作模式。
如果曲面细分级24确定f1+1不小于或等于C-2,那么曲面细分级24可确定f1/2+1是否小于或等于C-1。如果f1/2+1小于或等于C-1,那么曲面细分级24可将四域划分成四个部分(例如,四联体),其中四个部分中的一或多者为相邻部分。
在此实例中,曲面细分级24可输出在四个部分的第一相邻部分内的第一对角线条带、接着第一相邻部分内的第二对角线条带内的基元的顶点的域坐标。在此实例中,第二对角线条带可与第一对角线条带平行,且第一对角线条带与第二对角线条带中的基元的数目可不同。接着,曲面细分级24可输出在第一相邻部分的第三对角线条带内的基元的顶点的域坐标。第三对角线条带可与第一和第二对角线条带平行,且第三对角线条带内的基元的数目可不同于第一和第二对角线条带内的基元的数目。
曲面细分级24可以类似方式重复输出基元的域坐标,直到曲面细分级24结束输出第一相邻部分内的基元。曲面细分级24可接着继续进行第二相邻部分,且以实质上类似方式输出第二相邻部分内的顶点的域坐标,接着为第三和第四部分。在f1/2+1小于或等于C-1的实例中,输出基元的域坐标可被称作曲面细分级24的第二操作模式。
如果曲面细分级24确定f1/2+1小于或等于C-1,那么曲面细分级24可将四域划分成多于四个部分。在此实例中,曲面细分级24可按第三操作模式操作。举例来说,曲面细分级24可将四域划分成五个部分。曲面细分级24可对五个部分中的四个实施第一操作模式。曲面细分级24可对第五部分实施第二操作模式。
应理解,虽然先前实例将曲面细分级24描述为确定f1+1是否小于或等于C-2,或f1/2+1是否小于或等于C-1,但本发明的方面不受如此限制。一般来说,任一组件可确定f1+1是否小于或等于C-2,或f1/2+1是否小于或等于C-1。
例如,GPU 12可对外壳着色器级22加载重用缓冲器中的槽的数目(即,C的值),且外壳着色器级22可执行以上确定,且对曲面细分级24指示将划分域的方式。作为另一实例,GPU 12的控制器可执行以上确定,且对曲面细分级24指示将划分域的方式。
以上实例描述用于四域的第一、第二或第三操作模式。曲面细分级24也可针对域为三角域的情况实施第一、第二或第三操作模式。对于三角域,并非定义fx和fy曲面细分因子,而是外壳着色器级22可定义被称作ft的一个曲面细分因子。
在此实例中,如果ft+1小于或等于C-2,那么曲面细分级24可通过将三角域划分成两个部分来实施第一操作模式。在此实例中,可将两个部分中的一者与另一部分不同地定大小。曲面细分级24可接着输出第一、第二和第三三角形中的基元的域坐标,如上针对最大大小的域所描述。对于较小大小的域,曲面细分级24可实施第二操作模式。
在此实例中,对于三角域,如果ft+1不小于或等于C-2,且ft/2+1小于或等于C-1,那么曲面细分级24实施第二操作模式。举例来说,曲面细分级24可将三角域划分成三个部分(例如,三联体),且对三个部分中的每一者实施第二操作模式。在此实例中,如果ft/2+1不小于或等于C-1,那么曲面细分级24实施第三操作模式。例如,曲面细分级24可将三角域划分成多于三个部分。曲面细分级24可对所述部分中的一些实施第二操作模式,且对其它部分中的一些实施第三操作模式。
在域为三角域的实例中,曲面细分级24可确定ft+1是否小于或等于C-2,或ft/2+1是否小于或等于C-1。然而,如上,本发明中描述的技术不受如此限制。一般来说,任一其它组件可执行这些确定,且对曲面细分级24指示将划分三角域的方式。
当存在均匀曲面细分时,以上实例技术可适用于全部域。在均匀曲面细分中,用于外环的曲面细分因子与用于内环的曲面细分因子相同。然而,在其它实例中,外壳着色器级22可定义用于最外环与内环的曲面细分因子的不同数目。例如,最外环可等效于域的外围,且如与内环中的区段的数目相比,外壳着色器级22可定义最外环上的区段的不同数目。
在此实例中,曲面细分级24可对由内环涵盖的域实施第一、第二或第三操作模式。例如,第一内环(例如,在最外环后的环)可被视为子集域,且曲面细分级24可对所述子集域实施第一、第二或第三操作模式。对于最外环(即,并非子集域的部分的域的部分)中的基元,曲面细分级24可按任何次序输出那些基元。
图2为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的另一实例的图形处理单元(GPU)的另一实例的概念图。举例来说,图1说明实质上根据DirectX11.x API(例如,Direct3D 11 API)制定的图形处理管线。图2说明实质上根据OpenGL 4.xAPI的图形处理管线。
OpenGL 4.x图形处理管线可以实质上类似方式充当Direct3D 11图形处理管线。因此,为了简洁起见,对图1进行参看以描述类似于Direct3D 11图形处理管线和OpenGL4.x图形处理管线两者的组件。
如图2的实例中所说明,GPU 12包含输入汇编程序36、顶点着色器38、曲面细分控制着色器40、基元产生器42、曲面细分评估着色器44、几何着色器46、裁剪单元48、光栅化器50、片段着色器52和后处理器54。类似于图1,在图2中所说明的实例中,GPU 12可包含比图2中所说明的组件多或少的组件。并且,出于说明的目的提供单元的特定排序,且不应将其视为限制性的。
以一些方式,具有OpenGL 4.x图形处理管线的曲面细分过程可大体类似于具有Direct3D 11图形处理管线的曲面细分过程。例如,OpenGL 4.x曲面细分过程可按类似于以上关于图1描述的方式的方式依赖于分片和控制点。举例来说,图2的输入汇编程序36和顶点着色器38可分别实质上类似地充当图1的输入汇编程序级18和顶点着色器级20。
作为针对曲面细分的更多实例,图2的曲面细分控制着色器40可实质上与图1的外壳着色器级22类似地起作用。然而,曲面细分控制着色器40输出曲面细分级数,所述曲面细分级数可类似于Direct3D 11的曲面细分因子。例如,OpenGL 4.x的曲面细分级数可定义域类型、域内的环的数目和每一环边缘的点的数目。
基元产生器42可以与曲面细分级24实质上类似的方式起作用。例如,基元产生器42可利用曲面细分级数和域类型将域划分成多个基元。并且,根据本发明中描述的技术,基元产生器42可按以上描述的方式输出基元的域坐标。例如,基元产生器42可输出基元的顶点的域坐标,其中基元驻留在对角线条带中。
类似于图1的曲面细分级24,基元产生器42可将域划分成多个部分,其中至少一个部分为相邻部分。基元产生器42可接着输出相邻部分内的基元的顶点的域坐标。例如,基元产生器42可输出驻留在第一对角线条带、接着为第二对角线条带和第三对角线条带内的基元的顶点的域坐标。此外,基元产生器42可实施以上关于曲面细分级24描述的不同实例操作模式。
图2的曲面细分评估着色器44可实质上与图1的域着色器级26类似地起作用。例如,曲面细分评估着色器44可从基元产生器42接收所产生的基元的顶点,且将基元添加到由曲面细分控制着色器40输出的分片。以此方式,OpenGL 4.x API的图形处理管线可对分片执行曲面细分以增加分片的分辨率。
几何着色器46可实质上与几何着色器级28类似地起作用。图2中的裁剪单元48与光栅化器50的组合可实质上与图1中的光栅化器级30类似地起作用。图2中的片段着色器52和后处理器54可实质上分别与图1中的像素着色器级32和输出合并级34类似地起作用。后处理器54可将最终像素值输出到帧缓冲器,且显示处理器可从帧缓冲器检索像素值,且使显示器根据像素值照亮以显示图像。
如上所述,图2的曲面细分控制着色器40、基元产生器42和曲面细分评估着色器44实质上分别与图1的外壳着色器级22、曲面细分级24和域着色器级26类似地起作用,用于实施曲面细分过程。因此,Direct3D 11和OpenGL 4.x API都依赖于两个可编程着色器单元和一个固定功能单元来实施曲面细分过程。
出于概括性的目的,本发明中描述的技术可按第一曲面细分着色器单元、曲面细分单元和第二曲面细分着色器单元来描述。第一曲面细分着色器单元的实例包含外壳着色器级22和曲面细分控制着色器40。曲面细分单元的实例包含曲面细分级24和基元产生器42。第二曲面细分着色器单元的实例包含域着色器级26和曲面细分评估着色器44。
并且,Direct3D 11使用术语“曲面细分因子”和OpenGL 4.x使用术语“曲面细分级数”,可将其考虑为相似的术语。出于概括性的目的,本发明使用术语“曲面细分因子(tessellation factor)”,其实例包含曲面细分因子(tessfactor)和曲面细分级数。以此方式,第一着色器单元可被视为将曲面细分因子输出到曲面细分单元,且曲面细分单元可响应于曲面细分因子将顶点输出到第二着色器单元。
应注意,虽然Direct3D 11和OpenGL 4.x利用两个着色器单元和一个固定功能单元,但本发明中描述的技术不受如此限制。例如,在其它系统中,第一和第二着色器单元为固定功能单元且曲面细分单元为着色器单元可为可能的。作为另一实例,所有可都为固定功能单元或所有可都为着色器单元,或其任何组合。
因此,在一些实例中,可考虑第一单元执行类似于第一着色器单元的功能,而可为着色器单元或固定功能单元,第二单元执行类似于曲面细分单元的功能,而可为着色器单元或固定功能单元,且第三单元执行类似于第二着色器单元的功能,而可为着色器单元或固定功能单元。此外,虽然第一着色器单元、曲面细分单元和第二着色器单元经说明为在图1和2中的分开单元,但本发明的方面不受如此限制。这些单元与可能图1和2中说明的图形处理管线的任一单元可在一起组合成共同单元。因此,虽然为易于描述而分开来描述这些单元的功能性,但这些单元可实施于共享硬件中或实施为截然不同的组件。
图3为说明输出用于曲面细分的顶点的域坐标的实例技术的图。图3中说明的实例可由曲面细分单元的其它实例且非曲面细分级24和基元产生器42实施。图3说明为三角域的域56,且点和基元图案沿着域56的线的中心对称。
如所说明,域56经曲面细分成多个基元(例如,三角形)。在一些其它实例中,不同于本发明的曲面细分单元的曲面细分单元以逐个环方式输出基元的顶点的域坐标,其中在此实例中的环为三角形。举例来说,图3说明环58和环60。环58为最外环且包含与域56的边界接界的基元。环60为第一内环,这是因为环60中无基元驻留在域56的边界上。
在一些其它技术中,这些其它技术的曲面细分单元输出驻留在环58内的所有基元的域坐标。接着,这些其它技术的曲面细分单元输出驻留在环60内的所有基元的域坐标。如图3中所展示,将基元中的一些编号以辅助理解。例如,这些其它技术的曲面细分单元输出基元1、接着基元2、基元3等等直到基元42的域坐标,因为这些基元都驻留在环58内。接着,这些其它技术的曲面细分单元从基元43开始输出环60中的基元的域坐标。
在图3中说明的实例中,因为基元1为域56的第一基元,所以在这些其它技术的曲面细分单元输出基元1的域坐标后,域着色器执行三次以将基元1的三个域坐标中的每一者变换成分片坐标,且将对应的分片坐标存储在重用缓冲器中。接着,在这些其它技术的曲面细分单元输出基元2的域坐标后,域着色器可仅执行一次,这是因为基元2与基元1共享两个顶点,且用于这两个顶点的分片坐标可存储在重用缓冲器中。域着色器可变换基元2的未共享顶点以将基元2的未共享顶点的域坐标变换成分片坐标,且将对应的分片坐标存储在重用缓冲器中。
这些其它技术的曲面细分单元可输出沿着环58的基元的域坐标,直到这些其它技术的曲面细分单元输出基元42的域坐标。如图3中所说明,基元42与基元1共享两个顶点。然而,归因于重用缓冲器的有限大小,重用缓冲器可已去除对应于基元1的域坐标的分片坐标。在此情况下,域着色器可执行三次,且将域坐标重新变换成由基元1与基元42共享的顶点的分片坐标。换句话说,虽然域着色器已将基元1的域坐标变换成分片坐标,但在这些其它技术中,域着色器可能必须再次将基元1的域坐标(即,与基元42共享的坐标)变换成分片坐标。
在这些其它技术中,曲面细分单元可接着输出环60中的基元43的顶点的域坐标。如所说明,基元43与基元2共享两个顶点,且基元2与基元42共享一个顶点。在此之中,域着色器可执行两次。举例来说,因为基元43与基元42共享一个顶点,所以用于那个顶点的分片坐标可存储在重用缓冲器中。然而,对于基元43的与基元2共享且不与基元42共享的顶点,归因于重用缓冲器的有限大小,重用缓冲器可去除对应于此顶点的域坐标的分片坐标。在此情况下,域着色器可能需要执行以将此顶点的域坐标变换成分片坐标,即使域着色器先前已将此顶点的域坐标变换成分片坐标。
图4为说明输出用于曲面细分的顶点的域坐标的另一实例技术的图。图4中说明的实例可由曲面细分单元的其它实例且非曲面细分级24和基元产生器42实施。图4说明为四域的域62。点和基元图案沿着域62的线的中心对称。
如所说明,域62经曲面细分成多个基元(例如,三角形)。在一些其它实例中,不同于本发明的曲面细分单元的曲面细分单元以逐个环方式输出域62中的基元的顶点的域坐标,其中在此实例中的环为矩形。
为易于描述,仅说明基元中的驻留在域62的外环中的一些。例如,域62的外环包含基元1到基元216。在此实例中,这些其它技术的曲面细分单元输出用于基元1、接着为基元2等等直到基元216的顶点的域坐标。
然而,在这些其它技术中,到这些其它技术的曲面细分单元输出基元216的域坐标时,重用缓冲器可已去除对应于基元1的域坐标的分片坐标。因此,即使基元216与基元1共享两个顶点,域着色器可仍需要执行三次以将基元216的域坐标变换成对应的分片坐标。
图5为说明输出用于曲面细分的顶点的域坐标的另一实例技术的图。图5中说明的实例可由曲面细分单元且非曲面细分级24和基元产生器42的其它实例实施。图5说明为四域的域64,且点和基元图案沿着域64的线的中心对称。
图5中说明的实例为一些其它技术尝试减少域着色器的执行的数目的一个实例方式。例如,在图4中,这些其它技术的曲面细分单元输出来自一个环的基元。在图5中,这些其它技术的曲面细分单元同时输出两个环中的基元的域坐标。
此输出方案可减少域着色器需要执行的次数。例如,当这些其它技术的曲面细分单元输出基元5的域坐标时,用于基元5与基元1和2共享的域坐标的分片坐标可仍在重用缓冲器中可用。然而,图5中说明的方案甚至可执行比所需要多的域着色器情况。例如,当这些其它技术的曲面细分单元输出基元416的域坐标时,用于基元5的与基元416共享的顶点的域坐标的分片坐标可不再存储在重用缓冲器中。
以此方式,在图3和4中说明的实例中,这些其它技术的曲面细分单元针对每一环产生一个基元条带,且在图形管线中更远处的单元(例如,在域着色器后)再使用重用缓冲器中在同一环中的基元之间的顶点可为可能的。然而,归因于重用缓冲器的有限大小,在图形管线中更远处的单元再使用用于跨环的基元的顶点可能并不可能。此导致域着色器的附加执行。
例如,假定重用缓冲器包含三十二个高速缓冲存储器槽。在图3和4中说明的实例中,对于同一顶点,可存在两个高速缓冲未命中。高速缓存未命中可指用于域坐标的对应的分片坐标未存储在重用缓冲器中的情况。例如,在图3和4中说明的实例中,在域着色器将域坐标变换成用于顶点的分片坐标后,归因于重用缓冲器的有限大小,域着色器将需要至少再一次执行以将此同一顶点的域坐标变换成分片坐标可为可能的。
相对于图3和4中说明的技术,图5中说明的实例可减少域着色器的执行数目。然而,在一些实例中,沿着环的边缘可存在多达六十四个顶点。在此情况下图5中说明的实例甚至可导致域着色器的多个执行以将同一顶点的域坐标变换成分片坐标。
因此,关于图3到5说明的技术可对重用缓冲器的效率施加限制。例如,当输出用于第二环的域坐标时,失去对应于在一个环中的顶点的域坐标的分片坐标。并且,如在图3中可见,沿着域56的外边界驻留的基元1到14的顶点不与环60中的基元中的任一者(例如,在环60中向上的基元43)共享。因此,如果失去对应于沿着域56的外边界驻留的顶点的域坐标的分片坐标,那么可存在极少到不存在对重用缓冲器的效率的负面影响。例如,如果失去沿着环的一侧的顶点,如果沿着环的另一侧的顶点保持在重用缓冲器中,那么可存在极少到不存在对重用缓冲器的效率的负面影响。
然而,在图3到5的实例中,沿着所述环的一侧的顶点的此保持可不发生。例如,在图3到5的实例中输出顶点的域坐标的次序可被视为轴线对准。在这些其它技术的曲面细分单元输出基元1到14的域坐标后,基元15到28中的多数不与基元1到14共享任何顶点(其中基元15和16为例外)。然而,在环60中向上的基元43与基元1到14共享顶点,归因于有限大小,在重用缓冲器中失去了所述顶点。因此,确保用于基元1到14的分片坐标在输出基元43和向上的基元时可用可比用于基元15到28的分片坐标更合乎需要。
如上所述,本发明中描述的技术提供域坐标的输出方案以将重用缓冲器的效率最大化。例如,如上所述,根据本发明中描述的技术的曲面细分单元(例如,曲面细分级24和基元产生器42)可将域划分成多个部分,其中所述部分中的至少一者为相邻部分。图3到5中说明的环不应被视为相邻部分。
例如,如在本发明中所使用,相邻部分包含落在相邻部分的区域内(例如,在相邻部分的边缘的末端内)的任一基元,使得在域中不存在间隙。图3到5中说明的环不包括落在由所述环涵盖的区域内的基元,使得在域中存在间隙。例如,在图3中,虽然环58涵盖所有域56,但环58不包括落在60内的基元。以此方式,环58挖空域56,从而创造域56中的间隙。基元的此类似排除也可见于图4和5中。
曲面细分单元(例如,曲面细分级24或基元产生器42)可输出沿着相邻部分内的对角线条带的域坐标。换句话说,曲面细分单元输出在对角线延行方向上的域坐标。如本发明中所使用的“延行”指曲面细分单元输出基元的域坐标的步骤。在对角线延行方向上输出的一个潜在优势为对角线条带长度从一个基元的条带长度开始逐渐地生长。此可导致从对角线条带的外侧添加顶点,而在先进先出方案中,重用缓冲器从对角线条带的内侧替换顶点。
图6为进一步详细说明根据本发明中所描述的一或多个实例的GPU的框图。例如,图6进一步详细说明GPU 12的实例。如所说明,GPU 12包含曲面细分单元66、控制器74、域着色器76和重用缓冲器78。曲面细分单元66为图1的曲面细分级24或图2的基元产生器42的一个实例。重用缓冲器78为以上所描述的重用缓冲器的实例。
域着色器76以虚线来说明以指示域着色器76在GPU 12上(例如,在GPU 12的一或多个着色器核心上)执行,其中着色器核心为GPU 12的专用硬件,用于例如域着色器76的着色器的执行。换句话说,在此实例中,域着色器76并非硬件块,而相反地,为在硬件块上执行的软件单元。域着色器76的一个实例为域着色器级26(图1)。域着色器76的另一实例为曲面细分评估着色器44(图2)。
控制器74可为GPU 12的控制单元,其控制GPU 12的总体功能性。例如,控制器74可确定是否和何时执行着色器程序。控制器74也可确定曲面细分单元66的操作模式。替代地,曲面细分单元66可确定操作模式。控制器74可为硬件、在硬件上执行的软件或在硬件上执行的固件。此外,在一些实例中,替代控制器74确定何时执行域着色器76或除此之外,重用缓冲器78也可包含经配置以确定何时执行域着色器76的高速缓存控制器。然而,为了说明的目的,在控制器74确定操作模式且确定何时将执行域着色器76的情况下来描述技术。
因为控制器74或曲面细分单元66可确定曲面细分单元66的操作模式,所以本发明中描述的技术可被视为经配置以确定曲面细分单元66的操作模式的处理单元。在一些实例中,处理单元可为控制器74。在一些实例中,处理单元可为曲面细分单元66。在一些实例中,处理单元可为控制器74与曲面细分单元66的组合。为了易于说明,如上所述,通过处理单元为控制器74的实例来描述用于确定操作模式的技术。然而,处理单元可替代地或与控制器74一起为曲面细分单元66。
如所说明,曲面细分单元66包含设置单元68、点产生器70和连接性产生器72。设置单元68、点产生器70和连接性产生器72可为曲面细分单元86的固定功能硬件单元。为易于描述,将设置单元68、点产生器70和连接性产生器72说明为分开的组件。设置单元68、点产生器70和连接性产生器72可形成为单一单元、形成为分开的单元或其组合。
设置单元68可从例如图1的外壳着色器级22或图2的曲面细分控制着色器40的第一着色器单元接收曲面细分因子,作为输入,且可从曲面细分因子确定域类型。例如,如果存在四个曲面细分因子,那么设置单元68可确定域类型为三角形,且如果存在六个曲面细分因子,那么设置单元68可确定域类型为四边形。设置单元68可执行例如校正舍入问题、天棚函数和地板函数、确定半曲面细分因子和减小与组合曲面细分因子的其它设置功能。一般来说,设置单元68可处理曲面细分因子以确保曲面细分单元66的其它组件可执行相应功能。
点产生器70可从曲面细分因子和点的位置(例如,点的u,v坐标或u,v,w坐标)确定有多少点沿着域的每一环的每一边缘驻留。连接性产生器72可连接(即,缝合)所述点以形成域中的多个基元。
在一些实例中,连接性产生器72可经配置以实施本发明中描述的技术。例如,不输出如在图3到5中所说明的基元的域坐标,连接性产生器72可经配置以将域划分成多个部分,且输出在所述部分内的对角线条带中的基元的域坐标。在一些实例中,点产生器70和连接性产生器72可一起起作用,以用于输出域坐标。
例如,点产生器70可确定驻留在第一对角线条带内的基元的顶点的坐标,其中第一对角线条带驻留在相邻部分内。点产生器70可接着将所确定的坐标输出到连接产生器72(例如,经由与重用缓冲器78分开且未在图6中说明的浅缓冲器)。连接性产生器72可汇编所述基元,且输出驻留在第一对角线条带内的基元的顶点的域坐标,其中第一对角线条带驻留在相邻部分内。点产生器70也可确定驻留在第二对角线条带内的基元的顶点的坐标,其中第二对角线条带驻留在相邻部分内,且将所确定的坐标输出到连接性产生器72(例如,经由浅缓冲器)。在输出驻留于第一对角线条带内的顶点的域坐标后,连接性产生器72可输出驻留在第二对角线条带内的顶点的域坐标,其中第二对角线条带驻留在相邻部分内。
在一个操作模式中,第二对角线条带可与第一对角线条带平行,且连接性产生器72可输出驻留在第二平行对角线条带内的顶点的域坐标。在此实例中,第二平行对角线条带可包含与第一对角线条带不同数目的基元。
在另一操作模式中,第二对角线条带可与第一对角线条带相切。如在本发明中使用的相切意味着在第二对角线条带中的仅一个基元与在第一对角线条带中的仅一个基元共享两个顶点。以此方式,第二对角线条带可被视为在仅一个基元处连接到第一对角线条带,和因此与第一对角线条带相切。在此实例中,第二相切对角线条带可包含与第一对角线条带相同数目的基元。
并且,点产生器70可确定驻留在第三对角线条带内的基元的顶点的坐标,且将所确定的坐标输出到连接性产生器72(例如,经由浅缓冲器)。在输出驻留在第二对角线条带内的基元的顶点后,连接性产生器72可接着输出驻留在处于相邻部分内的第三对角线条带内的基元的顶点。在任一操作模式中,第三对角线条带可与第一对角线条带平行。举例来说,在第一和第二对角线条带相互平行的操作模式中,第三对角线条带可与第一和第二对角线条带两者平行。在第二对角线条带与第一对角线条带相切的操作模式中,第三对角线条带可与第一对角线条带平行,但可不与第二对角线条带平行。
点产生器70可确定基元的坐标,且连接性产生器72可输出对角线条带内的基元,直到连接性产生器72完成输出在所述域的相邻部分中的一者内的基元。点产生器70可确定基元的坐标,且连接性产生器72可以实质上类似方式接着输出在所述域中的另一相邻部分内的基元。
连接性产生器72可将一个基元的域坐标输出到控制器74。控制器74可接着确定重用缓冲器78是否存储对应于输出的域坐标的分片坐标。举例来说,域坐标可索引到重用缓冲器78。如上所述,域坐标可为笛卡耳坐标(例如,u,v坐标)或重心坐标(例如,u,v,w坐标)。u坐标、v坐标和w坐标可各为17位。因此,u,v坐标可包含三十四个位,而u,v,w坐标可包含五十一个位。
控制器74可将这些三十四个或五十一个位输出到重用缓冲器78内的异或门。异或门可将接收到的位与指示重用缓冲器78的索引的位比较。如果异或门的输出指示接收到的位匹配重用缓冲器78中的索引,那么重用缓冲器78可将高速缓存命中输出到控制器74。高速缓存命中意味着重用缓冲器78存储用于形成三十四个或五十一个位的域坐标的分片坐标。如果异或门的输出指示接收到的位不匹配重用缓冲器78中的索引,那么重用缓冲器78可将高速缓存未命中输出到控制器74。高速缓存未命中意味着重用缓冲器78不存储用于形成三十四个或五十一个位的域坐标的分片坐标。
如果发生高速缓存命中,那么控制器74可不使域着色器76的具现化执行,这是因为重用缓冲器78已存储用于形成三十四个或五十一个位的域坐标的分片坐标。在此情况下,控制器74可使图形管线的随后单元读取对应于输出的域坐标的分片坐标,以用于进一步处理。例如,控制器74可使几何着色器级28(图1)或几何着色器(图2)从重用缓冲器78读取对应于输出的域坐标的分片坐标,以用于进一步处理。
如果发生高速缓存未命中,那么控制器74可使域着色器76的具现化执行,这是因为重用缓冲器78未存储用于形成三十四个或五十一个位的域坐标的分片坐标。在此情况下,控制器74可将域坐标提供到域着色器76,且域着色器76可将域坐标变换成对应的分片坐标。域着色器76可将分片坐标输出到重用缓冲器78。重用缓冲器78又可在等于形成域坐标的三十四个或五十一个位的索引处存储分片坐标。在重用缓冲器78存储分片坐标后,控制器74可使图形管线的随后单元从重用缓冲器78读取分片坐标,以用于进一步处理。
控制器74可针对由连接性产生器72输出的域坐标中的每一者重复这些步骤。例如,对于每一高速缓存未命中,控制器74可使域着色器76的具现化执行,且对于每一高速缓存未命中,控制器74可不使域着色器76的具现化执行。
如上所述,本发明中描述的技术可使域着色器76的具现化的数目最小化。为此目的,本发明中描述的技术可使发生的高速缓冲未命中的数目最小化。例如,输出在相邻部分内的对角线条带中的基元的域坐标增大了以下可能性:对应于共享的顶点的域坐标的分片坐标保持在重用缓冲器78中,且重用缓冲器78去除(例如,淘汰)对应于未共享顶点的域坐标的分片坐标。
在本发明中描述的技术中,对角线条带中的每一者可包含第一侧(例如,内侧)和第二侧(例如,外侧)。在第一、第二和第三对角线条带都相互平行的实例操作模式中,第一对角线条带的外侧可与第二对角线条带的内侧相同,且第二对角线条带的外侧可与第三对角线条带的内侧相同。在此实例中,在对角线条带中的每一者中的基元的数目可不同。
作为一个实例,第二对角线条带中的基元的数目可大于第一对角线条带中的基元的数目,且第三对角线条带中的基元的数目可大于第一和第二对角线条带中的基元的数目。此导致在第一对角线条带的外侧上的顶点的数目大于在第一对角线条带的内侧上的顶点的数目,且在第二对角线条带的外侧上的顶点的数目大于在第二对角线条带的内侧上的顶点的数目,其中第二对角线条带的内侧与第一对角线条带的外侧相同。
通过确保对应于对角线条带的外侧上的顶点的域坐标的分片坐标保持在重用缓冲器78内,本发明中描述的技术可逐渐地使存储在重用缓冲器78中的分片坐标的数目变大。接着,当重用缓冲器78变满时,重用缓冲器78可去除对应于沿着对角线条带的内侧驻留的顶点的域坐标的分片坐标。因为在对角线条带的内侧存在极少基元,所以这些基元可不与域中的其它基元共享如此之多的顶点(如果存在)。因此,如果对应于这些内侧顶点的域坐标的分片坐标经从重用缓冲器78去除,那么对域着色器76需要执行的次数的影响可较小。以此方式,如与以上关于图3到5描述的实例相比,此操作模式允许域着色器76需要执行的次数的减少。
第二对角线条带与第一对角线条带相切的实例操作模式也可通过增大对应于共享的顶点的域坐标的分片坐标保持在重用缓冲器78中的可能性来使域着色器76的执行最少化。例如,如果重用缓冲器78的存储能力(例如,重用缓冲器78中的槽的数目)足够大和/或域中的顶点的数目足够小,那么在连接性产生器72输出用于第二对角线条带中的基元的域坐标后,重用缓冲器78可仍存储对应于第一对角线条带中的基元的域坐标的分片坐标。
接着,当连接性产生器72输出第三对角线条带中的基元的域坐标时,控制器74可确定域着色器76不需要针对域坐标中的许多者执行。例如,在此操作模式中,第三对角线条带的内侧可与第一对角线条带的外侧相同。对应于用于沿着对角线条带的外侧驻留的顶点的域坐标的分片坐标可仍存储在重用缓冲器78中,且控制器74可确定域着色器76不需要针对至少这些顶点执行。
以此方式,甚至在第二对角线条带与第一对角线条带相切的操作模式中,本发明中描述的技术可逐渐地使存储在重用缓冲器78中的分片坐标变大,使得对应于驻留在对角线条带的外侧上的域坐标的分片坐标保持在重用缓冲器78中,且对应于驻留在对角线条带的内侧上的域坐标的分片坐标经从重用缓冲器78去除。举例来说,在第二对角线条带与第一对角线条带相切的操作模式中,第三对角线条带中的基元的数目可大于第一对角线条带中的基元的数目。
因此,驻留在第一对角线条带的内侧上的顶点的数目少于驻留在第一对角线条带的外侧上的顶点的数目。以此方式,即使重用缓冲器78去除了对应于沿着第一对角线条带的内侧驻留的顶点的域坐标的分片坐标,那么仍可存在对域着色器76需要执行的次数的较小(如果存在)负面影响。以此方式,如与以上关于图3到5描述的实例相比,此操作模式还允许域着色器76需要执行的次数的减少。
如上所述,点产生器70和连接性产生器72在一起可将域划分成多个部分,其中所述部分中的至少一者为相邻部分。点产生器70和连接性产生器72在一起可基于曲面细分因子和重用缓冲器78的存储能力将域划分成多个部分。点产生器70和连接性产生器72可接着基于点产生器70和连接性产生器72划分域的方式实施以上所描述的实例操作模式中的一者。
对于四域,曲面细分单元66可接收fx曲面细分因子和fy曲面细分因子。fx曲面细分因子可指示在x方向上驻留在环上的顶点的数目,且fy曲面细分因子可指示在y方向上驻留在环上的顶点的数目。例如,曲面细分单元66的点产生器70可利用fx曲面细分因子和fy曲面细分因子确定驻留在环中的每一者上的点的数目。应注意,虽然需要环确定点(例如,顶点)的位置,但连接性产生器72输出对角线条带中的基元且不基于所述环。换句话说,一旦点产生器70利用环确定顶点的位置,连接性产生器72即输出对角线条带中的基元的顶点的域坐标,且不按以上关于图3到5描述的逐个环方式。
在一些实例中,设置单元68可预处理fx和fy曲面细分因子。例如,如果曲面细分单元66将应用整数分割,那么设置单元68可将fx和fy舍到整数值。如果曲面细分单元66将应用奇数分数分割,那么设置单元68可将fx和fy舍到奇数整数。如果曲面细分单元66将应用偶数分数分割,那么设置单元68可将fx和fy舍到偶数整数。如果曲面细分单元66将应用2的幂(pow2)分割,那么设置单元68可将fx和fy舍到2n(即,二进整数)。无论如何,本发明将fx和fy曲面细分因子称作在由设置单元68预处理后的因子。
连接性产生器72可基于fx和fy中的较小者划分四域。例如,处理单元(例如,控制器74和/或曲面细分单元66)可确定fx和fy中的较小者。举例来说,令f1等于fx和fy中的较小者,其中f2等于fx和fy中的较大者。如果fx等于fy,那么令f1等于fx或fy。换句话说,f1小于或等于f2(即,f1≤f2)。
以上实例假定域为四域。对于三角域,曲面细分单元66可不接收fx和fy曲面细分因子。相反地,曲面细分单元66可接收一个曲面细分因子,为简单起见,本发明将其称作f1。
如更详细地描述,曲面细分因子f1的值可确定点产生器70和连接性产生器72划分域的方式。并且,重用缓冲器78中的槽的数目可确定点产生器70和连接性产生器72划分域的方式。令“C”等于重用缓冲器78中的槽的数目(即,重用缓冲器78的存储能力)。
在一些实例中,控制器74可确定f1+1是否小于或等于C-2。应理解,曲面细分单元66确定f1+1是否小于或等于C-2可为可能的。例如,曲面细分单元66可预加载有C值。换句话说,处理单元(例如,控制器74和/或曲面细分单元66)可确定f1+1是否小于或等于C-2。然而,为易于描述,将控制器74描述为确定f1+1是否小于或等于C-2。
如果控制器74确定f1+1小于或等于C-2,那么控制器74可指导连接性产生器72在第一操作模式中操作。此第一操作模式可被称作接合对角线延行。在第一操作模式中,点产生器70和连接性产生器72可将域划分成两个部分,其中一或多个两个部分为相邻部分。例如,点产生器70和连接性产生器72可将四域划分成两半,且可对两半中的每一者实施第一操作模式。作为另一实例,点产生器70和连接性产生器72可将三角域划分成三分之一部分与三分之二部分。在此实例中,点产生器70和连接性产生器72可对三分之二部分实施第一操作模式,且可对三分之一部分实施以下更详细描述的第二操作模式。
图7为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的实例技术的图。图7说明为四域的域80。如所说明,点产生器70和连接性产生器72可将域80划分成两个部分81A和81B,这是因为在此实例中,处理单元(例如,控制器74和/或曲面细分单元66)可已确定f1+1小于或等于C-2。换句话说,点产生器70和连接性产生器72可实施第一操作模式。在此情况下,部分81A和81B可各被视为接合部分。举例来说,如果点产生器70和连接性产生器72待将域80划分成四联体,那么部分81A包含包括四联体中的两者的接合部分,且部分81B包含包括四联体中的其它两者的接合部分。
为了说明的目的,图7说明连接性产生器72可输出用于部分81B内的基元的域坐标的方式。应理解,连接性产生器72基于由点产生器70确定的域坐标输出域坐标。部分81B为相邻部分,这是因为落在部分81B内的域80的所有基元包含为部分81B的部分。举例来说,部分81B不创造域80中的间隙。
在图7中说明的实例中,连接性产生器72可开始输出位于部分81B的中心处、沿着域80的x轴边界的基元的域坐标,且向外延伸。进一步关于第一对角线条带82、第二对角线条带84和第三对角线条带86来说明此。举例来说,第一对角线条带82包含基元88A到88N,第二对角线条带84包含基元90A到90N,且第三对角线条带86包含基元92A到92M。
在第一操作模式(例如,其中f1+1小于或等于C-2)中,第二对角线条带84可包含与第一对角线条带82相同数目个基元。例如,在图7中,第一对角线条带82包含“N”数目个基元,且第二对角线条带84也包含“N”数目个基元。在第一操作模式中,第三对角线条带86包含与第一对角线条带82和第二对角线条带84不同数目个基元。举例来说,第三对角线条带86包含“M“数目个基元。
并且,在第一操作模式中,第二对角线条带84与第一对角线条带82相切。例如,第二对角线条带84包含与第一对角线条带82的仅一个基元共享两个顶点的仅一个基元。如图7中所说明,第二对角线条带84的基元90A与第一对角线条带82的基元88N共享两个顶点,且第二对角线条带84的其余基元中无一者与第一对角线条带82的任何其余基元共享两个顶点。
此外,在第一操作模式中,第三对角线条带86与第一对角线条带82平行,但不与第二对角线条带84平行。第一对角线条带82、第二对角线条带84和第三对角线条带86中的每一者可包含内侧和外侧。内侧指第一对角线条带82、第二对角线条带84和第三对角线条带86的较靠近部分81B的中心的侧,且外侧指第一对角线条带82、第二对角线条带84和第三对角线条带86的远离部分81B的中心的侧。
两个对角线条带相互平行意味着两个对角线条带从同一轴线开始,且在相同方向上向外延伸。例如,第一对角线条带82和第三对角线条带86都沿着域80的x轴开始且在相同方向上向外延伸。第二对角线条带84沿着域80的x轴开始,但不在与第一对角线条带82和第三对角线条带86相同的方向上向外延伸。
在一些实例中,两个对角线条带相互平行意味着两个对角线条带中的一者的外侧与两个对角线条带中的另一者的内侧相同。例如,第一对角线条带82的外侧与第三对角线条带86的内侧相同。因此,第三对角线条带86与第一对角线条带82平行。然而,第二对角线条带84的内侧或外侧都不与第一对角线条带82和第三对角线条带86的内侧或外侧相同。因此,第三对角线条带86不与第二对角线条带84平行。
此外,即使两个对角线条带不共享内侧和外侧,那么将两个对角线条带视为相互平行可为可能的。举例来说,如上所述,如果两个对角线条带从域的同一轴线开始且在相同方向上向外延伸,那么两个对角线条带可被视为相互平行。
在图7中,连接性产生器72可输出用于基元88A到88N的域坐标(即,用于第一对角线条带82中的基元的域坐标)。对于基元88A到88N的这些域坐标中的任一者(重用缓冲器78不存储用于其的对应的分片坐标),控制器74可使域着色器76的具现化执行,且域着色器76可将经变换的坐标(即,对应于域坐标的分片坐标)存储在重用缓冲器78中。连接性产生器72可接着输出用于基元90A到90N的域坐标(即,用于第二对角线条带84中的基元的域坐标)。再次,对于基元90A到90N的这些域坐标中的任一者(重用缓冲器78不存储用于其的对应的分片坐标),控制器74可使域着色器76的具现化执行,且域着色器76可将经变换的坐标存储在重用缓冲器78中。接下来,连接性产生器可输出用于基元92A到92M的域坐标(即,用于第三对角线条带86中的基元的域坐标)。如上,对于基元92A到92M的这些域坐标中的任一者(重用缓冲器78不存储用于其的对应的分片坐标),控制器74可使域着色器76的具现化执行,且域着色器76可将经变换的坐标存储在重用缓冲器78中。
连接性产生器72可保持以此方式输出域坐标,直到连接性产生器72完成输出部分81B中的所有基元的域坐标。连接性产生器72可接着关于部分81A重复这些步骤。如图7中所说明,部分81B和部分81A共享许多顶点。在一些情况下,对应于用于由部分81A与部分81B共享的这些顶点中的一些的域坐标的分片坐标不再在重用缓冲器78中可用可为可能的。用于顶点中的一些,控制器74可使域着色器76执行。然而,虽然域着色器76可能需要针对将这些共享的顶点的域坐标重新变换到分片坐标执行,但如与图3到5中说明的实例相比,本发明中描述的技术可仍减少域着色器76需要执行的总次数。
在一些情况下,如图7中所说明,在输出对角线条带的基元后,可不存在与那个对角线条带叠合(即,相切)的对角线条带。在此情况下,连接性产生器72可输出为镜面相对物的对角线条带的基元。例如,在连接性产生器72输出对角线条带94内的基元的域坐标后,可不存在与对角线条带94相切的对角线条带。在此情况下,连接性产生器72可输出为对角线条带94的镜面相对物的对角线条带96中的基元的域坐标。
为彼此的镜面相对物的对角线条带指将在同一点处与域内的对称线相交(如果延伸)的对角线条带。举例来说,在图7中,对称线可被视为从域80的中心底端向上或从域80的中心顶端向下延伸的垂直线。在此实例中,如果对角线条带94和对角线条带96延伸得更远,那么对角线条带94与对角线条带96将沿着域80的对称线相交。
以此方式,如图7中所说明,连接性产生器72从部分81B的底端的中心开始,且输出在朝向部分81B的右端和左端两者和朝向部分81B的顶端的向外方向上延伸的基元的域坐标。替代地,连接性产生器72可从部分81B的顶端的中心朝向部分81B的右端和左端和朝向部分81B的顶端向外开始。在此情况下,对应于由部分81B与81A共享的顶点的域坐标的分片坐标将从重用缓冲器78去除的可能性增大。因此,连接性产生器72从部分81B的底端而非部分81B的顶端的中心开始可更有利。在任一情形中(例如,从部分81的顶端或底端开始),输出方案可被称作在x方向上的接合延行,这是因为第一对角线条带82从x轴开始,且第二对角线条带84在x轴结束。
然而,本发明中描述的技术不受如此限制。在一些其它实例中,点产生器70和连接性产生器72可将域80划分成两个垂直部分,而非图7中说明的水平部分。在此情况下,连接性产生器72可从左端的中心或右端的中心开始,且输出在朝向两个垂直部分中的一垂直部分的顶端和底端两者的向外方向上延伸的基元的域坐标。此输出方案可被称作在y方向上的接合延行,这是因为在此实例中,第一对角线条带可从域的y轴开始,且在此实例中,第二对角线条带可结束于域的y轴。举例来说,如果将域80旋转90度,那么在y方向上的接合延行可被视为与在x方向上的接合延行相同。
当处理单元(例如,控制器74或曲面细分单元66)确定连接性产生器72将实施第一操作模式时,控制器74可进一步确定连接性产生器72将实施在x方向上的接合延行还是在y方向上的接合延行。例如,控制器74可基于曲面细分因子确定连接性产生器72将实施在x方向上的接合延行还是在y方向上的接合延行。
举例来说,在第一操作模式中,f1+1小于或等于C-2,且f1等于fx和fy中的较小者。如果控制器74确定f1等于fx(即,fx小于或等于fy),那么控制器74可确定连接性产生器72将实施在x方向上的接合延行以输出相邻部分中的基元的域坐标。如果控制器74确定f1等于fy(即,fy小于或等于fx),那么控制器74可确定连接性产生器72将实施在y方向上的接合延行以输出相邻部分中的基元的域坐标。连接性产生器72可接着基于控制器74的确定输出在x方向上的接合延行或y方向上的接合延行中的相邻部分中的基元的域坐标。
图8为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。图8说明为三角域的域98。如所说明,点产生器70和连接性产生器72可将域98划分成两个部分100A和100B,这是因为在此实例中,处理单元(例如,控制器74或曲面细分单元66)可已确定f1+1小于或等于C-2。换句话说,类似于图7,连接性产生器72可实施第一操作模式。
对于三角域98,曲面细分单元66可接收指示沿着环的每一侧驻留的点的数目的一个曲面细分因子,而非用于例如图7的四域80的四域的两个曲面细分因子(即,fx和fy)。为了一致,指示沿着用于三角域98的环的每一侧驻留的点的数目的曲面细分因子被称作f1。然而,f1可简单地被称作f,这是因为不存在fx和fy曲面细分因子。
此外,在连接性产生器点产生器70和72将域98划分成两个部分的第一操作模式中,两个部分中的一者可包含域98的三分之一,且两个部分中的另一者可包含域98的三分之二。例如,部分100B为包含域98的三分之二的相邻部分,且部分100A为包含域98的三分之一的相邻部分。
点产生器70和连接性产生器72将域98划分成相等的半部分可为可能的。然而,在f1+1小于或等于C-2的情况下,在重用缓冲器78中可存在足够的存储槽以用于连接性产生器72输出用于在域98的三分之二内(即,在部分100B内)的基元的域坐标。因为域98的三分之二大于域98的一半,所以连接性产生器72将域98划分成三分之一部分100A和三分之二部分100B可更有利。
为了说明的目的,图8说明连接性产生器72可输出用于部分100B内的基元的域坐标的方式。如上所述,连接性产生器72可输出点产生器70确定的域坐标。输出部分100B中的基元的域坐标可被视为接合延行,这是因为部分100B为两个三联体的组合(例如,域98的三分之二等于域98的两个三分之一的组合)。
在图8中说明的实例中,连接性产生器72可开始输出位于部分100B的中心处的基元的域坐标,且向外延伸。例如,图8说明第一对角线条带102、第二对角线条带104和第三对角线条带106。在此实例中,连接性产生器72可输出驻留在第一对角线条带102内的基元的域坐标,接着为与第二对角线条带104驻留在一起的基元的域坐标,且接着后面为与第三对角线条带106驻留在一起的基元的域坐标。在域坐标的输出后,对于对角线条带中的每一者,对于域坐标中的任一者(重用缓冲器78不存储用于其的对应的分片坐标),控制器74可使域着色器76的具现化执行,且域着色器76可将经变换的坐标(即,对应于域坐标的分片坐标)存储在重用缓冲器78中。
在图8中说明的实例中,因为连接性产生器72正实施第一操作模式,所以第二对角线条带104与第一对角线条带102相切,且第二对角线条带104可包含与第一对角线条带102相同数目个基元。并且,在第一操作模式中,第三对角线条带106可与第一对角线条带102平行,且不与第二对角线条带104斜交。如所说明,第三对角线条带106可包含与第一对角线条带102和第二对角线条带104不同的数目个基元。
连接性产生器72可保持以此方式输出域坐标,直到连接性产生器72完成输出部分100B中的所有基元的域坐标。应理解,虽然图8将部分100B说明为包含域98的底部三分之二,但本发明的方面不受如此限制。在其它实例中,部分100B可包含域98的右或左三分之二。对于部分100A,连接性产生器72可根据以下描述的第二操作模式输出基元。
在图7和8中说明的实例中,点产生器70和连接性产生器72可实施接合延行,其中接合延行包含用于四域的四联体的两个段,和用于三角域的三联体的两个段。在接合延行中,两个段相互邻近且共享贯穿所述域(即,在图7和8中的垂直方向上)延伸的假设中间线上的顶点。图7和8还说明沿着环中的每一者存在相同数目个顶点且沿着环中的每一者的顶点的数目为偶数的均匀曲面细分的实例。此可允许曲面细分单元66的点产生器70采用曲面细分中的对称性图案且通过计算用于沿着环的顶点的一半的坐标来节省计算,且使用内部缓冲区(不同于或包含重用缓冲器78)镜射沿着所述环的顶点的另一半的坐标。
类似于图7,在输出对角线条带的基元后,可不存在与那个对角线条带叠合的对角线条带。在此情况下,连接性产生器72可输出为镜面相对物的对角线条带的基元。例如,在连接性产生器72输出对角线条带108内的基元的域坐标后,可不存在与对角线条带108相切的对角线条带。在此情况下,连接性产生器72可输出对角线条带110(其为对角线条带108的镜面相对物)中的基元的域坐标。例如,如果对角线条带108和对角线条带110将延伸,那么对角线条带108与对角线条带110将沿着对称线在同一点处相汇。
图9为说明根据本发明中所描述的一或多个实例的连接性产生器输出的域的相邻部分的实例的图。例如,图9说明相邻部分112。相邻部分112的基元由基元内的数字值来识别,且指示连接性产生器72可输出域坐标的次序。例如,连接性产生器72可输出基元0、接着基元1、接着基元2等等的顶点的域坐标。在基元的顶点处的数值表示域坐标。例如,用于基元0的域坐标为(2,3,10)。应理解,域坐标为(u,v)坐标或(u,v,w)坐标。然而,为易于描述,域坐标具备单一值。
在图9中说明的实例中,fy等于6,且fx等于18。然而,为了易于说明,仅说明相邻部分的一半。举例来说,图9说明沿着y轴的六个区段(其中区段为两个顶点之间的线),和沿着x轴的九个区段。满的相邻部分包含沿着y轴的六个区段和沿着x轴的十八个区段。为了易于说明,仅说明相邻部分的包含沿着y轴的六个区段和沿着x轴的九个区段的部分(即,相邻部分的一半)。举例来说,fy等于6,这是因为沿着y轴存在六个区段,其中区段包含两个端点,且所述两个端点为基元的顶点。在图9中,fx等于18,这是因为沿着x轴实际上存在十八个区段,但图9中仅说明十八个区段中的九个。
并且,在图9中说明的实例中,假定重用缓冲器78中的槽的数目为9(即,C等于9)。在此情况下,因为fy小于fx,所以处理单元(例如,控制器74和/或曲面细分单元66)可确定f1等于fy(即,f1等于6)。在此实例中,f1+1等于7,且C-2也等于7。因此,在此实例中,控制器74可确定f1+1小于或等于C-2,且可使点产生器70和连接性产生器72实施第一操作模式(即,接合延行)。
此外,在此实例中,因为fy小于fx,所以控制器74可使点产生器70和连接性产生器72实施在y方向上的接合延行。例如,如图9中所说明,连接性产生器72可从相邻部分112的左端开始且向外延伸到相邻部分112的右端。在图9中说明的实例中,第一对角线条带可包含基元2、3和4,第二对角线条带可包含基元5、6和7,且第三对角线条带可包含基元8、9、10、11和12。第一对角线条带从y轴开始,且第二对角线条带在y轴结束,因此在y方向接合延行。
在此情况下,第二对角线条带与第一对角线条带相切,且第三对角线条带与第一对角线平行,且不与第三对角线平行。并且,在第一和第二对角线条带中的基元的数目相同(即,在每一者中3个基元),且在第三对角线条带中的基元的数目不同(即,5个基元,而非3个基元)。
下表1说明重用高速缓冲存储器78针对相邻部分112的前42个基元的行为。在表1中,第一列指示基元,第二列指示域坐标,且第三列指示存储在重用缓冲器78中的分片坐标。为了易于说明,对分片坐标给以与其对应的域坐标相同的值。并且,在表1的第三列中,加粗且带下划线的分片坐标指示当域着色器76执行以将域坐标变换到分片坐标时的情况。
表1.
基元 | 域坐标 | 重用缓冲器78的9个槽中的分片坐标 |
0 | (2,3,10) | 2,3,10,x,x,x,x,x,x |
1 | (10,3,4) | 2,3,10,4,x,x,x,x,x |
2 | (1,2,9) | 2,3,10,4,1,9,x,x,x |
3 | (9,2,10) | 2,3,10,4,1,9,x,x,x |
4 | (9,10,17) | 2,3,10,4,1,9,17,x,x |
5 | (17,10,11) | 2,3,10,4,1,9,17,11,x |
6 | (10,4,11) | 2,3,10,4,1,9,17,11,x |
7 | (11,4,5) | 2,3,10,4,1,9,17,11,5 |
8 | (0,1,8) | 10,4,1,9,17,11,5,0,8 |
9 | (8,1,9) | 10,4,1,9,17,11,5,0,8 |
10 | (8,9,16) | 4,1,9,17,11,5,0,8,16 |
11 | (16,9,17) | 4,1,9,17,11,5,0,8,16 |
12 | (16,17,24) | 1,9,17,11,5,0,8,16,24 |
13 | (24,17,18) | 9,17,11,5,0,8,16,24,18 |
14 | (17,11,18) | 9,17,11,5,0,8,16,24,18 |
15 | (18,11,12) | 17,11,5,0,8,16,24,18,12 |
16 | (11,5,12) | 17,11,5,0,8,16,24,18,12 |
17 | (12,5,6) | 11,5,0,8,16,24,18,12,6 |
18 | (7,0,8) | 5,0,8,16,24,18,12,6,7 |
19 | (7,8,15) | 0,8,16,24,18,12,6,7,15 |
20 | (15,8,16) | 0,8,16,24,18,12,6,7,15 |
21 | (15,16,23) | 8,16,24,18,12,6,7,15,23 |
22 | (23,16,24) | 8,16,24,18,12,6,7,15,23 |
23 | (23,24,31) | 16,24,18,12,6,7,15,23,31 |
24 | (31,24,25) | 24,18,12,6,7,15,23,31,25 |
25 | (24,18,25) | 24,18,12,6,7,15,23,31,25 |
26 | (25,18,19) | 18,12,6,7,15,23,31,25,19 |
27 | (18,12,19) | 18,12,6,7,15,23,31,25,19 |
28 | (29,12,13) | 12,6,7,15,23,31,25,19,13 |
29 | (12,6,13) | 12,6,7,15,23,31,25,19,13 |
30 | (14,7,15) | 6,7,15,23,31,25,19,13,14 |
31 | (14,15,22) | 7,15,23,31,25,19,13,14,22 |
32 | (22,15,23) | 7,15,23,31,25,19,13,14,22 |
33 | (22,23,30) | 15,23,31,25,19,13,14,22,30 |
34 | (30,23,31) | 15,23,31,25,19,13,14,22,30 |
35 | (30,31,38) | 23,31,25,19,13,14,22,30,38 |
36 | (38,31,32) | 23,31,25,19,13,14,22,30,38 |
37 | (31,25,32) | 31,25,19,13,14,22,30,38,32 |
38 | (32,25,26) | 25,19,13,14,22,30,38,32,26 |
39 | (25,19,26) | 25,19,13,14,22,30,38,32,26 |
40 | (26,19,20) | 19,13,14,22,30,38,32,26,20 |
41 | (19,13,20) | 19,13,14,22,30,38,32,26,20 |
.... | ... | ... |
在表1中,对于基元0,控制器74可使域着色器76的三个具现化执行以将基元0的域坐标变换到分片坐标。基元1与基元0共享两个顶点(即,具有域坐标3和10的顶点)。在此情况下,对于基元1,控制器74可使域着色器76的一个具现化执行:针对域坐标4的一个。因为对应于域坐标3和10的分片坐标已存储在重用缓冲器78中,所以控制器74可不引起用于域坐标3和10的域着色器的具现化。
如表1中所说明,在基元7后,重用缓冲器78满了。在此情况下,在连接性产生器72输出基元8的域坐标后,控制器74可确定域着色器76的两个具现化需要执行:一个针对基元8的域坐标0,且一个针对基元8的域坐标8。因此,重用缓冲器78可去除最早存储的分片坐标(其为分片坐标2和3),以释放存储空间以用于分片坐标0和8。
表1可指示有效率地利用重用缓冲器78以使针对第一操作模式的域着色器76的执行最少化的方式。例如,充分利用所有共享的顶点(例如,无附加高速缓冲未命中)。举例来说,对应于顶点的域坐标的分片坐标保持存储在重用缓冲器中,直到连接性产生器72输出用于共享那个顶点的基元中的多数的域坐标。此可使域着色器76需要执行的次数最少化。
以上实例描述了用于第一操作模式的技术,其中f1+1小于或等于C-2。然而,f1+1小于或等于C-2的条件可能并不在每一情况下都为真。例如,对于f1的较大值和/或C的较小值,与以上实例相比,f1+1小于或等于C-2的条件可不保持真。
在一些实例中,如果处理单元(例如,控制器74和/或曲面细分单元66)确定f1+1不小于或等于C-2,那么在此实例中,控制器74可确定f1/2+1是否小于或等于C-1。如果控制器74确定f1/2+1小于或等于C-1,那么控制器74可使连接性产生器72实施第二操作模式。
在第二操作模式中,点产生器70和连接性产生器72可将四域划分成四个部分(例如,四联体),其中所述部分中的至少一者为相邻部分。在第二操作模式中,点产生器70和连接性产生器72可将三角域划分成三个部分(例如,三联体),其中所述部分中的至少一者为相邻部分。
用于第二操作模式,类似于第一操作模式,连接性产生器72可输出驻留在第一对角线条带内的基元的域坐标,接着为驻留在第二对角线条带内的基元的域坐标,且接着后面为驻留在第三对角线条带内的基元的域坐标然而,在第二操作模式中,第二对角线条带与第一对角线条带和第三对角线条带平行。
举例来说,第二对角线条带的内侧可与第一对角线条带的外侧相同。并且,第二对角线条带的外侧可与第三对角线条带的内侧相同。在此实例中,因为第二对角线条带与第一和第三对角线条带两者平行,所以第一对角线条带与第三对角线条带平行,即使第一对角线条带的外侧和内侧都不与第三对角线条带的内侧或外侧相同。
图10为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。图10说明为四域的域114。如所说明,连接性产生器72可将域114划分成四个部分115A到115D,这是因为在此实例中,控制器74可已确定f1/2+1小于或等于C-1(即,连接性产生器72将实施第一操作模式)。在图7的实例中,将部分81A和81B描述为接合部分。在图10的实例中,部分115A到115可被视为单一部分,其中两个单一部分一起形成接合部分。
为了说明的目的,图10说明连接性产生器72可输出用于部分115C内的基元的域坐标的方式。部分115C可被视为相邻部分,这是因为部分115C不在域114中创造间隙。
在图10中说明的实例中,连接性产生器72可开始输出位于部分115C的角落处的基元的域坐标,且朝向部分115C的对置角落向外延伸。例如,在图10中,连接性产生器72可从部分115C的右下角开始,且朝向部分115C的左上角向外延伸。进一步关于第一对角线条带116、第二对角线条带118和第三对角线条带120来说明此。如所说明,第二对角线条带118比第一对角线条带116更靠近右上角,且第三对角线条带120比第二对角线条带118和第一对角线条带116两者更靠近右上角。
第一对角线条带116包含基元122A到122N,第二对角线条带118包含基元124A到124M,且第三对角线条带120包含基元126A到126X。在第二操作模式中,第二对角线条带118可包含与第一对角线条带116不同的数目个基元。例如,第二对角线条带118可包含“M”数目个基元,且第一对角线条带116可包含“N”数目个基元,其中M与N为不同数。并且,第三对角线条带120可包含与第一对角线条带116和第二对角线条带118不同的数目个基元。例如,第三对角线条带120包含“X”数目个基元,其中X不同于M和N。
在第二操作模式中,第一对角线条带116可与第二对角线条带118平行。例如,第二对角线条带118的内侧与第一对角线条带116的外侧相同。并且,在第二操作模式中,第三对角线条带120可与第二对角线条带118平行。例如,第三对角线条带120的内侧与第二对角线条带118的外侧相同。在此情况下,因为第二对角线条带118与第一对角线条带116和第三对角线条带120两者平行,所以可将第一对角线条带116与第三对角线条带120考虑为相互平行。
在图10中,连接性产生器72可输出用于基元122A到122N的域坐标(即,用于第一对角线条带116中的基元的域坐标)。对于基元122A到122N的这些域坐标中的任一者(重用缓冲器78不存储用于其的对应的分片坐标),控制器74可使域着色器76的具现化执行,且域着色器76可将经变换的坐标(即,对应于域坐标的分片坐标)存储在重用缓冲器78中。连接性产生器72可接着输出用于基元124A到124M的域坐标(即,用于第二对角线条带118中的基元的域坐标)。再次,对于基元124A到124M的这些域坐标中的任一者(重用缓冲器78不存储用于其的对应的分片坐标),控制器74可使域着色器76的具现化执行,且域着色器76可将经变换的坐标存储在重用缓冲器78中。接下来,连接性产生器可输出用于基元126A到126X的域坐标(即,用于第三对角线条带120中的基元的域坐标)。如上,对于基元126A到126X的这些域坐标中的任一者(重用缓冲器78不存储用于其的对应的分片坐标),控制器74可使域着色器76的具现化执行,且域着色器76可将经变换的坐标存储在重用缓冲器78中。
在第二操作模式中,连接性产生器72可按Z形方式输出基元的域坐标。举例来说,连接性产生器72可开始从域114的x轴开始输出第一对角线条带116的域坐标。接着,在一些实例中,连接性产生器72可从域114的x轴开始输出第二对角线条带118的域坐标。对于第三对角线条带120,连接性产生器72可再次从域114的x轴开始。此输出可形成Z形图案。
连接性产生器72可保持以此方式输出域坐标,直到连接性产生器72完成输出部分115C中的所有基元的域坐标。连接性产生器72可接着关于部分115A、115B和115D重复这些步骤。如图10中所说明,部分115C和部分115A、115B和115D共享许多顶点。在一些情况下,对应于用于由部分115C与部分115A、115B和115D中的每一者共享的这些顶点中的一些的域坐标的分片坐标不再在重用缓冲器78中可用可为可能的。对于顶点中的一些,控制器74可使域着色器76执行。然而,虽然域着色器76可能需要针对将这些共享的顶点的域坐标重新变换到分片坐标执行,但如与图3到5中说明的实例相比,本发明中描述的技术可仍减少域着色器76需要执行的总次数。
在图10的实例中,连接性产生器72从部分115C的右下角开始,且朝向部分115C的左上角向外延伸。此输出方案可被称作在x方向上的单一延行,这是因为连接性产生器72从域114的x轴开始。在x方向上的单一延行的另一实例可为连接性产生器72从部分115C的左下角开始且朝向部分115C的右上角向外延伸的情况。
然而,本发明的方面不限于在x方向上的单一延行。在一些其它实例中,点产生器70和连接性产生器72可实施在y方向上的单一延行,其中点产生器70和连接性产生器72从部分115C的左上角开始且向外延伸到部分115C的右下角,或从部分115C的右上角开始且向外延伸到部分115C的左下角。这些输出方案可被称作在y方向上的单一延行,这是因为点产生器70和连接性产生器72从域114的y轴开始。
处理单元(即,在此实例中的控制器74)可确定连接性产生器72将实施在x方向上的单一延行还是在y方向上的单一延行。例如,在第二操作模式中,f1/2+1小于或等于C-1。如果控制器74确定f1等于fx(即,fx小于或等于fy),那么控制器74可使连接性产生器72根据在x方向上的单一延行输出域坐标。如果控制器74确定f1等于fy(即,fy小于或等于fx),那么控制器74可使连接性产生器72根据在y方向上的单一延行输出域坐标。
图11为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。图11说明为三角域的域128。如所说明,点产生器70和连接性产生器72可将域128划分成三个部分130A到130C,这是因为处理单元(在此实例中的控制器74)可已确定f1/2+1小于或等于C-1(例如,点产生器70和连接性产生器72将实施第二操作模式)。在此实例中,f1可被简单地称作f,这是因为对于三角域,曲面细分单元66可接收指示驻留在环上的点的数目的一个曲面细分因子。
为了说明的目的,图11说明连接性产生器72输出用于部分130C中的基元的域坐标的方式。连接性产生器72可类似地输出在部分130A和130B内的基元的域坐标。此外,关于图8,连接性产生器72可类似地输出在部分100A内的基元的域坐标。
图11将部分130C说明为包含第一对角线条带132、第二对角线条带134和第三对角线条带136。在此实例中,第一对角线条带132与第二对角线条带134平行,且第二对角线条带134与第三对角线条带136平行。因此,第一对角线条带132也与第三对角线条带136平行。此外,第一对角线条带132中的基元的数目可不同于第二对角线条带134中的基元的数目,且第三对角线条带136中的基元的数目可不同于第一对角线条带132和第二对角线条带134中的基元的数目。
在此实例中,连接性产生器72可输出用于在第一对角线条带132中的基元的域坐标,且控制器74可针对其对应的分片坐标不存储在重用缓冲器78中的每一域坐标执行域着色器76的具现化。连接性产生器72可接着输出用于在第二对角线条带134中的基元的域坐标,且控制器74可针对其对应的分片坐标不存储在重用缓冲器78中的每一域坐标执行域着色器76的具现化。接下来,连接性产生器72可输出用于在第三对角线条带136中的基元的域坐标,且控制器74可针对其对应的分片坐标不存储在重用缓冲器78中的每一域坐标执行域着色器76的具现化。
连接性产生器72可保持以此方式输出域坐标,直到连接性产生器72到达部分130C中的最后一个基元。接着,连接性产生器72可按实质上类似方式输出在部分130A和130B中的基元的域坐标。
图12为说明根据本发明中所描述的一或多个实例的连接性产生器输出的域的相邻部分的另一实例的图。例如,图12说明相邻部分138。类似于图9,相邻部分138的基元由基元内的数字值识别,且指示连接性产生器72可输出域坐标的次序。例如,连接性产生器72可输出基元0、接着基元1、接着基元2等等的顶点的域坐标。在基元的顶点处的数值表示域坐标。
在图12中说明的实例中,fx等于10,且fy等于8。图12说明相邻部分的四分之一。例如,图12说明沿着x轴的五个区段和沿着y轴的四个区段,其中满的相邻部分包含沿着x轴的十个区段和沿着y轴的八个区段。并且,在图12中说明的实例中,假定重用缓冲器78的槽的数目为6(即,C等于6)。在此情况下,因为fy小于fx,所以处理单元(例如,控制器74和/或曲面细分单元66)可确定f1等于fy(即,fy等于8)。在此实例中,f1/2+1等于5,且C-1也等于5。因此,在此实例中,控制器74可确定f1/2+1小于或等于C-1,且可使点产生器70和连接性产生器72实施第二操作模式(即,单一延行)。
例如,连接性产生器72可输出在第一对角线条带内的基元的域坐标,所述基元可包含基元1、2和3。连接性产生器72可接着输出在第二对角线条带内的基元的域坐标,所述基元可包含基元4、5、6、7、和8。接着,连接性产生器72可输出在第三对角线条带内的基元的域坐标,所述基元可包含基元9、10、11、12、13、14和15。在此实例中,第一、第二和第三对角线条带中的每一者可包含不同数目个基元(即,分别为3个、5个和7个基元)。
此外,在此实例中,因为fy小于fx,所以点产生器70和连接性产生器72可实施在y方向上的单一延行。例如,第一对角线条带的基元1位置沿着相邻部分138的y轴,基元4(即,第二对角线条带的第一基元)位置沿着相邻部分138的y轴,且基元9(即,第三对角线条带的第一基元)位置沿着相邻部分138的y轴。
下表2说明用于相邻部分138的40个基元的重用高速缓冲存储器78的行为。在表2中,第一列指示基元,第二列指示域坐标,且第三列指示存储在重用缓冲器78中的分片坐标。为了易于说明,对分片坐标给以与其对应的域坐标相同的值。并且,在表2的第三列中,加粗且带下划线的分片坐标指示当域着色器76执行以将域坐标变换到分片坐标时的情况。
表2.
基元 | 域坐标 | 重用缓冲器78的6个槽中的分片坐标 |
0 | (3,9,4) | 3,9,4,x,x,x |
1 | (2,8,3) | 3,9,4,2,8,x |
2 | (3,8,9) | 3,9,4,2,8,x |
3 | (8,14,9) | 3,9,4,2,8,14 |
4 | (1,7,2) | 4,2,8,14,1,7 |
5 | (2,7,8) | 4,2,8,14,1,7 |
6 | (7,13,8) | 2,8,14,1,7,13 |
7 | (8,13,14) | 2,8,14,1,7,13 |
8 | (13,19,14) | 8,14,1,7,13,19 |
9 | (0,6,1) | 1,7,13,19,0,6 |
10 | (1,6,7) | 1,7,13,19,0,6 |
11 | (6,12,7) | 7,13,19,0,6,12 |
12 | (7,12,13) | 7,13,19,0,6,12 |
13 | (12,18,13) | 13,19,0,6,12,18 |
14 | (13,18,19) | 13,19,0,6,12,18 |
15 | (18,24,19) | 19,0,6,12,18,24 |
16 | (0,5,6) | 0,6,12,18,24,5 |
17 | (5,11,6) | 6,12,18,24,5,11 |
18 | (6,11,12) | 6,12,18,24,5,11 |
19 | (11,17,12) | 12,18,24,5,11,17 |
20 | (12,17,18) | 12,18,24,5,11,17 |
21 | (17,23,18) | 18,24,5,11,17,23 |
22 | (18,23,24) | 18,24,5,11,17,23 |
23 | (23,29,24) | 24,5,11,17,23,29 |
24 | (5,10,11) | 5,11,17,23,29,10 |
25 | (10,16,11) | 11,17,23,29,10,16 |
26 | (11,16,17) | 11,17,23,29,10,16 |
27 | (16,22,17) | 17,23,29,10,16,22 |
28 | (17,22,23) | 17,23,29,10,16,22 |
29 | (22,28,23) | 23,29,10,16,22,28 |
30 | (23,28,29) | 23,29,10,16,22,28 |
31 | (10,15,16) | 29,10,16,22,28,15 |
32 | (15,21,16) | 10,16,22,28,15,21 |
33 | (16,21,22) | 10,16,22,28,15,21 |
34 | (21,27,22) | 16,22,28,15,21,27 |
35 | (22,27,28) | 16,22,28,15,21,27 |
36 | (15,20,21) | 22,28,15,21,27,20 |
37 | (20,26,21) | 28,15,21,27,20,26 |
38 | (21,26,27) | 28,15,21,27,20,26 |
39 | (20,25,26) | 15,21,27,20,26,25 |
在表2中,对于基元0,控制器74可使域着色器76的三个具现化执行以将基元0的域坐标变换到分片坐标。基元1与基元0共享一个顶点(即,具有域坐标3的顶点)。在此情况下,对于基元1,控制器74可使域着色器76的两个具现化执行:一个针对域坐标2,且一个针对域坐标8。因为对应于域坐标3的分片坐标已存储在重用缓冲器78中,所以控制器74可不引起用于域坐标3的域着色器的具现化。
如表2中所说明,在基元3后,重用缓冲器78满了。在此情况下,在连接性产生器72输出基元4的域坐标后,控制器74可确定域着色器76的两个具现化需要执行:一个针对基元4的域坐标1,且一个针对基元4的域坐标7。因此,重用缓冲器78可去除最早存储的分片坐标(其为分片坐标3和9),以释放存储空间以用于分片坐标1和7。
作为实例,表2指示有效率地利用重用缓冲器78以使针对第二操作模式的域着色器76的执行最少化的方式。例如,充分利用所有共享的顶点(例如,无附加高速缓冲未命中)。举例来说,类似于表1中的实例,对应于顶点的域坐标的分片坐标保持存储在重用缓冲器中,直到连接性产生器72输出用于共享那个顶点的基元中的多数的域坐标。此可使域着色器76需要执行的次数最少化。
以上实例说明第一操作模式和第二操作模式。然而,在一些实例中,点产生器70和连接性产生器72可能需要实施第三操作模式。例如,f1/2+1≤C-1可重写为f1+2≤2*(C-1)。如果f1的大小过大,或C的大小过小,那么可存在f1+2不小于或等于2*(C-1)的情况。在这些情况下,f1+1也可不小于或等于C-2。在这些情况下,点产生器70和连接性产生器72将四域划分成四联体或将三角域划分成三联体且在这些四联体或三联体中的每一者中实施单一延行使得再使用共享的顶点中的每一者可能并不可能。
在此情况下(即,当f1+2大于2*(C-1)时),连接性点产生器70和产生器72可实施第三操作模式。第三操作模式可为第一操作模式与第二操作模式的组合。例如,当处理单元(例如,控制器74和/或曲面细分单元66)确定f1+2大于2*(C-1)时,作为处理单元的实例,控制器74可使点产生器70和连接性产生器72将四域划分成多于四联体,且可使点产生器70和连接性产生器72将三角域划分成多于三联体。连接性产生器72可接着对多个部分中的第一集合实施第一操作模式(例如,单一延行,且对多个部分中的第二集合实施第二操作模式(例如,接合延行)。
图13为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。图13说明为四域的域140。在此实例中,控制器74可已确定f1+2大于2*(C-1),且可使连接性产生器72实施第三操作模式。例如,连接性产生器72可将四域140划分成多于四个部分。如所说明,连接性产生器72可将四域140划分成六个部分142A到142F。在此实例中,控制器74可使连接性产生器72对部分142A、142B、142E和142F中的每一者实施单一延行(即,第一操作模式)。控制器74可使连接性产生器72跨部分142C和142D实施接合延行(即,第二操作模式)。换句话说,控制器74可将部分142C和142D组合成接合部分,且使连接性产生器72跨接合部分实施接合延行。
例如,连接性产生器72可输出在第一、第二和第三对角线条带内的基元的域坐标,其中对角线条带在部分142A内。在此实例中,第一、第二和第三对角线条带可相互平行。对于跨组合的部分142C与142D的接合延行,连接性产生器可输出在第四、第五和第六对角线条带内的域坐标,其中所述对角线条带在组合的部分142C与142D内。在此实例中,第五对角线条带可与第四对角线条带相切,且第六对角线条带可与第四对角线条带平行。
在一些实例中,曲面细分单元66可已使用具有偶数曲面细分因子的均匀曲面细分来曲面细分图7、8、10和11中说明的实例域。均匀曲面细分意味着沿着环存在相等数目个点(即,顶点)。并且,在图7中说明的实例中,曲面细分因子为fx等于18且fy等于6(其中的两者都为偶数曲面细分因子),且在图10中说明的实例中,曲面细分因子为fx等于10且fy等于8(其中的两者都为偶数曲面细分因子)。偶数曲面细分因子导致跨域的边缘的中途点的镜射。
然而,并非所有域都可使用均匀曲面细分或通过偶数曲面细分因子来曲面细分。下文描述不使用均匀曲面细分来曲面细分域的少数实例,和曲面细分因子为偶数和奇数和两者都是奇数的实例。
对于具有奇数曲面细分因子的均匀曲面细分,连接性产生器72划分域的方式可稍不同于偶数曲面细分因子的实例。然而,连接性产生器72输出基元的域坐标的次序可相同。
图14A和14B为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的实例技术的图。图14A说明域144A,且图14B说明域144B。域144A和域144B各为四域。如所说明,曲面细分单元66可已用一个偶数曲面细分因子和一个奇数曲面细分因子曲面细分域144A和域144B。偶数曲面细分因子可为fy,这是因为沿着域144A和域144B的y轴存在八个区段。奇数曲面细分因子可为fx,这是因为沿着域144A和域144B存在五个区段。为了说明的目的,图14A和14B分别说明连接性产生器72输出用于相邻部分146A和相邻部分146B内的基元的域坐标的方式。
在图14A中说明的实例中,处理单元(例如,控制器74和/或曲面细分单元66)可已确定f1/2+1小于或等于C-2,且可使点产生器70和连接性产生器72实施第二操作模式(即,单一延行)。例如,连接性产生器72可输出用于在第一对角线条带148、接着第二对角线条带150且然后第三对角线条带152内的基元的域坐标。如所说明,第一对角线条带148与第二对角线条带150(其与第三对角线条带152平行)平行。因此,第一对角线条带148、第二对角线条带150与第三对角线条带152为各相互平行。并且,第一对角线条带148、第二对角线条带150和第三对角线条带152中的基元的数目不同。
在图14B中说明的实例中,处理单元(例如,控制器74和/或曲面细分单元66)可已确定f1+1小于或等于C-2,且可使点产生器70和连接性产生器72实施第一操作模式(即,接合延行)。例如,连接性产生器72可输出用于在第一对角线条带154、接着第二对角线条带156且然后第三对角线条带158内的基元的域坐标。如所说明,第二对角线条带156与第一对角线条带154相切。第三对角线条带158与第一对角线条带154平行,且不与第二对角线条带156平行。并且,第一对角线条带154与第二对角线条带156中的基元的数目相同,且与第三对角线条带158中的基元的数目不同。
图15A和15B为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的实例技术的图。图15A说明域160A,且图15B说明域160B。域160A和域160B各为四域。如所说明,曲面细分单元66可已用奇数曲面细分因子(即,fx和fy都是奇数)曲面细分域160A和域160B。为了说明的目的,图15A和15B分别说明连接性产生器72输出用于在相邻部分162A和相邻部分162B内的基元的域坐标的方式。
在图15A中说明的实例中,处理单元(例如,控制器74和/或曲面细分单元66)可已确定f1/2+1小于或等于C-2,且可使点产生器70和连接性产生器72实施第二操作模式(即,单一延行)。例如,连接性产生器72可输出用于第一对角线条带164、接着第二对角线条带166且然后第三对角线条带168内的基元的域坐标。在图15B中说明的实例中,处理单元(例如,控制器74和/或曲面细分单元66)可已确定f1+1小于或等于C-2,且可使点产生器70和连接性产生器72实施第一操作模式(即,接合延行)。例如,连接性产生器72可输出用于在第一对角线条带170、接着第二对角线条带172且然后第三对角线条带174内的基元的域坐标。
在图15A中说明的实例中,在连接性产生器72输出用于相邻部分的域坐标后,可存在其域坐标尚未经输出的一些剩余基元。举例来说,在图15A中,形成域160A的中心的两个三角形可不由相邻部分涵盖。在这些实例中,连接性产生器72可输出其余基元(例如,形成域160A的中心的三角形)的域坐标。
图16A和16B为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的实例技术的图。图16A说明域176A,且图16B说明域176B。域176A和域176B各为三角域。如所说明,曲面细分单元66可已用奇数曲面细分因子(即,f为奇数)曲面细分域160A和域160B。为了说明的目的,图16A和16B分别说明连接性产生器72输出用于在相邻部分178A和相邻部分178B内的基元的域坐标的方式。
在图16A中说明的实例中,控制器74(作为处理单元的一个实例)可已确定f1/2+1小于或等于C-2,且可使点产生器70和连接性产生器72实施第二操作模式(即,单一延行)。例如,连接性产生器72可输出用于在第一对角线条带180、接着第二对角线条带182且然后第三对角线条带184内的基元的域坐标。在图16B中说明的实例中,控制器74可已确定f1+1小于或等于C-2,且可使连接性产生器72实施第一操作模式(即,接合延行)。例如,连接性产生器72可输出用于在第一对角线条带186、接着第二对角线条带188且然后第三对角线条带190内的基元的域坐标。
类似于图15B,在连接性产生器72输出用于相邻部分的域坐标后,在图16A和16B中可存在其域坐标尚未经输出的剩余基元。举例来说,在图16A和16B中,分别形成域176A和176B的中心的三角形可不由相邻部分涵盖。在这些实例中,连接性产生器72可输出其余基元(例如,形成域176A和176B的中心的三角形)的域坐标。
以上实例描述连接性产生器72输出在域的相邻部分内的基元的域坐标的方式,其中曲面细分单元66按均匀曲面细分和偶数曲面细分因子、偶数与奇数曲面细分因子和奇数曲面细分因子曲面细分域。以下描述连接性产生器72输出用于不均匀曲面细分的域的基元的域坐标的方式。在不均匀曲面细分域中,曲面细分单元66可利用不均匀曲面细分曲面细分域的部分,且可利用均匀曲面细分曲面细分域的其它部分。
举例来说,对于四域,可存在一共六个曲面细分因子。六个曲面细分因子中的四个可分别定义沿着四域的四个侧中的每一者的区段的数目。这四个曲面细分因子可不相同,从而导致不均匀曲面细分。其余两个曲面细分因子可定义沿着四域内的环的x轴和y轴的区段的数目,从而导致四域内的均匀曲面细分。
对于三角域,可存在一共四个曲面细分因子。四个曲面细分因子中的三个可分别定义沿着三角域的三个侧中的每一者的区段的数目。这三个曲面细分因子可不相同,从而导致不均匀曲面细分。其余曲面细分因子可定义用于三角域内的三角形环的区段的数目,从而导致三角域内的均匀曲面细分。
例如,不均匀曲面细分指当在外环的一或多个侧上的顶点的数目不同时的情况。在不均匀曲面细分的实例中,如果用于均匀部分的曲面细分因子为fx和fy,那么曲面细分单元66的设置单元68可确定Fx和Fy的值,其中fx等于Fx-2.0,且fy等于Fy-2.0。
在曲面细分单元66利用不均匀曲面细分和均匀曲面细分两者曲面细分域的实例中,控制器74可使点产生器70和连接性产生器72对域的经均匀曲面细分部分实施第一、第二或第三操作模式。在本发明中描述的技术中,点产生器70和连接性产生器72输出域的不均匀部分内的基元的域坐标的方式可通常不重要。
图17为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。例如,图17说明为三角域的域192。在图17中说明的实例中,曲面细分单元66可已使用不均匀曲面细分来曲面细分部分194,且可已使用均匀曲面细分来曲面细分由部分196A、196B和196C涵盖的域192的区域。例如,在部分194中,沿着域192的三个边界中的每一者驻留的顶点的数目不同,因此为不均匀曲面细分。在域192的其余部分(即,部分196A、196B和196C)中,沿着边界中的每一者驻留的顶点的数目相同,因此为均匀曲面细分。
根据本发明中描述的技术,控制器74(处理单元的一个实例)可使点产生器70和连接性产生器72基于f1和C的值对部分196A、196B和196C实施第一、第二或第三操作模式。点产生器70和连接性产生器72可实施任何现有技术或尚待开发的技术以输出部分194内的基元的域坐标。如所说明,部分194可为域192的外环。
图18为说明根据本发明中所描述的一或多个实例的输出在域的相邻部分中的基元的顶点的域坐标的另一实例技术的图。例如,图18说明为四域的域198。在图18中说明的实例中,曲面细分单元66可已使用不均匀曲面细分来曲面细分部分200,且可已使用均匀曲面细分来曲面细分由部分202A到202D涵盖的域198的区域。例如,在部分200中,沿着域198的四个边界中的至少两个驻留的顶点的数目不同,且因此在此情况下的曲面细分可被称作不均匀曲面细分。在域198的其余部分(即,部分202A到202D)中,沿着边界中的每一者驻留的顶点的数目相同,因此为均匀曲面细分。
根据本发明中描述的技术,处理单元(例如,控制器74)可使点产生器70和连接性产生器72基于f1和C的值对部分202A到202D实施第一、第二或第三操作模式。点产生器70和连接性产生器72可实施任何现有技术或尚待开发的技术以输出部分200内的基元的域坐标。
图19为说明根据本发明所描述的一或多个实例的实例操作的流程图。仅为了说明的目的,对图6进行参看。此外,将技术中的许多者描述为由控制器74执行。然而,此描述是出于说明的目的而提供且不应被视为限制性。在其它实例中,曲面细分单元66可经配置以实施关于控制器74描述的功能,或某一其它硬件或软件单元可经配置以实施控制器74的技术。因此,图19中说明的技术是关于处理单元来描述的,所述处理单元的实例包含控制器74和/或曲面细分单元66。
曲面细分单元66可接收且处理用于域的曲面细分因子(204)。例如,设置单元68可接收用于四域的fx和fy曲面细分因子,或用于三角域的f曲面细分因子,其中这些曲面细分因子指示沿着域的每一环的区段的数目。例如,点产生器70可基于这些曲面细分因子分割域内的每一环,且每一区段的端点可为用于一或多个基元的顶点。此外,设置单元68可基于待曲面细分域的方式将fx和fy舍到整数,将fx和fy舍到奇数整数,将fx和fy舍到偶数整数,或将fx和fy舍到2n(即,二进整数)。
此外,如果接收到的曲面细分因子指示将使用均匀曲面细分和不均匀曲面细分来曲面细分域,那么曲面细分单元66可对所述域的经均匀曲面细分部分实施图19中说明的实例技术。对于所述域的经不均匀曲面细分部分(例如,域的外环),曲面细分单元66可利用任何技术输出域的经不均匀曲面细分部分的域坐标。举例来说,对于经不均匀曲面细分部分,曲面细分单元66可以图3到5中说明的方式(即,以不相邻的环方式)输出域坐标。
处理单元可确定f1+1是否小于或等于C-2(206)。如果处理单元确定f1+1小于或等于C-2(206的是),那么处理单元可使曲面细分单元66经由点产生器70和连接性产生器72实施第一操作模式。
例如,处理单元可确定域是否为四域(208)。如果域为四域(208的是),那么处理单元可确定fx是否小于或等于fy(212)。如果fx小于或等于fy(212的是),那么处理单元可使曲面细分单元66经由点产生器70和连接性产生器72实施在x方向上的接合延行(214)。例如,点产生器70和连接性产生器72可将四域划分成两个部分,其中所述部分中的一者为相邻部分,且可根据在x方向上的接合延行技术输出相邻部分内的基元的域坐标。
如果fx不小于或等于fy(212的否),那么处理单元可使曲面细分单元66经由点产生器70和连接性产生器72实施在y方向上的接合延行(216)。例如,连接性产生器72可将四域划分成两个部分,其中所述部分中的一者为相邻部分,且可根据在y方向上的接合延行技术输出相邻部分内的基元的域坐标。
如果所述域并非四域(208的否),那么处理单元可使曲面细分单元经由点产生器70和连接性产生器72对三角域实施接合延行(210)。例如,连接性产生器72可将三角域划分成三分之一部分和三分之二部分,其中至少三分之二部分为相邻部分。连接性产生器72可根据接合延行技术输出在相邻三分之二部分内的基元的域坐标。
如果处理单元确定f1+1不小于或等于C-2(206的否),那么处理单元可确定f1/2+1是否小于或等于C-1(218)。如果处理单元确定f1/2+1小于或等于C-2(218的是),那么处理单元74可使曲面细分单元66经由点产生器70和连接性产生器72实施第二操作模式。
处理单元可确定域是否为四域(220)。如果域为四域(220的是),那么处理单元可确定fx是否小于或等于fy(224)。如果fx小于或等于fy(224的是),那么处理单元可使曲面细分单元66经由点产生器70和连接性产生器72实施在x方向上的单一延行(226)。例如,连接性产生器72可将四域划分成四个部分,其中所述四个部分中的一者为相邻部分,且可根据在x方向上的单一延行技术输出相邻部分内的基元的域坐标。
如果fx不小于或等于fy(224的否),那么处理单元可使曲面细分单元66经由点产生器70和连接性产生器72实施在y方向上的单一延行(228)。例如,连接性产生器72可将四域划分成四个部分,其中所述部分中的一者为相邻部分,且可根据在y方向上的单一延行技术输出相邻部分内的基元的域坐标。
如果所述域并非四域(220的否),那么处理单元可使曲面细分单元66经由点产生器70和连接性产生器72对三角域实施单一延行(222)。例如,连接性产生器72可将三角域划分成三个部分,其中至少一个部分为相邻部分。连接性产生器72可根据单一延行技术输出在相邻部分内的基元的域坐标。
如果处理单元确定f1/2+1不小于C-1(218的否),那么处理单元可使点产生器70和连接性产生器72实施第三操作模式。例如,处理单元可使连接性产生器72实施单一延行技术和接合延行技术两者(230)。举例来说,在第三操作模式中,连接性产生器72可将四域划分成多于四个部分,且可将三角域划分成多于三个部分。在此实例中,对于四域,连接性产生器72可对所述部分中的四个实施单一延行技术,且可对其它部分实施接合延行技术。对于三角域,连接性产生器72可对所述部分中的三个实施单一延行技术,且可对其它部分实施接合延行技术。
在图19的实例中,连接性产生器72可实施在x方向上的单一延行、在y方向上的单一延行、在x方向上的接合延行和在y方向上的接合延行。在一些实例中,在x方向或y方向上的延行可基于两个曲面细分因子中的较小者。例如,处理单元可确定第一曲面细分因子小于或等于第二曲面细分因子。当输出在第一、第二和第三对角线条带内的基元的域坐标时,连接性产生器74可从对应于第一曲面细分因子的域的轴线开始且向外延伸。
举例来说,如果fx小于fy,那么当输出在第一、第二和第三对角线条带内的基元的域坐标时,连接性产生器74从域的x轴开始且向外延伸。如果fy小于fx,那么当输出在第一、第二和第三对角线条带内的基元的域坐标时,连接性产生器74从域的y轴开始且向外延伸。
一般来说,根据图19中说明的实例,处理单元可至少基于重用缓冲器78中的存储槽的数目从多个不同操作模式选择一操作模式,其中所述不同操作模式中的每一者指示连接性产生器72输出在域的相邻部分内的基元的域坐标的不同方式。多个不同操作模式的实例包含第一、第二和第三操作模式。处理单元可至少基于重用缓冲器的存储能力选择操作模式。处理单元可接着使连接性产生器72基于选定操作模式输出在域的相邻部分内的基元的域坐标。
例如,如果至少一个曲面细分因子加一小于或等于重用缓冲器78中的存储槽的数目减二,那么处理单元可使连接性产生器72根据第一操作模式输出域坐标。如果至少一个曲面细分因子加一不小于或等于重用缓冲器78中的存储槽的数目减二,且至少一个曲面细分因子除以二再加一小于或等于重用缓冲器78中的存储槽的数目减一,那么处理单元可使连接性产生器72根据第二操作模式输出域坐标。如果至少一个曲面细分因子除以二再加一不小于或等于重用缓冲器78中的存储槽的数目减一,那么处理单元可使连接性产生器72根据第三操作模式输出域坐标。第三操作模式可被视为恰不同于第一操作模式和第二操作模式,这是因为第三操作模式为第一操作模式与第二操作模式的组合。
以下伪码进一步说明根据本发明的实例技术。
1. If非均匀曲面细分;
处理外环;
endIf
If四域
继续到步骤2用于均匀曲面细分
else//三角域
继续到步骤3用于均匀曲面细分
endIf
2. //四域
将域划分成四联体
If fx+1≤C-2,(fx≤fy)
基于偶数/奇数曲面细分因子处理x方向上的接合延行
elseIf fy+1≤C-2,(fy≤fx)
基于偶数/奇数因子处理y方向上的接合延行
elseIf fx/2+1≤C-1,(fx≤fy)
处理x方向上的单一延行
elseIf fy/2+1≤C-1,(fy≤fx)
处理y方向上的单一延行
else
在每一四联体中添加分割区
处理单一延行和接合延行
endIf
exit
3. //三角域
将域划分成三联体
If f+1≤C-2
基于偶数/奇数因子处理x方向上的接合延行
elseIf f/2+1≤C-1
处理单一延行
else
在每一三联体中添加分割区
处理单一延行和接合延行
endIf
exit
图20为说明根据本发明中所描述的一或多个实例技术的实例操作的另一流程图。仅为了说明的目的,关于图6来描述所述技术。
点产生器70和连接性产生器72可将域划分成多个部分(231)。所述部分中的至少一者为相邻部分。如果在第一操作模式中操作,那么点产生器70和连接性产生器72可将四域划分成两个相等部分,且可将三角域划分成两个部分,其中一个部分为域的三分之一,且另一部分为域的三分之二。如果在第二操作模式中操作,那么点产生器70和连接性产生器72可将四域划分成多于部分,且可将三角域划分成三个部分。如果在第三操作模式中操作,那么点产生器70和连接性产生器72可将四域划分成多于四个部分,且可将三角域划分成多于三个部分。
连接性产生器72可输出在相邻部分内的第一对角线条带中基元的域坐标(232)。连接性产生器72可接着输出在相邻部分内的第二对角线条带中基元的域坐标(234)。连接性产生器72可接着输出在相邻部分内的第三对角线条带中基元的域坐标(236)。
第二对角线条带可呈以下中的一者:与第一对角线条带平行,或与第一对角线条带相切。第三对角线条带可与第一对角线条带平行。在第二对角线条带与第一对角线条带平行的实例中,第三对角线条带可与第二对角线条带平行。在第二对角线条带与第一对角线条带相切的实例中,第三对角线条带可不与第二对角线条带平行。
在第二对角线条带与第一对角线条带相切的实例中,第一对角线条带中的基元的数目可与第二对角线条带中的基元的数目相同。在第二对角线条带与第一对角线条带平行的实例中,第一对角线条带中的基元的数目可不同于第二对角线条带中的基元的数目。在任一情况下,第三对角线条带中的基元的数目可不同于第一和第二对角线条带中的基元的数目。
图21到27为说明通过实施本发明中描述的一或多个实例技术和实施一或多个其它技术达成的结果的比较的曲线图。例如,本发明中描述的技术可通过有效地确保对应于共享的顶点的域坐标的分片坐标保持在重用缓冲器78中而导致比一些其它技术快地完成曲面细分的图形管线。如与一些其它技术相比,本发明中描述的技术可显著减小附加未命中率(即,减小高速缓冲未命中的比率)。高速缓冲未命中的比率控制器74需要针对先前从域坐标变换到分片坐标的顶点执行域着色器76的比率。
在以下实例中,重用缓冲器78中的存储槽的数目为32个槽。曲面细分因子范围从1.0到64.0。一般来说,对于均匀曲面细分,以上关于图3和4描述的技术导致几乎100%未命中率。以上关于图5描述的技术导致大约45%未命中率。以上关于图6到20描述的技术导致大约5%未命中率。使未命中率最小化可为有益的,这是因为其导致域着色器76的较少具现化。域着色器76的执行可为时间和处理广泛性,且因此,域着色器76的最少化的执行可为有益的。
图21说明根据本发明针对四域上的均匀曲面细分描述的一或多个技术的非充分再使用的顶点的未命中率。x轴和y轴是针对曲面细分因子(例如,fx和fy),且z轴指示未命中率。在此实例中,当曲面细分因子小且相邻部分的所有分片坐标可配合在重用缓冲器78内时,未命中率为零。对于曲面细分因子的一些小值,未命中率可上升到大致0.16(即,大致16%)。然而,未命中率接着实质上下降,且停留在2%到5%的未命中率内。甚至当未命中率为16%时,本发明中描述的技术可仍提供比一些其它技术(例如,在图22和23中说明的技术)低得多的未命中率。
图22说明根据针对四域上的均匀曲面细分关于图4描述的一或多个技术的非充分再使用的顶点的未命中率。x轴和y轴是针对曲面细分因子(例如,fx和fy),且z轴指示未命中率。在此实例中,当曲面细分因子小且相邻部分的所有分片坐标可配合在重用缓冲器78内时,未命中率为零。然而,对于大曲面细分因子(例如,fx和fy等于64),图22说明未命中率为大致一(即,大致100%)。
图23说明根据针对四域上的均匀曲面细分关于图5描述的一或多个技术的非充分再使用的顶点的未命中。x轴和y轴是针对曲面细分因子(例如,fx和fy),且z轴指示未命中率。在此实例中,当曲面细分因子小且相邻部分的所有分片坐标可配合在重用缓冲器78内时,未命中率为零。然而,对于大曲面细分因子(例如,fx和fy等于64),图23说明未命中率为大致0.45(即,大致45%)。此外,如果在曲面细分因子之间存在大的差(例如,fx>>fy,或反之亦然),那么图23将未命中率说明为上升高达大致0.55(即,大致55%)。
图24到27说明以上针对四域关于图3、图4和图6到20描述的技术之间的未命中率之间的比较。在图24中,两个曲面细分因子彼此相等且在(1.0-64.0)的范围中。在图25中,一个曲面细分因子等于5.0,且另一曲面细分因子在(1.0-64.0)的范围中。在图26中,一个曲面细分因子等于25.0,且另一曲面细分因子在(1.0-64.0)的范围中。在图27中,一个曲面细分因子等于50.0,且另一曲面细分因子在(1.0-64.0)的范围中。
图24的线238、图25的线244、图26的线250和图27的线256说明当连接性产生器72根据本发明中描述的技术输出基元的域坐标时的未命中率。如由这些线说明,未命中率非常低,且接近0%。图24的线242、图25的线246、图26的线252和图27的线258说明当不同于连接性产生器72的连接性产生器根据以上关于图5描述的技术输出基元的域坐标时的未命中率。如由这些线说明,未命中率比当连接性产生器72实施本发明中描述的一或多个实例技术时的未命中率大得多。图24的线240、图25的线248、图26的线254和图27的线260说明当不同于连接性产生器72的连接性产生器根据以上关于图4描述的技术输出基元的域坐标时的未命中率。如由这些线说明,未命中率比当连接性产生器72实施本发明中描述的一或多个实例技术时的未命中率大得多,且也大于当不同于连接性产生器72的连接性产生器实施图5中说明的技术时。
图28为说明包含如图1和2中展示的GPU的装置的框图。例如,图28进一步说明装置10。装置28的实例包含(但不限于)无线装置、移动电话(例如,所谓的智能电话)、个人数字助理(PDA)、包含视频显示器的视频游戏控制台、移动视频会议单元、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器和类似者。装置10可包含图形处理单元(GPU)12、系统存储器14、处理器16、显示器262、用户接口264和收发器模块266。装置10可包含为了清晰起见未在图28中展示的额外模块或单元。例如,装置10可包含扬声器和麦克风(其皆未在图28中展示)以在装置10为移动无线电话的实例中实现电话通信,或另外处理语音输入或发射声音。此外,装置10中展示的各种模块和单元可并不在装置10的每一实例中都是必要的。例如,地装置10为桌上型计算机的实例中,用户接口264和显示器262可在装置10外部。作为另一实例,在显示器262为移动装置的触敏或存在敏感显示器的实例中,显示器262可为用户接口264的部分。
图28的GPU 12、系统存储器14和处理器16可类似于图1和2的GPU 12、系统存储器14和处理器16。用户接口264的实例包含(但不限于)跟踪球、鼠标、键盘和其它类型的输入装置。用户接口264也可为触摸屏且可并入作为显示器262的一部分。收发器模块266可包含允许装置10与另一装置或网络之间的无线或有线通信的电路。收发器模块266可包含调制器、解调器、放大器和用于有线或无线通讯的其它此电路。显示器262可包括液晶显示器(LCD)、阴极射线管(CRT)显示器、等离子显示器、触敏显示器、存在敏感显示器或另一类型的显示装置。
在一或多个实例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么可将所述功能作为一或多个指令或代码存储在计算机可读媒体上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。借助于实例而非限制,此类计算机可读媒体可包括随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储器或其它磁性存储装置或可用以存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上文各者的组合也应包含在计算机可读媒体的范围内。
代码可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任何其它结构中的任一者。并且,可将所述技术完全实施于一或多个电路或逻辑元件中。
本发明的技术可在广泛多种装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元以强调经配置以执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。相反地,如上所述,各种单元可结合合适的软件和/或固件组合在硬件单元中,或通过互操作硬件单元的集合来提供,所述硬件单元包含如上所述的一或多个处理器。
已描述各种实例。这些和其它实例在以下权利要求书的范围内。
Claims (25)
1.一种用于曲面细分的方法,所述方法包括:
用曲面细分单元将域划分成多个部分,其中所述部分中的至少一者为相邻部分;
用所述曲面细分单元输出在处于所述相邻部分内的第一对角线条带内的多个基元的域坐标,其中在所述第一对角线条带内的至少两个基元不共享任一顶点;
用所述曲面细分单元输出在处于所述相邻部分内的第二对角线条带内的多个基元的域坐标,其中所述第二对角线条带呈以下中的一者:与所述第一对角线条带平行或与所述第一对角线条带相切,其中在所述第二对角线条带内的至少两个基元不共享任一顶点,其中当所述第二对角线条带平行于所述第一对角线条带时,所述第一对角线条带和所述第二对角线条带从所述域的同一轴线开始、且在相同方向上向外延伸,其中当所述第二对角线条带与所述第一对角线条带相切时,所述第二对角线条带包含与所述第一对角线条带的一个基元共享两个顶点的一个基元,所述第二对角线条带内的其余基元中无一者与所述第一对角线条带内的任何其余基元共享两个顶点,且所述第二对角线条带内的至少一个基元和所述第一对角线条带内的基元的任一者不共享任一顶点;以及
用所述曲面细分单元输出在处于所述相邻部分内的第三对角线条带内的多个基元的域坐标,其中在所述第三对角线条带内的至少两个基元不共享任一顶点,其中所述第三对角线条带与至少所述第一对角线条带平行、从与所述第一对角线条带相同的轴线开始并在与所述第一对角线条带相同的方向上向外延伸,且其中在所述第三对角线条带内的基元的数目不同于在所述第一对角线条带和所述第二对角线条带内的基元的数目。
2.根据权利要求1所述的方法,其进一步包括:
至少部分基于在重用缓冲器内的存储槽的数目从多个不同操作模式选择操作模式,
其中所述不同操作模式中的每一模式指示输出所述域的所述相邻部分内的所述域坐标的不同方式,且
其中划分所述域包括基于所述选定操作模式划分所述域。
3.根据权利要求1所述的方法,其进一步包括:
确定至少一个曲面细分因子加一是否小于或等于重用缓冲器中的存储槽的数目减二,
其中当所述域为四域时,所述至少一个曲面细分因子小于或等于所述四域的另一曲面细分因子,
其中划分所述域包括当所述至少一个曲面细分因子加一小于或等于所述重用缓冲器中的存储槽的所述数目减二时,将所述域划分成两个部分,且
其中输出在所述第二对角线条带内的基元的所述域坐标包括当所述至少一个曲面细分因子加一小于或等于所述重用缓冲器中的存储槽的所述数目减二时,输出在与所述第一对角线条带相切的所述第二对角线条带内的基元的所述域坐标。
4.根据权利要求3所述的方法,其进一步包括:
输出在第四对角线条带内的基元的域坐标;以及
输出在第五对角线条带内的基元的域坐标,
其中所述第五对角线条带为所述第四对角线条带的镜面相对物。
5.根据权利要求3所述的方法,
其中当所述域为所述四域时,将所述域划分成两个部分包括将所述域划分成两半,
其中当所述域为三角域时,将所述域划分成两个部分包括将所述域划分成三分之一部分和三分之二部分,且
其中所述三分之二部分包括所述相邻部分。
6.根据权利要求1所述的方法,其进一步包括:
确定至少一个曲面细分因子除以二再加一是否小于或等于重用缓冲器中的存储槽的数目减一,
其中当所述域为四域时,所述至少一个曲面细分因子小于或等于所述四域的另一曲面细分因子,
其中划分所述域包括当所述域为所述四域时且当所述至少一个曲面细分因子除以二再加一小于或等于所述重用缓冲器中的存储槽的所述数目减一时,将所述域划分成四个部分,
其中划分所述域包括当所述域为三角域且当所述至少一个曲面细分因子除以二再加一小于或等于所述重用缓冲器中的存储槽的所述数目减一时,将所述域划分成三个部分,且
其中输出在所述第二对角线条带内的基元的所述域坐标包括当所述至少一个曲面细分因子除以二再加一小于或等于所述重用缓冲器中的存储槽的所述数目减一时,输出在与所述第一对角线条带平行的所述第二对角线条带内的基元的所述域坐标。
7.根据权利要求1所述的方法,其进一步包括:
确定第一曲面细分因子小于或等于第二曲面细分因子,
其中输出在所述第一对角线条带内的所述基元的所述域坐标,输出在所述第二对角线条带内的所述基元的所述域坐标和输出在所述第三对角线条带内的所述基元的所述域坐标包括从对应于所述第一曲面细分因子的所述域的轴线开始输出且向外延伸。
8.根据权利要求1所述的方法,其进一步包括:
确定至少一个曲面细分因子除以二再加一是否大于重用缓冲器中的存储槽的数目减一,
其中当所述域为四域时,所述至少一个曲面细分因子小于或等于所述四域的另一曲面细分因子,
其中当所述至少一个曲面细分因子除以二再加一大于所述重用缓冲器中的存储槽的所述数目减一时:
输出在所述第一对角线条带内的基元的域坐标包括输出在处于第一相邻部分内的所述第一对角线条带内的基元的域坐标;
输出在所述第二对角线条带内的基元的域坐标包括输出在与所述第一对角线条带平行且处于所述第一相邻部分内的所述第二对角线条带内的基元的域坐标;以及
输出在所述第三对角线条带内的基元的域坐标包括输出在处于所述第一相邻部分内的所述第三对角线条带内的基元的域坐标,
所述方法进一步包括:
输出在处于第二相邻部分内的第四对角线条带内的基元的域坐标;
输出在处于所述第二相邻部分内的第五对角线条带内的基元的域坐标,其中所述第五对角线条带与所述第四对角线条带相切;以及
输出在处于所述第二相邻部分内的第六对角线条带内的基元的域坐标,其中所述第六对角线条带与所述第一对角线条带平行。
9.根据权利要求1所述的方法,其进一步包括:
确定所述域的第一部分经不均匀曲面细分;以及
确定所述域的第二部分经均匀曲面细分,
其中将所述域划分成所述多个部分包括将所述域的所述第二部分划分成所述多个部分。
10.根据权利要求9所述的方法,其中所述域的所述第一部分包括所述域的外环,且所述方法进一步包括:
输出在所述域的所述外环内的基元的域坐标。
11.根据权利要求1所述的方法,其进一步包括:
接收用于在所述第一、第二和第三对角线条带内的所述基元的所述域坐标;
确定重用缓冲器是否存储对应于用于在所述第一、第二和第三对角线条带内的所述基元的所述域坐标的分片坐标;以及
基于所述重用缓冲器是否存储对应于用于在所述第一、第二和第三对角线条带内的所述基元的所述域坐标的所述分片坐标的所述确定执行着色器的一或多个具现化。
12.一种装置,其包括:
图形处理单元GPU,其包括曲面细分单元,所述曲面细分单元经配置以:
将域划分成多个部分,其中所述部分中的至少一者为相邻部分;
输出在处于所述相邻部分内的第一对角线条带内的多个基元的域坐标,其中在所述第一对角线条带内的至少两个基元不共享任一顶点;
输出在处于所述相邻部分内的第二对角线条带内的多个基元的域坐标,其中所述第二对角线条带呈以下中的一者:与所述第一对角线条带平行或与所述第一对角线条带相切,其中在所述第二对角线条带内的至少两个基元不共享任一顶点,其中当所述第二对角线条带平行于所述第一对角线条带时,所述第一对角线条带和所述第二对角线条带从所述域的同一轴线开始、且在相同方向上向外延伸,其中当所述第二对角线条带与所述第一对角线条带相切时,所述第二对角线条带包含与所述第一对角线条带的一个基元共享两个顶点的一个基元,所述第二对角线条带内的其余基元中无一者与所述第一对角线条带内的任何其余基元共享两个顶点,且所述第二对角线条带内的至少一个基元和所述第一对角线条带内的基元的任一者不共享任一顶点;以及
输出在处于所述相邻部分内的第三对角线条带内的多个基元的域坐标,其中在所述第三对角线条带内的至少两个基元不共享任一顶点,其中所述第三对角线条带与至少所述第一对角线条带平行、从与所述第一对角线条带相同的轴线开始并在与所述第一对角线条带相同的方向上向外延伸,且其中在所述第三对角线条带内的基元的数目不同于在所述第一对角线条带和所述第二对角线条带内的基元的数目;以及
重用缓冲器,其经配置以存储对应于在所述第一、第二和第三对角线条带内的基元的所述输出的域坐标中的一或多者的分片坐标。
13.根据权利要求12所述的装置,其进一步包括:
处理单元,其经配置以至少部分基于所述重用缓冲器内的存储槽的数目从多个不同操作模式选择操作模式,
其中所述不同操作模式中的每一模式指示输出所述域的所述相邻部分内的所述域坐标的不同方式,且
其中所述曲面细分单元经配置以基于所述选定操作模式划分所述域。
14.根据权利要求12所述的装置,其进一步包括:
处理单元,其经配置以确定至少一个曲面细分因子加一是否小于或等于所述重用缓冲器中的存储槽的数目减二,
其中当所述域为四域时,所述至少一个曲面细分因子小于或等于所述四域的另一曲面细分因子,
其中所述曲面细分单元经配置以当所述至少一个曲面细分因子加一小于或等于所述重用缓冲器中的存储槽的所述数目减二时,将所述域划分成两个部分,且
其中所述曲面细分单元经配置以当所述至少一个曲面细分因子加一小于或等于所述重用缓冲器中的存储槽的所述数目减二时,输出在与所述第一对角线条带相切的所述第二对角线条带内的基元的所述域坐标。
15.根据权利要求14所述的装置,
其中所述曲面细分单元经配置以:
输出在第四对角线条带内的基元的域坐标;以及
输出在第五对角线条带内的基元的域坐标,且
其中所述第五对角线条带为所述第四对角线条带的镜面相对物。
16.根据权利要求14所述的装置,
其中当所述域为四域时,所述曲面细分单元经配置以将所述域划分成两半,
其中当所述域为三角域时,所述曲面细分单元经配置以将所述域划分成三分之一部分和三分之二部分,且
其中所述三分之二部分包括所述相邻部分。
17.根据权利要求12所述的装置,其进一步包括:
处理单元,其经配置以确定至少一个曲面细分因子除以二再加一是否小于或等于所述重用缓冲器中的存储槽的数目减一,
其中当所述域为四域时,所述至少一个曲面细分因子小于或等于所述四域的另一曲面细分因子,
其中所述曲面细分单元经配置以当所述域为所述四域时且当所述至少一个曲面细分因子除以二再加一小于或等于所述重用缓冲器中的存储槽的所述数目减一时,将所述域划分成四个部分,
其中所述曲面细分单元经配置以当所述域为三角域且当所述至少一个曲面细分因子除以二再加一小于或等于所述重用缓冲器中的存储槽的所述数目减一时,将所述域划分成三个部分,且
其中所述曲面细分单元经配置以当所述至少一个曲面细分因子除以二再加一小于或等于所述重用缓冲器中的存储槽的所述数目减一时,输出在与所述第一对角线条带平行的所述第二对角线条带内的基元的所述域坐标。
18.根据权利要求12所述的装置,其进一步包括:
处理单元,其经配置以确定第一曲面细分因子小于或等于第二曲面细分因子,
其中所述曲面细分单元经配置以从对应于所述第一曲面细分因子的所述域的轴线开始且向外延伸输出在所述第一对角线条带内的所述基元的所述域坐标,输出在所述第二对角线条带内的所述基元的所述域坐标和输出在所述第三对角线条带内的所述基元的所述域坐标。
19.根据权利要求12所述的装置,其进一步包括:
处理单元,其经配置以确定至少一个曲面细分因子除以二再加一是否大于所述重用缓冲器中的存储槽的数目减一,
其中当所述域为四域时,所述至少一个曲面细分因子小于或等于所述四域的另一曲面细分因子,
其中当所述至少一个曲面细分因子除以二再加一大于所述重用缓冲器中的存储槽的所述数目减一时,所述曲面细分单元经配置以:
输出在处于第一相邻部分内的所述第一对角线条带内的基元的域坐标;
输出在与所述第一对角线条带平行且处于所述第一相邻部分内的所述第二对角线条带内的基元的域坐标;
输出在处于所述第一相邻部分内的所述第三对角线条带内的基元的域坐标;
输出在处于第二相邻部分内的第四对角线条带内的基元的域坐标;
输出在处于所述第二相邻部分内的第五对角线条带内的基元的域坐标,其中所述第五对角线条带与所述第四对角线条带相切;以及
输出在处于所述第二相邻部分内的第六对角线条带内的基元的域坐标,其中所述第六对角线条带与所述第一对角线条带平行。
20.根据权利要求12所述的装置,其进一步包括:
处理单元,其经配置以确定所述域的第一部分经不均匀曲面细分,且确定所述域的第二部分经均匀曲面细分,
其中所述曲面细分单元经配置以将所述域的所述第二部分划分成所述多个部分。
21.根据权利要求20所述的装置,其中所述域的所述第一部分包括所述域的外环,且其中所述曲面细分单元经配置以输出在所述域的所述外环内的基元的域坐标。
22.根据权利要求12所述的装置,其进一步包括:
控制器,其经配置以:
接收用于在所述第一、第二和第三对角线条带内的所述基元的所述域坐标;
确定所述重用缓冲器是否存储对应于用于在所述第一、第二和第三对角线条带内的所述基元的所述域坐标的所述分片坐标;以及
基于所述重用缓冲器是否存储对应于用于在所述第一、第二和第三对角线条带内的所述基元的所述域坐标的所述分片坐标的所述确定执行着色器的一或多个具现化。
23.根据权利要求12所述的装置,其中所述装置包括移动无线装置、包含视频显示器的视频游戏控制台、移动视频会议单元、膝上型计算机、桌上型计算机、平板计算机和电视机顶盒中的一者。
24.一种装置,其包括:
图形处理单元GPU,所述GPU包括:
用于将域划分成多个部分的装置,其中所述部分中的至少一者为相邻部分;
用于输出在处于所述相邻部分内的第一对角线条带内的多个基元的域坐标的装置,其中在所述第一对角线条带内的至少两个基元不共享任一顶点;
用于输出在处于所述相邻部分内的第二对角线条带内的多个基元的域坐标的装置,其中所述第二对角线条带呈以下中的一者:与所述第一对角线条带平行或与所述第一对角线条带相切,其中在所述第二对角线条带内的至少两个基元不共享任一顶点,其中当所述第二对角线条带平行于所述第一对角线条带时,所述第一对角线条带和所述第二对角线条带从所述域的同一轴线开始、且在相同方向上向外延伸,其中当所述第二对角线条带与所述第一对角线条带相切时,所述第二对角线条带包含与所述第一对角线条带的一个基元共享两个顶点的一个基元,所述第二对角线条带内的其余基元中无一者与所述第一对角线条带内的任何其余基元共享两个顶点,且所述第二对角线条带内的至少一个基元和所述第一对角线条带内的基元的任一者不共享任一顶点;以及
用于输出在处于所述相邻部分内的第三对角线条带内的多个基元的域坐标的装置,其中在所述第三对角线条带内的至少两个基元不共享任一顶点,其中所述第三对角线条带与至少所述第一对角线条带平行、从与所述第一对角线条带相同的轴线开始并在与所述第一对角线条带相同的方向上向外延伸,且其中在所述第三对角线条带内的基元的数目不同于在所述第一对角线条带和所述第二对角线条带内的基元的数目。
25.一种非暂时性计算机可读存储媒体,其包括存储于其上的指令,所述指令当经执行时使一或多个处理器:
将域划分成多个部分,其中所述部分中的至少一者为相邻部分;
输出在处于所述相邻部分内的第一对角线条带内的多个基元的域坐标,其中在所述第一对角线条带内的至少两个基元不共享任一顶点;
输出在处于所述相邻部分内的第二对角线条带内的多个基元的域坐标,其中所述第二对角线条带呈以下中的一者:与所述第一对角线条带平行,或与所述第一对角线条带相切,其中在所述第二对角线条带内的至少两个基元不共享任一顶点,其中当所述第二对角线条带平行于所述第一对角线条带时,所述第一对角线条带和所述第二对角线条带从所述域的同一轴线开始、且在相同方向上向外延伸,其中当所述第二对角线条带与所述第一对角线条带相切时,所述第二对角线条带包含与所述第一对角线条带的一个基元共享两个顶点的一个基元,所述第二对角线条带内的其余基元中无一者与所述第一对角线条带内的任何其余基元共享两个顶点,且所述第二对角线条带内的至少一个基元和所述第一对角线条带内的基元的任一者不共享任一顶点;以及
输出在处于所述相邻部分内的第三对角线条带内的多个基元的域坐标,其中在所述第三对角线条带内的至少两个基元不共享任一顶点,其中所述第三对角线条带与至少所述第一对角线条带平行、从与所述第一对角线条带相同的轴线开始并在与所述第一对角线条带相同的方向上向外延伸,且其中在所述第三对角线条带内的基元的数目不同于在所述第一对角线条带和所述第二对角线条带内的基元的数目。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/754,005 | 2013-01-30 | ||
US13/754,005 US9123168B2 (en) | 2013-01-30 | 2013-01-30 | Output ordering of domain coordinates for tessellation |
PCT/US2013/076655 WO2014120359A1 (en) | 2013-01-30 | 2013-12-19 | Output ordering of domain coordinates for tessellation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104956402A CN104956402A (zh) | 2015-09-30 |
CN104956402B true CN104956402B (zh) | 2017-09-22 |
Family
ID=49998671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380071623.1A Expired - Fee Related CN104956402B (zh) | 2013-01-30 | 2013-12-19 | 用于曲面细分的域坐标的输出排序 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9123168B2 (zh) |
EP (1) | EP2951784A1 (zh) |
JP (1) | JP6400601B2 (zh) |
KR (1) | KR20150110675A (zh) |
CN (1) | CN104956402B (zh) |
WO (1) | WO2014120359A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102066533B1 (ko) * | 2013-11-19 | 2020-01-16 | 삼성전자 주식회사 | 도메인 쉐이딩 방법과 이를 수행하는 장치들 |
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 |
KR20160063081A (ko) * | 2014-11-26 | 2016-06-03 | 삼성전자주식회사 | 선택적 테셀레이션 방법 및 장치 |
GB2533444B (en) | 2015-06-05 | 2017-08-16 | Imagination Tech Ltd | Tessellation method |
GB2539042B (en) | 2015-06-05 | 2019-08-21 | Imagination Tech Ltd | Tessellation method using displacement factors |
GB2533443B (en) | 2015-06-05 | 2018-06-06 | Imagination Tech Ltd | Tessellation method using recursive sub-division of triangles |
GB2542133B (en) * | 2015-09-08 | 2020-05-27 | Imagination Tech Ltd | Graphics processing method and system for processing sub-primitives |
US10685473B2 (en) * | 2017-05-31 | 2020-06-16 | Vmware, Inc. | Emulation of geometry shaders and stream output using compute shaders |
US10621782B1 (en) * | 2017-12-06 | 2020-04-14 | Apple Inc. | Sub-patch techniques for graphics tessellation |
GB2570304B (en) * | 2018-01-18 | 2022-06-01 | Imagination Tech Ltd | Topology preservation in a graphics pipeline |
GB2572617B (en) * | 2018-04-05 | 2021-06-16 | Imagination Tech Ltd | Blending hardware |
GB2572625B (en) | 2018-04-05 | 2020-06-17 | Imagination Tech Ltd | Ordering in tessellation operations |
US11232532B2 (en) * | 2018-05-30 | 2022-01-25 | Sony Interactive Entertainment LLC | Multi-server cloud virtual reality (VR) streaming |
US11481967B2 (en) * | 2020-08-31 | 2022-10-25 | Advanced Micro Devices, Inc. | Shader core instruction to invoke depth culling |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102272798A (zh) * | 2008-12-31 | 2011-12-07 | 英特尔公司 | 曲面细分时间随曲面细分量线性增长的镶嵌器 |
CN102598063A (zh) * | 2009-09-09 | 2012-07-18 | 先进微装置公司 | 曲面细分引擎及其应用 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7436405B2 (en) * | 2004-05-14 | 2008-10-14 | Microsoft Corporation | Terrain rendering using nested regular grids |
US8237709B2 (en) * | 2007-09-06 | 2012-08-07 | Qualcomm Incorporated | Method and apparatus for optimizing triangles into triangle strips according to a variety of criteria |
US8120607B1 (en) * | 2008-05-30 | 2012-02-21 | Nvidia Corporation | Boundary transition region stitching for tessellation |
US8188999B2 (en) * | 2008-06-17 | 2012-05-29 | Qualcomm Incorporated | Method and apparatus for organizing object geometry for spatial and memory coherency and optimal rendering |
US20100214294A1 (en) | 2009-02-20 | 2010-08-26 | Microsoft Corporation | Method for tessellation on graphics hardware |
US20100253683A1 (en) | 2009-04-01 | 2010-10-07 | Munkberg Carl J | Non-uniform tessellation technique |
US8537158B2 (en) | 2009-12-02 | 2013-09-17 | Microsoft Corporation | Parallel triangle tessellation |
GB201007348D0 (en) | 2010-04-30 | 2010-06-16 | Imagination Tech Ltd | Programmable tessellation in a tile based rendering system |
US20110310102A1 (en) | 2010-06-17 | 2011-12-22 | Via Technologies, Inc. | Systems and methods for subdividing and storing vertex data |
-
2013
- 2013-01-30 US US13/754,005 patent/US9123168B2/en not_active Expired - Fee Related
- 2013-12-19 JP JP2015555160A patent/JP6400601B2/ja not_active Expired - Fee Related
- 2013-12-19 CN CN201380071623.1A patent/CN104956402B/zh not_active Expired - Fee Related
- 2013-12-19 KR KR1020157022451A patent/KR20150110675A/ko not_active Application Discontinuation
- 2013-12-19 EP EP13822025.6A patent/EP2951784A1/en not_active Ceased
- 2013-12-19 WO PCT/US2013/076655 patent/WO2014120359A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102272798A (zh) * | 2008-12-31 | 2011-12-07 | 英特尔公司 | 曲面细分时间随曲面细分量线性增长的镶嵌器 |
CN102598063A (zh) * | 2009-09-09 | 2012-07-18 | 先进微装置公司 | 曲面细分引擎及其应用 |
Non-Patent Citations (1)
Title |
---|
Efficient Triangle Reordering for Improved Vertex Cache Utilisation in Realtime Rendering;Martin Storsjo;《Abo Akademi University Master of Science Thesis》;20080513;第1-100页 * |
Also Published As
Publication number | Publication date |
---|---|
JP2016508635A (ja) | 2016-03-22 |
US20140210819A1 (en) | 2014-07-31 |
KR20150110675A (ko) | 2015-10-02 |
WO2014120359A1 (en) | 2014-08-07 |
EP2951784A1 (en) | 2015-12-09 |
CN104956402A (zh) | 2015-09-30 |
JP6400601B2 (ja) | 2018-10-03 |
US9123168B2 (en) | 2015-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104956402B (zh) | 用于曲面细分的域坐标的输出排序 | |
CN104737208B (zh) | 曲面细分单元中的顶点次序 | |
CN103686125B (zh) | 深度推测装置、方法及图像处理装置、方法 | |
CN103946895B (zh) | 基于平铺块的呈现中的镶嵌方法和设备 | |
CN111028343B (zh) | 三维人脸模型的生成方法、装置、设备及介质 | |
CN103503032B (zh) | 图形硬件中的纹理化 | |
CN102332170B (zh) | 一种计算机素描画的生成方法和系统 | |
US20130120393A1 (en) | Methods and Apparatus for Marker-Based Stylistic Rendering | |
De-Maeztu et al. | Near real-time stereo matching using geodesic diffusion | |
US9076260B2 (en) | Stitching for primitives in graphics processing | |
CN106471545A (zh) | 作为图像处理引擎的纹理单元 | |
CN102819855B (zh) | 二维图像的生成方法及装置 | |
CN112995534B (zh) | 视频生成方法、装置、设备及可读存储介质 | |
CN112598602A (zh) | 一种基于掩码的深度学习视频去摩尔纹方法 | |
CN105574814A (zh) | 一种肖像剪纸特效的生成方法 | |
CN105761314A (zh) | 一种基于显著颜色属性特征保持的模型简化方法 | |
CN107833191A (zh) | 基于图像局部信息的改进Criminisi算法 | |
JP6294700B2 (ja) | 画像処理装置及び画像処理方法 | |
CN103871035A (zh) | 图像去噪方法及装置 | |
CN116785697A (zh) | 目标虚拟场景中的水域生成方法及装置 | |
JPH09259290A (ja) | 描画方法 | |
CN105574919B (zh) | 一种将唐卡线描图生成浮雕效果的方法 | |
CN105141936B (zh) | 针对虚拟视点图像的带方向fmm图像修复方法 | |
Liang et al. | Image Inpainting Network Based on Deep Fusion of Texture and Structure. | |
CN101799866B (zh) | 面向手机动漫人物的脸部器官定位方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170922 Termination date: 20201219 |