图像形成技术的制作方法

文档序号:6605035阅读:165来源:国知局
专利名称:图像形成技术的制作方法
技术领域
在此公开的主题总地涉及图形处理,包括图形处理器和用于图形处理的通用处理 器的使用。
背景技术
图形流水线可以用于渲染游戏图形、计算机动画、医学应用等。由于图形流水线中 的限制,所生成的图形图像的细节级别会比理想状态低。提供的细节越显著,所造成的图形 处理就越慢。因而,在处理速度与图形细节之间存在折中。例如微11的图形 处理流水线通过增加细分曲面(tessellation)细节来增加几何细节。细分曲面是形成一系列三角形以便从一个粗糙的多边形模型开始来渲染物体的 图像的过程。图块(patch)是在用于描述表面的控制笼(controlcage)的粗糙级别上的基 本单元。图块可以表示曲线或区域。所述表面可以是任何能被描述为参数函数的表面。控 制笼是艺术家用来生成光滑表面的低分辨率模型。因而,通过提供更高程度的细分曲面,来 提高能够绘制的图形细节级别。然而,处理速度会受到不利影响。通常,处理时间随着图像 细节级别的增加而以二次方递增。希望在可接受的处理时间内实现更高程度的细分曲面。


借助于附图中的实例而非限制地图示说明本发明的各个实施例,在附图中类似的 参考数字指代类似的元素。图1是根据一个实施例的图形流水线的示意图。图2是根据一个实施例的使用最大值式的内部细分曲面因子折减(reductoin)函 数和单轴(Ι-axis)内部细分曲面因子轴折减的内部细分曲面的描述。图3是根据一个实施例的使用平均值式的内部细分曲面因子折减函数和单轴内 部细分曲面因子轴折减的细分曲面图案的描述。图4是根据一个实施例的使用最小值式的内部细分曲面因子折减函数的单轴细 分曲面的细分曲面图案的描述。图5A是根据一个实施例的单轴内部细分曲面因子轴折减的描述。图5B是根据一个实施例的单轴内部细分曲面,其中顶边具有不同于图5A的边缘 细节级别。图5C是根据一个实施例的单轴内部细分曲面,其中左侧边具有不同于图5A和5B 中所示细分曲面的边缘细节级别。图6显示了根据一个实施例的偶数和奇数四边形(quad)内部细分曲面。图7A显示了根据一个实施例的用来访问四边形内部细分曲面的域点(domain point)的两种示例性方式。图7B显示了根据一个实施例的用来访问三角形内部细分曲面的域点的两种示例性方式。图8是用于为本发明的一个实施例生成图块的流程图。图9显示了对图块进行细分曲面和域着色所用的平均周期数之间的比较。图10是根据一个实施例的多核处理器的示意图。
具体实施例方式此说明书通篇提及的“一个实施例”或“实施例”意指与该实施例结合描述的特定 特征、结构或特性包含在本发明的至少一个实施例中。因而,此说明书通篇各处出现的短语 “在一个实施例中”或“实施例”并非必然全部指代同一实施例。此外,所述特定特征、结构 或特性可以被组合进一个或多个实施例中。根据某些实施例,细分曲面时间随着细分曲面的量而线性递增。通常,细分曲面时 间随着细分曲面细节的量而以二次函数增加。结果,在某些实施例中,可以减少细分曲面时 间,并且在其他实施例中,可以使用功能不太强大的细分曲面单元(tessellator)来执行 更多的细节的细分曲面。 在某些实施例中,通过预先计算在一个边缘细节级别范围内的一系列内部细分曲 面,可以节省细分曲面时间和/或提高细分曲面处理能力。这节省了在运行时对内部细分 曲面的计算。内部细分曲面(inner tessellation)包括在图元的外周长内部的点和三角 形。外带(outer band)由图元的周长构成。根据某些实施例,可以预先计算两种内部细分曲面,并对其进行存储以便在运行 时可获得。第一内部细分曲面可以用于具有偶数编号的因子的细分曲面,而第二内部细分 曲面可以用于具有奇数编号的因子的细分曲面。第一内部细分曲面可以包括所有具有较低 的偶数编号的因子的内部细分曲面。第二内部细分曲面可以包括所有具有较低的奇数编号 的因子的内部细分曲面。根据某些实施例,可以将第一和第二内部细分曲面存储为从最内部的细分曲面开 始并向外进行到更大的细分曲面的多个域点。最内部的细分曲面可以是最小的细分曲面。 第一和第二最内部的细分曲面的最内部的细分曲面分别可以具有因子2和1。第一和第二 内部细分曲面的最外面的细分曲面分别是具有最大的偶数和奇数编号的因子的细分曲面。根据某些实施例,细分曲面可以使用三角形或四边形图元域。边缘划分可以包括 将边缘划分为区间。所使用的区间越多,可能实现的细分曲面的细节级别就越高。因而,增 加边缘细节级别会提高所得到的细分曲面的分辨率。参照图1,图形流水线可以在图形处理器内实现为独立的专用集成电路、用软件实 现、通过执行软件的通用处理器实现、或者通过软件和硬件的组合来实现。在某些实施例 中,在图1中,可以用硬件实现具有直角边的元件,可以以软件实现具有圆角边的元件。例 如,可以在蜂窝电话、无线电话、个人通信系统(PCS)设备、结合无线通信设备的PDA设备或 任何计算机中实现图形流水线。图形流水线可以向显示设备提供图像或视频来进行显示。 可以使用各种技术来向显示器传送图像。例如,可以使用高清多媒体接口、DisplayPort、无 线HDMI和/或无线HD兼容技术向显示器传送图像。输入汇编器(assembler) 12通过使用固定函数操作、形成几何图形和创建流水线 工作项来从存储器中读出顶点。自动生成的标识符使得能够进行如图1右边虚线上指示的标识符专用(identifier-specific)处理。可以从前面的顶点着色器14得到顶点标识符 和实例标识符。可以从前面的外壳着色器16获得图元标识符。控制点标识符只有在外壳 着色器16内有效。顶点着色器14执行例如转换、加皮(skinning)或照明的操作。其输入一个顶点并 输出一个顶点。在控制点阶段中,每个输出控制点都调用顶点着色器且每一个控制点都由 控制点标识符来标识,顶点着色器能够独立于输出数量而读取图块的所有输入控制点。外 壳着色器16在每次调用时输出控制点。聚集输出是对于下一个外壳着色器阶段和域着色 器20的共享输入。对于每个图块可以调用图块常量阶段一次,并且其具有所有输入和输出 控制点的读取输入。外壳着色器16输出边缘细分曲面因子和其他图块常量数据。如在此 使用的,在图元域的每个边缘有多个区间的情况下,边缘细分曲面因子和边缘细节级别可 以互换地使用。可以对代码进行分段,以便可以进行独立的工作,并在结束时以组合步骤并 行结束。可以用硬件或软件来实现细分曲面单元18。在某些有利的实施例中,细分曲面单 元可以是一种软件实现的细分曲面单元。通过加快细分曲面单元的操作,如本文所述的,可 以将以前进行细分曲面单元操作的核心空闲出来进行其他任务。细分曲面单元18要取回 经编码的域点或(u,ν)值。所存储的经编码的域点可以是无符号整数格式的,而且可以采 用根据图7Α或7Β描述的方式来取回经编码的域点。细分曲面单元18可以从外壳着色器 接收定义了要进行多大程度的细分曲面的数字。细分曲面单元18生成拓扑,例如点、线或 三角形。细分曲面单元18可以输出至少一个顶点。在某些实施例中,细分曲面单元18具有以下状态,其中每一种状态都可以针对状 态变量而被设置为所列值。
状态可能的状态属性图元域三角形I四边形I等值线边缘划分整数|Pow2|分数—奇数I分数—偶数内部细分曲面一因子折减函数最小值I最大值I平均值内部细分曲面一因子轴折减单轴I双轴细分曲面单元输出拓扑点I线I三角形—CWl三角形—CCW域着色器20是一个可编程的阶段,其使用由细分曲面单元18供应的域点(U,ν) 值在图块上生成真实的3D点。在某些实施例中,域着色器20可以是软件实现的。在某些 实施例中,域着色器20的由着色器编译器生成的部分应用缩放与偏置技术将来自于细分 曲面单元18的经编码的域点转换到W,l]域。因此,域着色器20可以使用标量位移图来 对点进行位移,或者计算其他顶点属性。几何着色器22可以输入一个图元并输出高达四个流,每一个流独立地接收零个 或更多个图元。在几何着色器的输出处出现的流可以向光栅化器24提供图元,同时可以
6将高达四个流级联到缓冲器30。可以由光栅化器24来执行裁剪、角度划分(perspective dividing)、观察窗(view ports)和剪刀选择实现和图元设置。像素着色器26输入一个像素并输出在同一位置处的一个像素,或者不输出像素。 输出合并器28提供固定函数目标渲染、混合、深度和模板(stencil)操作。参照图2,根据一个图元为四边形的实施例,四边形32包括顶边32t、右侧边32r、 底边32b和左侧边321。在此实例中,顶边32t具有一个区间,右侧边32r具有八个区间,底 边32b具有四个区间,左侧边321具有两个区间。所述区间对应于边缘细节级别和细分曲 面因子。在细分曲面单元18中,内部细分曲面可以使用最小值式、最大值式或平均值式的 因子折减函数。图2显示了最大值式的折减函数。在此情况下,使用边缘32ι 来实施细分 曲面,这是因为边缘32ι 具有最大数量的区间。在此实施例中,其仅计算一个最大值。在其 他实施例中,可以将三角形用作图元,而且可以使用其他内部细分曲面折减函数。图3显示了在用平均值式的细分曲面因子折减函数进行处理之后的四边形。在 此,平均值是基于四个边的区间的平均值的。最后,图4显示了使用最小值边的最小值式的 细分曲面折减因子的结果,该最小值边将是顶边32t。接下来参照图5A-5C,四边形可以被划分为外带36a和内部细分曲面38。外带36a 是沿着图元域的周长的任何东西,在此情况下是四边形,并且内部细分曲面是其他任何东 西。图5A-5C显示了在单轴内部细分曲面因子折减实例中,不管在外带中所使用的区间数 量如何,只要外围细分曲面的最大值保持相同,内部细分曲面就是相同的。在此实例中,细 分曲面因子折减函数是最大值式的,细分曲面因子轴折减是单轴的。因而,不管边缘细节级 别或细分曲面因子如何,内部细分曲面都保持相同。结果,就有可能针对各种不同的边缘细 节级别而预先计算内部细分曲面,对其进行存储,并且在运行时按照需要简单地应用它们。 因而,可以重复使用针对某个边缘细节级别范围所预先计算的内部细分曲面,而不必在运 行时对其进行重新计算,从而加快了计算速度。图6显示了根据实施例,在区间数量从1到8的情况下的偶数和奇数四边形内部 细分曲面。通常,具有内部图块细分曲面L的图块包括为L-2的内部图块细分曲面和附加 的外环。具体而言,图6描述了偶数和奇数区间细分曲面。例如,具有为8的区间的内部细 分曲面包括具有为6、4或2的区间的内部细分曲面。类似地,具有为7的区间的内部细分 曲面包括具有为5、3和1的区间的内部细分曲面。在某些实施例中,对于所有内部细分曲面因子仅存储两个域点表。第一个表存储 偶数内部细分曲面因子的域点,第二个表存储奇数内部细分曲面因子的域点。域点之间的间距会根据内部细分曲面因子而不同,这是因为细分曲面的域点位于
域内。例如,为二(2)的内部细分曲面具有角点(0. 25,0. 25)和(0. 75,0. 25),而在 为四(4)的外围细分曲面内的为二(2)的内部细分曲面具有角点(0.33,0.33)和(0.66, 0.33)。相应地,域点并不存储在
输出域内。取而代之的是,在各个实施例中,将域点 存储为有符号整数。缩放与偏置技术将有符号整数转换到在
域内的域点坐标。例如, 将有符号整数除以区间数量,并加上偏移量,从而转换为
域内的域点坐标。将域点存 储为有符号整数会导致在能够将域点输入到域着色器(例如,图1的域着色器20)之前执 行缩放与偏置操作。域着色器20可以对有符号整数执行缩放与偏置操作,以将有符号整数 转换到
域。可以由着色器编译器插入该缩放与偏置操作。着色器编译器将高级着色器程序翻译成自然机器可执行语言。另外,在各个实施例中,可以将预先计算的域点存储为两个8位的有符号整数,而 在精度上无任何损失。因此,各个实施例使用的存储空间少于将域点存储为两个32位浮点 数的情况。通过将预先计算的域点存储为两个8位有符号整数,相对于存储为两个32位浮 点数的情况而言,使用了大约四分之一的更少的存储空间。图7A显示了根据实施例的,用来访问四边形细分曲面的域点的两种示例性方式。 具体而言,图7A描述了用来访问偶数和奇数因子四边形细分曲面的域点的方式。每个细分 曲面的域点从图块的中心处开始并向外进行。通过从图块的中心环处开始并按照螺旋状图 案向外运行,以适当的次序存储三角形连接性,以便支持任何内部细分曲面因子。图7B显示了根据实施例的,用来访问三角形细分曲面的域点的两种示例性方式。 具体而言,图7B描述了用来访问偶数和奇数因子三角形细分曲面的域点的方式。每个细分 曲面的域点都从图块的中心处开始并向外进行,从而以适当的次序存储三角形连接性,以 便支持任何内部细分曲面因子。在各个实施例中,除了存储域点之外,还在索引缓冲器中将三角形端点存储为索 引值。在某些实施例中,存在两个索引缓冲器用于奇数因子内部细分曲面的索引缓冲器和 用于偶数因子内部细分曲面的索引缓冲器。例如,参考图7A中的偶数编号的细分曲面,第 一三角形具有一个在细分曲面的中心处的端点,并具有在跟随箭头沿着域点路径的第二个 和第三个域点处的另外两个端点。因此,第一三角形具有索引为0、1和2的域点。表1显示了对于使用一个用于每个细节级别(LOD)的表的解决方案和使用分别 用于偶数和奇数细分曲面的两个表的实施例,用于存储所有三角形的三(u,ν)坐标对组 (triplet paris of (u,ν) coordinates)的数量的比较。对于内部细分曲面因子64,使用分 别用于偶数和奇数细分曲面的两个表时所使用的索引会比存储一个用于每个LOD的三角 形的表的解决方案少10倍以上。表 1 表2显示了针对为每个细节级别(LOD)存储单独的表(左边)的情况和分别仅用 于偶数和奇数LOD的表(右边)的情况,所存储的域点数量之间的对比。表2 表3显示了存储一个用于每个细节级别的细分曲面的表所使用的总的存储器占 用量与存储分别用于偶数和奇数编号的细节级别的两个表的各个实施例之间的比较。具体 而言,表3显示了针对每个细节级别将三角形索引存储为16位无符号整数所使用的存储器 与在分别用于偶数和奇数编号的细节级别的两个表中存储三角形索引的各个实施例之间 的比较。另外,表3显示了针对每个细节级别将域点存储为两个32位浮点数的情况与针对 每个偶数和奇数细节级别将域点存储为两个8位有符号整数的情况之间的比较。表3 在各个实施例中,对于不同的边缘细节级别,可以预先确定并存储内部细分曲面 的预先计算的各个点的域值和所得到的三角剖分(triangulation)。在运行时,可以取回内 部细分曲面的域值。图8显示了可以用来提供细分曲面的三域点对组的处理过程。此后, 可以渲染细分曲面的三角形以便进行显示。在块802处,细分曲面单元18从存储器中读取 预先确定的、具有期望因子的内部细分曲面的经编码的域点。可以将经编码的域点存储为 两个8位有符号整数。在块804处,域着色器20对预先确定的经编码的域点执行缩放与偏置操作,来产 生在
域内的域值。块804可以将两个8位有符号整数转换成两个32位浮点数。在块806处,细分曲面单元18为细分曲面的外带生成域点。例如,如图5A中所示, U和V值是沿着水平轴U和垂直轴V的点的坐标或区间。在块808处,对于内部细分曲面,细分曲面单元18从索引缓冲器中读取每个三对
9组的三角形的角的索引。这些索引与三角形的端点的坐标相关联。在块810处,细分曲面单元18在运行时为外带确定三角剖分。图9显示了对于用于针对每个细节级别将域值存储为浮点值的一个解决方案和 用于将域值作为无符号整数存储在分别用于偶数和奇数细节级别的表内的另一技术方案, 在使用具有1292个图块的真实数据集的情况下对图块进行细分曲面和域着色所使用的平 均周期数的比较。将域值存储为有符号整数会由于解码而造成非常小的额外计算成本。将 域点从有符号整数解码到在W,l]域内的浮点值,会略微影响性能。例如,由于解码的缘 故,在域着色器内会出现最小大约的速度下降。另外,由于不再解决对于每个图块要使用哪一个预先计算的表的问题,在细分曲 面单元内出现了大约1 %的提速。相对于针对每个细节级别将域值存储为浮点值,在将域值 作为无符号整数存储在分别用于奇数和偶数细节级别的表内的情况下,细分曲面单元和域 着色器的整体性能下降了小于0.5%。如果这种下降是不可接受的,则可以使用混合解决 方案,其中存储多个(u,ν)缓冲器,但共享索引缓冲器。在这种混合解决方案中,针对每个 LOD存储域值为浮点的表,并且在分别用于偶数和奇数边缘因子的表内存储索引值。在某些实施例中,使用线程化和矢量化,根据图块的内部细分曲面因子对图块进 行排序。然后,如图10中所示,在多核处理器50中的同一物理核心上对具有相同细节级别 的图块进行细分曲面。在图块排序器52中进行了排序和分组之后,可以向同一核心54或 56发送所有要进行细分曲面的、具有相同内部细分曲面细节级别的图块,然后在此核心上 的所有线程能够使用在该核心的第一级高速缓冲存储器58和第二级高速缓冲存储器60中 的仅仅一个副本。然后在稍后某点处使用图块图元ID对三角形进行解排序。外带细分曲 面是可变的,两者都是在三角剖分中所生成的点的数量方面。因而,可以通过在第一个缓冲 器62内放置已经预先计算的已知的内部细分曲面来使用双缓冲器解决方案。然后,计算外 围细分曲面的可变部分,并将其存储在第二个缓冲器64内。虽然在图10中仅图示了两个 核心,但是可以使用任何数量的核心。可以在各个硬件结构内实施本文所述的图形和/或视频处理技术。例如,可以将 图形和/或视频功能集成到芯片组内。在替换方案中,可以使用分立的图形和/或视频处理 器。作为又一实施例,可以由通用处理器来实施图形和/或视频功能,其包括多核处理器。 在另一实施例中,可以在消费类电子设备内实施所述功能。例如,本发明的实施例可以作为计算机程序产品而被提供,该计算机程序产品可 以包括一个或多个机器可读介质,在该机器可读介质上存储了机器可执行指令,所述指令 在由诸如计算机、计算机网络或其他电子设备之类的一个或多个机器运行时可以导致该一 个或多个机器执行根据本发明的实施例的操作。机器可读介质可以包括但不限于软盘、光 盘、CD-R0M(压缩盘只读存储器)和磁光盘、R0M(只读存储器)、RAM(随机存取存储器)、 EPROM(可擦可编程只读存储器)、EEPR0M(电可擦可编程只读存储器)、磁或光卡、闪存或其 他类型的适于存储机器可执行指令的介质/机器可读介质。附图和前述说明给出了本发明的多个实例。尽管被描述为多个不同的功能项,但 是本领域技术人员将理解,可以将这些元件中的一个或多个元件很好地组合成单个功能元 件。在替换方案中,特定的元件可以被分成多个功能元件。来自于一个实施例的元件可以 被添加到另一个实施例。例如,本文所述的处理顺序可以被改变而不限于本文所述的方式。此外,不必按照所示顺序来实施任何流程图的动作;也不是所有动作都必须要被执行的。而 且,那些不依赖其它动作的动作可以与所述其它动作并行执行。然而,本发明的范围绝不受 这些具体实例的限制。许多变化都是可能的,例如结构、维度的差异和材料的使用,无论这 些变化是否在说明书中被清晰地给出。本发明的范围至少与所附权利要求给出的范围一样
觅ο
权利要求
一种用于提供细分曲面的计算机实现方法,包括根据所存储的域点生成细分曲面,其中,所述生成包括从偶数或奇数因子细分曲面表之一中取回内部细分曲面的域点;以及提供所述细分曲面进行显示。
2.如权利要求1所述的方法,其中,所述生成还包括 将所述域点转换到W,l]域。
3.如权利要求2所述的方法,其中,所述转换包括 将所述域点从有符号整数格式转换成浮点格式。
4.如权利要求1所述的方法,其中,所述取回包括按照从所述细分曲面的最内部的域点开始以螺旋状次序到外围域点的次序,来取回域点ο
5.如权利要求1所述的方法,其中,所述生成还包括 从索引缓冲器中读取三角形的角点的索引。
6.如权利要求1所述的方法,其中,所述生成还包括 沿着所述细分曲面的外围边缘生成域点。
7.如权利要求1所述的方法,还包括在至少一个较高因子的细分曲面内安排至少较低因子的细分曲面;以及 按照从所安排的细分曲面的最内部的域点开始以螺旋状方式到外围域点的次序,来存 储所安排的细分曲面。
8.如权利要求1所述的方法,还包括在索引缓冲器内存储三角形的角的索引,其中,角的索引与域点相关联。
9.如权利要求1所述的方法,其中,所述细分曲面包括四边形或三角形中至少一种。
10.一种用于产生图块的装置,包括细分曲面单元,其生成图块,其中,为了生成图块,所述细分曲面单元取回图块的域点, 其中,为了取回域点,所述细分曲面单元从奇数或偶数表之一中取回内部细分曲面的域点; 以及域着色器,其将域点转换到W,1]域,并在所述图块上生成三维点。
11.如权利要求10所述的装置,其中,为了将域点转换到所述W,1]域,所述域着色器 对经编码的域点进行缩放与偏置。
12.如权利要求10所述的装置,其中,为了取回域点,所述细分曲面单元按照从所述 内部细分曲面的最内部的域点开始以螺旋状方式到所述内部细分曲面的外围域点的次序, 来取回域点。
13.如权利要求10所述的装置,其中,按照在至少一个较高因子的细分曲面内安排至 少一个较低因子的细分曲面的方式,来存储所述域点。
14.如权利要求10所述的装置,其中,为了生成图块,所述细分曲面单元生成沿着所述 图块的外围边缘的域点。
15.如权利要求10所述的装置,其中,为了生成所述图块,所述细分曲面单元还从奇数 或偶数细节级别表中取回三角形的角的索引。
16.一种用于产生图块的系统,包括显示器;以及计算系统,其生成图块以发送到所述显示器,其中,所述计算系统包括 细分曲面单元,其生成图块,其中,为了生成图块,所述细分曲面单元取回图块的域点, 其中,为了取回域点,所述细分曲面单元从奇数或偶数表之一中取回内部细分曲面的域点; 以及域着色器,其将域点转换到W,l]域,并在所述图块上生成三维点。
17.如权利要求16所述的系统,其中,为了将域点转换到所述W,l]域,所述域着色器 对经编码的域点进行缩放与偏置。
18.如权利要求16所述的系统,其中,为了取回域点,所述细分曲面单元按照从所述内部细分曲面的最内部的域点开始以螺旋状方式到所述内部细分曲面的 外围域点的次序,来取回域点。
19.如权利要求16所述的系统,其中,为了生成所述图块,所述细分曲面单元还从奇数 或偶数细节级别表之一中取回三角形的角的索引。
全文摘要
在某些实施例中,可以预先计算图块的内部细分曲面的区间和三角剖分。以同心的方式安排偶数因子细分曲面,从而使得较低编号的因子在具有较高编号的因子的细分曲面内部。类似地,以同心的方式安排奇数因子细分曲面,从而使得较低编号的因子在具有较高编号的因子的细分曲面内部。在第一个表内存储偶数因子细分曲面的域点,而在第二个表内存储奇数因子细分曲面的域点。在运行时,可以针对可应用的边缘细节级别来查找预先计算的值。
文档编号G06T1/00GK101894358SQ20101021413
公开日2010年11月24日 申请日期2010年4月29日 优先权日2009年4月29日
发明者P·A·罗森, R·P·萨特 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1