图形处理系统的制作方法

文档序号:6580864阅读:188来源:国知局
专利名称:图形处理系统的制作方法
技术领域
本发明涉及一种图形处理系统,尤其是涉及在图形处理系统中对例如平滑曲线的 平滑形状的渲染(rende ring)。 本发明将特别地参照三维图形的处理来说明,但是本领域的技术人员能够理解, 本发明同样适于处理二维图形。
背景技术
如本领域公知的那样,3D图形处理通常通过首先将待显示的画面(scene)划分成 多个相似的基本组成部分(即所谓的"图元(primitive)")来执行,以便允许更容易地执 行该3D图形处理操作。这些"图元"常常具有例如三角形的简单多边形的形式。
待显示的画面的图元常常由图形处理系统的应用程序接口使用从需要所述图形 显示的应用(例如游戏)接收的图形绘制指令(请求)来生成。 在这个阶段,每个图元通常都由顶点的集合(set of vertex)来定义,并且用顶点 的集合来表示。图元的每个顶点都具有与该顶点相关联的、表示该顶点的数据(例如位置、 颜色、纹理(texture)和其它属性数据)的集合。所述数据然后在例如光栅化(rasterise) 和渲染所述顶点(该顶点关联的图元)以用于显示时被使用。 —旦已经生成并定义了画面的图元以及这些图元的顶点,则这些图元及其顶点可 以被图形处理系统处理,以便例如将所述画面显示在例如屏幕或打印机的输出显示设备 上。 该过程基本上包括确定覆盖待处理画面区域的采样点阵列中的哪些采样点被图 元覆盖,然后确定为了表示该采样点处的图元每个采样点所应当具有的外观(例如在其颜 色方面等等)。通常,分别将这些过程称为光栅化和着色(shading)。 光栅化过程确定应当被用于图元的采样位置(即将被用于表示待显示画面中的 图元的采样点的(x,y)位置)。这通常使用图元的顶点的位置来实现。
着色过程则得到为了显示采样点处的图元所需的数据(即给每个采样点"着 色"),例如红色、绿色和蓝色(RGB)颜色值和"Alpha"(透明度)值。如本领域公知的那样, 这可以包括应用纹理、对采样点数据值进行混合等等。(在3D图形文献中,术语"光栅化"有时用来表示转换到采样位置的转换和着色这 二者的意思。然而在此,"光栅化"将用来仅仅指将图元数据转换到采样点地址。)
这些过程通常通过将采样点"表示"为通常称为"片元"(fragment)的离散图形 实体来执行,其中对所述离散图形实体执行图形处理操作(例如着色)。事实上,每个采 样点都将由将被用于给所讨论的采样点处的图元着色的片元来表示。片元可以表示(具 有与之相关联的)单个采样点或者多个采样点。"片元"是经过"着色过程(着色流水线 (pipeline))的图形实体。(因此,"片元"实际上是(具有与之相关联的)被插值到图元的给定屏幕空间采 样点的图元数据的集合)。片元也可以包括为了给所讨论的采样点(片元位置)处的图元
5着色所需的每图元的和其它状态的数据。可以合理地认为每个图形片元在画面被处理时实 际上都相当于该画面的一个"像素")。 每个图形"片元"都可以对应于最终输出显示中的单个像素(图像元素)(因为由 于像素是最终显示中的奇异点(singularity),因而可能在图形处理系统所操作(渲染)的 "片元"与该显示的像素之间存在一一映射)。然而,情况可能是例如在显示最终图像之前 对所渲染的图像执行例如縮小(down-scaling)的特定形式的后处理的情况下,片元与显 示像素之间不存在一一对应。 越来越期望的是能够在图形处理系统中有效并准确地渲染平滑形状、尤其是由平 滑曲线定义的形状(所述形状具有平滑曲线作为其边缘或者边界)以用于显示。一般而言, 从图形处理的观点来看,可以认为具有连续的边缘或者边界曲线并且该曲线的一阶导数分 段地连续的形状是平滑形状(由平滑曲线定义的形状)(并且出于本发明和应用的目的,将 认为所述形状是平滑形状并且相应地是平滑曲线)。在图形处理中,这样的平滑曲线的例子 是贝塞尔(bezier)曲线、样条曲线和弧。 例如,近年来在计算机图形中日益普遍地使用所谓的"矢量图形"。
矢量图形基于使用单独定义的几何对象,例如一个或多个线段、例如在锚点处连 接在一起而形成路径(path)的直线或者曲线(例如二次(贝塞尔)曲线、椭圆弧、三次(贝 塞尔)曲线)。 矢量图形对象/路径通常在称为"用户空间"的空间中被定义和操作。然而,为了 将矢量图形对象/路径显示在视频显示器或者打印机上,例如必须将在用户空间中定义的 矢量图形转换成适于基于像素来显示的形式,即基于图元或者采样点的形式。当执行这种 转换时,可能难以保持矢量图形对象的任何平滑曲线或形状,因为所述对象实际上必须被 光栅化成用于显示所述对象的采样位置和像素。 —种公知的用于渲染平滑形状以用于显示的技术是将该形状细分成大量的用于 该渲染过程的小的线性段。然而,这具有高性能成本(例如在CPU时间和渲染带宽方面)。
另一公知的用于渲染平滑曲线的技术是使用隐式曲线,即评估隐式方程以便确定 给定采样点是处于该曲线之内还是之外。然而,并不是所有的平滑形状都可以转换成这样 的隐式形式,并且这种技术在任何情况下都需要专用渲染硬件或者精度非常高的片元着色 器硬件来评估隐式曲线。 因此,本申请人相信存在改进用于渲染平滑曲线和由平滑曲线定义的形状的技术 和系统的余地。 根据本发明的第一方面,提供了一种用于在图形渲染系统中渲染由平滑曲线定义 的形状的方法,该方法包括 将表示与定义该形状的曲线相对应的曲线的图形纹理应用于待渲染的图元,其方
式是通过对该纹理中的、针对所述图元内的采样位置的纹理值进行采样;以及 将所述采样的纹理值用于确定应该将所述采样位置处理成处于该曲线的哪一侧。 根据本发明的第二方面,提供了一种用于在图形渲染系统中渲染由平滑曲线定义
的形状的装置,该装置包括
发明内容
用于存储一个或多个表示平滑曲线的图形纹理的装置; 用于将表示平滑曲线的图形纹理应用于待渲染的图元的装置,其方式是通过对该纹理中的、针对所述图元内的采样位置的纹理值进行采样;以及 用于将采样的纹理值用于确定应该将所述采样位置处理成处于该曲线的哪一侧的装置。 在本发明中,通过如下方式来渲染由平滑曲线定义的形状(即实际上具有平滑曲线作为其边缘或者边界的形状)将定义该形状的平滑曲线表示成纹理,然后将所述纹理应用于合适的图元。通过对该纹理中的纹理值进行采样并且使用所述采样值来确定每个采样点处于该曲线的哪一侧来绘制该形状以用于显示。这允许图形处理系统有效地确定任何给定的点是处于该曲线(并且因此该形状)之内还是之外。 通过以这种方式来以纹理表示平滑曲线并然后将该其应用于图元以便绘制该形状(曲线),本发明提供了可以用于使用低成本和现有公知纹理映射系统和硬件来渲染平滑形状(以及平滑曲线)的技术。因此,后面将会详述,本发明使得能够仅仅使用"简单(plain)"纹理映射来更有效地来渲染平滑曲线。因此,本发明使得易于更有效地在低成本的、例如固定功能的图形硬件上以及在未改动的和常规的现有固定功能的图形硬件上来渲染平滑形状(以及曲线),并且本发明可以避免例如使用当前用于平滑曲线渲染的细分(sub-division)技术和/或专用硬件的需要。 平滑曲线应该被表示成纹理,使得对针对该纹理中的给定位置的纹理值进行的采样将允许系统确定该纹理中的所述位置处于该曲线的哪一侧。 在特别优选的实施例中,这是通过如下方式来实现的将该纹理配置为使得在曲线一侧的所有纹理位置都将返回小于特定的、优选为所选择的阈值(threshold value)的采样纹理值,并且在该曲线另一侧的所有纹理位置都将返回大于该阈值的采样纹理值。这意味着当该纹理被采样时,可以将采样纹理值用于确定采样点是处于该曲线之内还是之外(即根据采样纹理值是大于还是小于(反之亦然)曲线的阈值纹理值)。
因此,在这些设置中,优选地将采样纹理值用于通过将采样纹理值与该曲线的阈值相比较来确定采样位置处于该曲线的哪一侧。该比较可以是大于(">")比较、或者大于或等于("> =")比较(或者小于("<")比较、或者小于或等于("< =")比较)。在优选的实施例中,使用大于或等于(或者小于或等于)测试,因为已经发现这在使用本发明时用典型的图形处理器执行的舍入(rounding)能更好地工作。 优选地将关于采样位置处于曲线的哪一侧的确定结果(例如比较测试的结果)用于控制对该采样位置的未来处理。实际上,优选地将该确定结果用于根据在平滑形状(曲线)方面的未来处理适当保留或者丢弃所述采样位置。优选地,如果该测试表明该采样位置处于曲线之内,则相应地给图元内的对应位置着色(例如上色(colour)),而如果采样位置处于该曲线之外,则该图元中的该位置不被着色成具有所讨论的平滑形状所需的性质(例如并且优选地,将该位置从该形状的未来处理中丢弃)。 因此,在优选的实施例,本发明包括用于根据关于采样位置处于曲线的哪一侧的确定结果(比较测试的结果)来给所述采样位置着色的步骤或者装置。
因此,例如并且优选地,被确定处于曲线之内的点优选地具有应用于它们的特定颜色和/或外观,而被确定处于曲线之外的点允许具有(并且具有)应用于它们的不同的颜色(例如由该画面中的其它一些对象或者形状确定的颜色)。 换言之,优选地至少部分地根据该采样位置或者每个采样位置已经被确定处于该曲线的哪一侧来给所述采样位置着色(上色)。 例如,可以在与应用该纹理的穿过(pass)相同处理的穿过中执行该着色,或者可以存储该纹理测试的结果(例如在模板缓冲器(stencil buffer)中),然后在后面的穿过中执行该着色。在一个优选的实施例中,在随后的穿过中执行该着色,因为这在必须组合平滑曲线和正多边形时有利(该平滑曲线和正多边形可能彼此相交或者重叠)。
因此,根据本发明的第三方面,提供了一种用于在图形渲染系统中渲染由平滑曲线定义的形状的方法,该方法包括 将表示与定义该形状的曲线相对应的曲线的图形纹理应用于待渲染的图元,其方式是通过对针对所述图元内的采样位置的纹理值进行采样,该纹理被配置为使得在曲线的一侧的纹理中所有位置都将返回小于所选择的阈值的采样纹理值,并且在该曲线的另一侧的纹理中所有位置都将返回大于所选择的阈值的采样纹理值;以及 在这样做的时候,将针对所述图元的被采样的采样点的采样纹理值与该曲线的所选择的阈值纹理值相比较,以便确定应该将所述图元的被采样的采样点处理成处于该曲线的哪一侧。 根据本发明的第四方面,提供了一种用于在图形渲染系统中渲染由平滑曲线定义的形状的装置,该装置包括 用于存储一个或多个表示平滑曲线的图形纹理的装置,其中每个纹理都被配置为使得对该纹理中的在该纹理所表示的曲线的一侧的任何位置进行的采样都将返回小于所选择的阈值的采样纹理值,而对该纹理中的在该曲线的另一侧的任何位置进行的采样都将返回大于所选择的阈值的采样纹理值; 用于通过对针对待渲染图元内的采样位置的纹理值进行采样将所存储的表示平滑曲线的纹理应用于该图元的装置;以及 用于将针对所述图元的被采样的采样点的采样纹理值与该曲线的所选择的阈值纹理值相比较以便确定应该将所述图元的采样点处理成处于该曲线的哪一侧的装置。
类似地,根据本发明的第五方面,提供了一种用于渲染由平滑曲线定义的形状以用于显示的方法,该方法包括 生成一个或多个覆盖该形状将被显示在其中的画面区域的图元; 光栅化所述图元以便生成一个或多个图形片元,其中每个片元都表示由所述图元
覆盖的采样点; 通过如下方式将表示与定义该形状的平滑曲线相对应的曲线的图形纹理应用于所述片元,其中该图形纹理被配置为使得对该纹理中的在该曲线的一侧的任何位置进行的采样都将返回小于所选择的阈值的采样纹理值,并且对该纹理中的在该曲线的另一侧的任何位置进行的采样都将返回大于所选择的阈值的采样纹理值
针对每个片元, 对该纹理中的对应位置进行采样以便确定采样纹理值;
将针对片元的采样纹理值与该曲线的阈值纹理值相比较;以及 基于该比较将该片元和/或由该片元表示的采样位置处理成在该曲线之内或者之外。 根据本发明的第六方面,提供了一种用于渲染由平滑曲线定义的形状以用于显示的装置,该装置包括 用于生成一个或多个覆盖该形状将被显示在其中的画面区域的图元的装置;
用于光栅化所述图元以便生成零个或多个图形片元的装置,其中每个生成的片元都表示由所述图元覆盖的采样点; 用于通过如下方式将表示与定义该形状的平滑曲线相对应的曲线的图形纹理应用于所生成的片元的装置,其中该图形纹理被配置为使得对该纹理中的在该曲线的一侧的任何位置进行的采样都将返回小于所选择的阈值的采样纹理值,并且对该纹理中的在该曲线的另一侧的任何位置进行的采样都将返回大于所选择的阈值的采样纹理值针对每个片元,对该纹理中的对应位置进行采样以便确定采样纹理值; 用于将针对片元的采样纹理值与该曲线的阈值纹理值相比较的装置;以及
用于基于该比较将该片元和/或由该片元表示的采样位置处理成在该曲线之内或者之外的装置。 本发明的这些方面适当地可以包括、并且优选地包括本发明在此所述的优选和可选特征中的任一或者多个或者全部。因此,例如,该比较测试优选地为大于或等于(或者小于或等于)测试。类似地,优选地存储该比较的结果并用于控制在随后的处理穿过(processingpass)中进行的给片元和/或采样位置的着色(因此使得所述片元和/或采样位置由于处于该曲线之内或者之外将被有效地保留或者丢弃)。 在本发明的这些方面的特别优选的实施例中,针对每片元存在单个纹理查找,并且该片元由于该比较测试而被丢弃(或者不丢弃)。 在此也应当注意如本领域公知的那样,可以将覆盖该形状将被显示在其中的画面区域的图元光栅化成零个片元,即这实际上意味着该形状在画面被显示时将不会在该画面中被看见。在这种情况下,将不存在该纹理被应用于的片元。然而,通常图元将被光栅化成一个或多个片元(光栅化成至少一个片元),并且在这种情况下,该纹理然后将被应用于上述的那些片元。 在本发明中,被用于表示和渲染平滑形状(以及曲线)的纹理可以根据需要来构造和配置。 在优选的实施例中,如本领域公知的那样,纹理被配置为纹元(texel)值的阵列,其中每个纹元(纹理位置)都具有与其相关联的、针对纹理映射(texture m即)中的该位置的对应纹理值。因此,在这种设置中,构成该纹理的纹元的纹元值应当被选择和设置为使得当在该纹理将要表示的曲线的一侧的纹理位置被采样时,采样纹理值小于该曲线的所选择的阈值,并且反之亦然。 本发明同样扩展到对表示曲线的纹理的构造以及扩展到纹理本身。例如,可能的是纹理将被分别和/或预先生成(以及存储),然后例如被提供给图形处理器以供使用。本发明扩展到这些活动,也扩展到将纹理用于渲染平滑形状(以及曲线)。
因此,根据本发明的第七方面,提供了一种用于生成纹理以供在图形处理系统中用于渲染由平滑曲线定义的形状的方法,该方法包括 通过如下方式生成包括用于表示平滑曲线的纹理纹元的阵列的图形纹理映射
设置该纹理映射中的纹元值,使得从该纹理映射中的处于该平滑曲线的一侧的位置取得的纹理采样将返回小于阈值纹理值的纹理值,并且使得从处于该平滑曲线的另一侧的位置取得的纹理采样将返回大于该阈值纹理值的纹理值。 根据本发明的第八方面,提供了一种用于生成纹理以供在图形处理系统中用于渲染由平滑曲线定义的形状的装置,该装置包括 用于生成图形纹理映射的装置,其中该图形纹理映射包括用于表示平滑曲线的纹理纹元的阵列,该装置包括 用于设置该纹理映射中的纹元值使得从该纹理映射中的处于该平滑曲线的一侧的位置取得的纹理采样将返回小于阈值纹理值的纹理值并且使得从处于该平滑曲线的另一侧的位置取得的纹理采样将返回大于该阈值纹理值的纹理值的装置。 根据本发明的第九方面,提供了一种供在图形处理系统中用于渲染由平滑曲线定义的形状的图形纹理映射,该纹理映射包括
纹理纹元的阵列,在所述阵列中 所述纹元值被设置为使得从该纹理映射中的处于该纹理将要表示的平滑曲线的
一侧的位置取得的纹理采样将返回小于阈值纹理值的纹理值,并且使得从处于该平滑曲线
的另一侧的位置取得的纹理采样将返回大于该阈值纹理值的纹理值的装置。 本领域的技术人员能够理解,本发明的所有这些方面和实施例适当地都可以并且
优选地确实包括本发明在此所述的优选特征中的任一或者多个或者全部。例如,优选地存
储所生成的纹理映射以供未来使用。 如上所述,在本发明的这些方面和实施例中,表示曲线的纹理映射被配置为使得
在该曲线的任一侧的采样纹理点将给出大于或者小于该曲线的阈值的采样纹理值。这意味
着当该纹理被采样时,所述采样纹理值可以用于确定所述采样点是处于该曲线之内还是
之外(如果该采样纹理值大于或者小于(或者反之亦然)该曲线的阈值纹理值)。 在此应当提出,本发明的所有方面和实施例中的目的和意图是保证在曲线的一侧
的所有纹理位置都将返回小于该曲线的所选择的阈值的采样纹理值,并且反之亦然,以便
允许容易地确定纹理位置处于曲线的哪一侧。 然而,情况可能是采样纹理位置将返回等于曲线的所选择的阈值的值。的确,通常在纹理中将存在将返回等于曲线的阈值的采样纹理值的一系列纹理位置。
因此,这些返回曲线的阈值的纹理位置在被采样时将形成该纹理中的轮廓线(contour line)(在该纹理被采样时),其中在所述轮廓线上,针对该轮廓上的任何点的采样纹理值都将等于该曲线的阈值纹理值。因此,该纹理中的轮廓(在该纹理被采样时)将实际上表示、并且因此实际上被认为表示(在该纹理被采样时)将由该纹理指示的曲线的线(因为对该曲线阈值轮廓上的纹理位置进行的采样将返回该曲线的阈值,并且因此在这样的位置出现在该纹理中时实际上可以将该位置视为处于该曲线"上",而不是在该纹理所表示的曲线的一侧或者另一侧)。 因此,优选尽可能地将纹理配置为使得该纹理中的对应于为曲线设置的阈值的轮廓紧密地、并且优选地尽可能紧密地匹配该纹理将要表示的平滑曲线的线,并且紧密地、并且优选尽可能紧密地表示该纹理将要表示的平滑曲线的线(并且因此实际上,该平滑曲线的边缘),因为这随后应当意味着该纹理在被采样时将更准确地反映该纹理将要表示的曲线(以及形状)。 尽管可以将处于具有曲线的阈值的轮廓"上"的采样纹理位置(即在被采样时返回曲线的阈值的采样纹理位置)作为特殊情况来处理(例如,为了在该曲线被渲染时鉴别该曲线的线),但是在优选的实施例中并不这样做,并且优选地仅仅根据所使用的比较测试(例如,该比较测试是"大于或等于"测试还是"大于"测试等等,其中在"大于或等于"测试的情况下,将同大于该曲线的阈值的点一样地来处理在该阈值的轮廓上的点,而在"大于测试"的情况下,将同小于该曲线的阈值的点一样地来处理在该阈值的轮廓上的点)来处理等于该阈值的任何纹理采样。 因此,在此同样应当指出尽管一般而言期望将纹理配置为使得该纹理中的在曲线的阈值轮廓(线)上的位置将紧密地、并且优选地尽可能紧密地匹配该纹理将要表示的曲线的线,但是并不需要故意把对纹理的采样配置为使得在阈值轮廓上的点将被处理或者识别为特殊情况。更确切地说,优选地进行测试仅仅是为了得知应当将采样位置处理成处于该曲线之内还是之外。 只要满足了上述原则,就可以以任何合适和期望的方式来设置和配置被分配给纹理的纹元的值。例如,可以使用任何期望范围的纹元值以及曲线阈值纹理值。
在特别优选的实施例中,将纹元值限制在0至1的范围([O, l])。在这种情况下,一个优选的曲线阈值纹理值是O. 5,但是同样也可以使用(并且在优选的实施例中使用)其它的值,例如0. 3或0. 7等。在需要时可以允许纹元值延伸到其它范围,并且可以使用其它的阈值。按照需要可以使用定点或者浮点格式的纹理(纹元值)。 在一个优选的实施例中,在该曲线的一侧的所有纹元都被设置成大于"0.5"的值,例如"1",在该曲线的另一侧的所有纹元都被设置成小于"0.5"的值,例如"0",而曲线阈值被设置成"O. 5"。这将提供一种设置,在该设置中,对纹元的采样将指示该纹理位置处于该曲线的哪一侧。 在特别优选的实施例中,使用多于一个的位(bit)来表示纹元值。这将允许使用该纹理中的纹元值的粒度更细(finer-grained)的分辨率,该粒度更细的分辨率可以提供更准确的渲染性能。因此,在优选的实施例中,使用纹元值的灰度(greyscale)。优选地使用8位的或者16位的值。 本申请人已经认识到从针对给定纹理采样的纹理映射返回到该纹理中的值将取决于所使用的纹理查找(采样)过程、例如取决于在该纹理被采样时是否应用任何形式的滤波或插值。例如,对于相同的纹元阵列而言,使用双线性滤波(bi-linear filtering)的纹理采样过程与简单地采用最接近于给定采样位置的纹元的值的纹理查找相比可能返回针对该给定采样位置的不同的纹元值。 此外,本申请人已经认识到这可以在构造表示将在本发明中用于提供更佳渲染结果的平滑曲线的纹理时加以利用。特别地,本申请人已经认识到如果修改(tailor)或者优化表示平滑曲线的纹理中的纹元值以使得在该纹理被使用时使用该纹理采样过程(滤波),则可以实现在给定纹理分辨率的情况下更准确地渲染平滑形状(以及曲线)。
(在此应当注意,总是可以仅仅通过增加纹理的分辨率来增加曲线渲染的准确度。然而,这并不总是可能的或期望的。使纹理适于将要使用的纹理采样技术将提供在不需要增加纹理分辨率的情况下增加渲染准确度的可替换方式,和/或可以在给定存储器使用增
11长的情况下提供有效纹理分辨率的更大增长)。 因此,在特别优选的实施例中,根据(基于)在被用于渲染该平滑曲线时将被应用于表示平滑曲线的纹理的纹理采样过程来设置或者选择该纹理的纹元值。因此,例如在当对所使用的纹理进行采样时将使用双线性滤波的情况下,为该纹理所存储的纹元值被优选地选择,使得当使用双线性滤波来对该纹理中的给定位置进行采样时返回合适的纹理值(以指示该点处于该曲线之内还是之外)。 换言之,优选地使表示平滑曲线的纹理适于将要使用的纹理采样(插值)技术。这将在该纹理滤波(采样)之后改善渲染结果。 因此,根据本发明的第十方面,提供了一种用于在图形渲染系统中渲染由平滑曲线定义的形状的方法,该方法包括 通过如下方式将表示与定义该形状的曲线相对应的曲线的图形纹理应用于待渲染的图元,其中该纹理被配置为使得该纹理中在该曲线的一侧的所有位置都将返回小于所选择的阈值的采样纹理值,而该纹理中在该曲线的另一侧的所有位置都将返回大于所选择的阈值的采样纹理值,为每个纹理存储的值被进一步设置为使得当使用特定的所选择的纹理滤波过程(texture filtering process)对该纹理进行采样时该纹理将最准确地表示该平滑曲线使用该特定的纹理滤波过程来对针对所述图元内的采样位置的纹理值进行采样,其中针对该特定的纹理滤波过程来配置该纹理;以及 在这样做的时候,将针对所述图元的被采样的采样点的采样纹理值与该曲线的所选择的阈值纹理值相比较,以确定应该将所述图元的被采样的采样点处理成处于该曲线的 根据本发明的第十一方面,提供了一种用于在图形渲染系统中渲染由平滑曲线定义的形状的装置,该装置包括 用于存储一个或多个表示平滑曲线的图形纹理的装置,其中每个纹理都被配置为使得对该纹理中在该纹理所表示的曲线的一侧的任何位置进行的采样都将返回小于所选择的阈值的采样纹理值,并且对该纹理中在该曲线的另一侧的任何位置进行的采样都将返回大于所选择的阈值的采样纹理值,为每个纹理存储的值被进一步设置为使得当使用特定的所选择的纹理滤波过程来对该纹理进行采样时该纹理将最准确地表示该平滑曲线;
用于通过如下方式将所存储的表示平滑曲线的纹理应用于待渲染的图元的装置使用该特定的纹理滤波过程来对针对所述图元内的采样位置的纹理值进行采样,其中针对所述特定的纹理滤波过程来配置该纹理;以及 用于将针对所述图元的被采样的采样点的采样纹理值与曲线的所选择的阈值纹理值相比较以确定应该将所述图元的被采样的采样点处理成处于该曲线的哪一侧的装置。
类似地,根据本发明的第十二方面,提供了一种用于渲染由平滑曲线定义的形状以用于显示的方法,该方法包括 生成一个或多个覆盖该形状将被显示在其中的画面区域的图元; 光栅化所述图元以生成一个或多个图形片元,其中每个片元都表示由所述图元或
者所述图元之一覆盖的采样点; 通过如下方式将表示与定义该形状的平滑曲线相对应的平滑曲线的图形纹理应用于所述片元,其中该纹理被配置为使得对该纹理中在该曲线的一侧的任何位置进行的采
12样都将返回小于所选择的阈值的采样纹理值,并且对该纹理中在该曲线的另一侧的任何位
置进行的采样都将返回大于所选择的阈值的采样纹理值,为该纹理存储的值被进一步设置
为使得当使用特定的所选择的纹理滤波过程对该纹理进行采样时该纹理将最准确地表示
该平滑曲线 针对每个片元, 使用该特定的纹理滤波过程来对该纹理中的对应位置进行采样以确定采样纹理
值,其中针对所述特定的纹理滤波过程来配置该纹理; 将片元的采样纹理值与该曲线的阈值纹理值相比较;以及 基于该比较将该片元和/或由该片元表示的采样位置处理成在该曲线之内或者 之外。 根据本发明的第十三方面,提供了一种用于渲染由平滑曲线定义的形状以用于显 示的装置,该装置包括 用于生成一个或多个覆盖该形状将被显示在其中的画面区域的图元的装置;
用于光栅化所述图元以生成零个或零个以上图形片元的装置,其中每个生成的片 元都表示由所述图元或者所述图元之一覆盖的采样点; 用于通过如下方式将表示与定义该形状的曲线相对应的平滑曲线的图形纹理应 用于所生成的片元的装置,其中该图形纹理被配置为使得对该纹理中在该纹理所表示的曲 线的一侧的任何位置进行的采样都将返回小于所选择的阈值的采样纹理值,并且对该纹理 中在该曲线的另一侧的任何位置进行的采样都将返回大于所选择的阈值的采样纹理值,为 每个纹理存储的值被进一步设置为使得当使用特定的所选择的纹理滤波过程对该纹理进 行采样时该纹理将最准确地表示该平滑曲线针对每个片元,使用该特定的纹理滤波过程 来对该纹理中的对应位置进行采样以确定采样纹理值,其中针对所述特定的纹理滤波过程 来配置该纹理; 用于将片元的采样纹理值与该曲线的阈值纹理值相比较的装置;以及 用于基于该比较将该片元和/或由该片元表示的采样位置处理成在该曲线之内
或者之外的装置。 本发明的这些方面在适当时可以并且优选地确实包括本发明在此所述的优选和 可选特征中的任一或者多个或者全部。因此,例如,该比较测试优选地为大于或等于(或者 小于或等于)测试。类似地,优选地存储该比较的结果并用于控制在随后的处理穿过中进 行的给片元和/或采样位置的着色(使得因此所述片元和/或采样位置由于处于该曲线之 内或者之外而被有效地保留或者丢弃)。 在本发明的这些方面的优选的实施例中,针对每片元存在单个纹理查找,并且该 片元由于该比较测试而被丢弃(或者不丢弃)。 相应地,根据本发明的第十四方面,提供了一种用于生成纹理以供在图形处理系 统中用于渲染由平滑曲线定义的形状的方法,该方法包括 通过如下方式生成包括用于表示平滑曲线的纹理纹元的阵列的图形纹理映射
基于打算在对该纹理进行采样时使用的特定的纹理滤波过程来选择将被用于该 纹理的纹元的纹元值;以及 给该纹理设置纹元值,使得使用该特定纹理滤波过程从该纹理映射中的处于该平滑曲线的一侧的位置取得的纹理采样将返回小于阈值纹理值的纹理值,并且使得使用该特 定纹理滤波过程从处于该平滑曲线的另一侧的位置取得的纹理采样将返回大于该阈值纹 理值的纹理值。 根据本发明的第十五方面,提供了一种用于生成纹理以供在图形处理系统中用于 渲染由平滑曲线定义的形状的装置,该装置包括 用于生成包括用于表示平滑曲线的纹理纹元阵列的图形纹理映射的装置,该装置 包括 用于基于打算在对该纹理进行采样时使用的特定的纹理滤波过程来选择将被用 于该纹理的纹元的纹元值的装置;以及 用于给该纹理设置纹元值使得使用该特定纹理滤波过程从该纹理映射中的处于 平滑曲线的一侧的位置取得的纹理采样将返回小于阈值纹理值的纹理值并且使得使用该 特定纹理滤波过程从处于该平滑曲线的另一侧的位置取得的纹理采样将返回大于该阈值 纹理值的纹理值的装置。 根据本发明的第十六方面,提供了一种供在图形处理系统中用于渲染由平滑曲线 定义的形状的图形纹理映射,该纹理映射包括
纹理纹元的阵列,在所述阵列中 所述纹元值被设置为使得从该纹理映射中的处于该纹理表示的平滑曲线的一侧 的位置取得的纹理采样将返回小于阈值纹理值的纹理值,并且使得从处于该平滑曲线的另 一侧的位置取得的纹理采样将返回大于该阈值纹理值的纹理值;以及 该纹理的纹理值被进一步设置为使得当使用特定的所选择的纹理滤波过程对该 纹理进行采样时该纹理将最准确地表示该平滑曲线。 本领域的技术人员能够理解,本发明的所有这些方面和实施例在适当时都可以并 且优选地确实包括本发明在此所述的优选特征中的任一或者多个或者全部。
在本发明的这些方面和实施实例中,可以配置该纹理以供与任何期望的纹理滤波 过程一起使用。最优选地,该特定的所选择的纹理滤波过程是插值过程,即将给处于纹元之 间的位置内插纹理值的滤波过程。 一般而言,将可以修改纹理中的纹元值以匹配针对特定 纹元可以预测在任何给定采样位置处的插值权重(interpolation weight)和坐标的任何 纹理插值(滤波)技术。因此,一般而言,可以使用任何的各向同性的插值过程。因此,例 如在一个优选的实施例中,可以对纹理进行修改(优化)以供与三线性滤波(tri-linear filtering) —起使用。由此这将允许例如以mipm即的形式提供表示平滑曲线的纹理。
在特别优选的实施例中,表示平滑曲线的纹理被修改(优化)以便使用双线性滤 波进行采样。双线性滤波是通常可用的纹理采样技术,其同样存在于"低成本"、固定功能 的图形硬件中,并且因此修改本发明以供与双线性滤波一起使用将提高本发明对图形处理 器、尤其是对低成本的图形处理硬件的适用性。 因此,在特别优选的实施例中,基于将使用双线性滤波对纹理进行采样(即使得 当使用双线性滤波对该纹理中的位置进行采样时返回合适的纹理值)来选择表示平滑曲 线的存储在纹理映射中的纹元的值。类似地,优选地在使用双线性滤波技术来渲染平滑曲 线时使用该技术对纹理进行采样。 在将要使用某种形式的插值或者滤波功能、例如双线性滤波来对纹理进行采样的
14情况下,该纹理的纹元优选地具有大于1的位分辨率(即每个纹元都具有多个可用于表示 其值的位),例如8位或16位的纹元值。这将允许纹元值的粒度更细的分辨率,并且当与对 应纹理滤波过程相组合时能够允许例如所返回的采样位置值更紧密地匹配该曲线的真实 轮廓。 在此也应当注意,在将要使用某种形式的滤波或者插值过程来对纹理进行采样的 情况下,尽管在该曲线的给定侧的纹元的值将总是大于(或者分别小于)该曲线的阈值,但 是在该纹理中该曲线的阈值轮廓周围可能的情况是更接近于该轮廓的纹元将比处于该曲 线的同一侧但是距该曲线的阈值轮廓更远的纹元具有更高(或者分别更低)的值。
这是因为为了当使用诸如双线滤波的滤波过程对该曲线的该线周围的纹理位置 进行采样时返回期望的纹理值,在该曲线的给定侧的纹元可能必须具有针对该曲线的该侧 变化的值。的确,即使纹理值在距该曲线的阈值轮廓较远的地方可能是均匀的,但是一般而 言可能在该曲线的阈值轮廓周围存在纹元值范围内的一定的变动。 因此,在特别优选的实施例中,纹理被构造为使得在该曲线的阈值轮廓附近的纹 元值在值的范围内变化,但是在该曲线的给定侧的、距该曲线的阈值轮廓较远的纹元每个 都具有相同的纹元值。在该曲线的阈值轮廓周围的、纹元值将在此内变化的范围的限度将 取决于例如在对纹理进行采样时将要应用的滤波器核(filter kernel)的大小。优选地并 且例如在双线性滤波的情况下,纹元值针对该曲线的阈值轮廓的每一侧的多达两个或者多 达四个纹元的距离而变化。 最优选地,将在曲线的一侧距该曲线的阈值轮廓较远的所有纹元都设置成大于该 曲线的阈值的给定值,例如"l",并且将在曲线的另一侧距该轮廓较远的所有纹元都设置成 小于该曲线的阈值的给定值。 类似地,优选的是接近于曲线的阈值轮廓并且处于该曲线的将由小于该曲线的阈 值的纹理值来表示的那一侧的纹元可以并且确实具有甚至比在该曲线的那一侧的距该曲 线的该轮廓更远的纹元更低的纹元值,反之亦然。 可以优化或者修改纹理(用于纹理的纹元值的一些或者全部)以适于将要使用的 纹理采样过程,并且因此该曲线以任何期望和合适的方式被针对该采样过程而最准确地表 示。 优选地,纹理中的值被设置(计算)为使得在利用所选择的纹理采样过程进行采 样之后的(局部)误差之和最小化。因此,例如,在双线性滤波的情况下,在纹理中所使用 的值被优选地设置为使得最小化在双线性滤波之后的(局部)误差之和,而不一定目的例 如在于在纹元中心具有正确的值。 在特别优选的实施例中,通过得出可以用于表示采样过程的代价函数(cost function)并且然后使用一种或多种优化算法例如模拟退火(simulated annealing)而最 小化该代价函数,来确定和选择(设置)将要使用的纹元值。 因此,根据本发明的第十七方面,提供了一种用于生成纹理以供在图形处理系统 中用于渲染由平滑曲线定义的形状的方法,在所述纹理中,纹元值被设置为使得从该纹理 映射中处于该纹理将要表示的平滑曲线的一侧的位置取得的纹理采样将返回小于阈值纹 理值的纹理值,并且使得从处于该平滑曲线的另一侧的位置取得的纹理采样将返回大于该 阈值纹理值的纹理值,该方法包括
通过最小化代价函数来确定将要用于该纹理的纹元值的集合,其中该代价函数表 示当该曲线处于该纹理中时该曲线的位置与当使用特定的纹理采样过程对该纹理的纹元 进行采样时所指示的该曲线的位置之间的相应误差。 根据本发明的第十八方面,提供了一种用于生成纹理以供在图形处理系统中用于 渲染由平滑曲线定义的形状的装置,在所述纹理中,纹元值被设置为使得从该纹理映射中 的处于该纹理将要表示的平滑曲线的一侧的位置取得的纹理采样将返回小于阈值纹理值 的纹理值,并且使得从处于该平滑曲线的另一侧的位置取得的纹理采样将返回大于该阈值 纹理值的纹理值,该装置包括 用于通过最小化代价函数来确定将要用于该纹理的纹元值的集合,其中该代价函 数表示当该曲线处于该纹理中时该曲线的位置与当使用特定的纹理采样过程对该纹理的 纹元进行采样时所指示的该曲线的位置之间的相应误差。 本领域的技术人员能够理解,本发明的所有这些方面和实施例在适当时都可以并 且优选地确实包括在此所述的优选特征中的任一或者多个或者全部。因此,例如优选地打 算使用双线性滤波来对纹理进行采样。 在本发明的这些方面和实施例中,优选地通过如下方式来执行对纹元值的优化 建立包括纹元值作为变量的代价函数;然后尝试最小化该代价函数;并且相应地选择纹元值。 在特别优选的实施例中,通过如下方式来确定将要使用的纹元值的一些或者全部 (通过如下方式来建立用于得出将要使用的纹元值的代价函数)考虑该曲线的、在该纹理 中的纹元之间的路径(path);并且尝试优化所述纹元中的一些或者所有纹元的值使得在 该曲线的路径处于所述纹元之间的点处(尽可能地)返回该曲线的阈值纹理值(因为由此 这应当保证该纹理中的阈值轮廓尽可能地匹配该曲线在该纹理中的(通过该纹理的纹元 阵列的)路径(线))。 在这样的特别优选的实施例中,尤其是在将针对双线性滤波来优化表示该曲线的 纹理的情况下,通过如下方式来确定将要使用的纹元值的一些或者全部(通过如下方式来 建立用于得出将要使用的纹元值的代价函数)考虑该曲线的在(该纹理中的)相应的相 邻纹元对之间的路径;并且尝试优化所述对中的纹元的值以便返回在该曲线与连接所述纹 元对的线相交的点处的阈值纹理值。 因此,在特别优选的实施例中,通过如下方式来生成代价函数将曲线的(通过纹 元阵列的)路径(线)分为该曲线的路径(线)与连接相应纹元中心的线的一系列交点; 然后尝试调整相应的纹元值使得在该曲线与连接相应的两个纹元中心的线的交点处产生 期望的曲线阈值。 优选地为每个合适的相应的纹元对重复该步骤,并且将所有纹元对的总代价函数 (优化)确定为每个纹元对的各个代价函数之和。 因此,在特别优选的实施例中,通过如下方式来确定将要用于纹理的纹元值使用 全局代价函数,其中该全局代价函数是根据每个相关的纹元对(优选地每个(并且仅仅每 个)跨在该曲线在该纹理中的路径(线)(实际上,有效地为该纹理中的阈值轮廓)(因为 该轮廓打算匹配该曲线的路径)上的纹元对))确定的局部代价函数之和;然后使用全 优 化方法来尝试并找出最小化该全局(总)误差(在本设置中,该全局(总)误差将是局部(单个纹元对的)误差之和)的配置。 在这些设置中(并且一般而言),优选地将每个相应的纹元对的局部代价函数(对 两个纹元值的调整)视为一系列互相联系的优化问题。 优选地,对于每个纹元对的代价函数(优化)而言,一个目的或者该目的(代价考
虑)是最小化该曲线的、在连接纹元对(纹元对之间)的线上的实际交叉(交)点与在所
述纹元值被采样时将要指示的交叉点之间的差。(理想地,对纹元值进行的采样应当指示该
曲线的真实交叉点,但是这并不总是可能的,因此该目的是最小化该误差)。 优选地通过在代价函数中包括实际交叉点位置与由纹元值指示的位置之间的误
差来将上述因素考虑在内。 同样优选地,代价函数被配置为使得该代价函数产生的纹元值将使用高达(对该 纹理中所表示的曲线)可用的纹元值的范围,并且优选地整个范围(例如灰度)(例如
)。这将有助于保证利用更高的分辨率来定义该曲线的阈值轮廓。 尤其是在上述设置中,这优选地通过如下方式来实现将代价函数设置为使得所 考虑的纹元对的纹元值的差将反映该曲线相对于连接所讨论的纹元对的线所形成的角度。 例如,如果曲线垂直于两个纹元之间的线,则理想地,所述纹元值之间的差应当等于纹元值 的整个可用(允许)的范围(例如"l")。另一方面,如果曲线平行于两个纹元之间的线, 则所述纹元值的差应该为"0"(零)。 在优选的实施例中,代价函数将曲线与两个纹元之间的线之间的角度的正弦用作
将要考虑和尝试以实现此目的的因素。 同样优选地,代价函数被配置为使得将较小的权重应用于曲线几乎与纹元对之间
的线平行之处的边缘,因为在这种情况下,在对纹元值进行采样时的任何"误差"将不趋于
同样多地扭曲该曲线的位置。这优选地通过在代价函数中包括与曲线和在纹元之间的线之
间的角度的正弦的平方有关的因素来实现,从而合适地给所得出的"代价"值加权。 优选地关于每个合适的相应的纹元对得出和应用该代价函数,并且在所有所考虑
(测试)的纹元对的范围内将以这种形式定义的每个相应纹元值对的代价函数相加,以便
给出整个曲线(纹理)的总或者"全局"代价函数,然后使用优化算法来最小化该总代价函
数,以便得出将要用于所讨论的曲线的纹元值(以便找出将要用于每个纹元对的最优纹元
值)。尽管优选模拟退火,但是仍然可以使用任何合适的优化过程。 然后优选地将所确定的纹元值作为表示平滑曲线的图形纹理来存储。 优选地,仅仅根据那些将影响当纹理被采样时对该曲线的路径(阈值轮廓)的位
置进行指示的纹元(纹元对)(例如并且优选地,跨越或者跨在阈值轮廓的位置上的(直
接)相邻的相应纹元对(即曲线在该纹理中的路径从中间穿过的纹元对))来评价关于该
曲线的代价函数。这是因为其它纹元(距该阈值轮廓较远的纹元)应该不会影响当纹理被
采样(例如并且尤其是如果将使用双线性滤波来对该纹理进行采样)时所确定的所指示的
该轮廓的位置,并且因此可以依据它们的位置被简单地相应地设置成高于或低于该曲线阈
值的值。 因此,在特别优选的实施例中,代价函数被用于(仅仅)为接近于曲线的阈值轮廓 的纹元、优选地(仅仅)为与该曲线的阈值轮廓相邻的纹元、最优选地(仅仅)为跨越或者 跨在该曲线的阈值轮廓上的直接相邻的纹元对确定纹元值,其中剩余的纹元(即距曲线的该线(阈值轮廓)较远的纹元))被简单地分别设置成高于或低于该曲线阈值的值(而不 是使用代价函数来得出将要用于这些纹元的值)。 类似地,如上所述,在优选的实施例中,曲线在纹理中的路径实际上被分为该曲线 在跨在该曲线上的相应纹元对之间的一系列交点,其中对每对的两个纹元值的调整被处理 成一系列互相联系的优化问题,距该曲线较远的任何纹元都被适当地设置成高于或低于该 曲线的所选择的阈值的值。 类似地,特别优选地,仅仅对于那些将在纹理被采样时影响对该阈值轮廓的位置 的指示的纹元(例如并且优选地,跨越或者跨在该轮廓的位置上的(直接)相邻的相应纹 元对(即该轮廓从中间穿过的纹元对)),执行(并且相应地设置纹元值)为了适于特定纹 理采样(滤波)过程而对纹理的优化或者修改(基于所打算的纹理采样过程对纹元值的设 置)。这是因为如上所述,其它纹元(距该阈值轮廓较远的纹元)在纹理被采样时应该不 会影响所确定的所指示的该轮廓的位置,因此可以依据它们的位置被简单地相应地设置成 高于或低于该曲线的阈值的值。 因此,在特别优选的实施例中,仅有一些而不是全部的纹元值被基于将要使用的 纹理采样过程而特别地设置。最优选地,仅仅接近于曲线的阈值轮廓的纹元的纹元值,优选 地(仅仅)与该曲线的阈值轮廓相邻的纹元的纹元值,以及最优选地(仅仅)跨越或者跨在 该曲线的阈值轮廓上的直接相邻的纹元对的纹元值被基于将要使用的纹理采样过程特别 地设置(在至少将使用双线性滤波对纹理进行采样的情况下;其它类型的滤波可能需要设 置其它的纹元),其中如上所述,剩余的纹元(即距曲线的该线(阈值轮廓)较远的纹元)) 被简单地分别设置成高于或低于该曲线的阈值的值。 —旦已经创建了表示平滑曲线的纹理,则可以存储、并且优选地存储该纹理以供 未来渲染该曲线(由该曲线定义的形状(该形状具有该曲线作为其边缘(边界)))之用。
可以使用例如任何合适的图形纹理映射过程来将本发明的纹理实际用于渲染由 该纹理表示的平滑曲线定义的形状。 如上所述,在特别优选的实施例中,通过如下方式将纹理用于渲染平滑曲线以用 于显示首先生成覆盖该形状将出现在内的画面区域的图元;然后将纹理应用于所述图 元;并且相应地给所述图元着色。 可以根据需要,例如通过定义覆盖该待绘制形状将出现在内的画面区域的包围盒 (bounding box)来生成所述图元。 当生成该图元时可能必须保证所生成的图元仅仅对该纹理的期望(以及合适的) 区域采样。(这可能尤其是这种情况如在下面将会论述的那样,以同一纹理表示多个曲 线)。这在必要时可以根据需要来实现。在优选的实施例中,覆盖将要被渲染的输入曲线 (形状)的控制点的凸包(convex hull)的图元被生成以尝试保证该情况。(在必要时、例 如在两个端点之一并不是该凸包的一部分的情况下,可以将该输入曲线(形状)切分成两 个使得保证所述两个端点之间的线是该凸包的一部分。) 然后,如本领域公知的那样,将生成的图元光栅化成采样点,并且生成片元,而且 通过对该纹理中对应于图元采样点(和/或片元)位置的位置进行采样来将表示该曲线的 纹理应用到所述图元的每个采样点(和/或片元)。(如上所述,应当使用合适的纹理滤波 过程、例如并且优选地双线性滤波来对纹理进行采样)。
然后将采样纹理值与为所讨论的曲线设置的阈值相比较,并且相应地保留或者丢 弃对应的采样位置和/或片元。 该"比较和丢弃"可以以任何期望的和对所讨论的图形处理系统合适的方式来执 行。 例如,在具有固定功能硬件的图形处理系统的情况下,可以并且优选地使用alpha 测试(其中alpha值被设置成曲线阈值(例如O. 5))来比较采样纹理值并且丢弃处于该曲 线之外的采样点。利用具有可编程片元着色器硬件的图形处理系统,可以使用、并且优选地 使用比较和有条件丢弃例程。 在特别优选的实施例中,把将要绘制的给定形状(曲线)切分成两个或者两个以 上单独的形状(曲线),并且然后分别渲染该形状(曲线)的每个不同的部分(例如使用不 同的表示曲线的纹理或者同一曲线纹理的不同部分)。 在一个优选的实施例中,这被实现以便将由具有奇点的曲线(含有尖点(cusp)的 曲线)定义的形状在所述奇点处切分,以分别绘制在该曲线(几何形状)的奇点的每一侧 的曲线(形状)部分。这种设置可以使得不需要使曲线中的奇点精确地处于该纹理中的纹 元网格线(grid line)上(下面将论述)。(还可能的是在将要由纹理表示的曲线具有奇点(或多个奇点)的情况下,将该 纹理配置为使得该曲线的奇点精确地处于连接该纹理的纹元的中心的网格线上(并且在 一个优选的实施例中,这被实现)。这将保证该奇点的不连续导数处于该纹元"网格"上,因 此可以使得不需要在该"奇点"处切分该曲线。) 同样可能期望的是将非常大的形状切分成对于该渲染过程而言较小的形状,例 如以有助于减少渲染伪影(artefact)的数目。 类似地,自相交(self-intersecting)的形状,例如由具有环的曲线定义的形状, 可以被切分成两个(或两个以上)非自相交的形状,然后被分别绘制(渲染),以易于将本 发明的技术用于这样的形状。 在特别优选的实施例中,生成并存储多个不同的纹理,其中每个表示不同曲线和/ 或给定曲线的不同部分。然后针对将被绘制的任何给定形状(曲线),可以识别和选择最适 于该形状(曲线)的纹理,并将该纹理用于渲染该形状(曲线)。通过以纹理表示合适范围 的曲线,应该可以渲染几乎任何任何的曲线形状。 本申请人的确已经认识到实际上,几乎所有的可能期望绘制的曲线段都属于几 个曲线族中的一个,并且因此可以使用相对较少的纹理来表示几乎所有的可能一直希望绘 制的曲线。 在优选的实施例中,多个不同的曲线被存储在同一纹理映射中。这例如可以通过 如下方式来实现将该纹理中的曲线在空间上分离;然后对该纹理中的针对所讨论的曲线 的合适区域进行采样。 在将要使用本发明的情况下,表示平滑曲线的纹理优选地被预先生成,然后适当 地存储以供图形处理系统使用,例如并且优选地与该图形处理系统将使用的其它(静态) 纹理映射一起被存储。然后,给定的应用可以在所讨论的平滑曲线(由所讨论的曲线定义 的形状)将被绘制时调用待应用的该纹理。 在本发明中以纹理表示的平滑形状和平滑曲线可以包括任何合适和期望的这样的形状和曲线。如上所述,在特别优选的实施例中,该平滑曲线或者每个平滑曲线都是连续 曲线,并且该曲线(该曲线的路径)的一阶导数分段连续。优选地,该曲线也是、或者取而 代之是贝塞尔曲线、样条曲线、和/或弧。 类似地,由平滑曲线定义的、本发明所适用(并且被应用于)的形状可以是具有合 适平滑曲线作为其边缘或者边界的任何形状。因此,在本发明中以纹理表示(并且使用纹 理渲染)的平滑形状可以并且优选确实包括具有如下的曲线作为其边缘(边界)的任何形 状该曲线为连续的,并且该曲线(该曲线的路径)的一阶导数分段连续。优选地,定义该 形状(定义该形状的边缘)的曲线是贝塞尔曲线、样条曲线、和/或弧。
本申请人已经进一步认识到某些曲线族内的所有曲线都可以使用仿射变换来变
换到预定义的单个或者基本参考曲线(在此称为"典范(canonical)曲线")的至少一部分
上。例如,在二次曲线的情况下,任何的给定二次曲线都可以使用仿射变换而被变换到基本
二次曲线y = x2,该基本二次曲线因此是可以用于二次曲线的"典范"曲线。 因此,这允许将关于单一曲线(single curve)、即典范曲线的信息用于确定关于
多个可以对由图形处理系统接收来用于渲染的平滑形状进行定义的平滑曲线的信息。换言
之,仅仅需要得出或者存储关于典范曲线的数据,而不必例如得出或者存储关于可以对图
形处理系统可能接收来渲染的平滑形状进行定义的每个单独平滑曲线的数据。该数据然后
被用于渲染由属于"典范曲线"表示的所述光滑曲线族(集合)的单独平滑曲线中的每一
个定义的形状。 因此,在特别优选的实施例中,产生并使用表示一个或一个以上、优选地多个参考 或者"典范"曲线的纹理。 本领域的技术人员能够理解,定义将要渲染的形状的给定输入平滑曲线在其被表 示和存储在纹理中时可能并不精确地匹配对应平滑曲线的外形(profile),例如在定义待 绘制的形状的曲线在其以纹理来表示时并不精确地匹配该曲线的方向的情况下。例如,输 入形状(曲线)在其以纹理表示时可以相对于该曲线被旋转或縮放(scale)。在这些情况 下,记录(inscribe)在该纹理中的曲线将需要被适当地映射到待显示的形状(曲线)上, 以便在输入形状(曲线)将要出现在该显示上时正确地绘制该输入形状(曲线)。
这样的变换可以优选地包括使用仿射变换来将纹理与待绘制的形状(曲线)相 匹配。因此,在优选的实施例中,本发明包括在应用纹理前对纹理进行变换使得可以将该纹 理映射到待绘制的形状(曲线)。 在曲线以纹理表示时将该曲线映射到待绘制的形状(曲线)的过程可以以任何合 适和期望的方式来执行。在优选的实施例中,通过如下方式来实现将记录在纹理中的曲线 映射到待显示的图像上的过程为定义待绘制的输入曲线(定义待绘制的形状的曲线)的 控制点计算纹理坐标;然后将所述纹理坐标线性插值到该曲线上(例如使用图形处理器的 插值硬件)。 可以根据需要来确定控制点处的纹理坐标,并且在需要时可以将不同的方法用于 不同类型的曲线。 例如,在二次曲线的情况下,每个输入曲线都应当正好是存储在纹理中的曲线的 仿射变换版本。通过每次使用整个曲线,可以将固定的纹理坐标用于所述控制点的每一个, 并且通过将表面空间中的控制点与(纹理空间中的)纹理坐标配对来隐式地定义所需的变
20换。 对于三次曲线而言,该曲线优选地首先被归类为蛇形曲线(serpentine)、环形曲 线、尖点曲线、尖点无穷远(cusp-at-infinity)的曲线(即具有尖点的曲线,其中该尖点具 有无穷远的拐点(inflection point))、退化(degenerate)曲线、或者抛物线。抛物线是二 次曲线并且优选地照此来处理。优选地通过将退化曲线切分成一条或多条线来处理该退化 曲线。 对于其它曲线,优选地计算所述曲线的拐点(inflO和infll)。然后,如果所存 储的曲线被配置为使得它们的拐点总是在-1和1处,则可以计算从[inflO. . . infll]- > [-l..l]的线性变换。通过该方式可以将该输入曲线的起始点和终止点(0和1)的参数位 置变换到它们在纹理空间中的位置。现在得知了该纹理在典范纹理空间中需要覆盖的参数 范围。 然后对于环形曲线和蛇形曲线而言,搜索所存储的纹理以便找出覆盖所需参数范 围的纹理(例如放大程度最高(most zoomed-in)的纹理)。(这对尖点曲线和尖点无穷远 的曲线而言是非必要的)。 然后,所存储的曲线(具有-1和1处的拐点)被优选地重新縮放(rescale)以便 将所述拐点映射到该输入曲线的拐点、即infl0和infll。然后,该变换优选地应用于所存 储的曲线的控制点以便给出合适的经过变换的控制点位置,所述控制点位置然后可以并且 优选地用作该输入曲线的对应控制点的纹理坐标。 在多个曲线被打包到一个纹理中的情况下,可能需要将变换应用于纹理坐标以便 对该纹理的正确的子集进行采样。这优选地通过如下方式来实现计算为了将"输入"盒 (box)变换到覆盖所存储的纹理的期望部分的"盒"(即将
x[O. . 1]变换到[u_l.. U_2]x[V_l..v_2])所需的縮放和平移;然后将所确定的变换应用于在当作该曲线覆盖整 个纹理的情况下已经计算出的纹理坐标。 从上面能够理解,在本发明的优选的实施中,图形处理系统将接收由平滑曲线定 义的、将要渲染以用于显示的输入形状(即具有平滑曲线作为其边缘(边界)的输入形 状)。该图形处理系统然后将识别表示与定义所述待渲染形状的曲线相对应的曲线的纹理, 得出为了将以纹理表示并且定义的曲线与定义待渲染形状的曲线相匹配所需的任何必需 的映射或者变换,然后使用任何所得出的必需的变换或者映射,使用表示与定义所述待渲 染形状的曲线相对应的曲线的纹理来以本发明的方式渲染该形状。 从上面能够理解,本发明能够有效地绘制具有在纹理中定义的平滑曲线作为其边 缘或者边界的形状(因为在曲线的一侧的点与在该曲线的另一侧的点不同地被绘制)。因 此,本发明能够有效地用于渲染具有相关曲线作为其边缘或者边界的形状、和/或具有相 关曲线作为轮廓或者边界的形状(即使得处于曲线的不同侧的点应当被不同地绘制)。
事实上,本发明可以用于识别处于定义(表示)该形状的边缘的曲线的任一侧的 点,由此允许有效地绘制该形状。因此,可以将本发明中所使用的纹理视为对定义待渲染形 状的边缘或者轮廓的(该)曲线进行表示。 因此,本发明可以用于渲染具有边缘曲线和/或轮廓曲线的任何形状(平滑曲线) (即由可以使用本发明来渲染的平滑曲线定义的形状),其中该边缘曲线和/或轮廓曲线是 连续的并且其一阶导数分段连续的。
21
(实际上,本发明的纹理以及技术在需要时当然也可以用于绘制曲线本身,因为本 发明的纹理以及技术同样定义了曲线本身)。 在特别优选的实施例中,本发明的各种功能在单个图形处理平台上执行,其中所 述图形处理平台生成并输出被写到显示设备的帧缓冲器的数据。 本发明适于任何形式或者设置的渲染器,例如有"流水线"装置的渲染器(在这种 情况下,该渲染器将为渲染流水线的形式)。在优选的实施例中,本发明应用于硬件图形渲 染流水线。本发明的各种功能和元素等可以根据需要,例如并且优选地由合适的功能单元、 处理逻辑、处理器、微处理器装置等等来执行。 本发明适于所有形式的渲染,例如即时模式渲染(immediate moderendering)、延 迟模式澄染(deferred mode rendering)、瓦片纹理澄染(tile-based rendering)等等。 在一个优选的实施例中,本发明用在延迟模式渲染和瓦片纹理渲染器中并且用于延迟模式 渲染和瓦片纹理渲染器。 从上面能够理解,本发明尤其但不仅仅适于3D图形处理器和处理设备,并且因此
扩展到包括根据在此所述的本发明任一或多个方面的装置或者根据在此所述的本发明任
一或多个方面运行的装置在内的3D图形处理器和3D图形处理平台。受到执行上述特定功
能所必须的任何硬件的影响,这样的3D图形处理器可以在其它情况下包括3D图形处理器
所包括的任何一个或多个或全部的常用功能单元等等。 本发明类似地扩展到2D图形处理器和扩展到2D图形处理。 本领域的技术人员同样能够理解,本发明所说明的所有方面和实施例可以并且优
选地确实适当包括在此所述的优选的和可选的特征的任何之一或多个或全部。 根据本发明的方法可以至少部分地使用软件、例如计算机程序来实施。因此能够
得知当从其它方面来看,本发明提供了一种计算机软件,其特别适于在被安装在数据处理
装置上时执行在此所述的方法,其中计算机程序单元包括计算机软件代码部分,所述计算
机软件代码部分用于在该程序单元运行在数据处理装置上时执行在此所述的方法,并且计
算机程序包括代码手段,所述代码手段适于在该程序运行在数据处理系统上时执行在此所
述的方法的所有步骤或者在此所述的该方法的所有步骤。数据处理器可以是微处理器系
统、可编程FPGA(现场可编程门阵列)等等。 本发明同样扩展到计算机软件载体,所述计算机软件载体包括这样的软件所述 软件在被用于操作包括数据处理装置的图形处理器、渲染器或者微处理器系统时结合所述 数据处理装置使所述处理器、渲染器或者系统执行本发明的方法的步骤。这样的计算机软 件载体可以是物理存储介质、例如ROM芯片、CD ROM或者磁盘,或者可以是信号、例如导线 上的电信号、光信号或者例如到卫星的无线电信号等等。 此外还能够理解,并不是本发明的方法的所有步骤都需要由计算机软件来执行, 因此根据另一宽的方面,本发明提供计算机软件,并且这样的软件被安装在计算机软件载 体上以便执行在此所述的方法的步骤的至少一个。 因此,本发明可以被适当地实施为计算机程序产品以供与计算机系统一起使用。 这样的实施方式可以包括一系列计算机可读指令,所述指令要么固定在有形介质上,例如 计算机可读介质如磁盘、CD-R0M、 ROM或者硬盘,要么可以经由调制解调器或者其它接口设 备通过包括但不限于光学或者模拟通信线的有形介质或者无形地使用包括但不限于微波传输技术、红外传输技术或其它传输技术的无线技术而被传输到计算机系统。在此,该系列 的计算机可读指令实施前面所述的全部功能或者一部分功能。 本领域的技术人员能够理解,这样的计算机可读指令可以以多种编程语言来编写 以供与许多计算机体系结构或者操作系统一起使用。此外,这样的指令可以使用任何当前 或者未来的存储技术,包括但不限于半导体存储技术、磁存储技术或光学存储技术来存储, 或者使用任何当前或者未来的通信技术来传输,包括但不限于光学通信技术、红外通信技 术或者微波通信技术。所考虑的是这样的计算机程序产品可以作为可移动介质连同附带 的印刷文献或者电子文献例如收縮套装(shrink-wrapped)软件一起发布、与计算机系统 一起预装在例如系统ROM或者固定磁盘上、或者从服务器或者电子公告牌通过网络例如因 特网或者万维网来发布。


