CN106251391B - 细分方法 - Google Patents

细分方法 Download PDF

Info

Publication number
CN106251391B
CN106251391B CN201610391081.1A CN201610391081A CN106251391B CN 106251391 B CN106251391 B CN 106251391B CN 201610391081 A CN201610391081 A CN 201610391081A CN 106251391 B CN106251391 B CN 106251391B
Authority
CN
China
Prior art keywords
vertex
factor
subdivision
vertices
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610391081.1A
Other languages
English (en)
Other versions
CN106251391A (zh
CN106251391B9 (zh
Inventor
S·菲尼
瓦士利基·斯麦阿基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Priority to CN202110540278.8A priority Critical patent/CN113256774A/zh
Publication of CN106251391A publication Critical patent/CN106251391A/zh
Publication of CN106251391B publication Critical patent/CN106251391B/zh
Application granted granted Critical
Publication of CN106251391B9 publication Critical patent/CN106251391B9/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing

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)
  • Medicines Containing Material From Animals Or Micro-Organisms (AREA)

Abstract

描述了使用顶点细分因数的细分方法。对于四边形补片,该方法涉及比较四边形补片的每个顶点的顶点细分因数与阈值,以及如果没有一个顶点细分因数超过阈值,则四边形被细分成两个或四个三角形。如果四个顶点细分因数中的至少一个超过阈值,则使用递归或迭代方法,其考虑四边形补片的每个顶点并确定如何根据选定顶点的顶点细分因数的值或根据选定顶点和邻顶点的顶点细分因数的值来进一步细分补片。对于三角形补片描述类似的方法。

Description

细分方法
背景
细分是在计算机图形中用于将表示在场景中的对象的一组表面分割成一般是三角形的多个更小和更简单的片(被称为基元)的技术,其更容易渲染。因而产生的细分的表面通常是对原始表面的近似,但这个近似的准确度可通过增加所产生的基元的数量来增加,这又通常导致基元更小。细分/再分的量通常由细节级别(LOD)确定。因此一般使用增加数量的基元,其中需要更高的细节级别,例如因为对象更接近观看者和/或对象具有更复杂的形状。然而,更大数量的三角形的使用增加了渲染场景所需的处理努力。
一般对补片执行再分成三角形基元,补片在形状上是正方形或三角形的(即四边形或三角形)并可弯曲以与它们代表的对象的表面保持一致(并因此可被称为“表面补片”)和/或使位移映射被应用。然而,再分不对弯曲补片执行而替代地在补片的域中被执行(例如,好像补片是平面的,而不是由多项式方程定义),补片可从(u,v)参数方面被定义并被称为“参量空间”。这意味着细分过程独立于在最终表面中存在的任何曲率。
细分可提前被执行(例如以计算在不同的细节级别处和/或来自不同的视角的场景的多个不同的视图)或可在运行中被执行(例如以提供连续或视图相关的细节级别)。使用一些现有的细分方法,用户可经历不希望有的视觉伪像,其中虽然所请求的细节级别平稳地改变,因而产生的细分以间断的方式改变并可被称为“爆裂”。
下面所述的实施方式仅作为例子被提供,且并不是解决用于执行细分的已知方法和装置的任何或所有缺点的实现的限制。
概述
这个概述被提供来以简化的形式介绍一系列概念,其在下面在详细描述中被进一步描述。这个概述并不打算识别所主张的主题的关键特征或必要特征,也不打算用作在确定所主张的主题的范围时的帮助。
描述了使用顶点细分因数的细分方法。对于四边形补片,该方法涉及比较四边形补片的每个顶点的顶点细分因数与阈值,且没有一个超过阈值,四边形被再分成两个或四个三角形(例如根据补片是顶级补片还是通过再分顶级补片而形成的子四边形)。如果四个顶点细分因数中的至少一个超过阈值(其可以等于一),则使用递归或迭代方法,其考虑四边形补片的每个顶点并确定如何根据选定顶点的顶点细分因数的值或根据选定顶点和邻顶点的顶点细分因数的值来进一步细分补片。对三角形补片描述类似的方法。
第一方面提供在计算机图形系统中执行细分的方法,该方法包括:a)接收包括定义四边形补片的四个顶点的输入,每个顶点包括域空间坐标和顶点细分因数;b)比较顶点细分因数与阈值;c)响应于确定所有四个顶点细分因数不超过阈值,将补片分成两个或四个三角形;以及d)响应于确定四个顶点细分因数中的至少一个超过阈值:产生补片的中心顶点并计算新添加的中心顶点的顶点细分因数和混合因数;进而选择四个所接收的顶点中的每个,且对于每个选定顶点:基于选定顶点来定义顶点;响应于确定选定顶点的顶点细分因数超过阈值或两个邻顶点的顶点细分因数超过阈值,添加两个新顶点以再分在选定顶点和邻顶点之间的每条边,计算新顶点的顶点细分因数和混合因数并提供定义子四边形并包括所定义的顶点、中心顶点和两个新顶点的四个顶点作为a)的进一步的输入;以及响应于确定选定顶点的顶点细分因数不超过阈值以及正好一个邻顶点的顶点细分因数超过阈值,添加新顶点以再分在选定顶点和具有超过阈值的顶点细分因数的邻顶点之间的边,并通过将所定义的顶点连接到由所定义的顶点、新添加的顶点、中心顶点和另一邻顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形。
第二方面提供包括硬件逻辑的硬件细分单元,硬件逻辑被配置为:a)接收包括定义四边形补片的四个顶点的输入,每个顶点包括域空间坐标和顶点细分因数;b)比较顶点细分因数与阈值;c)响应于确定所有四个顶点细分因数不超过阈值,将补片分成两个或四个三角形;以及d)响应于确定四个顶点细分因数中的至少一个超过阈值:产生补片的中心顶点并计算新添加的中心顶点的顶点细分因数和混合因数;进而选择四个所接收的顶点中的每个,且对于每个选定顶点:基于选定顶点来定义顶点;响应于确定选定顶点的顶点细分因数超过阈值或两个邻顶点的顶点细分因数超过阈值,添加两个新顶点以再分在选定顶点和邻顶点之间的每条边,计算新顶点的顶点细分因数和混合因数并提供定义子四边形并包括所定义的顶点、中心顶点和两个新顶点的四个顶点作为a)的进一步的输入;以及响应于确定选定顶点的顶点细分因数不超过阈值以及正好一个邻顶点的顶点细分因数超过阈值,添加新顶点以再分在选定顶点和具有超过阈值的顶点细分因数的邻顶点之间的边,并通过将所定义的顶点连接到由所定义的顶点、新添加的顶点、中心顶点和另一邻顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形。
另外的方面提供存储在其上的在被执行时使至少一个处理器执行如本文所述的方法的计算机可执行程序代码的计算机可读存储介质、包括如本文所述的硬件细分单元的图形处理单元、具有在其上编码的定义如本文所述的硬件细分单元的计算机可读程序代码的计算机可读存储介质以及具有在其上编码的定义配置成执行本文所述的方法的硬件细分单元的计算机可读程序代码的计算机可读存储介质。
本发明的另外的方面还涉及以下内容:
1)一种包括硬件逻辑的硬件细分单元,所述硬件逻辑配置成:
a)接收包括定义四边形补片的四个顶点的输入,每个顶点包括域空间坐标和顶点细分因数;
b)比较所述顶点细分因数与阈值;
c)响应于确定所有四个顶点细分因数小于或等于所述阈值,将所述补片分成两个或四个三角形;以及
d)响应于确定所述四个顶点细分因数中的至少一个超过所述阈值:
产生所述补片的中心顶点并计算新添加的中心顶点的顶点细分因数和混合因数;
进而选择四个所接收的顶点中的每个,且对于每个选定顶点:
基于所述选定顶点来定义顶点;
响应于确定所述选定顶点的顶点细分因数超过所述阈值或两个邻顶点的顶点细分因数超过所述阈值,添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边,计算所述新顶点的顶点细分因数和混合因数并提供定义子四边形并包括所定义的顶点、所述中心顶点和所述两个新顶点的四个顶点作为a)的进一步的输入;以及
响应于确定所述选定顶点的顶点细分因数不超过所述阈值以及正好一个邻顶点的顶点细分因数超过所述阈值,添加新顶点以再分在所述选定顶点和具有超过所述阈值的顶点细分因数的所述邻顶点之间的边,并通过将所定义的顶点连接到在由所定义的顶点、新添加的顶点、所述中心顶点和另一邻顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形。
2)如1)所述的硬件细分单元,其中配置成将所述补片分成两个或四个三角形的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:
确定所述补片是否是顶级补片;
响应于确定所述补片是顶级补片,添加中心顶点并通过将每个输入顶点连接到所述中心顶点来创建四个三角形;以及
响应于确定所述补片不是顶级补片,通过将所述补片的源顶点连接到所述补片的对角地相对的顶点来创建两个三角形。
3)如1)所述的硬件细分单元,其中配置成产生所述补片的中心顶点的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:
对于顶级补片:产生具有由(i)在N维空间中的所有四个角顶点的位置的平均值和(ii)在然后被映射到N维空间的域空间中的所有四个角顶点的定位的平均值的加权混合给出的位置的中心顶点;以及
对于不是顶级补片的补片:产生具有由(i)在N维空间中的选定顶点和对角地相对的顶点的位置的平均值和(ii)在然后被映射到N维空间的域空间中的选定顶点和对角地相对的顶点的定位的平均值的加权混合给出的位置的中心顶点,
以及其中所述加权混合使用根据所述顶点细分因数确定的权重。
4)如3)所述的硬件细分单元,其中所述权重由下式给出:
MAXi=0..3(MIN(TFi–1,1))。
5)如1)所述的硬件细分单元,其中配置成计算所述新添加的中心顶点的顶点细分因数和混合因数的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:
使用下式计算初始顶点细分因数:
Figure GDA0001760839300000051
以及
通过下列操作来计算所述新添加的中心顶点的顶点细分因数TFcentre和混合因数BWcentre
确定InitialTFcentre是否小于二;
响应于确定InitialTFcentre小于2.0,设置TFcentre=1和BWcentre=BlendWeightFunc(TF0,TF1,TF2,TF3),其中:
BlendWeightFunc(TF0,…TF3).=MAXi=0..3(MIN(TFi–1,1))
响应于确定InitialTFcentre不小于2.0,设置TFcentre=InitialTFcentre/2和BWcentre=1.0。
6)如1)所述的硬件细分单元,其中配置成基于所述选定顶点来定义顶点的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:
设置所定义的顶点的域空间坐标等于所述选定顶点的域空间坐标;
确定所述选定顶点的顶点细分因数是否等于1.0以及所述选定顶点的顶点细分因数是否小于2.0;
响应于确定所述选定顶点的顶点细分因数等于1.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于所述选定顶点的混合因数;
响应于确定所述选定顶点的顶点细分因数不等于1.0并小于2.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于比所述选定顶点的顶点细分因数小一;以及
响应于确定所述选定顶点的顶点细分因数不小于2.0,设置所定义的顶点的顶点细分因数等于所述选定顶点的顶点细分因数的一半并设置所定义的顶点的混合因数等于一。
7)如1)所述的硬件细分单元,其中配置成添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边并计算所述新顶点的顶点细分因数和混合因数的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:对于再分在顶点VA和VB之间的边的每个新顶点VM
使用下式计算VM的初始顶点细分因数:
Figure GDA0001760839300000061
以及
通过下列操作来计算新添加的顶点VM的顶点细分因数TFM和混合因数BWM
确定InitialTFM是否小于二;
响应于确定InitialTFM小于2.0,设置TFM=1和BWM=MAX(MIN(TFA-1,1),MIN(TFB-1,1));
响应于确定InitialTFM不小于2.0,设置TFM=InitialTFM/2和BWM=1.0;
将在域空间中的VM的位置设置为VA和VB的域空间坐标的平均值并在N维空间中的具有使用BWM由(i)在N维空间中的VA和VB的位置的平均值和(ii)在然后被映射到N维空间的域空间中的VM的位置的加权混合给出的位置的位置处。
8)如1)所述的硬件细分单元,还包括配置成执行下列操作的硬件逻辑:
接收包括定义三角形补片的三个顶点的输入,每个顶点包括域空间坐标和顶点细分因数;
比较所述顶点细分因数与阈值;以及
响应于确定所述三个顶点细分因数中的至少一个超过所述阈值,
产生所述补片的中心顶点并计算新添加的顶点的顶点细分因数和混合因数;
进而选择三个所接收的顶点中的每个,且对于每个选定顶点:
基于所述选定顶点来定义顶点;
响应于确定所述选定顶点的顶点细分因数超过所述阈值,添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边,计算所述新顶点的顶点细分因数和混合因数并提供定义子四边形并包括所定义的顶点、所述中心顶点和所述两个新顶点的四个顶点作为a)的进一步的输入;以及
响应于确定所述选定顶点的顶点细分因数不超过所述阈值以及两个邻顶点的顶点细分因数都超过所述阈值,添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边,并通过将所定义的顶点连接到由所定义的顶点、新添加的顶点和所述中心顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形;
响应于确定所述选定顶点的顶点细分因数不超过所述阈值、下一邻顶点的顶点细分因数超过所述阈值以及前一邻顶点的顶点细分因数不超过所述阈值,添加新顶点以再分在所述选定顶点和所述下一邻顶点之间的边,并绘制连接所定义的顶点、所述新添加的顶点和所述中心顶点的单个三角形;以及
响应于确定所述选定顶点的顶点细分因数不超过所述阈值、下一邻顶点的顶点细分因数不超过所述阈值以及前一邻顶点的顶点细分因数超过所述阈值,添加新顶点以再分在所述选定顶点和所述前一邻顶点之间的边,并通过将所定义的顶点连接到由所定义的顶点、所述新添加的顶点、所述中心顶点和所述下一邻顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形。
9)如8)所述的硬件细分单元,其中配置成对于三角形补片产生所述补片的中心顶点并计算新添加的顶点的顶点细分因数和混合因数的硬件逻辑包括配置成执行下列操作的硬件逻辑:
产生具有在域空间中的由所述三角形补片的所述三个顶点的平均值给出的位置的中心顶点;
使用下式计算初始顶点细分因数:
Figure GDA0001760839300000081
以及
通过下列操作来计算新添加的中心顶点的顶点细分因数TFcentre和混合因数BWcentre
确定InitialTFcentre是否小于二;
响应于确定InitialTFcentre小于2.0,设置TFcentre=1和BWcentre=BlendWeightFunc(TF0,TF1,TF2),其中:
BlendWeightFunc(TF0,…TF2).=MAXi=0..2(MIN(TFi–1,1))
响应于确定InitialTFcentre不小于2.0,设置TFcentre=InitialTFcentre/2和BWcentre=1.0。
10)如8)所述的硬件细分单元,其中配置成对于三角形补片基于所述选定顶点来定义顶点的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:
设置所定义的顶点的域空间坐标等于所述选定顶点的域空间坐标;
确定所述选定顶点的顶点细分因数是否等于1.0以及所述选定顶点的顶点细分因数是否小于2.0;
响应于确定所述选定顶点的顶点细分因数等于1.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于所述选定顶点的混合因数;
响应于确定所述选定顶点的顶点细分因数不等于1.0并小于2.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于比所述选定顶点的顶点细分因数小一;以及
响应于确定所述选定顶点的顶点细分因数不小于2.0,设置所定义的顶点的顶点细分因数等于所述选定顶点的顶点细分因数的一半并设置所定义的顶点的混合因数等于一。
11)如8)所述的硬件细分单元,其中配置成对于三角形补片添加新顶点以再分在所述选定顶点和邻顶点之间的边并计算所述新顶点的顶点细分因数和混合因数的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:对于再分在顶点VA和VB之间的边的每个新顶点VM
使用下式计算VM的初始顶点细分因数:
Figure GDA0001760839300000091
以及
通过下列操作来计算新添加的顶点VM的顶点细分因数TFM和混合因数BWM
确定InitialTFM是否小于二;
响应于确定InitialTFM小于2.0,设置TFM=1和BWM=MAX(MIN(TFA-1,1),MIN(TFB-1,1));
响应于确定InitialTFM不小于2.0,设置TFM=InitialTFM/2和BWM=1.0;
将在域空间中的VM的位置设置为VA和VB的域空间坐标的平均值并在N维空间中的具有使用BWM由(i)在N维空间中的VA和VB的位置的平均值和(ii)在然后被映射到N维空间的域空间中的VM的位置的加权混合给出的位置的位置处。
12)如1)所述的硬件细分单元,还包括配置成执行下列操作的硬件逻辑:
接收包括定义P边补片的P个顶点的输入,其中P>4,且每个顶点包括域空间坐标和顶点细分因数;
比较所述顶点细分因数与阈值;
响应于确定所有P个顶点细分因数不超过所述阈值,添加中心顶点并将所述补片分成P个三角形;以及
响应于确定所述P个顶点细分因数中的至少一个超过所述阈值:
产生所述补片的中心顶点并计算新添加的中心顶点的顶点细分因数和混合因数;
进而选择P个所接收的顶点中的每个,且对于每个选定顶点:
基于所述选定顶点来定义顶点;
响应于确定所述选定顶点的顶点细分因数超过所述阈值或两个邻顶点的顶点细分因数超过所述阈值,添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边,计算所述新顶点的顶点细分因数和混合因数并提供定义子四边形并包括所定义的顶点、所述中心顶点和所述两个新顶点的四个顶点作为(a)的进一步的输入;以及
响应于确定所述选定顶点的顶点细分因数不超过所述阈值以及正好一个邻顶点的顶点细分因数超过所述阈值,添加新顶点以再分在所述选定顶点和具有超过所述阈值的顶点细分因数的所述邻顶点之间的边,并通过将所定义的顶点连接到在由所定义的顶点、所述新添加的顶点、所述中心顶点和另一邻顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形。
13)如1)-12)中的任一项所述的硬件细分单元,还包括存储器元件,所述存储器元件布置成存储用于在补片或子四边形内重新使用的顶点数据,使得被添加以再分边的顶点每补片或子四边形只被确定一次,所述边是所述补片或子四边形的多于一个再分的部分的部分。
14)一种在计算机图形系统中执行细分的方法,该方法包括:
a)接收包括定义四边形补片的四个顶点的输入,每个顶点包括域空间坐标和顶点细分因数;
b)比较所述顶点细分因数与阈值;
c)响应于确定所有四个顶点细分因数不超过所述阈值,将所述补片分成两个或四个三角形;以及
d)响应于确定至少一个细分因数超过所述阈值:
产生所述补片的中心顶点并计算新添加的中心顶点的顶点细分因数和混合因数;
进而选择四个所接收的顶点中的每个,且对于每个选定顶点:
基于所述选定顶点来定义顶点;
响应于确定所述选定顶点的顶点细分因数超过所述阈值或两个邻顶点的顶点细分因数超过所述阈值,添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边,计算所述新顶点的顶点细分因数和混合因数并提供定义子四边形并包括所定义的顶点、所述中心顶点和所述两个新顶点的四个顶点作为
a)的进一步的输入;以及
响应于确定所述选定顶点的顶点细分因数不超过所述阈值以及正好一个邻顶点的顶点细分因数超过所述阈值,添加新顶点以再分在所述选定顶点和具有超过所述阈值的顶点细分因数的所述邻顶点之间的边,并通过将所定义的顶点连接到由所定义的顶点、所述新添加的顶点、所述中心顶点和另一邻顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形。
15)如14)所述的方法,其中,将所述补片分成两个或四个三角形包括:
确定所述补片是否是顶级补片;
响应于确定所述补片是顶级补片,添加中心顶点并通过将每个输入顶点连接到所述中心顶点来创建四个三角形;以及
响应于确定所述补片不是顶级补片,通过将所述补片的源顶点连接到所述补片的对角地相对的顶点来创建两个三角形。
16)如14)所述的方法,其中产生所述补片的中心顶点包括:
对于顶级补片:产生具有由(i)在N维空间中的所有四个角顶点的位置的平均值和(ii)在然后被映射到N维空间的域空间中的所有四个角顶点的定位的平均值的加权混合给出的位置的中心顶点;以及
对于不是顶级补片的补片:产生具有由(i)在N维空间中的选定顶点和对角地相对的顶点的位置的平均值和(ii)在然后被映射到N维空间的域空间中的选定顶点和对角地相对的顶点的定位的平均值的加权混合给出的位置的中心顶点,
以及其中所述加权混合使用根据所述顶点细分因数确定的权重。
17)如14)所述的方法,其中计算所述新添加的中心顶点的顶点细分因数和混合因数包括:
使用下式计算初始顶点细分因数:
Figure GDA0001760839300000121
以及
通过下列操作来计算所述新添加的中心顶点的顶点细分因数TFcentre和混合因数BWcentre
确定InitialTFcentre是否小于二;
响应于确定InitialTFcentre小于2.0,设置TFcentre=1和BWcentre=BlendWeightFunc(TF0,TF1,TF2,TF3),其中:
BlendWeightFunc(TF0,…TF3).=MAXi=0..3(MIN(TFi–1,1))
响应于确定InitialTFcentre不小于2.0,设置TFcentre=InitialTFcentre/2和BWcentre=1.0。
18)如14)所述的方法,其中基于所述选定顶点来定义顶点包括:
设置所定义的顶点的域空间坐标等于所述选定顶点的域空间坐标;
确定所述选定顶点的顶点细分因数是否等于1.0以及所述选定顶点的顶点细分因数是否小于2.0;
响应于确定所述选定顶点的顶点细分因数等于1.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于所述选定顶点的混合因数;
响应于确定所述选定顶点的顶点细分因数不等于1.0并小于2.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于比所述选定顶点的顶点细分因数小一;以及
响应于确定所述选定顶点的顶点细分因数不小于2.0,设置所定义的顶点的顶点细分因数等于所述选定顶点的顶点细分因数的一半并设置所定义的顶点的混合因数等于一。
19)如14)-18)中任一项所述的方法,其中添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边并计算所述新顶点的顶点细分因数和混合因数包括:对于再分在顶点VA和VB之间的边的每个新顶点VM
使用下式计算VM的初始顶点细分因数:
Figure GDA0001760839300000131
以及
通过下列操作来计算所述新添加的顶点VM的顶点细分因数TFM和混合因数BWM
确定InitialTFM是否小于二;
响应于确定InitialTFM小于2.0,设置TFM=1和BWM=MAX(MIN(TFA-1,1),MIN(TFB-1,1));
响应于确定InitialTFM不小于2.0,设置TFM=InitialTFM/2和BWM=1.0;
将在域空间中的VM的位置设置为VA和VB的域空间坐标的平均值并在N维空间中具有使用BWM由(i)在N维空间中的VA和VB的位置的平均值和(ii)在然后被映射到N维空间的域空间中的VM的位置的加权混合给出的位置的位置处。
优选特征可以视情况被组合,如将对技术人员明显的,并可与本发明的任一方面组合。
附图的简要说明
现在将参考附图作为例子描述本发明的实施方式,其中:
图1示出使用各种已知的细分方法的结果;
图2示出具有部分分割的位移映射的使用;
图3是示出当顶点被引入时产生平稳过渡的方法的示意图;
图4是示出使用具有边细分因数的现有技术方法和使用顶点细分因数的本文所述的方法得到的不同结果的例子的示意图;
图5是示出在四边形域中使用边细分因数和顶点细分因数得到的不同结果的另外的例子的示意图;
图6是示出在三角形域中使用边细分因数和顶点细分因数得到的不同结果的另外的例子的示意图;
图7是如应用于四边形输入补片的使用顶点细分因数的示例细分方法的流程图;
图8是如应用于三角形输入补片的使用顶点细分因数的示例细分方法的流程图;
图9是示出图7的方法的示意图;
图10示出使用图7的方法得到的结果的例子;
图11是示出图8的方法的示意图;
图12是示出使用图7和8的方法得到的结果的例子;
图13是示例GPU管线的示意图;
图14示出可被实现为计算和/或电子设备的任何形式并可配置成实现图7和8的细分方法的示例性基于计算的设备的各种部件;
图15示出使用图7和8的方法得到的结果的另外的例子;以及
图16是示出本文所述的方法可如何扩展到P边域的示意图。
共同的参考数字在全部附图中用于指示相似的特征。
详细描述
下面仅作为例子描述本发明的实施方式。这些例子代表实施本发明的、申请人当前已知的最佳方式,虽然它们并不是这可被实现的唯一方式。该描述阐述例子的功能和用于构造和操作例子的步骤的顺序。然而,相同或等效的功能和顺序可由不同的例子实现。
存在使用边细分因数(TF)的多种已知的细分方法,边细分因数(TF)对(例如四边形或三角形)补片的每条边被定义并确定边(和因而补片)应被再分多少次。图1示出当使用不同的边细分因数时因而产生的三角形如何不同,但对每条边是相同的细分因数。
在图1中的前五个例子(a)-(e)示出:
(a)整数分割,对于所有四条边,边TF=3
(b)整数分割,对于所有四条边,边TF=4
(c)二次幂整数分割,对于所有四条边,边TF=2
(d)二次幂整数分割,对于所有四条边,边TF=4
(e)二次幂整数分割,对于所有四条边,边TF=8
使用整数分割和二次幂整数分割,沿着每条边的顶点总是均匀地间隔开;然而,不需要的视觉伪像(例如爆裂)非常可能出现在再分级别改变且三角形不是很小的地方,但当小多边形带来额外的渲染开销时,使多边形这么小是不合乎需要的。这个效应对二次幂整数分割是尤其显著的,因为步长可以大得多。
在图1中的后四个例子(f)-(i)示出(与例子(a)-(e)不同)产生在变化的偏移处的顶点的部分分割方法:
f)奇数部分分割,对于所有四条边,边TF=3.0
g)奇数部分分割,对于所有四条边,边TF=4.0
h)偶数部分分割,对于所有四条边,边TF=3.0
i)偶数部分分割,对于所有四条边,边TF=4.0
一些已知的系统通过允许“部分”细节级别(例如,如在例子(f)-(i)中所示的)来避免沿着边的“爆裂”伪像,其中任何新顶点最初在现有的顶点的位置处被创建,且当细节级别增加时,那些顶点逐渐“滑”到位置上,如在图2(a)中对在参量空间中的仅仅一条边所示的。虽然在表示中的突然跳跃在很大程度上被消除,这样的方案可能遭受可通过位移映射的使用而恶化的令人不安的、不稳定的“漂浮/摆动”伪像,且这可参考图2(b)和(c)被描述。
图2(b)示出示例位移映射横截面,而图2(c)示出当细分因数改变时这个横截面如何应用于边(例如,如图2(a)所示的边)。箭头201-204示出当细分因数从4.0改变到5.0(箭头201、202)和从5.0改变到6.0(箭头203、204)时顶点的位移如何改变。
在GB专利号2388507中描述和在图3中示出对爆裂的另一解决方案。在这个例子中,曲线可被考虑为补片的边之一,点A和B是角顶点中的两个。如果另一再分被执行,这将产生在曲线上的新点C,其将相应于中间顶点的可能位置。相反,如果再分的数量保持相同,则曲线将由线AB近似,且中间顶点将在点D处位于线上。为了在再分的级别改变时实现在点C和D之间的平稳过渡,新点E沿着线CD被计算,且这用作中间顶点的值。可使用下式计算E的位置:
E=wC+(1-w)D
其中w是从再分比率的分数部分得到的权重因数,D是在特定的再分级别处得到的第一顶点值,以及C是在更细的再分级别处得到的第二顶点值。通过使用上面的方程来计算E,新中间顶点在点C和D之间平稳地过渡。
当选择细分方法时的其它考虑因素不仅是为边细分设置的给定组合产生的三角形的数量,因为细分的模型的渲染成本部分地取决于三角形的数量,而且是那些三角形的高宽比。一般,图形系统(软件或硬件)将比渲染具有相同的面积但更高的周长与面积比的(长细)三角形更快地渲染暗示最小周长与面积比的、给定屏幕面积(即屏幕像素)的“等边”三角形。此外,当值例如明暗处理的结果在顶点处被计算并接着跨三角形被内插时,有更多等边形状的三角形应导致更少的伪像。
另一考虑因素是用于产生三角形的图案的算法的复杂度。一些已知的部分细分方案(例如由Guardardo发展并由
Figure GDA0001760839300000171
和Haines在“Real-Time Rendering”(ISBN 1-56881-182-9,524-525页)中描述的细分方案)导致非均匀细分。如果算法可保持简单和/或有规律(例如没有需要不同地被处理的很多“特殊情况”),这可减小硬件或软件实现成本。
最后合乎需要的考虑因素是在细分模式中的旋转/反射对称性。例如,使用以比如顺时针顺序ABCD给出的顶点并使用适当的细分因数定义的四边形补片产生与具有被列为BCDA的顶点的“等效”四边形相同的最终三角形网将是优选的。一些现有的细分方案不保证这个特性(例如见在图1的例子(f)和(g)中的“奇数”细分方法中的中间正方形)。
下面描述不使用边细分因数但替代地使用为四边形或三角形的每个顶点(或角)定义的细分因数的细分方法。这些细分因数被称为“顶点细分因数”以将它们与在上面描述的已知方法中使用的边细分因数区分开。
在这个描述中,表面补片指通常有限的N维表面(或在等值线的情况下,N维曲线段),其为将参数映射函数应用于有界限的2D域的结果,该2D域是四边形或三角形(或在等值线的情况下,1D线段)。因而产生的表面或等值线可被考虑为N维的,因为它可不仅包括用于笛卡尔(或同种)空间定位的3(或4)维,而且包括其它参数例如纹理坐标。如上所述,表面补片可弯曲以与它们代表的对象的表面保持一致和/或使位移映射被应用。然而,细分(即补片的再分)不在“自然空间”中被执行(即它不对弯曲表面补片执行)而替代地在域空间(其也可被称为参量空间或参数空间)中被执行,其中域中的任何位置可由被称为域空间坐标的两个坐标(u,v)描述,这意味着细分过程独立于存在于最终表面中的任何曲率(虽然用户在确定细分因数时可考虑这个曲率)。当描述这种细分方法时,术语“补片”用于指形成域的界限的两个、三个或四个顶点(分别对于等值线、三角形或四边形)的有序集合。术语“顶点”通常用于描述定位加上其它属性,其中这些属性根据上下文而不同。例如,来自域着色器的输入控制点和输出顶点包括3D位置加上其它参数,例如法线、切线、纹理等,而在细分器内的顶点(即在细分方法内使用的顶点)包括域空间坐标和顶点细分因数。在细分器内的这些顶点因此与输入控制点或形成最终三角形的因而产生的N维顶点不相同。
指定在补片的角处的TF导致在细分的补片内的因而产生的三角形的尺寸和形状上的更少的突然变化,因为边的分割未固定(即到由边TF指定的值),但替代地由在边的每端处的顶点TF确定,且不仅沿着原始边(在参量空间中的1D方向上)平稳地改变以产生在再分级别之间的逐渐过渡,而且也结合其它TF允许它在2D方向上跨补片平稳地改变。这在图4中用图形示出,图4示出在参量空间中在使用已知的方法定义在边(图402)处的细分因数和定义在角(或顶点,图404)处的细分因数之间的差异。第一图402是在具有2和4的边细分因数的两个四边形的情况下使用跨边的二次幂定义的细分因数的结果。第二图404使用下面所述的方法以及2(对于顶点406、408)和4(对于顶点410-416)的顶点细分因数。
如下所述,连同基于顶点的细分因数一起,这个方法最小化(或消除)不希望有的视觉伪像,因为在很多实施方式中,每个顶点(例如作为到三角形的再分的部分被添加的每个新顶点)被添加a)在自然空间中的其最终位置处,b)在自然空间中的其最终位置处并且是在TF的紧接着较低范围内的三角形的角的两个或三个其它顶点的中点处,或c)在作为前面两个选项的线性混合的点处(例如通过应用图3所示的技术以混合在由a)和b)实现的位置之间的结果)。结果是,当细节级别(和因而TF)改变时,顶点不像在图2中的例子中所示和上面所述的一些现有技术中的一样跨表面“滑动”,这可引起漂浮/摆动伪像。替代地,当细节级别(LOD)增加(例如这可由移动得更接近对象的观看者确定)时,在存在于“较少的”TF中的两个、三个或四个顶点的中点处最初引入的顶点缓慢地“向外生长”到在自然空间中的其最终位置。当LOD/TF减少时,反向过程出现。
图5和6示出在再次在参量空间中示出的、使用下面所述的方法得到(其使用顶点细分因数)的结果和使用其它已知的细分方法(其使用边细分因数)得到的结果之间的另外的比较。在这些例子中,为了近似地产生在基于边的细分方案中的与在新方法中的相同级别的细分,边细分因数被设置为相应的角细分因数的平均值。在图5中的第一例子501处示出对上边的3.0、右边的4.0、下边的3.0和左边的2.0的边TF使用奇数部分分割511、偶数部分分割512、整数分割513和二次幂整数分割514得到的结果与使用具有左上顶点的2.0、右上顶点的4.0、右下顶点的4.0和左下顶点的2.0的顶点TF的下面所述的方法得到的结果515的比较。可看到,下面所述的方法导致与已知技术大约相同数量的再分;然而,在细节级别之间的过渡被更平稳地处理,导致少得多的长细三角形,其当渲染时是较不合乎需要的,如早些时候提到的。这也在图5中的第二例子502中示出,图5示出对上边的3.0、右边的6.0、下边的8.0和左边的5.0的边TF使用奇数部分分割521、偶数部分分割522、整数分割523和二次幂整数分割524得到的结果与使用具有左上顶点的2.0、右上顶点的4.0、右下顶点的8.0和左下顶点的8.0的顶点TF的下面所述的方法得到的结果525的比较。
图6示出三角形域的相应结果。在图6中的第一例子601示出对左边和右边604、605的3.0的边TF以及下边606的4.0的边TF使用奇数部分分割611、偶数部分分割612、整数分割613和二次幂整数分割614得到的结果与使用具有上顶点607的2.0的顶点TF和两个下顶点608、609的4.0的顶点TF的下面所述的方法得到的结果615的比较。
如同图5的四边形域例子一样,可看到,下面所述的方法当应用于三角形域时导致与已知技术大约相同数量的再分;然而,在细节级别之间的过渡被更平稳地处理,导致少得多的长细三角形,其当渲染时是较不合乎需要的,如早些时候提到的。这也在图6中的第二例子602中示出,其示出对左边604的3.0、右边605的6.0和下边606的5.0的边TF使用奇数部分分割621、偶数部分分割622、整数分割623和二次幂整数分割624得到的结果与使用具有上顶点607的4.0、左下顶点608的2.0和右下顶点609的8.0的顶点TF的下面所述的方法得到的结果625的比较。
此外,关于第二例子502和602且特别是对例子521-523和621-623值得注意的是方案的相对复杂度。这些现有技术方法产生具有相对有规律的NxM细分模式的内部部分,外边界然后以较不合乎需要的半有规律的方式被“缝”到该内部部分。这不仅增加了细分过程的复杂度——这是不合乎需要的,而且导致非对称细分和较不均匀形状的三角形。
在图5和6中的例子515、525、615和625中且在使用本文所述的细分方法产生的随后的例子中,图像提供当新顶点被添加(如下面更详细描述的)时执行的混合的指示(在参量空间中)。在任一例子中被示为正方形的顶点在其“最终”位置上,而逐渐变大的圆用于显示在内插状态中的顶点,即其中它们的混合因数在[0.0,1.0)中。
可参考图7和8描述使用顶点细分因数的细分方法,图7和8是示出四边形(图7)和三角形(图8)方法的流程图。细分方法可实现图7和8所示的方法中的任一个或两个。
可参考图9所示的示例四边形描述(图7的)四边形方法。四边形方法接收四个顶点,每个顶点包括域空间(即(u,v))坐标和顶点细分因数。这四个顶点将被标记为具有相应的细分因数TF0到TF3的V0、V1、V2和V3。除了细分因数以外,每个顶点还维持混合因数BFi∈[0.0,1.0](其中i是顶点索引)。对于顶级补片,这些每顶点混合因数将被设置为1.0。
对于是顶级补片的四边形,任何顶点可被标记为V0,且然后其余顶点以旋转顺序被标记,即以顺时针或逆时针顺序环行四边形。无论哪个方向用于标记顶点(即顺时针或逆时针),都必须在细分方法中始终使用一致的顺序,且为了下面的描述的目的,采用顺时针标记约定。对于子四边形,四个输入顶点已经实际上被“标记”为V0到V3,当这些由相应的父四边形形成时。本领域中的技术人员可认识到,有将维持对称性的至少一个其它等效的重新排序/重新标记,但在例子中为了简单起见,使用默认的输入标记。
如果四边形的所有四个顶点细分因数为1.0,则这将被称为“末端四边形”。
如果顶级补片(在块704中的“是”)也是“末端四边形”,即所有四个顶点细分因数都等于一(在块702中的“是”),则添加中心顶点(块706),且通过将每个输入顶点连接到中心顶点来创建四个三角形(块708)。所添加的中心顶点(在块706中)被添加在最终N维空间中的位置处,该位置是四个顶点的N维位置的平均值。
术语“顶级补片”指可以是三角形或四边形的细分方法的输入补片,虽然此时,确定(在块704中)仅仅四边形(由四个输入顶点定义)是否是顶级补片。如果四边形不是顶级补片,则它可以被称为子四边形,其中子四边形由输入补片在某个级别处的再分形成,该输入补片如下所述可以是四边形补片或三角形补片。在特定的再分级别处再分以形成子四边形的四边形或三角形被称为子四边形的父亲(其中父亲可以是输入补片或另一子四边形),且从父亲的再分产生的子四边形被称为孩子。
如果四边形是末端四边形,即所有四个顶点细分因数等于一(在块702中的“是”),且四边形不是顶级四边形(在块704中的“否”),即它是如由顶级四边形、三角形(如下所述)的再分形成的子四边形或另一子四边形,则不创建中心顶点,且替代地通过借助于将子四边形的源顶点(V0)连接到子四边形的对角地相对的顶点(V2)绘制两个三角形来形成分成两半的四边形。当子四边形形成时,子四边形的源顶点(V0)是(父四边形/三角形的)选定顶点。下面参考图9更详细地描述分成两半的四边形的这个创建(在块710中)。
识别“末端四边形顶级补片”(其然后被分成四个三角形,而不是将它只分成两个三角形,如同“末端”子四边形一样)的原因是有如早些时候所述的旋转/反射对称性的合乎需要的特性。这对末端子四边形不是必须的,因为由于源顶点的选择的顺序,对称性隐含地被维持。如果在给定实施方式中,末端顶级补片四边形的被保证的对称性不是需要的,可通过将末端顶级补片只分成两个三角形来实现在三角形中的小的减小。
如果细分的更精细的粒度在整个补片中是需要的,可选的实施方式可选择总是将“末端四边形”子四边形分成四个三角形,然而这将所产生的三角形的数量近似地加倍。
如果四个顶点细分因数中的至少一个不等于一(在块702中的“否”),即四个顶点细分因数中的至少一个大于一,则对四边形产生中心顶点VCentre,这包括细分和混合因数的计算(块712)。(在块712中)所产生的中心顶点具有位置,为了避免爆裂伪像,该位置是以下项的加权混合:(i)对于“顶级补片”,在N维空间中的所有四个角顶点的位置的平均值,或对于“子四边形”补片,仅仅两个顶点的平均值——V0及其对角相对的V2,以及ii)计算在域空间中的定位的平均值并将其映射到N维空间。作为在范围[0.0,1.0]内的值的混合的权重被确定为顶点细分因数的函数,其中零的权重返回情况i)、一的权重返回情况ii)和中间值是加权和。为了避免爆裂,混合加权函数必须是连续的,且当所有顶点的细分因数接近1.0、即四边形接近“末端四边形”时,所计算的混合权重必须接近零。在这个例子中,混合加权函数被选择为:
方程1:BlendWeightFunc(TF0,…TF3).=MAXi=0..3(MIN(TFi–1,1))
根据四个顶点细分因数来计算中心顶点的顶点细分因数,使得函数是连续的、优选地对称的,并产生最初由最小和最大输入细分因数定界限的结果。在这个例子中,函数被选择为:
方程2:
Figure GDA0001760839300000221
因为四边形将被再分,这个初始TF使用下面的方法被“二等分”,以产生中心的TF和BW(或混合因数)。
Figure GDA0001760839300000231
本领域中的技术人员将认识到,如果细分因数被预先修改(即预先偏移了-1.0),则计算成本将减小。通过使用(底数为2)对数可得到另外的节省,减小了乘法和根的成本。
在确定了中心顶点(在块712中)后,处理每个输入顶点V0、V1、V2和V3。在例子中,这些将以默认的连续顺序完成,但应很快明显,处理这些顶点的顺序不是关键的,以及它们可连续地或并行地被处理。
从{V0,V1,V2,V3}选择第一输入顶点Vi(块714),且这用于定义顶点Wi 0(块716)。Vi的坐标(u,v)被复制到Wi 0,且相应的细分因数WTFi 0和混合权重WBWi 0如下从输入TFi和BWi得到:
Figure GDA0001760839300000232
于是存在三个不同的动作,其根据输入顶点TFi的值以及下一和前一邻顶点、即TF(i+1)mod4和TF(i-1)mod4的顶点TF的值(如由在块720-724中的决定所定义的)而出现。例如,当顶点以旋转顺序环行四边形而被标记时,如果选定顶点是V0,即i=0,则下一和前一邻顶点分别是V1和V3
如果输入TFi大于一或如果两个邻顶点都具有大于1的顶点TF,即(TFi>1)OR((TF(i+1)mod4>1)AND(TF(i-1)mod4>1))为真(在块720中的“是”),则通过添加新顶点Wi 1和Wi 3以及前一再分边
Figure GDA0001760839300000241
和后一边
Figure GDA0001760839300000242
来再分每个进入的边(即在选定顶点和邻顶点之间的每条边),并计算每个新添加的顶点的顶点细分因数和混合因数(块726)。子四边形(即包括Wi 0、Wi 1、VCentre(其可被考虑为Wi 2)和Wi 3的四个顶点)然后被输入回到图7所示的方法内(块728且回到块702,如由点线箭头指示的)。
如下确定新顶点、即Wi 1和Wi 3的位置和细分因数数据。为了简单起见,让VM表示新顶点并让VA和VB表示VM正再分的边的任一端上的顶点。以与中心点类似的方式确定VM的顶点细分因数和混合权重,即TFM和BWM,除了只有两个输入顶点而不是四个被使用以外,即
方程3:
Figure GDA0001760839300000243
Figure GDA0001760839300000244
VM在域空间中的(u,v)位置被设置为VA和VB的坐标(u,v)的平均值。为了防止爆裂,VM在N维空间中的位置使用BWM作为权重作为下列项的加权混合被给出:(i)VA和VB的N维位置的平均值,以及(ii)VM的所映射的(U,V)坐标的最终N维位置。与以前一样,如果BWM=0.0,则混合应返回(i),否则如果BWM=1.0,它应返回(ii),且在其间的值相应地被内插。
参考具有TF0=1.5(顶点902)、TF1=1.0(顶点904)、TF2=1.0(顶点906)和TF3=1.0(顶点908)的顶点TF的图9所示的四边形900,因为至少一个顶点TF不等于一(在块702中的“否”),中心顶点910被添加(在块712中)及其初始顶点TF(在“等分”之前)被计算为1.0
Figure GDA0001760839300000251
且后“等分”被设置为“1.0”(即TFcentre:=1.0),混合因数BFcentre被设置为0.5。因为中心顶点可形成在子四边形中的“第3个”顶点,它也将被称为WV0 2
顶点V0被选择(在块714中)并用于定义顶点W0 0(块716)。当输入顶点TF=1.5时,所定义的顶点将具有WTF0 0=1.0和WBW0 0=0.5。当输入顶点TF大于一(在块720中的“是”)时,通过添加形成子四边形的其余两个顶点(分别是W0 1和W0 3)的两个新顶点912、914来再分两条进入的边,并使用上面的方程2计算它们的顶点TF(块726),使得WTF0 1=1.0且WBW0 1=0.5(顶点912),以及WTF0 3=1.0且WBW0 3=0.5(顶点914)。如由顶点902、912、910和914(其具有WTF0 0=1.0(顶点902)、WTF0 1=1.0(顶点912)、WTF0 2=1.0(顶点910)和WTF0 3=1.0(顶点914)的顶点TF)定义的子四边形然后被反馈到方法的开始,因此子四边形的W0变成“V0”,W1变成V1,等等。
考虑这个新子四边形,所有顶点TF都等于一(在块702中的“是”)且四边形不是顶级补片(在块704中的“否”),且所以四边形通过将它分成两个三角形而被分成两半(块710),即两个三角形被绘制出,一个由顶点902、912和910形成而另一由顶点902、910和914形成。两个三角形共有的边连接V0和V2,其为父四边形的中心顶点(顶点910)。
返回到前面的父处理,如果((TFi>1)OR((TF(i+1)mod4>1)AND(TF(i-1)mod4>1)))为假(在块720中的“否”),则TFi必须等于一。如果两个邻顶点的顶点TF也等于一(在块722中的“是”),则选定顶点被跳过且下一顶点进而被选择(块730),因为当四边形中的其它顶点被选择时,任何所需的细分将被实现。当顶点906是选定顶点时,在图9的四边形900中所示的这个条件是:它的顶点TF不大于一且两个邻顶点(顶点904和908)都具有等于一的顶点TF。
如果输入顶点TF等于一且两个邻顶点并非都有也等于一的顶点TF(在两个块720和722中的“否”),则正好一个邻顶点必须具有大于一的顶点TF(在块724中的“是”),虽然这作为在两个块720和722中的“否”的结果而被保证,不必须检验这个条件,且块724可被省略。当正好一个邻顶点具有大于一的顶点TF时,存在两种可能性:它是下一邻顶点(在块732中的“是”)或前一邻顶点(在块732中的“否”)。
在它是具有大于一的顶点TF的下一邻顶点(在块732中的“是”)的情况下,使用用于创建VM情况的与前面所述的相同的表达式、即通过将新顶点添加在域空间中的位置处来再分在选定顶点和下一邻顶点之间的边(块734),该位置由选定顶点和下一邻顶点的位置的平均值与如前所述的TF、BW和N维位置给出(见方程3和下面的正文)。这形成包括选定顶点、新添加的顶点、中心顶点和前一顶点的子四边形。通过将选定顶点连接到对角地相对的顶点来将这个子四边形分成两半(块736)。该方法然后选择在父四边形中的下一顶点(块730)例如V1,且该方法重复(回到块716,如由箭头所指示的)。
这在图9的四边形900中示出,当顶点908是选定顶点时。选定顶点908具有一的顶点TF,前一顶点(顶点906)也具有一的顶点TF,且下一顶点(顶点902)具有大于一的顶点TF(在块720和722中的“否”和在块724和732中的“是”)。因此,通过添加顶点914来再分到下一顶点的边,并通过绘制两个三角形来形成分成两半的子四边形(由顶点908、914、910、906定义):一个由顶点908、914和910形成,而另一个由顶点908、910和906形成。这两个三角形共有的边连接选定顶点(顶点908)和父四边形的中心顶点(顶点910)。
在它是具有大于一的顶点TF的前一邻顶点(在块732中的“否”)的情况下,使用用于创建VM情况与前面所述的相同的表达式、即通过将新顶点添加在域空间中的位置处来再分在选定顶点和前一邻顶点之间的边(块738),该位置由选定顶点和前一邻顶点的位置的平均值与如前所述的TF、BW和N维位置给出(见方程3和下面的正文)。这形成包括选定顶点、下一顶点、中心顶点和新添加的顶点的子四边形。通过将选定顶点连接到对角地相对的顶点来将这个子四边形分成两半(块736)。该方法然后选择在父四边形中的下一顶点(块730)例如V1,且该方法重复(回到块716,如由箭头所指示的)。
这在图9的四边形900中示出,当顶点904是选定顶点时。选定顶点904具有一的顶点TF,下一顶点(顶点906)也具有一的顶点TF,且前一顶点(顶点902)具有大于一的顶点TF(在块720和722中的“否”和在块724中的“是”和732中的“否”)。因此,通过添加顶点912来再分到前一顶点的边,并通过绘制两个三角形来形成分成两半的子四边形(由顶点904、906、910、912定义):一个由顶点904、910和912形成,而另一个由顶点904、906和910形成。这两个三角形共有的边连接选定顶点(顶点904)和父四边形的中心顶点(顶点910)。
图10示出使用图7所示的方法得到的细分的四边形的三个例子。第一例子1001显示TF0=1、TF1=2、TF2=2、TF3=1的顶点细分因数。第二例子1002显示TF0=2、TF1=4、TF2=8、TF3=8的顶点细分因数。第三例子1003显示TF0=3、TF1=5、TF2=32、TF3=32的顶点细分因数。
对本领域中的技术人员应明显,虽然例子可在前面被描述,但是因为四边形顶点依次被选择,计算再分边的“新顶点”,每个新添加的顶点可在父四边形的2个子四边形之间共用,且因此可通过在遍历父四边形的孩子之前计算这些来减少计算。例如,参考图10中的第三例子1003,可在遍及顶级四边形的孩子——左上子四边形(其最终分成两个三角形)、右上子四边形(其最终分成26个三角形)、右下子四边形和左下子四边形之前计算划分顶级四边形的每条边的顶点。
可做出另外的节省,其中两个父四边形共用同一条边,且因此可以都计算相同的“再分新顶点”。用例如(u,v)参数编索引的简单的高速缓存存储器/缓冲器/可寻址存储器可用于存储顶点数据,并因此减小重新计算开销。在顶点数据的这样的暂存器被使用的场合,它可在计算新添加的顶点的新TF和BW之前被检查,且如果具有相同(u,v)参数的顶点被存储,则那个所存储的顶点的TF和BW可被使用,而不是重新计算值。在各种例子中,顶点数据的暂存器可以只存储有限数量的顶点(而不是所有以前添加的顶点),且甚至在这样的例子中,重新计算的量可明显减小。
可参考图11所示的示例三角形1101-1104描述(图8的)三角形方法。三角形方法接收三个顶点,每个顶点包括域空间(即(u,v))坐标和顶点细分因数。如果所有三个顶点细分因数都等于一(在块802中的“是”),则没有再分被执行。这在图11中的第一示例三角形1101中示出。
如果三个顶点细分因数中的至少一个不等于一(在块802中的“否”),即三个顶点细分因数中的至少一个大于一,则中心顶点被添加到三角形,且对新添加的中心顶点计算顶点细分因数(块804)。(在块804中)所添加的中心顶点被添加在域空间中的位置处,该位置是三个顶点的平均值。中心顶点的顶点细分因数以与四边形情况相似的方式被计算,除了适合于3个顶点以外,即
方程4:
Figure GDA0001760839300000282
Figure GDA0001760839300000281
其中三个顶点被表示为V0-V2,且它们的顶点细分因数被表示为TF0-TF2
在创建了中心顶点(在块804中)后,选择第一顶点Vi(例如V0)(块806)。对于三角形(其总是输入补片),任何顶点可被标记为V0,且接着其余顶点以顺时针或逆时针顺序环行三角形被标记。无论哪个方向用于标记顶点(即顺时针或逆时针),都必须在细分方法中始终使用相同的顺序,且为了下面的描述的目的,采用顺时针标记约定。
选定顶点Vi用于以上面所述的四边形方法类似的方式定义顶点Wi 0(块808)。Vi的坐标(u,v)被复制到Wi 0,且相应的细分因数WTFi 0和混合权重WBWi 0如下从输入TFi和BWi得到:
Figure GDA0001760839300000291
以与图7的四边形方法类似的方式,存在三个不同的动作,其根据输入顶点TFi的值以及下一和前一邻顶点、即TF(i+1)mod3和TF(i-1)mod3的顶点TF的值(如由在块812-816中的决定所定义的)而出现。当顶点以旋转顺序环行三角形而被标记时,如果选定顶点是V0(使得i=0),则邻顶点是下一顶点V1和前一顶点V2
如果输入顶点TFi大于一(在块812中的“是”),则通过添加新顶点Wi 1和Wi 3以及前一再分边
Figure GDA0001760839300000292
和后一边
Figure GDA0001760839300000293
来再分每条进入的边(即在选定顶点和邻顶点之间的每条边),并计算每个新添加的顶点的顶点细分因数和混合因数(块818)。子四边形(即包括Wi 0、Wi 1、VCentre(其可被考虑为Wi 2)和Wi 3的四个顶点)然后被输入到图7所示的四边形方法(块820,即在块702开始)。
如上所述对四边形情况确定新顶点、即Wi 1和Wi 3的位置和细分因数数据,即:
方程3:
Figure GDA0001760839300000301
Figure GDA0001760839300000302
VM在域空间中的(u,v)位置被设置为VA和VB的坐标(u,v)的平均值。为了防止爆裂,VM在N维空间中的位置被使用BWM作为权重给出为下列项的加权混合:(i)VA和VB的N维位置的平均值,以及(ii)VM的所映射的(U,V)坐标的最终N维位置。与以前一样,如果BWM=0.0,则混合应返回(i),否则如果BWM=1.0,它应返回(ii),且在其间的值相应地被内插。
这可参考具有TF0>1.0(顶点1106)、TF1=1.0(顶点1108)以及TF2=1.0(顶点1110)的顶点TF的图11所示的第二示例三角形1102来示出。所有顶点TF都不等于一(在块802中的“否”),所以中心顶点1112产生(在块804中)及其顶点TF和混合因数使用上面的方程4来计算。选择顶点V0(在块806中)并定义顶点Wi 0(在块808中)。当输入顶点TF大于一(在块812中的“是”),则通过添加两个新顶点1114、1116来再分两条进入的边,并如上所述计算它们的顶点TF和混合因数(块818)。如由顶点1106、1114、1112和1116定义的子四边形与其顶点TF和混合因数一起(如在块808和818中计算的)然后被馈送到四边形方法内(块820,即到图7的块702内)。
返回到前面的父处理,如果输入顶点TF不大于一(在块812中的“否”),则输入顶点TF必须等于一。如果两个邻顶点的顶点TF都大于一(在块814中的“是”),则通过使用用于创建VM情况的与前面所述的相同的表达式添加新顶点(块822),即通过将新顶点添加在域空间中的位置处来再分每条进入的边(即,选定顶点和邻顶点之间的每条边),该位置由选定顶点和下一邻顶点的位置的平均值与如前所述的TF、BW和N维位置给出(见方程3和下面的正文)。这形成包括选定顶点、在选定顶点和下一顶点之间的新添加的顶点、中心顶点、和在选定顶点与前一顶点之间的新添加的顶点的子四边形。通过将选定顶点连接到对角地相对的顶点来将这个子四边形分成两半(块824)。该方法然后选择在父三角形中的下一顶点(块826)例如V1,且该方法重复(回到块808,如由箭头所指示的)。
这可参考具有TF0=1.0(顶点1120)、TF1>1.0(顶点1122)以及TF2>1.0(顶点1124)的顶点TF的图11所示的第三示例三角形1103来示出。所有顶点TF都不等于一(在块802中的“否”),所以中心顶点1126产生(在块804中)及其顶点TF和混合因数使用上面的方程4来计算。顶点V0(在块806中)被选择并用来定义顶点Wi 0(在块808中)。当输入顶点TF不大于一(在块812中的“否”)但两个邻顶点的顶点TF大于一(在块814中的“是”),通过添加两个新顶点1128、1130来再分两条进入的边,这两个新顶点形成子四边形的其余两个顶点(分别是Wi 1和Wi 3)。通过绘制两个三角形(在块824中)来将如由顶点1120、1128、1126和1130定义的子四边形分成两半:一个由顶点1120、1128和1126形成,而另一由顶点1120、1126和1130形成。这两个三角形共有的边连接Wi 0(顶点1120)和Wi2,其为三角形的中心顶点(顶点1126)。
如果输入顶点TF等于一且两个邻顶点并非都有大于一的顶点TF(在两个块812和814中的“否”),则正好一个邻顶点必须具有大于一的顶点TF(在块816中的“是”),虽然这作为在两个块812和814中的“否”的结果而被保证,不必须检验这个条件,且块816可被省略。当正好一个邻顶点具有大于一的顶点TF时,存在两种可能性:它是下一邻顶点(在块828中的“是”)和前一邻顶点(在块828中的“否”)。
在它是具有大于一的顶点TF的下一邻顶点(在块828中的“是”)的情况下,使用用于创建VM情况的与前面所述的相同的表达式,即通过将新顶点添加在域空间中的位置处来再分在选定顶点和下一邻顶点之间的边(块830),该位置由选定顶点和下一邻顶点的位置的平均值与如前所述的TF、BW和N维位置给出(见方程3和下面的正文)。然后形成单个三角形,三角形包括选定顶点、新添加的顶点和中心顶点(块832)。该方法然后选择在三角形中的下一顶点(块826)例如V1,且该方法重复(回到块808,如由箭头所指示的)。
这在图11的第二示例三角形1102中示出,当顶点1110是选定顶点时。选定顶点1110具有一的顶点TF,前一顶点(顶点1108)也具有一的顶点TF,且下一顶点(顶点1106)具有大于一的顶点TF(在块812和814中的“否”和在块816和828中的“是”)。因此,通过添加顶点1116来再分到下一顶点的边,且单个三角形由顶点1110、1116和1112(在块804中添加的中心顶点)形成。
在它是具有大于一的顶点TF的前一邻顶点(在块828中的“否”)的情况下,使用用于创建VM情况的与前面所述的相同的表达式,即通过将新顶点添加在域空间中的位置处来再分在选定顶点和前一邻顶点之间的边(块834),该位置由选定顶点和前一邻顶点的位置的平均值与如前所述的TF、BW和N维位置给出(见方程3和下面的正文)。这形成包括选定顶点、下一顶点、中心顶点和新添加的顶点的子四边形。通过将选定顶点连接到对角地相对的顶点来将这个子四边形分成两半(块836)。该方法然后选择在父四边形中的下一顶点(块826)例如V1,且该方法重复(回到块808,如由箭头所指示的)。
这在图11中的第二示例三角形1102中示出,当顶点1108是选定顶点时。选定顶点1108具有一的顶点TF,下一顶点(顶点1110)也具有一的顶点TF,且前一顶点(顶点1106)具有大于一的顶点TF(在块812和814中的“否”,在块816中的“是”,和在块828中的“否”)。因此,通过添加顶点1114来再分到前一顶点的边,并通过绘制两个三角形来形成分成两半的子四边形(由顶点1108、1110、1112、1114定义):一个由顶点1108、1112和1114形成,而另一个由顶点1108、1110和1112形成。这两个三角形共有的边连接选定顶点(顶点1108)和三角形的中心顶点(顶点1112)。
图12示出使用图7和8所示的方法得到的细分的三角形的三个例子。第一例子1201显示TF0=1、TF1=100、TF2=1的顶点细分因数。第二例子1202显示TF0=1、TF1=100、TF2=10的顶点细分因数。第三例子1203显示TF0=50、TF1=10、TF2=30的顶点细分因数。在图15中示出另外的例子,其包括在3D中的一序列线框细分(将认识到,本文所述的最终细分系统可应用于N维)。图15所示的例子示出当顶点细分因数从(1,1,1,1)一直改变到大约(26.5,16.7,8.8,4.9)时的变化。
虽然细分方法在上面被描述(和在图7和8中示出)为涉及在顶点细分因数和一的值之间的比较(在块702、720-724、730、802、812-816和828中),在对所述方法的变形中,可关于不同的阈值(即对不等于一的阈值,在这种情况下,确定另一再分是否被需要的测试可基于细分因数是否严格地大于阈值)执行比较。可选择这个变形,以便减小在细分过程中产生的三角形的数量,但可减小当LOD改变时动画的平滑度。
此外,虽然特定的方程在上面用于计算新添加的顶点的顶点细分因数和混合因数的值,在其它例子中,可使用不同的方程。例如,不是使用方程2,可使用下面的方程:
方程2A:
Figure GDA0001760839300000331
以及不是使用方程3,可使用下面的方程:
方程3A:
如果TFi≠1且TFneighbour≠1,则
Figure GDA0001760839300000332
如果TFi=1或TFneighbour=1,则TFM=1
以及不是使用方程4,可使用下面的方程:
方程4A:
Figure GDA0001760839300000341
如在所提供的例子中所示的,通过使用上面所述的、使用顶点TF而不是边TF的细分方法,因而产生的三角形更均匀地依尺寸被制造,且T结(其可引起在因而产生的所渲染的图像中的裂痕)被避免。细节级别在场景内改变时,过渡被平稳地处理(例如在三角形的尺寸和顶点的间隔逐渐改变的情况下)且突然的过渡(其可引起不需要的视觉伪像)被避免。类似地,在细节级别随着时间的过去而改变的场合(例如当对象更接近或更远离视点时),过渡是平稳的且由于顶点的移动而引起的不需要的视觉伪像的可能性被避免,因为每个顶点在参量空间中的它的最终位置处被创建。已知技术可在深度(或高度)方向(例如混合)中被使用以逐渐引入这些新顶点(例如使得它们看起来从表面逐渐“向外生长”)。
细分四边形和三角形的方法(如图7和8所示)是旋转地不变的,使得补片将以相同的方式被再分成三角形,而不考虑其在场景中的方位。这可以例如特别重要,使得在场景中的旋转对象当被渲染时不产生不需要的视觉伪像。此外,该方法以输入补片(例如四边形或三角形)的哪个顶点开始并不重要,因为相同的结果在所有情况下实现。
被输入到细分方法的顶点TF可由单独的应用产生(例如基于观看者离每个顶点的距离,例如顶点的顶点TF可与顶点离眼睛的距离的倒数成比例)。在各种例子中,可提供API,其在将边TF输入到本文所述的方法内之前将边TF转换成顶点TF(例如通过获得在顶点处相接的边的所有边TF的平均)。
虽然上面的细分方法的描述涉及递归的使用,将认识到,该方法可以可选地迭代地和/或并行地而不是递归地被实现,且在该描述中对“递归”或“迭代”的提及仅作为例子。
上面所述的细分方法应用于三角形和四边形域,但因为初始域再分涉及在时间上横越顶点的3或4边多边形域以产生子四边形,本领域中的技术人员将认识到,该过程可同样好地应用于任何N边域例如五边形或六边形,以产生子四边形,且其后以任何所产生的子四边形递归地继续。
参考图16,考虑P边域,其中P≥4。如果细分因数TFi对于所有P个顶点都等于1(如在第一例子1601中的),则以与四边形情况类似的方式,中心顶点1603被添加在最终N维空间中的位置处,该位置是P个顶点的N维定位的平均值。然后对每个i通过连接Vi、Vi+1modP以及所添加的中心顶点来产生P个三角形,0≤i<P。
如果至少一个细分因数超过1(如在第二例子1602中的),则应用前面对四边形细分所述的过程,除了下面的内容以外:
a)混合加权函数(在上面的方程1中)被一般化为:
BlendWeightFunc=MAXi=0..P-1(MIN(TFi-1,1))
b)中心的初始TF的函数(在上面的方程2中)被一般化为:
Figure GDA0001760839300000351
c)前一和下一顶点的索引分别变成V(i-1)MOD P和V(i+1)MOD P
例如,根据上面所述(和在图7中所示)的四边形方法,如果选定顶点Vi具有细分因数TFi>1.0(例如顶点1604),则两条进入的边被再分以产生两个额外的顶点和从更新的选定顶点、额外的顶点之一、中心顶点和其余额外的顶点定义的子四边形1606。这个子四边形可接着作为进一步的输入被提供到图7的方法(例如作为对块702的输入)。
上面所述的使用顶点细分因数的细分方法(例如,如参考图7和8所述的)可用于在运行中执行细分(例如,当视点在3D场景中改变时),或可选地,方法可离线地用于对多个不同的视点预先计算三角形。
可在硬件中实现使用顶点细分因数的本文所述的细分方法(例如,如参考图7和8所述的)。在各种例子中,可在如图13所示的图形处理单元(GPU)内的硬件细分单元中实现该方法。图13示出可在GPU内的硬件中实现的示例GPU管线1300的示意图。如图13所示,管线1300包括顶点着色器1302,其负责执行每顶点计算,包括(例如根据顶点离摄像机的位置)计算所有这些的顶点细分因数。在计算顶点TF之前,顶点着色器将顶点变换到自然空间内并可应用一个或多个其它线性变换。顶点着色器1302不知道网拓扑且只知道被馈送到它内的当前顶点。
在顶点着色器1302和硬件细分单元(或细分器)1304之间(或在顶点着色器和图13中未示出的可选的外壳着色器之间,其中管线1300包括在顶点着色器1302和细分器1304之间的一个或多个可选的外壳着色器),可使用拓扑来构建补片(即顶点的有序集合)。这个补片信息被传递到外壳着色器(在被提供的场合)。然而,细分器1304只采用顶点TF,且其余补片信息被继续传递到域着色器1306。
硬件细分单元(或细分器)1304包括硬件逻辑以使用所接收的顶点TF来实现上面所述的方法(例如,如在图7和8中所示的)。与顶点着色器不同,硬件细分单元(和任何可选的外壳着色器)每补片而不是每顶点操作。为了简化实现用于计算新顶点TF的方程(例如在块718和810中)所需的硬件,计算可在log2中被执行且所以可被实现为加法和减法(否则乘法和除法将被使用)。硬件细分单元1304可配置成并行地执行上面描述的方法的方面(例如在不同的补片上的递归)。硬件细分单元1304输出每个新顶点的域空间坐标并将它传递到域着色器1306(例如通过在缓冲器中存储所形成的每个三角形的细节)。
域着色器1306充当由细分器1304产生的顶点的第二顶点着色器,并且每顶点(其由细分器产生)被执行一次。域着色器提供域空间位置(u,v)并给出所有补片信息并输出全顶点结构。域着色器使用补片控制点和域空间坐标来构建新顶点并应用任何位移映射(例如通过对在纹理中编码的一些隆起部分或高度图采样)。
在域着色器1306对每个补片的每个所产生的顶点运行后,则顶点被传递到光栅器(未在图13中示出)。一前一后地,基元(以索引缓冲器的形式)从细分器传递到光栅器。
图13的GPU管线1300仅作为例子被示出,且本文所述的使用顶点TF的细分方法可用在任何GPU体系结构中。也将认识到,硬件细分单元1304可用在GPU管线中,除了或代替顶点着色器1302、可选的外壳着色器和域着色器1306,GPU还包括其它着色器。
上面所述的使用顶点细分因数的细分方法(例如,如参考图7和8所述的)可以可选地在软件(或软件和硬件的组合)中实现。图14示出可被实现为计算和/或电子设备的任何形式且可配置成实现上面所述的细分方法的示例性基于计算的设备1400的各种部件。
基于计算的设备1400包括一个或多个处理器1402,其可以是微处理器、控制器或用于处理计算机可执行指令以控制设备的操作以便执行上面描述的细分方法(例如,如参考图7和8所述的)的任何其它适当类型的处理器。在例如片上系统体系结构被使用的一些例子中,处理器1402可包括在硬件(而不是软件或固件)中实现细分方法的一部分的一个或多个固定功能块(也被称为加速器)。可在基于计算的设备处提供包括操作系统1404的平台软件或任何其它适当的平台软件以使应用软件1406能够在设备上执行,且应用软件可包括细分模块1408。
可使用由基于计算的设备1400可访问的任何计算机可读介质提供计算机可执行指令。计算机可读介质可包括例如计算机存储介质,例如存储器1410和通信介质。计算机存储介质(即非临时机器可读介质)例如存储器1410包括在任何方法或技术中实现的用于存储信息例如计算机可读指令、数据结构、程序模块或其它数据的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其它存储技术、CD-ROM、数字通用盘(DVD)或其它光学存储器、盒式磁带、磁带、磁盘存储器或其它磁性存储设备或可用于存储由计算设备访问的信息的任何其它非传输介质。相反,通信介质可体现计算机可读指令、数据结构、程序模块或在已调制数据信号例如载波或其它传输机构中的其它数据。如在本文定义的,计算机存储介质不包括通信介质。虽然计算机存储介质(即非临时机器可读介质,例如存储器1410)被显示在基于计算的设备1400内,将认识到,存储器可远程地被分布或定位并经由网络或其它通信链路(例如使用通信接口1412)被访问。
虽然未在图14中示出,存储器1410(或未在图14中示出的单独存储器元件)可用于存储新添加的顶点的顶点数据,以便减小通过重新计算不同的(但相邻的)父四边形的同一顶点而引起的计算开销。
基于计算的设备1400还可包括布置成向可与基于计算的设备1400分离或成一整体的显示设备输出显示信息的输入/输出控制器。显示信息可提供图形用户界面。输入/输出控制器也可布置成接收并处理来自一个或多个设备例如用户输入设备(例如鼠标或键盘)的输入。在实施方式中,显示设备也可充当用户输入设备,如果它是触敏显示设备。输入/输出控制器也可向除了显示设备以外的设备例如本地连接的打印设备输出数据。
术语“处理器”和“计算机”在本文用于指具有处理能力的任何设备或其部分,使得它可执行指令。术语“处理器”可例如包括中央处理单元(CPU)、图形处理单元(GPU或VPU)、物理处理单元(PPU)、无线电处理单元(RPU)、数字信号处理器(DSP)、通用处理器(例如通用GPU)、微处理器、设计成加速在CPU外部的任务的任何处理单元等。本领域中的技术人员将认识到,这样的处理能力合并到很多不同的设备内,且因此术语“计算机”包括机顶盒、媒体播放器、数字无线电装置、PC、服务器、移动电话、个人数字助理和很多其它设备。
本领域中的技术人员将认识到,用于存储程序指令的存储设备可分布在网络当中。例如,远程计算机可存储被描述为软件的过程的例子。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可按需要下载软件的片段或在本地终端处执行一些软件指令和在远程计算机(或计算机网络)处执行一些指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路例如DSP、可编程逻辑阵列等实现。
本文所述的方法可由配置有软件的计算机执行,软件是以存储在有形存储介质上的机器可读形式、例如以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式或以包括适合于当程序在计算机上运行时执行本文所述的任何方法的所有步骤的计算机程序代码模块的计算机程序的形式,且其中计算机程序可体现在计算机可读存储介质上。有形(或非临时)存储介质的例子包括磁盘、拇指驱动器、存储卡等,且并不包括传播信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或同时被执行。
本文描述的硬件部件可由非临时计算机可读存储介质产生,非临时计算机可读存储介质具有在其上编码的计算机可读程序代码。
意图还包括“描述”或定义实现上面所述的模块、功能、部件或逻辑的硬件的配置的软件,例如HDL(硬件描述语言)软件,如对设计集成电路或对配置可编程芯片使用的,以实现期望功能。也就是说,可提供计算机可读存储介质,其具有存储在其上的用于产生配置成执行本文所述的任何方法的处理单元或用于产生包括本文所述的任何装置的处理单元的计算机可读程序代码。也就是说,计算机系统可配置成从电路元件的定义和用于定义组合那些电路元件的规则的数据产生数字电路的表示,其中非临时计算机可读存储介质可具有存储在其上的处理器可执行指令,其当在这样的计算机系统处被执行时使计算机系统产生如本文所述的处理单元。例如,非临时计算机可读存储介质可具有存储在其上的计算机可读指令,其当在用于产生集成电路的表现形式的计算机系统处被执行时使计算机系统产生如在本文的例子中所述的接收机的处理器的表现形式或产生配置成执行如在本文的例子中所述的方法的处理器的表现形式。处理器的表现形式可以是处理器本身或处理器(例如掩模)的表示,其可用于产生处理器。
存储在实现所公开的方面时使用的机器可执行数据的存储器可以是非临时介质。非临时介质可以是易失性的或非易失性的。易失性非临时介质的例子包括基于半导体的存储器,例如SRAM或DRAM。可用于实现非易失性存储器的技术的例子包括光学和磁性存储器技术、闪存、相变存储器、电阻式RAM。
对“逻辑”的特定提及指执行一种或多种功能的结构。逻辑的例子包括布置成执行那些功能的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。作为例子,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器例如寄存器、触发器或锁存器、逻辑运算器例如布尔运算、数学运算器例如加法器、乘法器或移位器和互连的电路或结构。这样的元件可作为定制电路或标准单元库、宏或在其它抽象级处被提供。可在特定的布置中使这样的元件互连。逻辑可包括固定功能的电路,且电路可被编程以执行一种或多种功能;这样的编程可从固件或软件更新或控制机制提供。被识别为执行一种功能的逻辑也可包括实现子过程的组成功能的逻辑。在例子中,硬件逻辑具有实现固定功能操作或多个操作、状态机或过程的电路。
本文给出的任何范围或设备值可扩展或改变而不失去所寻求的效应,如对技术人员将明显的。
将理解,上面描述的益处和优点可涉及一个实施方式或可涉及几个实施方式。实施方式不限于解决任何或所有所陈述的问题的那些实施方式或具有任何或全部所陈述的益处和优点的那些实施方式。
对“一”项目的任何提及指那些项目中的一个或多个。术语“包括”在本文用于意指包括所标识的方法块或元件,但这样的块或元件并不包括排他列表,且装置可包含额外的块或元件,以及方法可包含额外的操作或元件。此外,块、元件和操作本身并不隐含地是封闭的。
本文描述的方法的步骤可在适当的场合以任何适当的顺序或同时被执行。在附图中的方框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或并行的多个步骤的执行。此外,单独的块可从任何方法删除而不偏离本文描述的主题的精神和范围。上面描述的任何例子的方面可与所描述的其它例子中的任一个的方面组合以形成另外的例子,而不失去所寻求的效应。在附图的元件被示为由箭头连接的场合,将认识到,这些箭头示出在元件之间的通信(包括数据和控制消息)的仅仅一个示例流。在元件之间的流可以在任一方向上或在两个方向上。
将理解,优选实施方式的上述描述仅作为例子被给出,以及各种修改可由本领域中的技术人员做出。虽然上面以某个详细程度或参考一个或多个单独的实施方式描述了各种实施方式,本领域中的技术人员可对所公开的实施方式进行很多变更而不偏离本发明的精神或范围。

