CN104584082A - 在图形处理中的基元的缝合 - Google Patents
在图形处理中的基元的缝合 Download PDFInfo
- Publication number
- CN104584082A CN104584082A CN201380043417.XA CN201380043417A CN104584082A CN 104584082 A CN104584082 A CN 104584082A CN 201380043417 A CN201380043417 A CN 201380043417A CN 104584082 A CN104584082 A CN 104584082A
- Authority
- CN
- China
- Prior art keywords
- point
- edge
- outer shroud
- inner annular
- primitive
- 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.)
- Granted
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
本发明中所描述的技术通常与确定出于曲面细分的目的连接沿着外环边缘及内环边缘存在的点的方式相关。举例来说,二维2D缝合表可定义应将沿着所述边缘的点连接在一起以形成多个基元的方式。所述技术可索引所述2D缝合表以检索定义应将沿着所述边缘的所述点连接在一起的所述方式的条目值。
Description
技术领域
本发明涉及在图形处理中的基元的缝合,且更确切地说,涉及在曲面细分的情况下的缝合。
背景技术
图形处理单元(GPU)可实施包含曲面细分级的图形处理管线。曲面细分级将表面转换成GPU上的多个基元,从而产生更详细的表面。举例来说,GPU可接收用于粗略表面的信息,及产生高分辨率表面,而非接收用于高分辨率表面的信息。接收用于高分辨率表面而非粗略表面的信息可为带宽效率低下的,因为定义高分辨率表面所需要的信息量可比定义粗分辨率表面所需要的信息量大得多。
发明内容
一般来说,本发明中描述的技术是针对利用用于确定将缝合基元的方式的单个二维(2D)查找表(LUT)。举例来说,到2D LUT的索引可基于指示产生基元的方式的曲面细分因子。曲面细分单元可基于曲面细分因子来索引2D LUT,以检索条目值。曲面细分单元可检查条目值中的每一位以确定缝合沿着外环边缘及对应内环边缘存在的点的方式。
在一个实例中,本发明描述一种用于曲面细分的方法。所述方法包含通过图形处理单元(GPU)来确定沿着域的外环边缘的点的数目,及通过GPU来确定沿着域的内环边缘的点的数目。所述方法还包含通过GPU基于沿着外环边缘的点的数目及沿着内环边缘的点的数目利用仅单个二维(2D)缝合表,来确定使用外环边缘的多少点及哪些点及内环边缘的多少点及哪些点以产生多个基元中的每一者,所述基元的顶点为沿着外环边缘的点及沿着内环边缘的点,及通过GPU输出顶点的坐标。
在一个实例中,本发明描述用于GPU的曲面细分单元。曲面细分单元包含第一单元,所述第一单元经配置以确定沿着域的外环边缘的点的数目,及确定沿着域的内环边缘的点的数目。所述曲面细分单元还包含第二单元,所述第二单元经配置以基于沿着外环边缘的点的数目及沿着内环边缘的点的数目利用仅单个二维(2D)缝合表,来确定使用外环边缘的多少点及哪些点及内环边缘的多少点及哪些点以产生多个基元中的每一者,所述基元的顶点为沿着外环边缘的点及沿着内环边缘的点,及输出顶点的坐标。
在一个实例中,本发明描述一种装置,其包含中央处理单元(CPU)及GPU。CPU经配置以产生将曲面细分的贴片。GPU包含第一单元,所述第一单元经配置以接收贴片作为输入贴片且基于输入贴片输出用于输出贴片的控制点及曲面细分因子。GPU还包含曲面细分单元,所述曲面细分单元经配置以基于曲面细分因子确定域的类型,基于曲面细分因子确定沿着域的外环边缘的点的数目,基于曲面细分因子确定沿着域的内环边缘的点的数目,基于沿着外环边缘的点的数目及沿着内环边缘的点的数目利用仅单个二维(2D)缝合表来确定使用外环边缘的多少点及哪些点及内环边缘的多少点及哪些点以产生多个基元中的每一者,所述基元的顶点为沿着外环边缘的点及沿着内环边缘的点,及输出顶点的坐标。GPU还包含第二单元,所述第二单元经配置以接收顶点的坐标,且基于顶点的所接收的坐标将基元添加到输出贴片。
在一个实例中,本发明描述用于GPU的曲面细分单元。曲面细分单元包含用于确定沿着域的外环边缘的点的数目的装置,及用于确定沿着域的内环边缘的点的数目的装置。所述曲面细分单元还包含用于基于沿着外环边缘的点的数目及沿着内环边缘的点的数目利用仅单个二维(2D)缝合表来确定使用外环边缘的多少点及哪些点及内环边缘的多少点及哪些点以产生多个基元中的每一者的装置,所述基元的顶点为沿着外环边缘的点及沿着内环边缘的点,及用于输出顶点的坐标的装置。
在一个实例中,本发明描述一种包含存储于其上的指令的计算机可读存储媒体,所述指令在执行时致使一或多个处理器确定沿着域的外环边缘的点的数目,确定沿着域的内环边缘的点的数目,基于沿着外环边缘的点的数目及沿着内环边缘的点的数目利用仅单个二维(2D)缝合表来确定使用外环边缘的多少点及哪些点及内环边缘的多少点及哪些点以产生多个基元中的每一者,所述基元的顶点为沿着外环边缘的点及沿着内环边缘的点,及输出顶点的坐标。
随附图式和以下描述中陈述一或多个实例的细节。其它特征、目标及优势将从所述描述及所述图式以及从权利要求书显而易见。
附图说明
图1为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的实例的图形处理单元(GPU)的实例的框图。
图2为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的另一实例的图形处理单元(GPU)的另一实例的框图。
图3A及3B为说明根据本发明中所描述的一或多个实例的包含用于缝合的多个内环的域类型的实例的图形图。
图4A及4B为说明根据本发明中所描述的一或多个实例的划分成多个基元的域的图形图。
图5为更详细地说明根据本发明中所描述的一或多个实例的曲面细分单元的实例的框图。
图6为说明根据本发明中所描述的一或多个实例的实例缝合操作的流程图。
图7A到7G一起说明缝合表的实例。
具体实施方式
例如膝上型计算机、平板计算机、智能电话及数字媒体播放器等现代移动装置可包含CPU(中央处理单元)、图形处理单元(GPU)及***存储器。在作为执行应用程序的部分呈现图形时,CPU将指令及图形数据发射到GPU。在一些实例中,图形数据可呈顶点的形式,所述顶点可包括一或多个数据结构,所述数据结构描述2D或3D空间中的点。
执行于CPU上的应用程序可根据应用程序编程接口(API)与GPU通信。举例来说,作为两个实例,应用程序可根据由开发的API或由科纳斯组织开发的API与GPU通信。出于说明的目的,且为了容易理解,通常在DirectX及OpenGL API的情境下描述本发明中描述的技术。然而,本发明的方面不应被视为限于DirectX及OpenGL API,且本发明中描述的技术也可扩展到其它API。
DirectX及OpenGL各自定义将由GPU实施的图形处理管道。这些图形处理管线可包含可编程级以及固定功能级的组合。例如Direct3D 11API及OpenGL 4.x API等API的一些最新版本包含将由GPU执行的曲面细分过程。
曲面细分过程是指将对象的表面的部分(其被称作贴片)划分成多个较小部分,且将较小部分互连在一起。这导致了与曲面细分之前的表面相比较更高度详细的表面。曲面细分允许执行于CPU上的应用程序定义具有低分辨率的表面(此举可需要较少的点),且允许GPU产生较高分辨率表面。
借助于曲面细分,可实现计算高效率,因为执行于CPU上的应用程序可能不需要产生较高分辨率表面,且可替代地将较高分辨率表面的产生分担到GPU。此外,也可实现带宽高效率,因为CPU可需要发射用于表面的较少点的信息,因为与较高分辨率表面相比较,低分辨率表面包含较少点,且GPU可需要检索表面的较少点。
如上文所描述,GPU将曲面细分过程应用于贴片。贴片可被认为是特定类型的基元。由一起形成表面的部分的一或多个控制点定义贴片。举例来说,可将例如球面等对象划分成多个表面。在此实例中,表面可为弯曲表面,所述弯曲表面在组合时形成球面。可将表面中的每一者划分成一或多个贴片,其中贴片中的每一者是由一或多个控制点定义。
控制点可由坐标(例如,二维贴片的x及y坐标或三维贴片的x、y及z坐标)定义,且控制点可被认为是贴片的顶点。贴片中可存在任何数目个控制点。举例来说,在一些实例中,贴片中的控制点的数目可在一个控制点直到32个控制点之间。贴片中的控制点的数目可为固定的或用户定义的。
不同于其它基元类型,贴片内的控制点可以任何方式彼此连接。换句话说,不存在其中连接贴片的控制点的预定义方式。举例来说,标准三角基元包含三个顶点,且以特定方式定义基元,其中三个顶点彼此连接以形成三角形。另一方面,可不需要以任何特定方式连接控制点以形成形状。而是,作为一个实例,贴片中的一些控制点可彼此连接以形成三角形,相同贴片中的其它控制点可彼此连接以形成矩形,且相同贴片中的又其它控制点可彼此连接以形成八角形。作为另一实例,也有可能控制点与另一控制点连接以形成相同类型的形状(例如,经连接以仅形成多个三角形)。
定义表面的贴片的控制点可定义低分辨率表面。在曲面细分过程的情况下,添加额外细节以创建较高分辨率表面。举例来说,返回参看球面的实例。要是使用控制点来形成球面,球面将呈现为锯齿状的,具有阶梯状的点,而非平滑弯曲表面。在曲面细分之后,添加额外点以使得在连接这些点时,球面看起来好像其为平滑球面。
根据DirectX API及OpenGL 4.x API两者,曲面细分过程包含两个着色器及固定功能单元。着色器为执行于GPU的可编程着色器核心上且提供实质上功能灵活性的软件应用程序。固定功能单元为执行固定功能且可能不提供功能灵活性的硬接线逻辑单元。然而,有可能使用可编程着色器译码器实施固定功能单元的功能以提供额外功能灵活性。仅仅出于说明的目的,用提供受限制功能灵活性的固定功能单元来描述本发明中针对固定功能单元所描述的功能。
在DirectX API中,经配置以实施曲面细分过程的图形处理管线包含耦合到曲面细分级的外壳着色器级,所述曲面细分级耦合到域着色器级。DirectX API中的外壳着色器级及域着色器级可形成曲面细分过程的两个着色器,且曲面细分级可形成曲面细分过程的固定功能单元。图形处理管线中的其它级类似于不实施曲面细分过程的DirectX API中的那些级。
在OpenGL 4.x API中,经配置以实施曲面细分过程的图形处理管线包含耦合到基元产生器的曲面细分控制着色器,所述基元产生器耦合到曲面细分评估着色器。OpenGL4.x中的曲面细分控制着色器及曲面细分评估着色器可形成曲面细分过程的两个着色器,且基元产生器可形成曲面细分过程的固定功能单元。图形处理管线中的其它级可类似于不实施曲面细分过程的OpenGLAPI中的那些级。
本发明中描述的技术通常与曲面细分过程的固定功能单元相关(例如,DirectX图形处理管线的曲面细分级及OpenGL 4.x图形处理管线的基元产生器)。出于简洁的目的,曲面细分过程的固定功能单元被称作曲面细分单元。举例来说,曲面细分单元的实例包含DirectX图形处理管线的曲面细分级、OpenGL 4.x图形处理管线的基元产生器或用于其它类型的图形处理管线的任何其它类似单元。
如更详细描述的,在曲面细分单元之前的着色器(例如,DirectX中的外壳着色器级或OpenGL 4.x中的曲面细分控制着色器)将值发射到曲面细分单元,所述值指示对于贴片将产生多少基元以增加贴片的分辨率(即,增加细节)。在曲面细分单元之前的着色器还将域类型发射到曲面细分单元。曲面细分单元将域划分成基元,且指示连接域中的基元的方式(即,将缝合域中的基元的方式)。
域为曲面细分单元划分成多个基元的模板形状。接着将这些基元添加到贴片以增加贴片的分辨率。举例来说,域中所产生的额外基元接着用以在贴片上形成网格,从而向贴片添加细节。
在曲面细分单元之后的着色器(例如,DirectX中的域着色器或OpenGL 4.x中的曲面细分评估着色器)从曲面细分单元接收由曲面细分单元产生的基元的顶点及用于顶点的连接性信息。在曲面细分单元之后的着色器接着将如由曲面细分单元产生的基元添加到贴片以将更高分辨率添加到表面。
根据本发明中描述的技术,曲面细分单元可利用单个二维(2D)查找表来确定将连接(即,缝合)所产生的基元的方式。举例来说,可存在将基于例如曲面细分单元将产生多少基元等各种因子缝合基元的固定预定义方式。本发明中描述的技术出于确定如何缝合基元的目的提供曲面细分单元所指代的单个二维查找表,而非使用多个查找表来确定如何缝合基元。
举例来说,依赖于多个查找表的一些其它技术花费确定是否将使用来自表的值的计算循环。举例来说,在这些其它技术中的一些中在从表读取位,确定是否将使用位及在不使用所读取的位的情况下接着读取接下来的位时,计算循环可能被浪费。接着,在这些其它技术中,在确定使用哪一其它表时将进一步浪费计算循环。通过使用单个二维查找表来确定如何缝合基元,可促进计算高效率。
缝合可被认为是将顶点连接在一起以形成基元的过程。举例来说,作为曲面细分过程的部分,曲面细分单元可确定域内的点。这些点形成基元的顶点。缝合是指确定应使用这些点中的哪些点以产生域内的基元的过程。
如更详细描述的,曲面细分单元可基于由先前着色器确定的值索引单个2D查找表。举例来说,为了指示曲面细分单元将产生多少基元,先前着色器可指示沿着域的外环的边缘存在的点的数目,沿着域的内环的边缘存在的点的数目。曲面细分单元可利用这些值作为到单个2D查找表的索引。
从这些索引,曲面细分单元可从2D查找表检索条目值。因此,沿着域的外缘及内环的边缘的点的数目的不同组合可产生来自LUT的不同条目值。条目值可包含例如64个位等多个位,作为一个非限制性实例。曲面细分单元可确定条目值的一或多个位的位值。举例来说,曲面细分单元可从最低有效位(LSB)开始,且移动到最高有效位(MSB),或反过来,或在值内的任何预定义模式中。每一位值可指示曲面细分单元将从外缘使用多少点及曲面细分单元将从内缘使用多少点以用于缝合。
以此方式,曲面细分单元可需要存取单个查找表,而非多个查找表以确定将缝合基元的方式。这可导致与在需要多个查找表时(其促进高效带宽利用)相比较,对其中存储查找表的存储器的较少存取。此外,通过利用仅一个查找表且不利用任何其它查找表以用于缝合,也可实现计算高效率。举例来说,本发明中描述的技术可导致需要读取较少的位以及确定从哪一表检索值所需要的计算循环的减少。
图1为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的实例的图形处理单元(GPU)的实例的框图。图1说明装置10,所述装置包含图形处理单元(GPU)12、***存储器14及中央处理单元(CPU)16。装置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说明Direct3D 11API所定义的图形处理管线。如更详细描述的,图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可定义其中使顶点互连的特定方式(例如,使得顶点的互连产生三角形)。
而且,不同于其它基元类型,贴片中的控制点的数目可能是可变的。举例来说,执行于CPU 16上的应用程序可定义对于贴片允许的控制点的最大数目,或可为用户定义的控制点的最大数目。在一些实例中,贴片中的控制点的数目可为一个到三十二个控制点;然而,本发明中描述的技术不限于此。
CPU 16可出于曲面细分的目的利用控制贴片。如上文所描述,曲面细分过程是指CPU 16定义低分辨率的可视对象的表面的一部分,及曲面细分所述部分以产生表面的较高分辨率版本。举例来说,CPU 16可定义贴片的控制点以使得在控制点互连时,贴片形成可视对象的表面的一部分。如果仅从贴片的控制点形成表面,那么表面可能不会呈现高分辨率,且可呈现为锯齿状的。借助于曲面细分,将额外基元添加到贴片,以使得在基元互连时,其将细节添加到贴片,此举增加了贴片的分辨率,且产生较高质量的可视内容。
GPU 12可经配置以实施曲面细分。以此方式,CPU 16可能不需要定义创建较高分辨率贴片所需要的所有额外基元的顶点,这节约了由CPU 16执行的计算。而且,CPU 16可需要发射较少顶点(例如,控制点的顶点,且将不会添加基元的顶点),且GPU 12可对应地需要接收较少顶点,这归因于对***存储器14的较少存取而促进了带宽高效率。
为了执行图形操作,GPU 12可实施图形处理管线。图形处理管线包含执行如由执行于GPU 12上的软件或固件定义的功能,及由经硬接线以执行极特定功能的固定功能单元执行功能。执行于GPU 12上的软件或固件可被称为着色器,且着色器可执行于GPU12的一或多个着色器核心上。着色器向用户提供功能灵活性,因为用户可设计着色器以任何可想象的方式执行所要任务。然而,固定功能单元以其中固定功能单元执行任务的方式硬接线。因此,固定功能单元可能不会提供太多的功能灵活性。
如上文所指示,图1中所说明的图形处理管线为实质上如由Direct3D 11定义的图解处理管线。在此实例中,GPU 12可包含以下各者中的一或多者:输入汇编程序级18、顶点着色器级20、外壳着色器级22、曲面细分级24、域着色器级26、几何着色器级28、光栅化器级30、像素着色器级32及输出合并级34。GPU 12可包含比所说明的级更多的级,且在一些实例中,GPU 12可不必包含所有所说明的级。而且,出于说明目的提供所述级的特定次序,且不应将其视为限制性的。
在本发明中描述的技术中,CPU 16可将贴片的控制点输出到***存储器14。GPU 12接着可从***存储器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 11API中,指示多少基元将被添加到贴片的值被称作细分因子(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可在经归一化的坐标系(例如,在适用的情况下,u、v坐标或u、v、w坐标)中将域的多个基元的顶点输出到域着色器级26。域着色器级26的功能可为将如从曲面细分级24接收的顶点坐标映射到贴片。举例来说,虽然曲面细分级24可能不接收如由外壳着色器级22定义的贴片的信息,但域着色器级26可从外壳着色器级22接收此信息。
域着色器级26可执行由曲面细分级24输出的每一顶点坐标。在来自外壳着色器级22的贴片的控制点的坐标的情况下,域着色器级26可确定贴片上的如由曲面细分级24输出的顶点的位置。因为曲面细分级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还可执行混合操作以产生最终像素值。
输出合并级34可将最终像素值输出到通常位于***存储器14内但可位于GPU 12内的帧缓冲器。显示器处理器(未图示)可从帧缓冲检索像素值,且致使装置10的显示器(未图示)的像素相应地照明像素值以致使显示器显示图像。
如上文所描述,曲面细分级24将域内的外环及内环的点互连以产生域内的多个基元。根据本发明中描述的技术,曲面细分级24可利用单个查找表(其被称作缝合表)来确定所述点应互连以产生域内的基元的方式。
在一些实例中,GPU 12可包含例如高速缓冲存储器等本地存储器,且高速缓冲存储器可存储查找表。在一些其它实例中,***存储器14可存储查找表。出于带宽高效率的目的,GPU 12的本地存储器而非***存储器14存储查找表可能更合乎需要。
此外,在一些实例中,缝合表可为经预编程的缝合表。换句话说,缝合表可不在CPU 16上的应用程序的执行期间或基于由GPU 12接收的指令而创建。而是,缝合表可定义对于给定细分因子来说应连接(即,缝合)基元的特定方式。举例来说,对于沿着外环的边缘(即,外环边缘)的点的数目X及沿着内环的边缘(即,内环边缘)的点的数目Y,存在用于每一X及Y对的连接点的特定方式。
连接所述点的特定方式可定义将从外环边缘取得多少点及将从内环边缘取得多少点以形成基元。举例来说,假设曲面细分级24将四域划分成三角基元。在此实例中,可从外环边缘取得两个点,且可从内环边缘取得一个点以形成三角形。或者,可从外环边缘取得一个点,且可从内环边缘取得两个点以形成三角形。缝合表可定义出于形成沿着外环边缘的给定数目的点及沿着内环边缘的数个点的基元的目的应从每一环边缘取得多少点。
为了进行缝合,外环边缘及内环边缘可彼此平行。换句话说,用于形成基元的边缘为外环及内环中的对应边缘。举例来说,在缝合具有沿着四域的外环的左边缘的点的基元时,曲面细分级24可利用沿着四域的内环的左边缘的点。相同的情形可适用于外环及内环的顶部、底部及右边缘。
指示沿着外环边缘存在的点的数目的细分因子可形成到缝合表中的一个索引的基础,且指示沿着内环边缘存在的点的数目的细分因子可形成到缝合表中的另一索引的基础。以此方式,缝合表可为二维(2D)查找表。曲面细分级24可从到缝合表的索引检索条目值。条目值可为一系列位(例如,一及零)。每一位可指示使用来自外环边缘的多少点以形成基元,及使用来自内环边缘的多少点以形成基元。下文更详细地描述条目值指示使用来自内环边缘的多少点及来自外环边缘的多少点的方式。
利用2D缝合表可允许曲面细分级24确定如何在一个时钟周期内使点互连。举例来说,2D缝合表中的条目值可提供曲面细分级24出于使基元的点互连的目的不需要存取任何其它缝合表的充分信息。此情形可允许域着色器级26比曲面细分级24将存取多个不同查找表以确定点将互连以形成基元的方式的情况更早地将基元添加到贴片。举例来说,一些其它技术可在从表读取值,确定值是否将用于缝合及接着在所读取的值不用于缝合的情况下读取其它值时浪费计算循环。而且,一些其它技术可在存取不同表时浪费计算循环。通过使用单个2D缝合表,如本发明中所描述,可存在确定点将互连以形成基元的方式所需要的计算循环的数目的减少。
因此,在一些实例中,与曲面细分级24涉及多个查找表的情况相比较,本发明中描述的技术可使GPU 12的图形处理管线的计算效率增加。此外,因为曲面细分级24可存取仅一个查找表(即,单个2D缝合表),且不存取其它表来确定使点互连的方式,所以对GPU 12的本地存储器或***存储器14的存取的数目可减少,从而导致功率消耗的降低及带宽效率的增加。
图2为说明根据本发明中所描述的一或多个实例的可实施图形处理管线的另一实例的图形处理单元(GPU)的另一实例的框图。举例来说,图1说明实质上根据Direct3D 11API制定的图形处理管线。图1说明实质上根据OpenGL 4.x API的图形处理管线。
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可利用如上文所描述的用于确定将使基元互连的方式的单个2D查找表(即,上述缝合表)。
图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使用可被视为类似术语的术语“曲面细分水平”。出于概括性的目的,本发明使用术语“曲面细分因子”实例,其包含细分因子及曲面细分水平。以此方式,第一着色器单元可被认为是将曲面细分因子输出到曲面细分单元,且曲面细分单元可响应于曲面细分因子将顶点输出到第二着色器单元。
应注意虽然Direct3D 11及OpenGL 4.x利用两个着色器单元及一个固定功能单元,但本发明中描述的技术不限于此。举例来说,在其它***中有可能第一及第二着色器单元为固定功能单元,且曲面细分单元为着色器单元。作为另一实例,所有的单元可为固定功能单元或所有的单元可为着色器单元,或其任何组合。
因此,在一些实例中,可以考虑第一单元执行类似于第一着色器单元的功能,但可为着色器单元或固定功能单元,第二单元执行类似于曲面细分单元的功能,但可为着色器单元或固定功能单元,且第三单元执行类似于第二着色器单元的功能,但可为着色器单元或固定功能单元。此外,尽管第一着色器单元、曲面细分单元及第二着色器单元经说明为图1及2中的单独单元,但本发明的方面不限于此。图1及2中所说明的这些单元及图形处理管线的可能任一单元可一起组合成共同单元。因此,虽然为易于描述单独地描述这些单元的功能性,但这些单元可以共享硬件实施或经实施为相异组件。
图3A及3B为说明根据本发明中所描述的一或多个实例的包含多个内环的域类型的实例的图形图。举例来说,图3A说明三角域56,且图3B说明四域66。如所说明,三角域56及四域66各自分别包含同心三角形及正方形。
在图3A中,三角域56包含外环58及内环60。外环58包含外环边缘62,且内环60包含内环边缘64。外环边缘62及内环边缘64彼此平行。在本发明中所描述的方面,曲面细分单元可使沿着外环边缘62的点与沿着内环边缘64的点互连(即,缝合)。举例来说,曲面细分因子可定义沿着外环边缘62存在的点的数目及沿着内环边缘64存在的点的数目。如图3A中所指示,存在添加内环,其在内环边缘64的内部。
曲面细分单元可利用这些曲面细分因子来确定到单个2D缝合表中的索引。缝合表中对应于索引的条目值可定义曲面细分单元应使沿着外环边缘62的多少点及沿着内环边缘64的多少点互连以形成基元,所述基元的顶点沿着外环边缘62及内环边缘64存在。
在产生其顶点沿着外环边缘62及内环边缘64存在的基元之后,在此实例中,曲面细分单元可以顺时针方式前移到外环58及内环60的其它两个边缘。对于外环58及内环60的这些边缘中的每一者,曲面细分单元可存取单个2D缝合查找表以确定将使沿着这些边缘存在的点互连的方式。
在一些实例中,在曲面细分单元完成其顶点沿着外环58及内环60存在的基元的缝合之后,曲面细分单元可对下一内环继续进行此项操作。在此状况下,内环60变成外环,且在内环60之后的环变成内环,且重复存取2D缝合表的过程直到在渐进地向内进行时不存在更多环为止。
曲面细分单元可在四域66上执行类似功能。举例来说,在图3B中,四域66包含外环68及内环70。如所说明,存在另一内环,其在内环70的内部。外环68包含外环边缘72,且内环70包含内环边缘74。外环边缘62及内环边缘64彼此平行,且沿着这些边缘的点可形成基元(例如,可为基元的顶点)。
类似于图3A的实例,曲面细分单元可利用用于外环边缘62及内环边缘64的曲面细分因子来确定到单个2D缝合表中的索引。缝合表中对应于索引的条目值可定义曲面细分单元应使沿着外环边缘72的多少点及沿着内环边缘74的多少点互连以形成基元,所述基元的顶点沿着外环边缘72及内环边缘74存在。
在产生其顶点沿着外环边缘72及内环边缘74存在的基元之后,在此实例中,曲面细分单元可以顺时针方式前移到外环68及内环70的其它两个边缘,且可存取2D缝合表以确定将如何连接所述点。在一些实例中,在曲面细分单元完成其顶点沿着外环68及内环70存在的基元的缝合之后,曲面细分单元可对下一内环继续进行此项操作。在此状况下,内环70变成外环,且在内环70之后的环变成内环,且重复存取2D缝合表的过程直到在渐进地向内进行时不存在更多环为止。
图4A及4B为说明根据本发明中所描述的一或多个实例的划分成多个基元的域的图形图。举例来说,图4A说明划分(即,曲面细分)成多个基元的三角域76,且图4B说明划分成多个基元的四域78。曲面细分单元可利用单个2D缝合表来确定沿着三角域76及四域78的环的边缘的点将如何连接在一起。
在图4A及4B中,形成三角形的点的互连可基于曲面细分因子。举例来说,在图4B的左边缘处的密集互连是归因于如由缝合表定义的互连。举例来说,图4B的左边缘的曲面细分因子可形成到缝合表中的索引的基础。在此实例中,缝合表中对应于索引的条目值可指示应以针对图4B的左边缘说明的方式连接基元的点。缝合表中的条目值可基于不同边缘的曲面细分因子类似地指示应连接沿着图4A及4B中的不同边缘的点的方式。
图5为更详细地说明根据本发明中所描述的一或多个实例的曲面细分单元的实例的框图。举例来说,图5说明曲面细分单元80。曲面细分单元80的实例包含图1的曲面细分级24及图2的基元产生器42。
曲面细分单元80可包含可为曲面细分单元80的固定功能硬件单元的设置单元82、点产生器84及连接性产生器86。设置单元82、点产生器84及连接性产生器86为易于描述经说明为单独组件。设置单元82、点产生器84及连接性产生器86可经形成为单个单元,单独单元或其组合。为了便于说明,缝合表88经说明为在连接性产生器86内。然而,缝合表88可存在于GPU 12的本地存储器或***存储器14内。
设置单元82可接收曲面细分因子作为例如图1的外壳着色器级22等第一着色器单元及曲面细分控制着色器40的输入,且可从曲面细分因子确定域类型。举例来说,如果存在四个曲面细分因子,那么设置单元82可确定域类型为三角形,且如果存在六个曲面细分因子,那么设置单元82可确定域类型为四方形。设置单元82可执行其它设置功能,例如校正舍入问题、上限及下限函数、确定一半曲面细分因子及减少和组合曲面细分因子。一般来说,设置单元82可处理曲面细分因子以确保曲面细分单元80的其它组件可执行相应功能。
点产生器84可从曲面细分因子确定沿着域的每一环的每一边缘存在多少点及点的位置(例如,点的u、v坐标或u、v、w坐标)。连接性产生器86可连接(即,缝合)点以形成域中的多个基元,例如图4A及4B中所说明的那些基元。
举例来说,点产生器84可确定沿着外环(分别例如图3A及3B的外环58及外环68)的点的坐标及沿着内环(分别例如图3A及3B的内环60及内环70)的点的坐标。在一些实例中,点产生器84可将所确定的坐标存储于缓冲器中。举例来说,一个缓冲器可存储沿着内环边缘的点的坐标,且另一缓冲器可存储沿着外环边缘的点的坐标。
对于与内环的边缘平行的外环的每一边缘,连接性产生器86可确定外环边缘的点应如何与内环边缘的点连接以形成基元。举例来说,可存在沿着外环边缘的点及沿着内环边缘的点可形成三角形的至少两个不同方式。作为一个实例,连接性产生器86可使用来自外环边缘的两个点及来自内环边缘的一个点形成三角形,且将其连接在一起以形成三角形。作为另一实例,连接性产生器86可使用来自内环边缘的两个点及来自外环边缘的一个点形成三角形以形成三角形。
根据本发明中描述的技术,缝合表88可定义连接性产生器86应利用哪些点以形成基元。在一些实例中,缝合表88可基于沿着外环边缘的点的数目及所述内环边缘的点的数目定义连接性产生器86应利用哪些点以形成基元。举例来说,对于沿着外环边缘的给定数目的点及沿着内环边缘的数个点,可存在连接性产生器86应连接点的特定预定义的方式。
缝合表88可存储关于连接性产生器86应连接外环边缘及内环边缘的点的方式的此信息。在一些实例中,连接性产生器86可仅需要存取缝合表88,且可不需要存取任何其它表来确定连接外环边缘及内环边缘的点的方式。
如上文所描述,缝合表88可为2D缝合表,且连接性产生器86可基于沿着内缘及外缘存在的点的数目索引缝合表88。沿着内缘及外缘存在的点的数目可基于所接收的曲面细分因子。
连接性产生器86可使用沿着内缘[i]存在的点的数目作为用于确定缝合表88的列索引的基础,且使用沿着外缘[j]存在的点的数目作为用于确定缝合表88的行索引的基础。换句话说,连接性产生器86可利用值[i,j]来存取缝合表88。在其它实例中,沿着内缘存在的点的数目可形成用于索引缝合表88的行的基础,且沿着外缘存在的点的数目可形成用于索引缝合表88的列的基础。
在一些实例中,连接性产生器86连接点的方式可基于一半曲面细分因子。举例来说,连接性产生器86可使用沿着外环边缘存在的点的一半及/或使用沿着内环边缘存在的点的一半(例如,沿着外环边缘及/或内环边缘的长度的一半)形成基元。连接性产生器86接着可以与第一半相同的方式或以互逆方式连接点的剩余的一半。举例来说,在以互逆方式连接剩余的一半时,第一半及第二半可呈现为镜像基元。
因为连接性产生器86复制或反转其将外环边缘及/或内环边缘的第一半中的基元与第二半连接的方式,所以连接性产生器86可仅需要检索用于外及/或内环边缘的第一半的缝合信息。举例来说,假设沿着外环边缘存在10个点;在此实例中,连接性产生器86可检索如何连接10个点中的5个的信息。以此方式,连接性产生器86可依赖于一半曲面细分因子(例如,5除以10为0.5)来确定如何连接(即,缝合)点。
连接性产生器86接着可以于前5个点相同的方式或反转的方式连接剩余5个点。举例来说,以反转方式,连接性产生器86可连接剩余5个点,其方式为使得从剩余5个点产生的基元为从前5个点产生的基元的镜像基元。
在其中连接性产生器86依赖于一半曲面细分因子的实例中,缝合表88中的行及列的数目可约为边缘(例如,外环边缘或内环边缘)中的点的最大可能数目的一半。举例来说,如上文所描述,在一些实例中,沿着边缘的点的最大数目可为65个点。在这些实例中,缝合表88可为33x33表,因为33约为65的一半。
在一些实例中,可存在不允许内环边缘的一半具有3个以下点的要求。在这些状况下,可存在沿着内环边缘的一半的3到33个点,而非具有沿着内环边缘的一半的1到33个点。对于这些状况,有可能减少缝合表88的大小。举例来说,因为可允许内环边缘的一半具有3到33个点,所以对于其中内环边缘的一半具有3个以下点的状况,有可能从缝合表88移除行。举例来说,缝合表88的行可是针对内环边缘,且因为可存在沿着内缘的一半的3到33个点,所以缝合表88可需要31个行来表示3到33个点的可能性。在这些实例中,缝合表88可为31x33表。
连接性产生器86可使用一半曲面细分因子索引缝合表88来检索定义连接性产生器86应连接沿着域的边缘的一半存在的点的方式的条目值。举例来说,如果曲面细分因子定义沿着外环边缘存在10个点,且沿着内环边缘存在8个点,那么到缝合表88中的索引为5及4(即,10除以2为5,且8除以2为4)。然而,如果不使用一半曲面细分因子,那么到缝合表88中的索引可为10及8。
在一些实例中,连接性产生器86可从内环边缘的一半曲面细分因子减去2,且使用所得值作为到缝合表88中的索引。举例来说,因为在一些情况下,可存在沿着内环边缘的边缘的一半的仅3到33个点,从而产生缝合表88中的31个行,所以连接性产生器86可需要从一半曲面细分因子减去2以在这些情况下恰当地索引缝合表88。
以此方式,连接性产生器86可基于沿着域的外环边缘的点的数目确定到缝合表88中的第一索引,且可基于沿着域的内环边缘的点的数目确定到缝合表88中的第二索引。连接性产生器86接着可利用第一索引及第二索引从缝合表88检索条目值。
条目值可为多个位,其中每一位指示应使用来自外环边缘的多少点及来自内环边缘连接性产生器86的多少点进行连接以形成基元。举例来说,如果边缘上的点的数目为64,那么可存在最大128个基元,所述基元的顶点沿着外环边缘及内环边缘存在。因此,可存在最大64个基元,所述基元的顶点沿着外及内环边缘的一半长度存在。在此实例中,条目值中的位数可为64,其中每一位指示连接性产生器86应使用以形成一个基元的来自内环及外环边缘的点的数目。
作为一个实例,位值1可指示连接性产生器86应利用来自外环边缘的两个点及来自内环边缘的一个点以形成三角基元。位值0可指示连接性产生器86应利用来自外环边缘的一个点及来自内环边缘的两个点。然而,在其它实例中,位值1可指示连接性产生器86应利用来自外环边缘的一个点及来自内环边缘的两个点,且位值0可指示连接性产生器86应利用来自外环边缘的两个点及来自内环边缘的一个点。
在此实例中,连接性产生器86可确定从最低有效位(LSB)开始的条目值中的位中的每一者的位值。LSB可指示连接性产生器86应使用来自内环及外环边缘的多少点以产生沿着内环及外环边缘的第一基元。在LSB之后的位可指示连接性产生器86应使用来自内环及外环边缘的多少点以产生沿着内环及外环边缘的第二基元,等等。在一些实例中,第一基元可在域的左下处,且第二基元可为在顺时针方向上移动的下一基元。
连接性产生器86可重复这些步骤直到连接性产生器86产生预定数目的基元(例如,产生沿着内环及/或外环边缘的一半的基元)为止。举例来说,来自缝合表88的条目值的最高有效位(MSB)可指示连接性产生器86应使用来自外环及内环边缘的多少点以产生出现在沿着内环及外环边缘的一半方式点处的上一个基元。连接性产生器86接着可重复这些步骤以用于产生沿着内环及外环边缘的第二半存在的基元,如上文所描述。举例来说,连接性产生器86为创建的基元的总数可基于沿着外环边缘的一半的点的数目及沿着内环边缘的一半的点的数目。举例来说,通过对沿着外环边缘的一半的点的数目及沿着内环边缘的一半的点的数目求和,及从所得值减去一,连接性产生器86可确定将沿着内环及外环边缘创建的基元的总数。
以此方式,连接性产生器86可基于经检索的条目值确定使用外环的多少点及内环边缘的多少点来产生多个基元中的每一者。在曲面细分单元之后的着色器单元(例如,域着色器26(图1)或曲面细分评估着色器44(图2))使用域中的所得多个基元以添加贴片中的基元。具有额外基元的所得贴片接着经由图形处理管线经进一步处理,且最后经光栅化以呈现图像。
如上文所描述,连接性产生器86可确定条目值的一或多个位(例如,从LSB到MSB)的位值。在此实例中,一或多个位的每一位值对应于多个基元中的每一者。连接性产生器86接着可基于用以产生多个基元中的每一者的确定连接外环边缘及内环边缘的点。
此外,在一些实例中,连接性产生器86可连接存在于直到边缘的一半处的点,且对于另一半重复此过程。在这些实例中,到缝合表88中的索引可基于一半曲面细分因子。在其它实例中,连接性产生器86可连接一路直到边缘的点。在这些实例中,到缝合表88中的索引可基于曲面细分因子,且不必为一半曲面细分因子。
MSB并不必为64位条目值中的第一位。举例来说,尽管边缘的一半可包含最大64个基元,但在一些实例中,并不一定总是有64个基元。在这些实例中,连接性产生器86可以LSB开始,且确定从右向左开始的位值直到连接性产生器86产生外环及内环边缘的一半的所有基元为止。在此实例中,连接性产生器86所确定的上一个位值可被认为是MSB。
连接性产生器86接着可停止确定条目值中的任何剩余位的位值。举例来说,如果仅存在50个基元(所述基元的顶点为沿着内缘及外缘环的点),那么在从LSB开始确定LSB到第50位的位值之后,连接性产生器86可停止确定64位条目值的剩余14个位中的任一者的位值。
如上文所描述,缝合表88可定义对于边缘的一半来说连接性产生器86应使用来自内环及外环边缘的多少点。然而,本发明的方面不限于此。在其它实例中,缝合表88可定义对于整个内环及外环边缘来说连接性产生器86应使用来自内环及外环边缘的多少点。
在此状况下,缝合表88的大小可为64x64,因为沿着外环及内环边缘中的每一者存在最大64个点。而且,在此状况下,条目值的位数可为128,因为可存在最多128个基元,所述基元的顶点沿着内环及外环边缘存在;然而,较少的基元是可能的。因此,缝合表88的行及列的索引可基于沿着环边缘的可允许的点的最大数目。而且,条目值中的位数可基于沿着环边缘的可允许的点的最大数目。
使用一半曲面细分因子作为索引及确定存在于内环及外环边缘的一半处的基元的连接性可允许存储较少位的较小大小的缝合表88。举例来说,如上文所描述,在依赖于一半曲面细分因子时,缝合表88的大小可为33x33,而非64x64,且条目值中的位数可为64而非128。
图6为说明根据本发明中所描述的一或多个实例的实例缝合操作的流程图。仅出于说明的目的,参看图5。如上文所描述,图5提供曲面细分单元的实例。曲面细分单元的实例包含图1的曲面细分级24及图2的基元产生器42。
在图6中,点产生器84可经配置以确定沿着域的外环边缘的点的数目(90)。点产生器84还可确定沿着域的内环边缘的点的数目(92)。举例来说,点产生器84可将边缘的长度除以曲面细分因子以确定沿着外环边缘及内环边缘的点的数目。举例来说,如果对于边缘,曲面细分因子指示四,那么存在沿着边缘存在的四个点,其导致边缘被划分成五个部分。
连接性产生器86可经配置以基于沿着外环的点的数目及沿着内环边缘的点的数目利用仅单个缝合表88,来确定使用外环边缘的多少点及哪些点及内环边缘的多少点及哪些点以产生多个基元中的每一者,所述基元的顶点为沿着外环边缘的点及沿着内环边缘的点(94)。连接性产生器86可输出顶点的坐标(96)。接着可利用如上文关于图1及2所描述的图形处理管线处理输出坐标。
图7A到7G一起说明缝合表的实例。举例来说,图7A到7G一起说明图5的缝合表88的一个非限制性实例。举例来说,缝合表88可为经预编程的缝合表,且图7A到7G说明一个此经预编程的缝合表88。其它缝合表可为可能的,且本发明的方面不应被视为限于所说明的缝合表88。
归因于缝合表88的此实例的大小,横跨图7A到7G说明缝合表88。如上文所描述,在一些实例中,缝合表88可为31x33表。图7A说明31个行,且说明33个列中的标记为A到G的列1到7。图7B说明31个行,且说明33个列中的标记为H到L的列8到12。图7C说明31个行,且说明33个列中的标记为M到R的列13到18。图7D说明31个行,且说明33个列中的标记为S到W的列19到23。图7E说明31个行,且说明33个列中的标记为X到AB的列24到28。图7F说明31个行,且说明33个列中的标记为AC到AE的列29到31。图7G说明31个行,且说明33个列中的标记为AF及AG的列32及33。
此外,为了便于说明,图7A到7G说明数值。然而,在一些实例中,缝合表88可存储图7A到7G中所说明的数值的二进制值等效物,而非存储数值。举例来说,在一些实例中,缝合表88可存储64位条目值。在这些实例中,图7A到7G中所说明的值可由表示图7A到7G中所说明的值所需要的最多64个位表示。应理解并非图7A到7G中所说明的所有值需要由64个位表示。
应认识到,取决于实例,本文中所描述的技术中的任一者的某些动作或事件可用不同序列执行,可添加、合并或全部省略(例如,实践所述技术并不需要所有的所描述动作或事件)。此外,在某些实例中,可例如通过多线程处理、中断处理或多个处理器同时而非依序执行动作或事件。
在一或多个实例中,所描述的功能可以用硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么可将所述功能作为一或多个指令或代码存储在计算机可读媒体上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一或多个计算机或一个或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码及/或数据结构的任何可用媒体。借助于实例而非限制,此类计算机可读媒体可包括随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置或可用来存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。如本文所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘用激光以光学方式复制数据。上文的组合也应包含在计算机可读媒体的范围内。
代码可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。而且,可将所述技术完全实施于一或多个电路或逻辑元件中。
本发明的技术可以在广泛多种装置或设备中实施,包括无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。确切地说,如上文所描述,各种单元可结合合适的软件和/或固件组合在硬件单元中,或通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述各种实例。这些及其它实例在所附权利要求书的范围内。
Claims (27)
1.一种用于曲面细分的方法,其包括:
使用图形处理单元GPU确定沿着域的外环边缘的点的数目;
使用所述GPU确定沿着所述域的内环边缘的点的数目;
使用所述GPU基于沿着所述外环边缘的点的所述数目及沿着所述内环边缘的点的所述数目利用仅单个二维2D缝合表来确定使用所述外环边缘的多少点及哪些点及所述内环边缘的多少点及哪些点以产生多个基元中的每一者,所述基元的顶点为沿着所述外环边缘的所述点及沿着所述内环边缘的所述点;及
使用所述GPU输出所述顶点的坐标。
2.根据权利要求1所述的方法,其中利用仅所述单个2D缝合表包括:
基于沿着所述域的所述外环边缘的点的所述数目确定到所述缝合表中的第一索引;
基于沿着所述域的所述内环边缘的点的所述数目确定到所述缝合表中的第二索引;及
利用所述第一索引及所述第二索引从所述单个2D缝合表检索条目值,
所述方法进一步包括:
基于所述经检索的条目值确定使用所述外环边缘的多少点及所述内环边缘的多少点以产生所述多个基元中的每一者;及
基于用以产生所述多个基元中的每一者的所述确定连接所述外环边缘及所述内环边缘的所述点。
3.根据权利要求2所述的方法,其中确定所述第一索引包括将沿着所述外环边缘的点的所述数目除以二,且其中确定所述第二索引包括将沿着所述内环边缘的点的所述数目除以二。
4.根据权利要求2所述的方法,
其中确定使用所述外环边缘的多少点及哪些点及所述内环边缘的多少点及哪些点包括:
确定所述条目值的一或多个位的位值,其中所述一或多个位的每一位值对应于所述多个基元中的每一者,且
其中连接所述外环边缘及所述内环边缘的所述点包括:
在所述条目值的所述一或多个位的位值为一时连接来自所述外环边缘的两个点及来自所述内环边缘的一个点以产生对应于所述位值的基元。
5.根据权利要求2所述的方法,
其中确定使用所述外环边缘的多少点及哪些点及所述内环边缘的多少点及哪些点包括:
确定所述条目值的一或多个位的位值,其中所述一或多个位的每一位值对应于所述多个基元中的每一者,且
其中连接所述外环边缘及所述内环边缘的所述点包括:
在所述条目值的所述一或多个位的位值为零时连接来自所述外环边缘的一个点及来自所述内环边缘的两个点以产生对应于所述位值的基元。
6.根据权利要求1所述的方法,其中所述内环边缘平行于所述外环边缘。
7.根据权利要求1所述的方法,其中所述外环边缘包括第一外环边缘,所述内环边缘包括第一内环边缘,且所述多个基元包括第一多个基元,所述方法进一步包括:
确定沿着所述域的第二外环边缘的点的数目;
确定沿着所述域的第二内环边缘的点的数目;
基于沿着所述第二外环边缘的点的所述数目及沿着所述第二内环边缘的点的所述数目利用仅所述单个二维2D缝合表来确定使用所述第二外环边缘的多少点及哪些点及所述第二内环边缘的多少点及哪些点以产生第二多个基元中的每一者,所述基元的顶点为沿着所述第二外环边缘的所述点及沿着所述第二内环边缘的所述点。
8.根据权利要求1所述的方法,其中所述单个2D缝合表包含多个行及列,且其中所述行及列的数目是基于沿着所述外环边缘及所述内环边缘的可允许的点的最大数目。
9.一种用于图形处理单元GPU的曲面细分单元,所述曲面细分单元包括:
第一单元,其经配置以确定沿着域的外环边缘的点的数目,及确定沿着所述域的内环边缘的点的数目;及
第二单元,其经配置以基于沿着所述外环边缘的点的所述数目及沿着所述内环边缘的点的所述数目利用仅单个二维2D缝合表,来确定使用所述外环边缘的多少点及哪些点及所述内环边缘的多少点及哪些点以产生多个基元中的每一者,所述基元的顶点为沿着所述外环边缘的所述点及沿着所述内环边缘的所述点,及输出所述顶点的坐标。
10.根据权利要求9所述的曲面细分单元,其中所述第一单元包括点产生器,且所述第二单元包括连接性产生器。
11.根据权利要求9所述的曲面细分单元,其中所述第二单元经配置以:
基于沿着所述域的所述外环边缘的点的所述数目确定到所述缝合表中的第一索引;
基于沿着所述域的所述内环边缘的点的所述数目确定到所述缝合表中的第二索引;
利用所述第一索引及所述第二索引从所述单个2D缝合表检索条目值;
基于所述经检索的条目值确定使用所述外环边缘的多少点及所述内环边缘的多少点以产生所述多个基元中的每一者;及
基于用以产生所述多个基元中的每一者的所述确定连接所述外环边缘及所述内环边缘的所述点。
12.根据权利要求11所述的曲面细分单元,其中所述第二单元将沿着所述外环边缘的点的所述数目除以二以确定所述第一索引,且将沿着所述内环边缘的点的所述数目除以二以确定所述第二索引。
13.根据权利要求11所述的曲面细分单元,
其中为了确定使用所述外环边缘的多少点及哪些点及所述内环边缘的多少点及哪些点,所述第二单元经配置以确定所述条目值的一或多个位的位值,其中所述一或多个位的每一位值对应于所述多个基元中的每一者,且
其中为了连接所述外环边缘及所述内环边缘的所述点,所述第二单元经配置以在所述条目值的所述一或多个位的位值为一时连接来自所述外环边缘的两个点及来自所述内环边缘的一个点以产生对应于所述位值的基元。
14.根据权利要求11所述的曲面细分单元,
其中为了确定使用所述外环边缘的多少点及哪些点及所述内环边缘的多少点及哪些点,所述第二单元经配置以确定所述条目值的一或多个位的位值,其中所述一或多个位的每一位值对应于所述多个基元中的每一者,且
其中为了连接所述外环边缘及所述内环边缘的所述点,所述第二单元经配置以在所述条目值的所述一或多个位的位值为零时连接来自所述外环边缘的一个点及来自所述内环边缘的两个点以产生对应于所述位值的基元。
15.根据权利要求9所述的曲面细分单元,其中所述内环边缘平行于所述外环边缘。
16.根据权利要求9所述的曲面细分单元,其中所述外环边缘包括第一外环边缘,所述内缘包括第一内环边缘,且所述多个基元包括第一多个基元,且其中所述第二单元经配置以:
确定沿着所述域的第二外环边缘的点的数目;
确定沿着所述域的第二内环边缘的点的数目;
基于沿着所述第二外环边缘的点的所述数目及沿着所述第二内环边缘的点的所述数目利用仅所述单个二维2D缝合表来确定使用所述第二外环边缘的多少点及哪些点及所述第二内环边缘的多少点及哪些点以产生第二多个基元中的每一者,所述基元的顶点为沿着所述第二外环边缘的所述点及沿着所述第二内环边缘的所述点。
17.根据权利要求9所述的曲面细分单元,其中所述单个2D缝合表包含多个行及列,且其中所述行及列的数目是基于沿着所述外环边缘及所述内环边缘的可允许的点的最大数目。
18.一种装置,其包括:
中央处理单元CPU,其经配置以产生将曲面细分的贴片;
图形处理单元GPU,其包括:
第一单元,其经配置以接收所述贴片作为输入贴片,且基于所述输入贴片输出用于输出贴片的控制点及曲面细分因子;
曲面细分单元,其经配置以:
基于所述曲面细分因子确定域的类型;
基于所述曲面细分因子确定沿着所述域的外环边缘的点的数目;
基于所述曲面细分因子确定沿着所述域的内环边缘的点的数目;
基于沿着所述外环边缘的点的所述数目及沿着所述内环边缘的点的所述数目利用仅单个二维2D缝合表来确定使用所述外环边缘的多少点及哪些点及所述内环边缘的多少点及哪些点以产生多个基元中的每一者,所述基元的顶点为沿着所述外环边缘的所述点及沿着所述内环边缘的所述点;及
输出所述顶点的坐标;及
第二单元,其经配置以接收所述顶点的所述坐标,且基于所述顶点的所述所接收的坐标将所述基元添加到所述输出贴片。
19.根据权利要求18所述的装置,其中所述GPU包含存储所述2D缝合表的本地存储器。
20.根据权利要求18所述的装置,其中所述第一单元包括第一着色器单元,且所述第二单元包括第二着色器单元。
21.根据权利要求20所述的装置,其中所述第一着色器单元包括外壳着色器阶段及曲面细分控制着色器中的一者,其中所述曲面细分单元包括曲面细分阶段及基元产生器中的一者,且其中所述第二着色器单元包括域着色器阶段及曲面细分评估着色器中的一者。
22.根据权利要求18所述的装置,其中所述曲面细分单元经配置以:
基于沿着所述域的所述外环边缘的点的所述数目确定到所述缝合表中的第一索引;
基于沿着所述域的所述内环边缘的点的所述数目确定到所述缝合表中的第二索引;
利用所述第一索引及所述第二索引从所述单个2D缝合表检索条目值;
基于所述经检索的条目值确定使用所述外环边缘的多少点及所述内环边缘的多少点以产生所述多个基元中的每一者;及
基于用以产生所述多个基元中的每一者的所述确定连接所述外环边缘及所述内环边缘的所述点。
23.根据权利要求18所述的装置,其中所述内环边缘平行于所述外环边缘。
24.根据权利要求18所述的装置,其中所述外环边缘包括第一外环边缘,所述内缘包括第一内环边缘,且所述多个基元包括第一多个基元,且其中所述曲面细分单元经配置以:
确定沿着所述域的第二外环边缘的点的数目;
确定沿着所述域的第二内环边缘的点的数目;
基于沿着所述第二外环边缘的点的所述数目及沿着所述第二内环边缘的点的所述数目利用仅所述单个二维2D缝合表来确定使用所述第二外环边缘的多少点及哪些点及所述第二内环边缘的多少点及哪些点以产生第二多个基元中的每一者,所述基元的顶点为沿着所述第二外环边缘的所述点及沿着所述第二内环边缘的所述点。
25.根据权利要求18所述的装置,其中所述单个2D缝合表包含多个行及列,且其中所述行及列的数目是基于沿着所述外环边缘及所述内环边缘的可允许的点的最大数目。
26.一种用于图形处理单元GPU的曲面细分单元,所述曲面细分单元包括:
用于确定沿着域的外环边缘的点的数目的装置;
用于确定沿着所述域的内环边缘的点的数目的装置;
用于基于沿着所述外环边缘的点的所述数目及沿着所述内环边缘的点的所述数目利用仅单个二维2D缝合表来确定使用所述外环边缘的多少点及哪些点及所述内环边缘的多少点及哪些点以产生多个基元中的每一者的装置,所述基元的顶点为沿着所述外环边缘的所述点及沿着所述内环边缘的所述点;及
用于输出所述顶点的坐标的装置。
27.一种计算机可读存储媒体,其包含存储于其上的指令,所述指令在执行时致使一或多个处理器:
确定沿着域的外环边缘的点的数目;
确定沿着所述域的内环边缘的点的数目;
基于沿着所述外环边缘的点的所述数目及沿着所述内环边缘的点的所述数目利用仅单个二维2D缝合表来确定使用所述外环边缘的多少点及哪些点及所述内环边缘的多少点及哪些点以产生多个基元中的每一者,所述基元的顶点为沿着所述外环边缘的所述点及沿着所述内环边缘的所述点;及
输出所述顶点的坐标。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/599,645 US9076260B2 (en) | 2012-08-30 | 2012-08-30 | Stitching for primitives in graphics processing |
US13/599,645 | 2012-08-30 | ||
PCT/US2013/052064 WO2014035572A1 (en) | 2012-08-30 | 2013-07-25 | Stitching for primitives in graphics processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104584082A true CN104584082A (zh) | 2015-04-29 |
CN104584082B CN104584082B (zh) | 2016-08-31 |
Family
ID=48948527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380043417.XA Expired - Fee Related CN104584082B (zh) | 2012-08-30 | 2013-07-25 | 在图形处理中的基元的缝合 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9076260B2 (zh) |
CN (1) | CN104584082B (zh) |
WO (1) | WO2014035572A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106251391A (zh) * | 2015-06-05 | 2016-12-21 | 想象技术有限公司 | 细分方法 |
CN115170600A (zh) * | 2022-09-05 | 2022-10-11 | 南京砺算科技有限公司 | 用于曲面细分的缝合方法及装置、存储介质、终端设备 |
CN115861512A (zh) * | 2023-01-31 | 2023-03-28 | 南京砺算科技有限公司 | 用于曲面细分的输出点序列确定方法及装置、存储介质 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9142060B2 (en) | 2012-08-30 | 2015-09-22 | Qualcomm Incorporated | Computation reduced tessellation |
US9082204B2 (en) | 2012-08-30 | 2015-07-14 | Qualcomm Incorporated | Storage structures for stitching primitives in graphics processing |
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 |
US10134171B2 (en) * | 2014-09-29 | 2018-11-20 | Arm Limited | Graphics processing systems |
US9804666B2 (en) | 2015-05-26 | 2017-10-31 | Samsung Electronics Co., Ltd. | Warp clustering |
US10535188B2 (en) * | 2016-09-23 | 2020-01-14 | Apple Inc. | Tessellation edge shaders |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6462738B1 (en) * | 1999-04-26 | 2002-10-08 | Spatial Technology, Inc. | Curved surface reconstruction |
US6600488B1 (en) * | 2000-09-05 | 2003-07-29 | Nvidia Corporation | Tessellation system, method and computer program product with interior and surrounding meshes |
US8120607B1 (en) * | 2008-05-30 | 2012-02-21 | Nvidia Corporation | Boundary transition region stitching for tessellation |
CN102598063A (zh) * | 2009-09-09 | 2012-07-18 | 先进微装置公司 | 曲面细分引擎及其应用 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0488563A3 (en) | 1990-11-30 | 1993-11-03 | Ibm | Method and apparatus for rendering trimmed parametric surfaces |
US6747644B1 (en) | 1995-08-04 | 2004-06-08 | Sun Microsystems, Inc. | Decompression of surface normals in three-dimensional graphics data |
US5995109A (en) | 1997-04-08 | 1999-11-30 | Lsi Logic Corporation | Method for rendering high order rational surface patches |
US6028607A (en) | 1998-01-15 | 2000-02-22 | Sun Microsystems, Inc. | Method of producing a sequence of triangles from a vertex raster with and without half resolution edges while decompressing a compressed geometry stream |
US6438266B1 (en) | 1998-08-27 | 2002-08-20 | Lucent Technologies Inc. | Encoding images of 3-D objects with improved rendering time and transmission processes |
US6445389B1 (en) | 1998-10-06 | 2002-09-03 | International Business Machines Corp. | Compression of polygonal models with low latency decompression |
US6597356B1 (en) | 2000-08-31 | 2003-07-22 | Nvidia Corporation | Integrated tessellator in a graphics processing unit |
US6940505B1 (en) | 2002-05-20 | 2005-09-06 | Matrox Electronic Systems Ltd. | Dynamic tessellation of a base mesh |
US7109987B2 (en) | 2004-03-02 | 2006-09-19 | Ati Technologies Inc. | Method and apparatus for dual pass adaptive tessellation |
US7928993B2 (en) * | 2006-07-28 | 2011-04-19 | Intel Corporation | Real-time multi-resolution 3D collision detection using cube-maps |
US8643644B2 (en) | 2008-03-20 | 2014-02-04 | Qualcomm Incorporated | Multi-stage tessellation for graphics rendering |
US8599202B1 (en) | 2008-09-29 | 2013-12-03 | Nvidia Corporation | Computing tessellation coordinates using dedicated hardware |
US8482560B2 (en) | 2008-12-31 | 2013-07-09 | Intel Corporation | Image forming techniques |
US20100214294A1 (en) | 2009-02-20 | 2010-08-26 | Microsoft Corporation | Method for tessellation on graphics hardware |
US9245371B2 (en) | 2009-09-11 | 2016-01-26 | Nvidia Corporation | Global stores and atomic operations |
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 |
US9082204B2 (en) | 2012-08-30 | 2015-07-14 | Qualcomm Incorporated | Storage structures for stitching primitives in graphics processing |
US9142060B2 (en) | 2012-08-30 | 2015-09-22 | Qualcomm Incorporated | Computation reduced tessellation |
-
2012
- 2012-08-30 US US13/599,645 patent/US9076260B2/en not_active Expired - Fee Related
-
2013
- 2013-07-25 WO PCT/US2013/052064 patent/WO2014035572A1/en active Application Filing
- 2013-07-25 CN CN201380043417.XA patent/CN104584082B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6462738B1 (en) * | 1999-04-26 | 2002-10-08 | Spatial Technology, Inc. | Curved surface reconstruction |
US6600488B1 (en) * | 2000-09-05 | 2003-07-29 | Nvidia Corporation | Tessellation system, method and computer program product with interior and surrounding meshes |
US8120607B1 (en) * | 2008-05-30 | 2012-02-21 | Nvidia Corporation | Boundary transition region stitching for tessellation |
CN102598063A (zh) * | 2009-09-09 | 2012-07-18 | 先进微装置公司 | 曲面细分引擎及其应用 |
Non-Patent Citations (1)
Title |
---|
CHOI Y-S ET AL: "Adaptive tessellation of PN triangles using minimum-artifact edge linking", 《IEICE TRANSACTIONS ON FUNDAMENTALS OF ELECTRONICS, COMMUNICATIONS AND COMPUTER SCIENCES, ENGINEERING SCIENCES SOCIETY》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106251391A (zh) * | 2015-06-05 | 2016-12-21 | 想象技术有限公司 | 细分方法 |
CN106251391B (zh) * | 2015-06-05 | 2021-05-14 | 想象技术有限公司 | 细分方法 |
CN106251391B9 (zh) * | 2015-06-05 | 2021-07-20 | 想象技术有限公司 | 细分方法 |
US11263811B2 (en) | 2015-06-05 | 2022-03-01 | Imagination Technologies Limited | Tessellation method using vertex tessellation factors |
CN115170600A (zh) * | 2022-09-05 | 2022-10-11 | 南京砺算科技有限公司 | 用于曲面细分的缝合方法及装置、存储介质、终端设备 |
CN115861512A (zh) * | 2023-01-31 | 2023-03-28 | 南京砺算科技有限公司 | 用于曲面细分的输出点序列确定方法及装置、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US9076260B2 (en) | 2015-07-07 |
US20140063013A1 (en) | 2014-03-06 |
WO2014035572A1 (en) | 2014-03-06 |
CN104584082B (zh) | 2016-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104584082A (zh) | 在图形处理中的基元的缝合 | |
CN104584083A (zh) | 通过对称边缘***进行表面曲面细分 | |
CN104737208A (zh) | 曲面细分单元中的顶点次序 | |
CN102096907B (zh) | 图像处理技术 | |
US9870639B2 (en) | Graphic processing unit and method of performing, by graphic processing unit, tile-based graphics pipeline | |
CN103946895B (zh) | 基于平铺块的呈现中的镶嵌方法和设备 | |
CN103620641B (zh) | 最大化图形处理器中的并行处理 | |
US9569811B2 (en) | Rendering graphics to overlapping bins | |
US9177351B2 (en) | Multi-primitive graphics rendering pipeline | |
US10223761B2 (en) | Graphics pipeline method and apparatus | |
US8482560B2 (en) | Image forming techniques | |
CN110383337A (zh) | 可变速率着色 | |
CN104956402A (zh) | 用于曲面细分的域坐标的输出排序 | |
CN110738722B (zh) | 一种热力图纹理的生成方法、装置及设备 | |
CN104169974A (zh) | 图形处理单元中基于可见性的状态更新 | |
US20170091897A1 (en) | Graphics processing device and operating method | |
CN104821008A (zh) | 用于处理三维场景的几何图像的方法和设备 | |
US20070070073A1 (en) | Method and system for generating automated exploded views | |
JP2021033375A (ja) | 三次元形状データの編集装置、及び三次元形状データの編集プログラム | |
JP6942007B2 (ja) | 画像処理装置、及びプログラム | |
JP5777736B2 (ja) | 地図データ作成装置、地図データ作成方法および記憶媒体 | |
JPWO2013114559A1 (ja) | 地図描画装置、ナビゲーション装置および地図描画方法 | |
TWI220043B (en) | Two-level rejection in 3D graphics | |
GB2625800A (en) | Applying texture processing to a block of fragments in a graphics processing unit | |
Reinwald | Fast KNN in Screenspace on GPGPU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160831 Termination date: 20190725 |