下面仅仅通过例子并参考附图来说明本发明的多个优选的实施例,附图 图1示意性地示出了以根据本发明的纹理来表示平滑曲线的实施例; 图2示意性地示出了得出将用在图1的纹理中的纹元值的实施例; 图3示意性地示出了将表示多个平滑曲线的纹理存储在单个纹理映射中; 图4示意性地示出了在图3的纹理中的曲线的轮廓区域的放大段; 图5示意性地示出了将例如在图1中所示的纹理应用到图形图元; 图6示意性地示出了在本发明的实施例中对平滑曲线进行渲染以用于显示; 图7示意性地示出了在本发明的一个实施例中以图形纹理对含有尖点的曲线进
行的表示;
具体实施例方式
如上所述,本发明的基本前提是以纹理来表示平滑曲线,使得对在该曲线的一侧 的纹理进行的采样将给出小于特定阈值的采样纹理值,而对在该曲线的另一侧的纹理进行 的采样将给出大于该特定阈值的采样纹理值。
图1示出了这样的用于表示平滑曲线1的纹理的第一实施例。 图la)示出了较低分辨率下的整个纹理,并且基本图解说明了让曲线1的每一侧 的纹理位置被设置成不同纹理值并且返回不同纹理值的原理。图lb)示出了图la)的纹理 在曲线1以该纹理出现时在曲线1的线的周围的放大视图,并且尤其是示出了纹元值如何 在曲线1以该纹理出现时在曲线1附近的变化。 如图l所示,处于曲线l之内的纹元被设置成大于"0.5"的值(在图1中,值"l" 被表示成白色),并且处于曲线l之外的纹元被设置成小于"0.5"的值(在图1中,值"O" 被表示成黑色)。因此,当该纹理中的采样位置被查找时,针对该采样位置所返回的纹理值 可以用于确定是否应当将该采样位置处理成处于曲线1之内。实际上,可以认为曲线1的 阈值是O. 5。(能够理解,图1所示的纹理同样可以用于绘制"逆(reverse)"曲线或反曲线或 者"逆"形状或反形状,使得"黑色"被处理成处于该曲线"之内",而"白色"被处理成处于 该曲线之外。在优选的实施例中,图形处理系统的确被配置为能够这样做。这可以通过如下方式来实现例如,从该曲线的两倍阈值中减去采样纹理值(即2*阈值(在本情况下这将等于1.0)-samplecLtexture—value(采样纹理值));然后将该值与该阈值相比较(这实际上将"翻转(flip)"该纹理的含意)。 图1所示的纹理是8位的纹理(即使用8位来表示每个纹元值)。每个纹元都具
有与其相关联的单个值(并且因此该纹理可以方便地为单通道纹理)。 在本实施例中,该纹理中的纹元允许具有处于O至1范围(包括O和1)内的值,
并且该曲线轮廓的阈值被设置成0.5。其它设置当然是可以的。 后面将会论述,图1所示的纹理还被优化以使用双线性滤波来采样。(如本领域公知的那样,双线性滤波是一种根据分配给纹理映射的纹元的值而内
插该纹理映射中的位置的值的方式。可以将双线性滤波视为四个最接近于采样位置的纹元
与从重心坐标得出的系数(co-efficient)的凸组合(convex combination): bili固r(s, t) = (l-s) (l-t) texe", j+s (l_t) texeli+1, j+(1-s) t texel^ j+1+s t texeli+1, j+1 其中(s, t)是所讨论的采样点的坐标,并且texeli,j等是四个最接近于该位置的纹元。) 如上所述,本申请人已经认识到通过优化表示曲线的纹理以使用双线性滤波来
采样,采样过程在该纹理被使用时可以并且将产生对所讨论的曲线更佳的表示。 在本实施例中,供与双线性滤波一起使用的对图1所述的纹理的优化通过如下方
式来实现建立包括纹元值作为变量的代价函数;然后尝试最小化该代价函数;并且相应
地选择纹元值。 在本实施例中,通过如下方式来生成代价函数将曲线的路径(线)分为该曲线的路径与连接相应纹元中心的线的一系列交点;然后尝试调整相应的纹元值使得在该曲线与连接所述两个纹元中心的线的交点处产生期望的曲线阈值。
图2图解说明了这点,并且示出了纹元11的示例性的网格,其中平滑曲线10穿过
这些纹元。如果将纹元12、13考虑在内,则理想地,它们的相应纹元值应当被设置为使得如
果该纹理在点14(在点14处曲线10与连接纹元12、 13的线15相交)处被双线性地采样,
则采样纹理值应当精确地等于该曲线的阈值纹理值(其在本实施例中为0. 5)。 然而,每个纹元都可以参加不止一个纹元对,其中所述纹元对的值都需要以这种
方式来优化,因此可能并不总是能够将纹元值设置成对于任何给定的纹元对都能够产生期
望结果的精确值。 因此,通过如下方式来确定将用于纹理的纹元值使用全局代价函数,其中该全局代价函数是针对每个相关的纹元对(实际上,每个跨在所讨论的曲线的路径(线)上的纹元对)(实际上,这也是每个跨在该纹理中具有该曲线的阈值的轮廓上的纹元对))确定的局部代价函数之和;然后使用全局优化方法来尝试并找出最小化该全局(总)误差的配置以尝试找出将使用的最优纹元值。 在本实施例中,下面将每个相应的纹元对的局部代价函数(对两个纹元值的调整)视为一系列互相联系的优化问题。 首先,如上所述,一个目的是最小化曲线在连接该纹元对的线15上的实际交叉点14与由所述纹元值确定的交叉点(即线15上的如下点在该点处,纹元12、 13的双线性采样值将给出等于所定义的曲线阈值(本情况下为0.5)的采样值)之间的差。通过在代价 函数中包括实际交叉点位置与由纹元值指示的位置之间的误差来将所述因素考虑在内。
其次,将代价函数配置为使得所产生的纹元值的差将反映曲线10与连接该纹元 对的线15交叉处的角度9。这是为了尝试保证如果曲线10垂直于线15,则纹元值12、 13之间的差是其能够到达的最大值(本情况下为l),并且如果曲线IO几乎平行于线15, 则纹元值12、13之间的差应当接近于0(零)。这将有助于保证纹元可以被分配(将使用) 整个范围的可用纹元值(本情况下为0至1),由此以较高分辨率来定义该曲线。
在本实施例中,这是通过将曲线10与连接所述纹元的线15之间的角度9的正弦 用作该代价方程中的因子(factor)而实现的。 最后,没那么重要的是准确地定位曲线10的交叉点14,在此该曲线几乎平行于所 述纹元之间的线15(因为在这种情况下,交叉点的任何误差在纹理被采样时都将是危害较 小的)。这在本实施例中是通过使用与交叉角e的正弦的平方有关的因子来在代价方程中 给边缘加权而被考虑的。 每个相应纹元值对的以这种形式定义的代价方程然后被在所有考虑的纹元值对
的范围内相加,以便给出整个曲线的总代价函数或者"全局"代价函数。 这在本实施例中导致代价函数的形式为
w〖 wantedcrosspoint, — bilinearcrosspoint,

2
+ w2. - 欣e/,。) - sin《