Claims (22)

1.一种包括硬件逻辑的硬件细分系统,所述硬件逻辑配置成:
a)接收包括定义四边形补片的四个顶点的输入,每个顶点包括域空间坐标和顶点细分因数;
b)比较所述顶点细分因数与阈值(702);
c)响应于确定所有四个顶点细分因数小于或等于所述阈值,将所述补片分成两个或四个三角形(704-710);以及
d)响应于确定所述四个顶点细分因数中的至少一个超过所述阈值:
产生所述补片的中心顶点并计算新添加的中心顶点的顶点细分因数和混合因数(712);
进而选择四个所接收的顶点中的每个,且对于每个选定顶点:
基于所述选定顶点来定义顶点(716);
响应于确定所述选定顶点的顶点细分因数超过所述阈值或两个邻顶点的顶点细分因数超过所述阈值(720),添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边,计算所述新顶点的顶点细分因数和混合因数(726)并提供定义子四边形并包括所定义的顶点、所述中心顶点和所述两个新顶点的四个顶点作为a)的进一步的输入(728);以及
响应于确定所述选定顶点的顶点细分因数不超过所述阈值以及正好一个邻顶点的顶点细分因数超过所述阈值(724),添加新顶点以再分在所述选定顶点和具有超过所述阈值的顶点细分因数的所述邻顶点之间的边(734,738),并通过将所定义的顶点连接到在由所定义的顶点、新添加的顶点、所述中心顶点和另一邻顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形(736)。
2.如权利要求1所述的硬件细分系统,其中配置成将所述补片分成两个或四个三角形的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:
确定所述补片是否是顶级补片(704);
响应于确定所述补片是顶级补片,添加中心顶点(706)并通过将每个输入顶点连接到所述中心顶点来创建四个三角形(708);以及
响应于确定所述补片不是顶级补片,通过将所述补片的源顶点连接到所述补片的对角地相对的顶点来创建两个三角形(710)。
3.如权利要求1所述的硬件细分系统,其中配置成产生所述补片的中心顶点的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:
对于顶级补片:产生具有由(i)在N维空间中的所有四个角顶点的位置的平均值和(ii)在然后被映射到N维空间的域空间中的所有四个角顶点的定位的平均值的加权混合给出的位置的中心顶点;以及
对于不是顶级补片的补片:产生具有由(i)在N维空间中的选定顶点和对角地相对的顶点的位置的平均值和(ii)在然后被映射到N维空间的域空间中的选定顶点和对角地相对的顶点的定位的平均值的加权混合给出的位置的中心顶点,
以及其中所述加权混合使用根据所述顶点细分因数确定的权重。
4.如权利要求3所述的硬件细分系统,其中所述权重由下式给出:
MAXi=0..3(MIN(TFi–1,1))。
5.如权利要求1所述的硬件细分系统,其中配置成计算所述新添加的中心顶点的顶点细分因数和混合因数的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:
使用下式计算初始顶点细分因数:
Figure FDA0002933711260000021
以及
通过下列操作来计算所述新添加的中心顶点的顶点细分因数TFcentre和混合因数BWcentre
确定InitialTFcentre是否小于二;
响应于确定InitialTFcentre小于2.0,设置TFcentre=1和BWcentre=BlendWeightFunc(TF0,TF1,TF2,TF3),其中:
BlendWeightFunc(TF0,…TF3).=MAXi=0..3(MIN(TFi–1,1))
响应于确定InitialTFcentre不小于2.0,设置TFcentre=InitialTFcentre/2和BWcentre=1.0。
6.如权利要求1所述的硬件细分系统,其中配置成基于所述选定顶点来定义顶点的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:
设置所定义的顶点的域空间坐标等于所述选定顶点的域空间坐标;
确定所述选定顶点的顶点细分因数是否等于1.0以及所述选定顶点的顶点细分因数是否小于2.0;
响应于确定所述选定顶点的顶点细分因数等于1.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于所述选定顶点的混合因数;
响应于确定所述选定顶点的顶点细分因数不等于1.0并小于2.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于比所述选定顶点的顶点细分因数小一;以及
响应于确定所述选定顶点的顶点细分因数不小于2.0,设置所定义的顶点的顶点细分因数等于所述选定顶点的顶点细分因数的一半并设置所定义的顶点的混合因数等于一。
7.如权利要求1所述的硬件细分系统,其中配置成添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边并计算所述新顶点的顶点细分因数和混合因数的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:对于再分在顶点VA和VB之间的边的每个新顶点VM
使用下式计算VM的初始顶点细分因数:
Figure FDA0002933711260000031
以及
通过下列操作来计算新添加的顶点VM的顶点细分因数TFM和混合因数BWM
确定InitialTFM是否小于二;
响应于确定InitialTFM小于2.0,设置TFM=1和BWM=MAX(MIN(TFA-1,1),MIN(TFB-1,1));
响应于确定InitialTFM不小于2.0,设置TFM=InitialTFM/2和BWM=1.0;
将在域空间中的VM的位置设置为VA和VB的域空间坐标的平均值并在N维空间中的具有使用BWM由(i)在N维空间中的VA和VB的位置的平均值和(ii)在然后被映射到N维空间的域空间中的VM的位置的加权混合给出的位置的位置处。
8.如权利要求1所述的硬件细分系统,还包括配置成执行下列操作的硬件逻辑:
接收包括定义三角形补片的三个顶点的输入,每个顶点包括域空间坐标和顶点细分因数;
比较所述顶点细分因数与阈值(802);以及
响应于确定三个顶点细分因数中的至少一个超过所述阈值,
产生所述补片的中心顶点并计算新添加的中心顶点的顶点细分因数和混合因数(804);
进而选择三个所接收的顶点中的每个,且对于每个选定顶点:
基于所述选定顶点来定义顶点(808);
响应于确定所述选定顶点的顶点细分因数超过所述阈值(812),添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边,计算所述新顶点的顶点细分因数和混合因数(818)并提供定义子四边形并包括所定义的顶点、所述中心顶点和所述两个新顶点的四个顶点作为a)的进一步的输入(820);以及
响应于确定所述选定顶点的顶点细分因数不超过所述阈值以及两个邻顶点的顶点细分因数都超过所述阈值(814),添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边(822),并通过将所定义的顶点连接到由所定义的顶点、新添加的顶点和所述中心顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形(824);
响应于确定所述选定顶点的顶点细分因数不超过所述阈值、下一邻顶点的顶点细分因数超过所述阈值以及前一邻顶点的顶点细分因数不超过所述阈值(816),添加新顶点以再分在所述选定顶点和所述下一邻顶点之间的边(830),并绘制连接所定义的顶点、新添加的顶点和所述中心顶点的单个三角形(832);以及
响应于确定所述选定顶点的顶点细分因数不超过所述阈值、下一邻顶点的顶点细分因数不超过所述阈值以及前一邻顶点的顶点细分因数超过所述阈值(816),添加新顶点以再分在所述选定顶点和所述前一邻顶点之间的边(834),并通过将所定义的顶点连接到由所定义的顶点、新添加的顶点、所述中心顶点和所述下一邻顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形(836)。
9.如权利要求8所述的硬件细分系统,其中配置成对于三角形补片产生所述补片的中心顶点并计算新添加的中心顶点的顶点细分因数和混合因数的硬件逻辑包括配置成执行下列操作的硬件逻辑:
产生具有在域空间中的由所述三角形补片的所述三个顶点的平均值给出的位置的中心顶点;
使用下式计算初始顶点细分因数:
Figure FDA0002933711260000051
以及
通过下列操作来计算新添加的中心顶点的顶点细分因数TFcentre和混合因数BWcentre
确定InitialTFcentre是否小于二;
响应于确定InitialTFcentre小于2.0,设置TFcentre=1和BWcentre=BlendWeightFunc(TF0,TF1,TF2),其中:
BlendWeightFunc(TF0,…TF2).=MAXi=0..2(MIN(TFi–1,1))
响应于确定InitialTFcentre不小于2.0,设置TFcentre=InitialTFcentre/2和BWcentre=1.0。
10.如权利要求8所述的硬件细分系统,其中配置成对于三角形补片基于所述选定顶点来定义顶点的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:
设置所定义的顶点的域空间坐标等于所述选定顶点的域空间坐标;
确定所述选定顶点的顶点细分因数是否等于1.0以及所述选定顶点的顶点细分因数是否小于2.0;
响应于确定所述选定顶点的顶点细分因数等于1.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于所述选定顶点的混合因数;
响应于确定所述选定顶点的顶点细分因数不等于1.0并小于2.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于比所述选定顶点的顶点细分因数小一;以及
响应于确定所述选定顶点的顶点细分因数不小于2.0,设置所定义的顶点的顶点细分因数等于所述选定顶点的顶点细分因数的一半并设置所定义的顶点的混合因数等于一。
11.如权利要求8所述的硬件细分系统,其中配置成对于三角形补片添加新顶点以再分在所述选定顶点和邻顶点之间的边并计算所述新顶点的顶点细分因数和混合因数的所述硬件逻辑包括配置成执行下列操作的硬件逻辑:对于再分在顶点VA和VB之间的边的每个新顶点VM
使用下式计算VM的初始顶点细分因数:
Figure FDA0002933711260000061
以及
通过下列操作来计算新添加的顶点VM的顶点细分因数TFM和混合因数BWM
确定InitialTFM是否小于二;
响应于确定InitialTFM小于2.0,设置TFM=1和BWM=MAX(MIN(TFA-1,1),MIN(TFB-1,1));
响应于确定InitialTFM不小于2.0,设置TFM=InitialTFM/2和BWM=1.0;
将在域空间中的VM的位置设置为VA和VB的域空间坐标的平均值并在N维空间中的具有使用BWM由(i)在N维空间中的VA和VB的位置的平均值和(ii)在然后被映射到N维空间的域空间中的VM的位置的加权混合给出的位置的位置处。
12.如权利要求1所述的硬件细分系统,还包括配置成执行下列操作的硬件逻辑:
接收包括定义P边补片的P个顶点的输入,其中P>4,且每个顶点包括域空间坐标和顶点细分因数;
比较所述顶点细分因数与阈值;
响应于确定所有P个顶点细分因数不超过所述阈值,添加中心顶点并将所述补片分成P个三角形;以及
响应于确定所述P个顶点细分因数中的至少一个超过所述阈值:
产生所述补片的中心顶点并计算新添加的中心顶点的顶点细分因数和混合因数(712);
进而选择P个所接收的顶点中的每个,且对于每个选定顶点:
基于所述选定顶点来定义顶点(716);
响应于确定所述选定顶点的顶点细分因数超过所述阈值或两个邻顶点的顶点细分因数超过所述阈值(720),添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边,计算所述新顶点的顶点细分因数和混合因数(726)并提供定义子四边形并包括所定义的顶点、所述中心顶点和所述两个新顶点的四个顶点作为a)的进一步的输入(728);以及
响应于确定所述选定顶点的顶点细分因数不超过所述阈值以及正好一个邻顶点的顶点细分因数超过所述阈值(724),添加新顶点以再分在所述选定顶点和具有超过所述阈值的顶点细分因数的所述邻顶点之间的边(734,738),并通过将所定义的顶点连接到在由所定义的顶点、新添加的顶点、所述中心顶点和另一邻顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形(736)。
13.如权利要求1-12中的任一项所述的硬件细分系统,还包括存储器元件,所述存储器元件布置成存储用于在补片或子四边形内重新使用的顶点数据,使得被添加以再分边的顶点每补片或子四边形只被确定一次,所述边是所述补片或子四边形的多于一个再分的部分的部分。
14.一种在计算机图形系统中执行细分的方法,该方法包括:
a)接收包括定义四边形补片的四个顶点的输入,每个顶点包括域空间坐标和顶点细分因数;
b)比较所述顶点细分因数与阈值(702);
c)响应于确定所有四个顶点细分因数不超过所述阈值,将所述补片分成两个或四个三角形(704-710);以及
d)响应于确定至少一个细分因数超过所述阈值:
产生所述补片的中心顶点并计算新添加的中心顶点的顶点细分因数和混合因数(712);
进而选择四个所接收的顶点中的每个,且对于每个选定顶点:
基于所述选定顶点来定义顶点(716);
响应于确定所述选定顶点的顶点细分因数超过所述阈值或两个邻顶点的顶点细分因数超过所述阈值(720),添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边,计算所述新顶点的顶点细分因数和混合因数(726)并提供定义子四边形并包括所定义的顶点、所述中心顶点和所述两个新顶点的四个顶点作为a)的进一步的输入(728);以及
响应于确定所述选定顶点的顶点细分因数不超过所述阈值以及正好一个邻顶点的顶点细分因数超过所述阈值(724),添加新顶点以再分在所述选定顶点和具有超过所述阈值的顶点细分因数的所述邻顶点之间的边(734,738),并通过将所定义的顶点连接到由所定义的顶点、新添加的顶点、所述中心顶点和另一邻顶点定义的子四边形中的对角地相对的顶点来将该子四边形分成两个三角形(736)。
15.如权利要求14所述的方法,其中,将所述补片分成两个或四个三角形包括:
确定所述补片是否是顶级补片(704);
响应于确定所述补片是顶级补片,添加中心顶点(706)并通过将每个输入顶点连接到所述中心顶点来创建四个三角形(708);以及
响应于确定所述补片不是顶级补片,通过将所述补片的源顶点连接到所述补片的对角地相对的顶点来创建两个三角形(710)。
16.如权利要求14所述的方法,其中产生所述补片的中心顶点包括:
对于顶级补片:产生具有由(i)在N维空间中的所有四个角顶点的位置的平均值和(ii)在然后被映射到N维空间的域空间中的所有四个角顶点的定位的平均值的加权混合给出的位置的中心顶点;以及
对于不是顶级补片的补片:产生具有由(i)在N维空间中的选定顶点和对角地相对的顶点的位置的平均值和(ii)在然后被映射到N维空间的域空间中的选定顶点和对角地相对的顶点的定位的平均值的加权混合给出的位置的中心顶点,
以及其中所述加权混合使用根据所述顶点细分因数确定的权重。
17.如权利要求14所述的方法,其中计算所述新添加的中心顶点的顶点细分因数和混合因数包括:
使用下式计算初始顶点细分因数:
Figure FDA0002933711260000101
以及
通过下列操作来计算所述新添加的中心顶点的顶点细分因数TFcentre和混合因数BWcentre
确定InitialTFcentre是否小于二;
响应于确定InitialTFcentre小于2.0,设置TFcentre=1和BWcentre=BlendWeightFunc(TF0,TF1,TF2,TF3),其中:
BlendWeightFunc(TF0,…TF3).=MAXi=0..3(MIN(TFi–1,1))
响应于确定InitialTFcentre不小于2.0,设置TFcentre=InitialTFcentre/2和BWcentre=1.0。
18.如权利要求14所述的方法,其中基于所述选定顶点来定义顶点包括:
设置所定义的顶点的域空间坐标等于所述选定顶点的域空间坐标;
确定所述选定顶点的顶点细分因数是否等于1.0以及所述选定顶点的顶点细分因数是否小于2.0;
响应于确定所述选定顶点的顶点细分因数等于1.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于所述选定顶点的混合因数;
响应于确定所述选定顶点的顶点细分因数不等于1.0并小于2.0,设置所定义的顶点的顶点细分因数等于1.0并设置所定义的顶点的混合因数等于比所述选定顶点的顶点细分因数小一;以及
响应于确定所述选定顶点的顶点细分因数不小于2.0,设置所定义的顶点的顶点细分因数等于所述选定顶点的顶点细分因数的一半并设置所定义的顶点的混合因数等于一。
19.如权利要求14-18中任一项所述的方法,其中添加两个新顶点以再分在所述选定顶点和邻顶点之间的每条边并计算所述新顶点的顶点细分因数和混合因数包括:对于再分在顶点VA和VB之间的边的每个新顶点VM
使用下式计算VM的初始顶点细分因数:
Figure FDA0002933711260000111
以及
通过下列操作来计算新添加的顶点VM的顶点细分因数TFM和混合因数BWM
确定InitialTFM是否小于二;
响应于确定InitialTFM小于2.0,设置TFM=1和BWM=MAX(MIN(TFA-1,1),MIN(TFB-1,1));
响应于确定InitialTFM不小于2.0,设置TFM=InitialTFM/2和BWM=1.0;
将在域空间中的VM的位置设置为VA和VB的域空间坐标的平均值并在N维空间中具有使用BWM由(i)在N维空间中的VA和VB的位置的平均值和(ii)在然后被映射到N维空间的域空间中的VM的位置的加权混合给出的位置的位置处。
20.一种计算机可读存储介质,其具有存储在其上的计算机可执行程序代码,所述计算机可执行程序代码在被执行时使至少一个处理器执行如权利要求14-19中任一项所述的方法。
21.一种图形处理系统,包括如权利要求1-13中任一项所述的硬件细分系统。
22.一种计算机可读存储介质,其具有在其上编码的定义如权利要求1-13中任一项所述的硬件细分系统的计算机可读程序代码。
CN201610391081.1A 2015-06-05 2016-06-03 细分方法 Active CN106251391B9 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110540278.8A CN113256774A (zh) 2015-06-05 2016-06-03 细分方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1509764.5A GB2533444B (en) 2015-06-05 2015-06-05 Tessellation method
GB1509764.5 2015-06-05

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110540278.8A Division CN113256774A (zh) 2015-06-05 2016-06-03 细分方法

Publications (3)

Publication Number Publication Date
CN106251391A CN106251391A (zh) 2016-12-21
CN106251391B true CN106251391B (zh) 2021-05-14
CN106251391B9 CN106251391B9 (zh) 2021-07-20

Family

ID=53784997

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110540278.8A Pending CN113256774A (zh) 2015-06-05 2016-06-03 细分方法
CN201610391081.1A Active CN106251391B9 (zh) 2015-06-05 2016-06-03 细分方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202110540278.8A Pending CN113256774A (zh) 2015-06-05 2016-06-03 细分方法

Country Status (5)

Country Link
US (7) US9892554B2 (zh)
EP (2) EP3703015A3 (zh)
JP (2) JP6752629B2 (zh)
CN (2) CN113256774A (zh)
GB (2) GB2533444B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101555426B1 (ko) * 2014-02-07 2015-09-25 고려대학교 산학협력단 지형 렌더링 방법 및 장치
US20170358132A1 (en) * 2016-06-12 2017-12-14 Apple Inc. System And Method For Tessellation In An Improved Graphics Pipeline
US10242496B2 (en) 2017-04-24 2019-03-26 Intel Corporation Adaptive sub-patches system, apparatus and method
USD868807S1 (en) * 2017-09-19 2019-12-03 Covestro Llc Display screen portion with a graphical user interface
US10621782B1 (en) * 2017-12-06 2020-04-14 Apple Inc. Sub-patch techniques for graphics tessellation
US10580209B2 (en) * 2018-03-06 2020-03-03 Qualcomm Incorporated Removal of degenerated sub-primitives in tessellation
GB2572620C (en) 2018-04-05 2021-10-20 Imagination Tech Ltd Accessing Primitive Data
GB2572625B (en) 2018-04-05 2020-06-17 Imagination Tech Ltd Ordering in tessellation operations
GB2572619B (en) 2018-04-05 2020-06-17 Imagination Tech Ltd Hardware Tessellation Units
GB2572617B (en) * 2018-04-05 2021-06-16 Imagination Tech Ltd Blending hardware
US11010862B1 (en) * 2019-11-14 2021-05-18 Advanced Micro Devices, Inc. Reduced bandwidth tessellation factors
CN111414661B (zh) * 2020-03-31 2023-04-28 北京市建筑设计研究院有限公司 利用直线型材组成带状曲面建筑表皮的设计方法
US20220119744A1 (en) * 2020-10-16 2022-04-21 The Procter & Gamble Company Method of manufacturing water-soluble unit dose articles comprising water-soluble fibrous structures
USD985614S1 (en) * 2021-01-21 2023-05-09 Jake Paul Arsenault Computer monitor or portion thereof with computer generated building icon

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6940505B1 (en) * 2002-05-20 2005-09-06 Matrox Electronic Systems Ltd. Dynamic tessellation of a base mesh
CN102214369A (zh) * 2010-04-07 2011-10-12 英特尔公司 移位参数曲面的分层包围
US8169437B1 (en) * 2008-07-09 2012-05-01 Nvidia Corporation Distributed tessellation topology generator
CN103198512A (zh) * 2011-09-16 2013-07-10 柯斯提克绘图公司 用于多处理器系统中的输出的多级采集器
CN103810756A (zh) * 2014-01-17 2014-05-21 浙江大学 基于不规则区域的自适性的Loop细分曲面的绘制方法
CN104584082A (zh) * 2012-08-30 2015-04-29 高通股份有限公司 在图形处理中的基元的缝合

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6229570B1 (en) * 1998-09-25 2001-05-08 Lucent Technologies Inc. Motion compensation image interpolation—frame rate conversion for HDTV
US6476813B1 (en) * 1999-11-30 2002-11-05 Silicon Graphics, Inc. Method and apparatus for preparing a perspective view of an approximately spherical surface portion
US20020060685A1 (en) * 2000-04-28 2002-05-23 Malcolm Handley Method, system, and computer program product for managing terrain rendering information
GB2378337B (en) * 2001-06-11 2005-04-13 Canon Kk 3D Computer modelling apparatus
GB2388507B (en) 2002-05-10 2005-11-09 Imagination Tech Ltd An interface and method of interfacing between a parametric modelling unit and a polygon based rendering system.
US20050131660A1 (en) * 2002-09-06 2005-06-16 Joseph Yadegar Method for content driven image compression
US8482559B2 (en) * 2002-11-04 2013-07-09 Ati Technologies Ulc Method and apparatus for triangle tessellation
DE10254606B4 (de) 2002-11-22 2006-06-29 Siemens Ag Verfahren und Vorrichtung zur schnellen Verarbeitung von Messdaten mit einer Vielzahl unabhängiger Stichproben
US7194125B2 (en) * 2002-12-13 2007-03-20 Mitsubishi Electric Research Laboratories, Inc. System and method for interactively rendering objects with surface light fields and view-dependent opacity
US6879328B2 (en) * 2003-03-03 2005-04-12 Sun Microsystems, Inc. Support of multi-layer transparency
US20040207622A1 (en) * 2003-03-31 2004-10-21 Deering Michael F. Efficient implementation of shading language programs using controlled partial evaluation
US7148890B2 (en) * 2003-04-02 2006-12-12 Sun Microsystems, Inc. Displacement mapping by using two passes through the same rasterizer
US8471852B1 (en) 2003-05-30 2013-06-25 Nvidia Corporation Method and system for tessellation of subdivision surfaces
US20070247458A1 (en) * 2006-04-11 2007-10-25 Samsung Electronics Co., Ltd. Adaptive computation of subdivision surfaces
US7928979B2 (en) 2008-02-01 2011-04-19 Microsoft Corporation Efficient geometric tessellation and displacement
JP5078712B2 (ja) * 2008-04-01 2012-11-21 任天堂株式会社 画像処理プログラム、画像処理装置、画像処理システム及び画像処理方法
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
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
US20110310102A1 (en) * 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
US8665266B2 (en) * 2010-06-23 2014-03-04 The United States Of America, As Represented By The Secretary Of The Navy Global visualization process terrain database builder
US8547598B2 (en) * 2011-04-28 2013-10-01 Xerox Corporation Polygonal-boundary-based halftone method
US8791945B2 (en) * 2011-05-18 2014-07-29 Intel Corporation Rendering tessellated geometry with motion and defocus blur
US8854374B2 (en) * 2011-12-23 2014-10-07 Advanced Micro Devices, Inc. Tessellation patterns
US9305397B2 (en) * 2012-10-24 2016-04-05 Qualcomm Incorporated Vertex order in a tessellation unit
US9123168B2 (en) * 2013-01-30 2015-09-01 Qualcomm Incorporated Output ordering of domain coordinates for tessellation
KR102104057B1 (ko) * 2013-07-09 2020-04-23 삼성전자 주식회사 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들
KR20160030426A (ko) * 2014-09-10 2016-03-18 삼성전자주식회사 서브디바이더를 포함하는 그래픽스 프로세싱 유닛과 이를 포함하는 장치
KR102327144B1 (ko) * 2014-11-26 2021-11-16 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6940505B1 (en) * 2002-05-20 2005-09-06 Matrox Electronic Systems Ltd. Dynamic tessellation of a base mesh
US8169437B1 (en) * 2008-07-09 2012-05-01 Nvidia Corporation Distributed tessellation topology generator
CN102214369A (zh) * 2010-04-07 2011-10-12 英特尔公司 移位参数曲面的分层包围
CN103198512A (zh) * 2011-09-16 2013-07-10 柯斯提克绘图公司 用于多处理器系统中的输出的多级采集器
CN104584082A (zh) * 2012-08-30 2015-04-29 高通股份有限公司 在图形处理中的基元的缝合
CN103810756A (zh) * 2014-01-17 2014-05-21 浙江大学 基于不规则区域的自适性的Loop细分曲面的绘制方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Adaptive tesselation of subdivision surfaces;Volker Settgast 等;《Computers & Graphics》;20040229;第28卷(第1期);第73-78页 *
Integer-Grid Maps for Reliable Quad Meshing;David Bommes 等;《ACM Transactions on Graphics》;20130731;第32卷(第4期);第1-12页 *
三角网格顶点重要度的自适应Loop细分算法;王艳艳 等;《计算机工程与应用》;20141231;第50卷(第13期);第201-204、227页 *
细分方法中对显著扭曲面片的校正处理;孙林 等;《佳木斯大学学报(自然科学版)》;20120531;第30卷(第3期);第438-440、443页 *