广
cost = Z
其中
Wl和w2是可以根据需要来选择和改变的加权值,例如迭代地测试变化的优化; i是针对其测试该代价方程的纹元对;
N是纹元对的总数,其中代价函数在该总数的范围内被评估和求和; 9 i是该曲线针对第i个纹元对的交叉角; texelia和texelib是第i个纹元对的纹元的相应纹元值;
wantedcrosspointi是在连接第i个纹元对的线上的如下点,在该点处真实曲线交





叉; bilinearcrosspointi是在连接第i个纹元对的线上的如下点在该点处,在给定 纹元值的情况下双线性滤波的结果将返回所定义的阈值曲线值(在这种情况下是0. 5),其 因此是
,M. . — toc^/:
bilinearcrosspom、 二-^ 这个等式是通过解针对bilinearcrosspoin^的如下方程得出的threshold =
bilinear(bilinearcrosspointi, 0)。 实际上,在该代价函数中,因子 I wantedcrosspoint「bilinearcrosspointi | 表示在所述纹元值被采样时所确定的该曲线的交叉点与该曲线的希望交叉点之 间的差的绝对值;
25
因子 |texelib-texelj-sin 9 i 保证了使用全部范围的可用纹元值(防止该解使所有被分配的纹元值暴跌到阈 值(本情况下为0.5));以及
因子
sin2 9 i 使该曲线几乎平行于所述纹元之间的线处的边缘在该代价函数中具有较低的权 重(反之亦然)。 该代价函数然后被最小化以便找出最优纹元值、即texel^和texelib以用于每个
纹元对。这本实施例中,这是使用模拟退火来实现的,但是在需要时可以使用其它优化算
法。所确定的纹元值然后被作为表示该平滑曲线的图形纹理存储起来。 在本实施例中,为多个不同的平滑曲线和/或给定平滑曲线的多个不同部分重复
该过程,从而建立表示多个不同平滑曲线的纹理映射集合。 在本实施例中以纹理表示的平滑曲线包括连续的、并且一阶导数分段连续的曲 线。这些曲线可以是例如贝塞尔曲线、样条曲线、和/或弧。 表示一个或多个参考曲线或者"典范"曲线的纹理同样被生成和使用。(如上所 述,"典范"曲线是可以使用仿射变换将给定曲线族内的所有曲线转换成的参考曲线或者基 本曲线。) 在本实施例中,给定纹理映射用于通过空间上分离该纹理中的不同曲线来存储多 个不同平滑曲线的纹理表示和平滑曲线的多个不同部分的纹理表示。图3图解说明了这 点,并且示出了存储在单个总纹理23中的多个平滑曲线20、21、22等。通过对纹理23的合 适区域进行采样,可以绘制表示在那里的平滑曲线。 图4示意性地示出了存储在图3所示的纹理23中的曲线之一的曲线轮廓区域26 的放大段24。可以看出,在轮廓26周围的纹元值在该曲线轮廓的任一侧变化,包括一些接 近于该曲线的轮廓26的纹元27,其中这些纹元27具有比距曲线轮廓26更远的纹元28更 高(更明亮)的值,纹元28处于由高于该曲线的阈值的值表示的该曲线的那一侧,反之亦 然。这是为了保证当该曲线被双线性地采样时返回期望的纹理值。 将表示不同平滑曲线的纹理作为同一纹理映射的不同部分来存储将允许在单个 纹理中存储许多曲线,并且在使用本发明时可以减少例如为了渲染平滑曲线所需的纹理变 化的数目。 的确,本申请人已经发现实际上,几乎所有的可能需要在图形处理中绘制的平滑 曲线段都可以由相对少的曲线族来表示,使得能够容易地使用相对少的纹理来表示所有这 些期望的曲线。 —旦表示平滑曲线集合的纹理集合已经以这种方式被生成并且被存储以供图形 处理系统使用,则所述纹理可以被用于绘制由所述平滑曲线定义的形状(即具有对应于所 述平滑曲线的曲线作为其边缘(边界)的形状)。这基本上通过如下方式来实现生成覆 盖该形状将被绘制在内的画面(显示)区域的图元;然后将合适的纹理应用于该图元以便 绘制该形状。 当将该纹理应用于该图元时,针对该图元内的采样点对纹理值采样,并且采样纹
26理值被用于有条件地绘制(着色)处于该曲线之内(即实际上,处于由该曲线定义的形 状的边缘或者边界之内)的采样位置(如果该采样纹理值小于该曲线的阈值,或者反之亦 然),或者丢弃处于该曲线(形状)之外的采样位置(如果该采样纹理值大于或等于该曲线 的阈值,或者反之亦然)。 图5图解说明了这点,并且示意性地示出了将表示曲线50的纹理应用到图元51。
在这种情况下,图元51的颜色较明亮的区域52由于处于曲线50之内而被绘制。 下面将更详细地说明用于使用本实施例中的纹理来渲染形状的过程的优选实施例。 首先,图形处理系统识别渲染"平滑"曲线的需要。该图形处理系统然后以常规方 式生成覆盖该光滑形状将被显示在内的画面区域的图元。在本实施例中,三角形被生成,其 中所述三角形覆盖该曲线的控制点的、定义待绘制形状的边缘的凸包。 这些图元然后以常规方式被光栅化成片元,所述片元被传递给着色流水线用于着 色。(如果(这可能发生)对所述图元的光栅化并未生成任何片元(因为所述图元在将被 显示时并不实际覆盖该画面的任何采样点),则该过程可以结束于此,因为这意味着该形 状在画面将被显示时实际上将不会在该画面上被看到。) 如本领域公知的那样,与定义待绘制形状的边缘的平滑曲线相对应的纹理映射 (或者该纹理映射的一部分)然后通过如下方式被应用于所述图元针对处于所述图元覆 盖的画面中的采样点的位置从表示该平滑曲线的纹理中取得纹理采样。在本实施例中,针 对每片元完成单个纹理查找。(当然可以其它设置也是可能的)。 每个采样纹理值然后与为该曲线定义的阈值纹理值相比较,并且该采样位置然后 依据该比较的结果要么由于处于该曲线(并因此该形状)之内而被绘制(渲染),要么由于 处于该曲线之外而被丢弃。所述纹理采样是使用双线性滤波(在双线性滤波被允许的情况 下)而取得的,因为如上所述,在本实施例中,该纹理映射被修改以适于使用双线性滤波进 行的采样。 采样纹理值与曲线阈值的比较可以在固定功能的图形硬件中使用图形"alpha测 试"来执行,其中该alpha测试的比较alpha值被设置成曲线阈值(在本情况下为0. 5),以 丢弃处于该曲线之外的采样点和/或片元。在可编程着色器硬件的情况下,该比较可以使 用例如比较和有条件丢弃例程来执行。 在本实施例中,大于或等于( >=)测试被用于该比较和丢弃测试。该测试的结 果然后被存储在模板缓冲器中,并且在后面的处理穿过中应用着色来绘制该曲线时而被使 用。(当然,同样可以在与曲线测试相同的穿过中进行着色)。 本领域的技术人员能够理解可能存在待绘制的形状(定义该形状的边缘的曲 线)并不精确地与存储在纹理中的曲线相匹配的情况。在这种情况下,待绘制的形状(曲 线)必须被映射为存储在该纹理中的曲线,使得表示该曲线的纹理然后可以合适地被应用 (采样)。类似地,所渲染的图像内的采样位置必须被映射到表示该曲线的纹理内的合适采 样位置,同样使得该形状(曲线)可以被正确地绘制。 在本实施例中,通过如下方式来实现将记录在纹理中的曲线映射到待显示的图像 上的过程为定义待绘制输入形状的曲线的控制点计算纹理坐标;然后使用图形处理器的 插值硬件将所述纹理坐标线性内插到该曲线上。
在二次曲线的情况下,每个输入曲线都应当正好是存储在纹理中的曲线的仿射变换版本。因此在本实施例中,每次使用整个曲线,使得可以将固定的纹理坐标用于所述控制点中的每一个,并且通过将表面空间中的控制点与(纹理空间中的)纹理坐标配对来隐式地定义所需的变换。 对于三次曲线而言,该曲线优选地首先被归类为蛇形曲线、环形曲线、尖点曲线、尖点无穷远的曲线(即具有尖点的曲线,其中该尖点具有无穷远的拐点)、退化曲线、或者抛物线。抛物线是二次曲线并且优选地照此来处理。优选地通过将退化曲线切分成一条或多条线来处理退化曲线。 对于其它曲线,计算所述曲线的拐点(infl0和infll)。然后,所存储的曲线(纹理)被配置为使得它们的拐点总是在-l和l处,并且因此可以计算从[inflO.. infll]->[-l..l]的线性变换。通过该方式可以将该输入曲线的起始点和终止点(0和1)的参数位置变换到它们在纹理空间中的位置。现在得知了在典范纹理空间中该纹理需要覆盖的参数范围。 对于环形曲线和蛇形曲线而言,则搜索所存储的纹理以便找出覆盖所需参数范围的纹理(例如放大程度最高(most zoomed-in)的纹理)。(这对尖点曲线和尖点无穷远的曲线而言是非必要的)。 然后,所选择的所存储的曲线(纹理)(其具有-l和l处的拐点)被重新縮放以便将所述拐点映射到该输入曲线的拐点infl0和infll。然后,该变换被应用于所存储的曲线的控制点以便给出合适的经过变换的控制点位置,所述控制点位置然后用作该输入曲线的对应控制点的纹理坐标。 在多个曲线被打包到一个纹理中的情况下,可能需要将变换应用于纹理坐标以便对该纹理的正确的子集进行采样。在本实施例中,这通过如下方式来实现计算为了将盒
x[O. . 1]变换到[u_l. . u_2]x[v_l. . v_2])所需的縮放和平移;将该变换应用于在当作该曲线覆盖整个纹理的情况下已经计算出的纹理坐标。 图6示出了这些过程,并且示意性地示出了定义待绘制的形状的曲线经历归类、纹理搜索、纹理坐标计算和渲染阶段。 如图6所示,定义待绘制的形状的给定输入平滑曲线70首先在步骤a)被归类。在本例中,该归类将该曲线识别为"蛇形曲线"。 该系统然后在所存储的表示蛇形曲线的纹理71的范围内进行搜索以便找出所存储的最接近地匹配输入曲线70的蛇形曲线(步骤b))。 —旦这被完成,则如图6中的步骤c)所示执行为了将输入曲线70映射为存储在纹理71中的曲线所需的纹理坐标计算和图元生成。 最后,如图6中步骤d)所述,使用所选择的纹理来渲染该输入曲线。 在本实施例中,同样可以将待绘制的给定的输入曲线(形状)切分成单独的段,然
后每段被分别绘制(例如使用不同的纹理或者同一纹理的不同部分)。这可以例如使用de
Casteljau算法(德卡斯特里奥算法)对贝塞尔曲线进行。当然可以在需要时使用其它合
适的算法。 在本实施例中,当渲染非常大的形状时,进行对该形状(曲线)的这样的切分,以便将其分成较小的形状,从而减少渲染伪影。类似地,自相交的形状例如由具有环的曲线定义的形状被切分成两个(或两个以上)非自相交的形状,这些形状然后被分别绘制(渲染)。 同样对待渲染曲线(形状)进行这样的切分以便将具有奇点(尖点)的曲线在所述奇点处切分,以避免该曲线中的奇点产生渲染误差。(—种用于改善对曲线中的奇点的处理的可替换机制是保证当以纹理表示该曲线时,所有的奇点都处于连接纹元的水平线和竖直线的网格上。图7图解说明了这一点,并且示出了尖点曲线60,其中尖点曲线60被以纹理63表示,使得该尖点的奇点61处于连接纹元的中心64的网格线62上。) 如上所述,并且从上面可以理解,以本发明的方式来渲染平滑曲线的效果是绘制具有曲线作为其边缘或者边界的形状(因为在曲线的一侧的点与在该曲线的另一侧的点被不同地绘制(渲染))。例如,从图3可以看出,可以将本发明中使用的纹理视为对具有所讨论的曲线作为其边缘或者边界或者轮廓的形状的表示。 因此,可以有效地认为本实施例和本发明是渲染具有相关曲线作为其边缘或边界的形状、和/或具有相关曲线作为轮廓或边界的形状(即使得在曲线的不同侧的点应当被不同地绘制)。 从上面可以得知本发明至少在其优选的实施例中提供了用于有效地渲染由平滑曲线定义的形状的方法和系统,其尤其是可以使用在低成本的、固定功能的3D图形硬件上和未改动的现有硬件图形加速器上。这允许例如使用低成本的、和/或固定功能的图形硬件来给较新的曲线渲染API和应用进行硬件加速。 因此,本发明可以仅仅使用"基本"的图形硬件来实施。而且当与例如用于渲染平滑曲线的现有细分方法相比时,本发明使用明显更少的CPU时间和渲染带宽并且因此使用更少的功率。 这至少在本发明的优选实施例中通过如下方式实现将平滑曲线表示成图形纹理;然后使用图形纹理映射来渲染由所述曲线定义的形状。
权利要求
一种用于在图形处理系统中渲染由平滑曲线定义的形状的方法,该方法包括将表示与定义该形状的曲线相对应的曲线的图形纹理应用于待渲染的图元,其方式是通过对该纹理中的针对所述图元内的采样位置的纹理值进行采样;以及将采样纹理值用于确定应该将所述采样位置处理成处于该曲线的哪一侧。
2. 根据权利要求1所述的方法,其中该图形纹理被配置为使得该纹理中在该纹理所表 示的曲线的一侧的所有位置都将返回小于所选择的阈值的采样纹理值,并且该纹理中在该 曲线的另一侧的所有位置都将返回大于所选择的阈值的采样纹理值;该方法包括将针对所述图元的被采样的采样位置的采样纹理值与该曲线的所选择的阈值纹理值 相比较,以便确定应该将所述图元的被采样的采样位置处理成处于该曲线的哪一侧。
3. 根据前述权利要求中的任一所述的方法,其中该纹理被配置为使得当使用特定的 所选择的纹理滤波过程对该纹理进行采样时该纹理将最准确地表示该平滑曲线;该方法包 括使用该特定的所选择的纹理滤波过程来对该纹理中的纹理值进行采样,其中针对该纹 理滤波过程配置该纹理。
4. 根据前述权利要求中的任一所述的方法,其中表示平滑曲线的纹理被修改以适于使 用双线性滤波的采样。
5. 根据前述权利要求中的任一所述的方法,包括 将待渲染的形状切分成两个或两个以上单独的形状;以及 分别渲染该形状被切分成的每个单独的形状。
6. —种用于生成纹理以供在图形处理系统中用于渲染由平滑曲线定义的形状的方法, 该方法包括通过如下方式生成包括用于表示平滑曲线的纹理纹元阵列的图形纹理映射 设置该纹理映射中的纹元值,使得从该纹理映射中处于该纹理所表示的平滑曲线的一侧的位置取得的纹理采样将返回小于阈值纹理值的纹理值,并且使得从处于该平滑曲线的另一侧的位置取得的纹理采样将返回大于该阈值纹理值的纹理值。
7. 根据权利要求6所述的方法,包括基于打算在对该纹理进行采样时使用的特定的纹理滤波过程来选择将被用于该纹理 的纹元中的至少一些的纹元值。
8. 根据权利要求7所述的方法,其中通过如下方式来确定将要用于所述纹理的纹元值 中的至少一些使用表示该特定纹理滤波过程的代价函数;然后使用一种或多种优化算法最小化该代 价函数。
9. 根据权利要求6至8中的任一所述的方法,包括通过最小化代价函数来确定将要用于该纹理的纹元值中的至少一些,其中该代价函数 表示当该平滑曲线处于该纹理中时该纹理所表示的平滑曲线的位置与当使用特定的纹理 采样过程对该纹理的纹元进行采样时所指示的该曲线的位置之间的相应误差。
10. 根据权利要求6至9中的任一所述的方法,其中基于将用来对该纹理进行采样的双 线性滤波来选择存储在表示该平滑曲线的纹理映射中的纹元中的至少一些的值。
11. 一种用于在图形渲染系统中渲染由平滑曲线定义的形状的设备,该设备包括用于存储一个或多个表示平滑曲线的图形纹理的装置;用于将表示平滑曲线的图形纹理应用于待渲染图元的装置,其方式是通过对纹理中的针对所述图元内的采样位置的纹理值进行采样;以及用于将采样纹理值用于确定应该将采样位置处理成处于该曲线的哪一侧的装置。
12. 根据权利要求11所述的设备,其中每个纹理都被配置为使得对该纹理中在该纹理所表示的曲线的一侧的任何位置进行的采样都将返回小于所选择的阈值的采样纹理值,并且对该纹理中在该曲线的另一侧的任何位置进行的采样都将返回大于所选择的阈值的采样纹理值;该设备包括用于将针对所述图元的被采样的采样位置的采样纹理值与该曲线的所选择的阈值纹理值相比较以便确定应该将所述图元的被采样的采样位置处理成处于该曲线的哪一侧的装置。
13. 根据权利要求11或12中的所述的设备,其中每个纹理的所存储的值都设置为使得当使用特定的所选择的纹理滤波过程对该纹理进行采样时该纹理将最准确地表示该平滑曲线;以及该设备包括用于通过如下方式将所存储的表示平滑曲线的纹理应用于将被渲染的图元的装置使用该特定的纹理滤波过程来对针对所述图元内的采样位置的纹理值进行采样,其中针对所述特定的纹理滤波过程配置该纹理。
14. 根据权利要求11至13中的任一所述的设备,其中表示平滑曲线的纹理被修改以适于使用双线性滤波的采样。
15. 根据权利要求11至14中的任一所述的设备,包括用于将待渲染的形状切分成两个或两个以上单独的形状的装置;以及用于分别渲染该形状被切分成的每个单独形状的装置。
16. —种用于生成纹理以供在图形处理系统中用于渲染由平滑曲线定义的形状的设备,该设备包括用于生成图形纹理映射的装置,其中该图形纹理映射包括用于表示平滑曲线的纹理纹元的阵列,该装置包括用于设置该纹理映射中的纹元值使得从该纹理映射中处于该纹理所表示的平滑曲线的一侧的位置取得的纹理采样将返回小于阈值纹理值的纹理值并且使得从处于该平滑曲线的另一侧的位置取得的纹理采样将返回大于该阈值纹理值的纹理值的装置。
17. 根据权利要求16所述的设备,包括用于基于打算在对该纹理进行采样时使用的特定的纹理滤波过程来选择将被用于该纹理的纹元中的至少一些的纹元值的装置。
18. 根据权利要求17所述的设备,包括用于通过如下方式来确定将要用于纹理的纹元值中的至少一些的装置使用表示该特定纹理滤波过程的代价函数;然后使用一种或多种优化算法最小化该代价函数。
19. 根据权利要求16至18中的任一所述的设备,包括用于通过最小化代价函数来确定将要用于该纹理的纹元值中的至少一些的装置,其中该代价函数表示当该平滑曲线处于该纹理中时该纹理所表示的平滑曲线的位置与当使用特定的纹理采样过程对该纹理的纹元进行采样时所指示的该曲线的位置之间的相应误差。
20. 根据权利要求16至19中的任一所述的设备,包括用于基于将用来对该纹理进行采样的双线性滤波来设置存储在表示该平滑曲线的纹理映射中的纹元中的至少一些的值的装置。
21. —种供在图形处理系统中用于渲染由平滑曲线定义的形状的图形纹理映射,该纹理映射包括纹理纹元的阵列,在所述阵列中所述纹元值被设置为使得从该纹理映射中处于该纹理表示的平滑曲线的一侧的位置取得的纹理采样将返回小于阈值纹理值的纹理值,并且使得从处于该平滑曲线的另一侧的位置取得的纹理采样将返回大于该阈值纹理值的纹理值。
22. 根据权利要求21所述的图形纹理映射,其中纹理的纹元值被进一步设置为使得当使用特定的所选择的纹理滤波过程对该纹理进行采样时该纹理将最准确地表示该平滑曲线。
23. —种计算机程序单元,包括计算机软件代码部分,所述计算机软件代码部分用于在该程序单元运行在数据处理装置上时执行根据权利要求1至10中的任一所述的方法。
全文摘要
本发明涉及图形处理系统。通过如下方式以图形纹理来表示平滑曲线将处于曲线(1)之内的纹元设置成大于预先确定的阈值的值;并且将处于曲线(1)之外的纹元设置成小于该阈值的值(或者反之亦然)。针对采样位置返回的纹理值因此可以被用于确定是否应该将被采样的位置处理成处于该曲线(1)之内。优化该纹理以用于使用双线性滤波的采样。
文档编号G06T15/10GK101714259SQ20091017876
公开日2010年5月26日 申请日期2009年9月30日 优先权日2008年10月6日
发明者J·尼斯塔德, R·霍尔姆 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1