Also Published As

Publication number Publication date
US20200302690A1 (en) 2020-09-24
JP6961054B2 (ja) 2021-11-05
US20190311537A1 (en) 2019-10-10
JP2017004517A (ja) 2017-01-05
GB2552260B (en) 2019-04-10
GB2533444B (en) 2017-08-16
EP3101628B1 (en) 2020-07-01
US11263811B2 (en) 2022-03-01
US10360725B2 (en) 2019-07-23
CN106251391A (zh) 2016-12-21
US10740967B2 (en) 2020-08-11
US9892554B2 (en) 2018-02-13
US10140762B2 (en) 2018-11-27
CN106251391B9 (zh) 2021-07-20
EP3703015A2 (en) 2020-09-02
EP3703015A3 (en) 2020-09-30
US20230343032A1 (en) 2023-10-26
GB201509764D0 (en) 2015-07-22
JP6752629B2 (ja) 2020-09-09
EP3101628A1 (en) 2016-12-07
US20220157018A1 (en) 2022-05-19
CN113256774A (zh) 2021-08-13
GB201710603D0 (en) 2017-08-16
US20190096126A1 (en) 2019-03-28
US20160358373A1 (en) 2016-12-08
JP2020191134A (ja) 2020-11-26
GB2533444A (en) 2016-06-22
US11676335B2 (en) 2023-06-13
GB2552260A (en) 2018-01-17
US20180218536A1 (en) 2018-08-02

Similar Documents

Publication Publication Date Title
CN106251391B (zh) 细分方法
US11830143B2 (en) Tessellation method using recursive sub-division of triangles
US11900543B2 (en) Tessellation method using displacement factors
US11676336B2 (en) Accessing primitive data using tessellated primitive ID
CN110362846B (zh) 硬件曲面细分装置
CN110349266B (zh) 曲面细分操作中的排序

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CI03 Correction of invention patent

Correction item: Claims|Description

Correct: Claims 1-22 submitted on June 7, 2021|Paragraphs 1-343 of the specification submitted on June 7, 2021

False: Claims 1-22 submitted on February 4, 2021|Paragraphs 1-303 of the specification submitted on August 10, 2018

Number: 20-02

Page: ??

Volume: 37

CI03 Correction of invention patent