CN106408626A - 图形处理系统 - Google Patents
图形处理系统 Download PDFInfo
- Publication number
- CN106408626A CN106408626A CN201610629321.7A CN201610629321A CN106408626A CN 106408626 A CN106408626 A CN 106408626A CN 201610629321 A CN201610629321 A CN 201610629321A CN 106408626 A CN106408626 A CN 106408626A
- Authority
- CN
- China
- Prior art keywords
- curve
- regular
- space
- point
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 22
- 238000005070 sampling Methods 0.000 claims abstract description 38
- 238000013459 approach Methods 0.000 claims description 216
- 238000000034 method Methods 0.000 claims description 123
- 230000008569 process Effects 0.000 claims description 80
- 238000006243 chemical reaction Methods 0.000 claims description 54
- 238000009877 rendering Methods 0.000 claims description 52
- 238000003860 storage Methods 0.000 claims description 19
- 230000008859 change Effects 0.000 claims description 13
- 230000009466 transformation Effects 0.000 abstract description 23
- 238000013519 translation Methods 0.000 description 19
- 239000011159 matrix material Substances 0.000 description 17
- 230000006870 function Effects 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 11
- 238000005457 optimization Methods 0.000 description 11
- 239000012634 fragment Substances 0.000 description 7
- 238000007689 inspection Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 239000000975 dye Substances 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000010276 construction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 235000015170 shellfish Nutrition 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000012505 colouration Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000003973 paint Substances 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- FGRBYDKOBBBPOI-UHFFFAOYSA-N 10,10-dioxo-2-[4-(N-phenylanilino)phenyl]thioxanthen-9-one Chemical compound O=C1c2ccccc2S(=O)(=O)c2ccc(cc12)-c1ccc(cc1)N(c1ccccc1)c1ccccc1 FGRBYDKOBBBPOI-UHFFFAOYSA-N 0.000 description 1
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 208000031481 Pathologic Constriction Diseases 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000005452 bending Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 210000001215 vagina Anatomy 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/04—Context-preserving transformations, e.g. by using an importance map
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20072—Graph-based image processing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明提供一种图形处理系统,其用于使用输入曲线(10)来生成渲染输出,该图形处理系统包括:处理电路,其被配置为,针对在世界空间(11)中定义的输入曲线(10),确定在正则空间(13)中定义的正则曲线(12)的与输入曲线(10)相对应的一部分(10″)和将输入曲线(10)映射到正则曲线(12)的该部分(10″)所需的变换。针对世界空间(11)中围绕输入曲线(10)的多个采样点中的每一个,所述处理电路被配置为:利用所确定的世界空间(11)和正则空间(13)之间的变换(TUC)将采样点从世界空间(11)变换到正则空间(13);在正则空间(13)中,确定正则曲线(12)的所确定部分10″)上的到变换采样点的最近点。所述处理电路由此针对正则空间(13)中围绕正则曲线(12)的每个变换采样点,确定正则空间(13)中的正则曲线(12)上的对应最近点。
Description
技术领域
本发明涉及图形处理系统,尤其涉及在图形处理系统中使用平滑的形状,例如平滑曲线进行图像的渲染。
背景技术
在图形处理系统中越来越希望能够有效和准确地渲染平滑的形状,尤其是由平滑曲线(即以平滑曲线作为其边缘或边界的曲线)定义的形状,以进行显示。通常,从图形处理的角度来看,如果某个形状具有连续的边缘或边界曲线,并且该曲线的一阶导数是分段连续的,则可以认为这个形状是平滑的形状(由平滑曲线限定的形状)(将被认为是平滑的形状,相应地,出于本发明和申请的目的,将被认为是平滑曲线)。图形处理中这样的平滑曲线的例子是贝塞尔曲线、样条曲线和弧。
最近几年,在计算机图形中使用矢量图形已变得越来越常见。已知在现有技术中,矢量图形相对于光栅图形的一个关键优点是能够提供与分辨率无关的图像,即,基本上可以无限地缩放而不会质量降低的图像。例如,计算机字体的单个字符(字形),如TrueTypeTM,通常被存储为矢量图像。
矢量图形基于对单独定义的几何对象的使用,通常由在锚点连接在一起以形成一个路径的一个或更多个线段来描述,例如直线或曲线(如二次(例如贝塞尔)曲线、椭圆弧、立方(例如贝塞尔曲线)。
矢量图形对象/路径是在空间,通常被称为“世界空间”中定义和操纵的。然而,为了将矢量图形对象/路径输出到视频显示器或打印机,需要将在世界空间中定义的对象/路径变换成适当的形式,以便被显示在屏幕上或输出在打印机上。这种变换通常涉及将在世界空间中定义的对象/路径投影到另一个空间,通常被称为“面空间”,其对应于要在上面浏览该对象/路径的输出显示的视角(几何形状)。世界空间和面空间之间的变换通常称为“世界到面的变换”。
一旦矢量图形对象/路径被变换成面空间表示,它们就会被渲染,这可以使用对象和/或路径的预计算的表示。
将矢量图形对象/路径变换成随后可以用于例如在面空间中渲染该对象或路径的预计算的表示的一种方法是使用例如存储在纹理(texture)中的带符号的距离场,随后在渲染对象时,可以对该距离场进行采样。带符号的距离场包含点,例如纹理像素(texel),的阵列,针对每个点存储了到该路径或对象的边缘的最近距离,而距离的符号表示该点位于要渲染的对象的内部还是外部。因此,对带符号的距离场进行采样就确定了采样点是落在要渲染的对象的内部还是外部。
带符号的距离场帮助这些对象的渲染,例如字体字形,允许使用诸如抗混叠之类的技术。然而,例如使用扫描线光栅化从矢量图形对象/路径计算带符号的距离场是很复杂的。此外,如果对象或路径需要被缩放,则可能需要在新的分辨率下重新计算带符号的距离场,因为带符号的距离场可能仅已经被保存在有限的分辨率下。此外,在渲染更复杂的对象时,例如可能包括多个曲线段的字体字形,已经发现由于计算带符号的距离场的方法中的伪像,利用带符号的距离场会造成所渲染对象中的细节丢失,例如尖角的平滑化。因此,对此进行实时计算所需的计算成本很高,或需要大量的空间来脱机存储预计算的带符号的距离场。这可能会在可能(例如对于动态网页)期望实时进行的这种对象/路径的渲染中引入延迟。
因此,申请人相信仍有余地来改进用于渲染平滑曲线和由平滑曲线定义的形状的技术和系统。
发明内容
从第一方面看,本发明提供了一种在图形处理系统中使用输入曲线生成渲染输出的方法,该方法包括以下步骤:
针对在世界空间中定义的输入曲线:
确定在正则空间中定义的正则曲线的与所述输入曲线相对应的部分和将所述输入曲线映射到所述正则曲线的所述部分所需的变换;
针对所述世界空间中围绕所述输入曲线的多个采样点中的每一个采样点:
利用在所述世界空间和所述正则空间之间的所确定的变换将所述采样点从所述世界空间变换到所述正则空间;以及
在所述正则空间中,确定所述正则曲线的所确定的部分上的到变换采样点的最近点;
以由此针对所述正则空间中围绕所述正则曲线的每一个所述变换采样点,确定所述正则空间中的所述正则曲线上的对应最近点;以及
在生成渲染输出时,使用在所述正则空间中所述正则曲线上针对所述变换采样点所确定的最近点。
从第二方面看,本发明提供了一种使用输入曲线来生成渲染输出的图形处理系统,该图形处理系统包括:
处理电路,其配置为针对在世界空间中定义的输入曲线:
确定在正则空间中定义的正则曲线的与所述输入曲线相对应的部分和将所述输入曲线映射到所述正则曲线的所述部分所需的变换;
针对所述世界空间中围绕所述输入曲线的多个采样点中的每一个采样点:
利用在所述世界空间和所述正则空间之间的所确定的变换将所述采样点从所述世界空间变换到所述正则空间;以及
在所述正则空间中,确定所述正则曲线的所确定的部分上的到变换采样点的最近点;
以由此针对所述正则空间中围绕所述正则曲线的每一个所述变换采样点,确定所述正则空间中的所述正则曲线上的对应最近点;和
处理电路,其配置为在生成渲染输出时,使用在所述正则空间中所述正则曲线上针对所述变换采样点所确定的最近点。
在本发明中,渲染输出是这样生成的,利用输入曲线通过首先将在“世界空间”(其可以是平的,因此只有两个维度,或者它可以是三维空间)中定义的输入曲线映射到已定义在“正则空间”中的对应的预定义“正则”曲线。然后,对从世界空间中围绕输入曲线的对应位置变换出的正则空间中的位置进行采样(测试),以确定正则曲线上到每个采样位置的最近点。这些最近点被用于生成渲染输出。这个信息可以用于例如渲染输入曲线形成少其外形轮廓的至一部分的形状,例如字体字形,或基于输入曲线形成其外形轮廓的至少一部分的对象渲染照明或阴影。
然而,申请人已认识到,例如仅通过旋转、平移和均匀缩放,就能够将特定曲线族中的所有曲线变换到一个预定的单一的或基本曲线,在本文中称为“正则曲线”,的至少一部分上。
因此这使得能够利用与单个曲线,即正则曲线,有关的信息来确定与图形处理系统所使用的一个或更多个输入曲线有关的信息,在生成渲染输出时使用。例如,换言之,代替不得不导出或存储与图形处理系统所使用的要渲染的每个单独的输入曲线有关的数据,只需要导出或存储与正则曲线有关的数据。然后,可以使用属于“正则曲线”所表示的输入曲线族(组)的各个输入曲线中的每一个来生成渲染输出。
这样,本发明不仅可提供一种使用一个或更多个输入曲线来生成渲染输出的更有效的机制,还能够提供这样做的一种特别方便的机制。例如,一旦正则空间中的正则曲线被定义,就可能简单地通过单个坐标,例如x坐标来指代曲线上的点(并因此在计算中使用这些点)。因此,使用正则曲线来确定曲线上到采样点的最近点,而这又可以用于确定到曲线上的最近点的距离(带符号的距离场中的信息的一部分),允许保留输入曲线的数学表示,例如使用矢量图形定义的表示。这是确定此信息的更简单和更精确的方法,从而提高了使用输入曲线来生成渲染输出的速度和精度。与此相比,使用利用扫描线光栅化进行评估的带符号的距离场的技术在计算带符号的距离场时会导致信息丢失,因此导致渲染输出的细节丢失。
提供一种使用这种输入曲线来生成渲染输出的简单处理有助于减少运行该处理的设备的处理和电力负载,从而允许用在更简单的设备上,例如由电池供电且不能实现多功能处理的移动和可穿戴设备上。备选的是,该处理的效率提升可允许它执行更复杂的渲染功能,或能够在需要时实时地(重新)计算必要的信息(例如,正则曲线上到每个变换采样点的最近点)需要,而与先前的技术相比不会出现设备的处理和电力负载的相关增加。
为了在使用这样的输入曲线,特别是渲染字体时,生成渲染输出,使用更简单和更精确的处理(例如,分析计算正则曲线上针对变换采样点的最近点)能够在显示器上更具吸引力地渲染字体,特别是当文字被放大使得字体可能需要重新计算时。
在世界空间中定义被本发明的处理所使用,例如,是本发明的处理的输入的输入曲线可以是最初由需要使用输入曲线来生成渲染输出的应用所定义的输入曲线。然而,也可能输入曲线是从在世界空间中定义的另一个曲线得到的曲线。例如,通过本发明也可以设想,输入曲线可能是通过将另一个或初始曲线从所接收的另一个空间变换到世界空间而得到的。
输入曲线可以按照任何合适的和所希望的方式被输入到图形处理系统中。例如,输入曲线可以被(预)存储在图形处理系统中,使得能够从它的存储位置读出,或者输入曲线可以由图形处理系统自身来确定。在另一个实施方式中,输入曲线可以是例如由需要使用输入曲线来生成渲染输出的应用肯定地(positively)输入的。在一个优选实施方式中,该方法包括(以及所述处理电路被配置成)接收所述输入曲线的步骤。
例如包含要使用输入曲线来渲染的形状的渲染输出可以仅使用单一的曲线来生成,例如对于其整个长度(或其长度的要用于生成渲染输出的至少一部分)具有单一的定义(例如,数学公式)。优选所述输入曲线具有可以得到具有上述性质的“正则曲线”的形式。因此,图形处理系统所使用的输入曲线可以是来自可以有适当的关联正则曲线的曲线族中的任何曲线。
具有这种形式的关联正则曲线的一个曲线族是二次曲线。在这种情况下,正则曲线可以是基本二次曲线,即形式为y=x2的曲线。因此,在一个特别优选的实施方式中,由图形处理系统接收的世界空间中的输入曲线是二次曲线。
同样可以设想,可以使用多个输入曲线,例如多个在其长度上分别具有不同定义(如数学公式)的曲线段,来生成渲染输出。例如,字体字形通常由一起形成字形轮廓的多个曲线段(其可包括直线段)来定义。
另外或代替地,输入曲线可以不具有在正则空间中的相应曲线,因此它有可能被细分使得初始曲线被分成都有相应的正则曲线的多个曲线段(它们是具有关联正则曲线的曲线族的成员),例如在渲染输出中要使用的输入曲线可以通过将在世界空间中定义的初始曲线细分为两个或更多个单独的输入曲线(例如被定义为针对沿初始曲线的长度的不同部分的单独的输入曲线)。例如,立方或椭圆形的曲线可以被细分成多个二次曲线。相应地,这将使得本发明能够被用于渲染那些可能没有直接对应的、没有直接定义的(和/或存储的)正则曲线,或者正则曲线不可用的曲线。
在这些实施方式中,该方法可以包括以下步骤(所述处理电路可被配置成):将在世界空间中定义的初始曲线细分为多个输入曲线,然后对输入曲线中的一个或更多个进行处理,并按照本发明的方式生成渲染输出。对于一些最初定义的曲线,例如三次贝塞尔曲线,在将初始曲线细分成多个输入曲线时,可能会重新使用一些计算(因此所述处理电路可被配置为执行此操作),以便找到提供与初始曲线的最佳拟合的多个输入曲线,例如二次贝塞尔曲线。例如,二次贝塞尔由它的起点和终点以及梯度(可以由第三控制点来定义)定义。然后,这些参数可以与邻近的例如标准形式的贝塞尔的相应参进行比较,以确定它们是否可以被合并。
在一组优选实施方式中,当要使用多个输入曲线来生成渲染输出时,为每个输入曲线(例如片段)重复本发明的方法,例如,每个输入曲线(段)被变换到正则空间中,在正则空间中,对于世界空间中围绕输入曲线(段)的多个采样点中的每一个,确定正则曲线的所确定的部分上到变换采样点的最近点。然后针对围绕所述多个正则曲线中的每一个的变换采样点的阵列,返回每个变换采样点的正则曲线(段)上所确定的最近点,在生成渲染输出时就可以使用这些所确定的最近点。
本申请人已经认识到,在实践中生成渲染输出所时想要使用的大多数(如果不是全部)输入曲线都将落入几个曲线族之一中,因此能够用相对少的输入曲线来表示可能想要绘制,比如来定义复杂形状,例如字体,的大多数(如果不是全部)曲线。输入曲线可以是任何合适的曲线。优选所述输入曲线是平滑曲线。优选所述平滑曲线是连续且曲线的一阶导数(曲线的路径)分段连续的曲线。优选所述输入曲线是直线、(例如二次或三次)贝塞尔曲线、样条曲线和/或(例如,椭圆形)弧线。
然而,下面将进一步讨论,输入曲线可以包括更复杂的曲线,例如椭圆和/或双曲线,例如,这可能不需要将曲线细分成多个二次曲线。然而,对于以这种方式定义的输入曲线,没有一个从世界空间到正则空间的唯一变换(两维),因此曲线的定义可能需要包括其它信息,如曲线的偏心(eccentricity),例如表示为正则空间中的第三维。这可以被存储为输入曲线的定义的一部分或者该方法可以包括以下步骤(且所述处理电路可被配置成):当输入曲线包括椭圆或双曲线时,确定所述输入曲线的偏心。
当输入曲线包括椭圆和双曲线,例如带有二次方程式时,这提供了一个有用的工具箱供用户定义复杂的形状以便在生成渲染输出时使用,它可以从一个或更多个输入曲线变换到相应的正则曲线,例如仅通过旋转、缩放和平移,相对来讲是硬件友好的。
在世界空间中定义的,被本发明的处理所使用,例如被接收为输入,的输入曲线可以按照任何期望和适当的方式来定义。例如,优选地,图形处理系统可以接收定义了输入曲线的信息,如曲线的位置和与该曲线有关的任何参数。优选所述输入曲线具有有限长度,例如作为形状的一部分,并且因此优选所述输入曲线的定义,进而由图形处理系统所使用,例如接收,的信息包括输入曲线的终点。因为输入曲线可以仅利用旋转、平移和均匀缩放变换为相应的正则曲线,于是,如下面进一步讨论的,能够在使用中容易地确定正则曲线的与输入曲线相对应的部分,如它的起点和终点。
输入曲线优选由世界空间中的多个控制点的位置来定义,典型地包括起点、终点和一个或更多个中间点,以及要在起点控制点与终点控制点之间绘制的曲线的类型的指示。例如,优选地,如上面所讨论地,输入曲线包括以下之一:直线、二次贝塞尔曲线(需要单个中间控制点)、三次贝塞尔曲线(需要两个中间控制点)、样条曲线和(如椭圆或双曲线)弧。输入曲线的定义也可以包括曲线的梯度,例如在一个或更多个控制点处的梯度。例如,二次贝塞尔曲线可以由三个控制点来定义,或由两个(终点)控制点和这两个控制点处的梯度来定义。
因此,输入曲线的定义优选地包括世界空间中多个控制点,和指示曲线类型的信息。另外,当输入曲线被图形处理系统接收时,接收在世界空间中定义的输入曲线的步骤优选地包括(且所述处理电路被配置成):接收世界空间中的多个控制点的位置,和指示曲线类型的信息。
对于要用于生成渲染输出的输入曲线,例如一旦输入曲线已经由图形处理系统接收,就需要确定正则空间中的正则曲线的表示所述输入曲线的对应部分。该确定可以通过任何适当和期望的方式来进行。
在一个优选实施方式中,这是通过确定需要对在世界空间中定义的输入曲线采取的变换,并将其放置在正则空间中的正则曲线的对应部分上而完成的。如上所述,该变换(世界-正则变换)应只需要旋转、平移和/或均匀缩放。因此,确定将世界空间中的输入曲线变换到正则曲线的适当部分的步骤优选地包括(处理电路被优选配置为):确定该变换的旋转分量,如果有的话。
变换的旋转分量可以按照任何合适的和期望的方式来确定。然而,在一个优选实施方式中,同样当世界空间中的输入曲线(因此正则空间中的正则曲线)是二次曲线时,变换的旋转分量是通过确定使输入曲线的对称轴平行于正则空间中的正则曲线的对称轴所需的旋转而确定的。因此该旋转将输入曲线的对称轴与正则曲线的对称轴(例如正则空间中的y轴)的方向对准。
类似地,确定将世界空间中的输入曲线变换到正则空间中的正则曲线的适当部分上的步骤优选地包括(所述处理电路优选被配置成):确定变换的平移成分,如果有的话。
变换的平移分量也可以按照任何合适的和期望的方式来确定。然而,在一个优选实施方式中,当输入曲线(因此正则曲线)是二次曲线时,变换的平移分量是通过确定将世界空间中的输入曲线的最低点移动到正则空间中正则曲线的最低点,例如正则空间的原点,所需的平移而确定的。因此,确定变换的平移分量的步骤优选地,如果需要的话,跟随确定所述变换的旋转分量的步骤,如果需要的话。
因此,在一个优选实施方式中,确定变换的平移分量的步骤包括(所述处理电路被优选构配置成):确定将输入曲线的最低点映射到正则空间中正则曲线的最低点所需的平移。
类似地,确定将世界空间中的输入曲线变换到正则曲线的适当部分上的变换的步骤优选地包括(处理电路被优选构地配置成):确定该变换的均匀缩放分量,如果有的话。
变换的均匀缩放分量也可以按照任何合适的和期望的方式来确定。然而,在一个优选实施方式中,同样当世界空间中的输入曲线(因此正则空间中的正则曲线)是二次曲线时,变换的均匀缩放分量是通过确定将例如经旋转和/或平移的输入曲线缩放到正则曲线所需的缩放因子,例如通过检查输入曲线的二次型而确定的。
确定变换的旋转、平移和均匀缩放分量的步骤可以根据需要按照任何顺序来执行。然而,在本发明的优选实施方式中,首先确定旋转分量,然后是平移分量,最后是均匀缩放分量。
当输入曲线具有有限长度,例如由起点和终点定义时,一旦确定了将世界空间中的输入曲线映射到正则空间中的正则曲线所需的变换,就优选地通过利用所确定的变换确定正则曲线上与输入曲线的中心曲线的起点和终点相对应的两个位置,来确定正则曲线的与输入曲线相对应的部分。然后,这给出了输入曲线在正则空间中的位置。
一旦确定了与世界空间中的输入曲线相对应的正则空间中的正则曲线,因此也确定了输入曲线从世界空间到正则空间的变换,就可以利用相同的变换将世界空间中围绕输入曲线的多个采样点中的每一个采样点变换到正则空间中的对应点(单独或一起)。
可以以任何合适的和所期望的方式来选择围绕输入曲线的所述多个采样点,例如以使得输入曲线上所确定的最近点能够以对于渲染输出期望要渲染的细节水平而言足够的分辨率水平来提供(或覆盖要生成的渲染输出的最期望缩放水平)。可替代地,输入曲线上的最近点可以在较低的分辨率下确定,例如对于少数采样点,然后如果想要以放大水平生成渲染输出,则在较高的分辨率下(即,更详细地)确定,如果必要。在一个实施方式中,绘制一个围绕输入曲线的边界框,在该边界框内,围绕输入曲线的多个采样点被定义。
在一个实施方式中,可以不对围绕输入曲线的每个采样点确定正则曲线上的最近点,对于所述每个采样点,最终要确定与输入曲线有关的信息在生成渲染输出时使用。例如,要针对多个其他采样点中的每一个确定的信息可从一个或更多个位于(例如接近)所述多个其他采样点中的一个采样点的(最初定义的)采样点得到,而无需将这些其他采样点中的每一个变换到正则空间,并确定正则曲线上的最近点。
在本实施方式中,有可能确定以下一个或更多个:曲线上到一个采样点的最近点;从采样到曲线上的最近点的距离;曲线的应当视为存在采样点的侧。该信息可以在正则空间中(因此可能需要将采样点变换到正则空间和/或将在正则空间中确定的信息变换回世界空间)或在世界空间被确定。
另外,在本实施方式中,可能不必使用一个或更多个附近的采样点来确定特定变量的实际值,而是确定一个变量的值是高于还是低于阈值。随后这可以被用来确定是否有必要独立地或更准确地确定变量的值,例如针对靠近输入曲线的采样点。例如,对于其他的采样点,可能能够使用最近点和/或距离已经被确定的一个或更多个周围采样点来确定,所述其他采样点与附近的采样点相比是更近还是更远。如果其他采样点更远,则简单地存储附近采样点与曲线的距离(或者指示这一点更远的阈值或默认值)就足够了。如果其他采样点更近,可能有必要针对正则空间中的该采样点来确定曲线上的最近点,就像针对采样点的初始集合一样。
在本实施方式中,优选地,针对采样点的初始集合所确定的信息,例如曲线上到采样点的一个或更多个最近点、从采样点到曲线上最近点的距离、和曲线上应当视为存在采样点的侧被存储在例如高速缓存中,以允许对其他采样点进行这些比较。
当有多个输入的曲线时,世界空间中围绕每个输入曲线的多个采样点对于每个输入曲线而言可以是相同的,例如,它们可以包围所有输入曲线(并因此可以在渲染时提供对所有输入曲线测试的可能性,下面将会讨论),但优选对于每个输入曲线分别选择围绕每个输入曲线的多个采样点,例如恰好包围输入曲线,因此它们优选地在世界空间中形成一个采样点子集。例如,可以绘制(单个)边界框以包围所有输入曲线,但优选绘制单独的边界框以包围每个输入曲线,其内定义了多个采样点。
对于变换到正则空间中的世界空间的采样点,正则曲线上到正则空间中变换采样点的最近点可以按照任何合适的和所期望的方式来确定。优选地,正则曲线上到每个变换采样点的最近点是在正则空间中分析确定的。最近点可以通过确定正则曲线上的如下的点来确定,即,在该点处的针对正则曲线的切线垂直于从变换采样点到正则曲线上的该点的矢量。(对于某些正则曲线这可能会返回满足该条件的曲线上的多个点,所以从变换采样点到曲线上的点的距离可能需要进行比较,以确定最近点,例如,以丢弃落入正则曲线的有限部分之外的点和/或选择正则曲线上的与变换采样点之间具有最短距离的点)根据输入曲线的定义,这样的分析计算可能无法在世界空间中进行,例如当输入曲线被定义为贝塞尔曲线时,但是可能能够在正则空间中进行,例如当相应的正则曲线是抛物线时。
当输入曲线具有有限长度,例如由起点和终点定义时,正则曲线的所述部分的起点或终点可以比正则曲线上的(最近)点(例如该部分的外部)更近,此处到正则曲线的切线垂直于从变换采样点到正则曲线上该点的向量,例如曲线的起点或终点可以是曲线上到采样点的最近点。因此优选地,确定正则曲线上到变换采样点的最近点的步骤还包括(并且因此优选所述处理电路被配置为):确定从变换采样点到正则曲线的该部分的起点和终点的距离并确定起点或终点中的一个是否为正则曲线上到变换采样点的最近点。
优选地,确定正则曲线上到特定变换采样点的最近点的步骤包括(并且因此优选所述处理电路被配置为):确定所述变换采样点与正则曲线上到正则空间中变换采样的最近点的距离,例如,确定正则曲线上到正则空间中变换采样点的最近点的步骤可以包括最小化给定的变换采样点与正则曲线之间的距离。这进而确定了,对于包围该曲线的每个采样点,从采样点到曲线上针对该采样点的对应最近点的距离,并允许在生成渲染输出时使用到曲线上的最近点的距离,例如作为带符号的距离场的一部分,而无需在生成渲染输出时在世界空间中重新计算该值。
可以使用查找表来确定变换采样点与正则曲线上的最近点之间的距离。可选择地,变换采样点与正则曲线上的最近点之间的距离可以被计算分析,例如作为烧制到硬件中的分析计算。如果查找表被使用,则这可以在特定(例如,限制)范围的正则曲线上提供(例如,以最小化储存在查找表中的数据量,因为大多数的输入曲线将对应于正则曲线的接近抛物线最低点的部分),而分析计算在该范围之外进行。此外,可以使用多个查找表,例如覆盖正则曲线的不同部分,预先确定和存储与多个采样点的距离,根据需要来使用。这有助于减少重新计算这些距离的需求,从而减少了实时处理。
在进一步的实施方式中,除了提供查找表,例如存储在纹理中以确定从一个采样点到该曲线上的最近点的距离,还可以预先确定并存储与输入曲线相对应的正则曲线(例如,也包括所确定的从世界空间到正则空间的变换)。在适当和希望的情况下,也可以预先确定并存储进一步的信息,例如,用于确定从一个采样点到曲线上最近点的距离和/或输入曲线的最大范围的公式(例如,通过定义围绕输入曲线的边界框,其内部的采样点可以被定义)。
例如,当输入曲线定义了要被渲染的字形时,字体格式可以包含该信息的一些或全部。
当输入曲线是一条直线时,优选将世界空间中的输入曲线变换到正则空间中的一个轴,例如x轴,例如根据需要使用旋转、平移和缩放中的一个或更多个。于是,正则曲线上的最近点是简单的,例如变换采样点沿着直线被变换的轴的x坐标。当输入曲线具有有限长度时,例如由起点和终点所定义时,正则曲线上到变换采样点的最近点是变换采样点的x坐标,如果例如变换采样点的x坐标位于正则曲线的起点和终点的例如的x坐标之间。当变换采样点的例如x坐标位于正则曲线的起点和终点之外时,正则曲线上到变换采样点的最近点是起点或终点当中到变换采样点更近一方。对于具有有限长度的这种输入曲线,正则空间中的直线段可以缩放成在正则空间的x=0和x=1之间,但是这不是必要的。
一旦正则曲线上到变换采样点的最近点已经在正则空间中确定,就可以将最近点从正则空间变换到世界空间,例如使用针对输入曲线所确定的世界空间与正则空间之间的变换的逆变换。因此,对于所述多个采样点中的每一个,该方法可以包括以下步骤(所述处理电路可被配置成):利用世界空间与正则空间之间的变换的逆变换将所确定的最近点从正则空间变换到世界空间;以由此针对世界空间中围绕输入曲线的每个采样点,确定世界空间中的输入曲线上的对应最近点。生成渲染输出的步骤随后可以在生成渲染输出时,利用针对世界空间中的采样点所确定的输入曲线上的最近点。然而,如下所述,这可能不是必要的,因为使用所确定的最近点例如以确定从采样点到曲线的距离和/或确定曲线的存在采样点的一侧也可以在正则空间中执行。
当有多个输入曲线时,例如一起形成一个形状(例如字形)的轮廓,对应正则曲线上对每个采样点的最近点可以针对所述多个输入曲线中的每一个单独确定,例如对于围绕每个输入曲线单独的采样点集合,针对每个输入曲线确定,且确定是在正则空间中执行的,使得能够针对包围每个输入曲线的采样点集合来确定在所述多个正则和/或输入曲线中的每一个上的最近点(其可以是正则或输入曲线的起点或终点),必要时将正则空间中确定的最近点变换到世界空间中。(同样,根据需要,对于每个输入曲线的采样点集合可包围输入曲线中的一个或更多个,或所有)。
多条曲线上的这些最近点(当已经针对多个输入曲线中的两个以上,例如全部曲线,采样点具有在正则空间中确定的最近点时)然后可以彼此进行比较,以确定多条曲线上对每个采样点的最近点,例如通过分别比较从采样点到多条曲线上的每个最近点的距离。最近点之间例如使用与采样点的距离进行的比较,可以在世界空间或正则空间中进行。当在正则空间中进行时,可能需要使用输入曲线到正则空间的变换,例如如果需要不同的缩放来将不同的输入曲线变换到正则空间。当在世界空间中进行时,应当根据需要使用分别针对输入曲线所确定的逆变换,将所确定的最近点和/或从采样点到它的距离从正则空间变换到世界空间。
在另一个实施方式中,可以作为整体(或一个子集)为每个采样点确定到多条曲线的最近点(例如,对于适当选择的包围所有多个输入曲线的采样点的阵列)。这使得能够为每个采样点确定多条曲线之一上的单个最近点(其可以是曲线的起点或终点)。最近点可以通过循环所述多个输入曲线中的一个或更多个来确定,以确定到每个采样点的最近点,即,确定最近点位于所述多条曲线中的所述一个或更多个中的哪一个上。
同样,本实施方式中最近点的确定可以在世界空间或正则空间中进行,根据需要进行变换和/或缩放。需要注意与曲线的终点接近的采样点,尤其是在正则空间中工作时,以确定最近点位于两个或更多个曲线中的哪个上。例如,两个输入曲线可以形成一个角的形状,造成不会立即明白采样点最接近哪一个曲线。
在上述两个实施方式中,一旦确定了多条曲线上对采样点的(单个)最近点,优选对于每个采样点确定(并且,例如,存储)最近点所位于的正则或输入曲线的标识。
类似的确定(在世界空间或正则空间中)也可对于从每个采样点到作为一个整体的多条曲线上相应的(单个)最近点来进行,例如比较所述多个输入曲线中每一个的距离(在正则空间或世界空间中,必要时使用适当的变换)。
多个输入曲线上对给定采样点的最近点可以使用所有所述多个输入曲线来确定,但优选仅针对所述多个输入曲线中的一些来确定最近点,例如从所述多个输入曲线中预先选定的一组一个或更多个输入曲线。多个输入曲线中的一个或更多个输入曲线,例如预先选定的组,可以按照任何合适的和所期望的方式来选择,例如基于粗略判断所述多个输入或相应的正则曲线中的哪一个最靠近每个(例如,变换)采样点和/或所述多个输入曲线中的哪一个位于所讨论的采样点所处的块元(tile)。只选择有限数量的输入曲线来用于进行这种判断有助于减少所需的处理。
(应当理解,当渲染输出包括字形时,字形的轮廓是由一个或更多个输入曲线定义的,输入曲线内部的区域需要被适当着色以显示字形。尽管字形内可能存在围绕任何特定点,或接近该字形以外的任何特定点的多个输入曲线,但是确定采样点落在字形内部还是外部可简单地通过确定最近点位于所述多个输入曲线中的哪一个上来进行。)
当变换采样点与正则曲线上对变换采样点的最近点之间的距离也在正则空间中被确定时,优选利用正则曲线到输入曲线的逆变换,将针对每个采样点的该距离,例如连同该曲线上的最近点一起,从正则空间变换到世界空间。
分别位于正则空间或世界空间中的(正则或输入曲线上的)最近点,和从采样点到可用的正则或世界空间中的最近点的距离,可以直接传递给所述处理电路用于生成渲染输出。(当从变换采样点到正则曲线上的最近点的距离尚未在正则空间中确定和/或变换到世界空间时,优选例如对于每个采样点,使用输入曲线上的最近点和采样点,确定从采样点到世界空间中(输入曲线上的)最近点的距离。这可以在正则空间或世界空间中适当地确定。)但是,该方法可以包括以下步骤(所述处理电路被配置成):对于每个采样点,存储所述曲线上的最近点。根据需要,对于每个最近点所存储的值可以是在正则空间或在世界空间中。
当基于已确定的初始采样点集合的信息确定了另一个采样点集合的信息时,例如从一个采样点到曲线上的最近点的距离,优选该信息也被例如与针对初始采样点集合确定的对应信息一起存储。
当从采样点到最近点的距离已经被确定(在正则空间或世界空间中,根据需要),优选地,该方法包括以下步骤(所述处理电路被配置为):例如连同输入曲线上对每个采样点的最近点一起,存储从采样点到曲线上的最近点的距离。对于每个距离所存储的值可以在正则空间中,但是优选地在世界空间中。存储从采样点到曲线上的最近点的变换距离避免了必须再次确定该距离(例如,使用为每个采样点存储的曲线上的最近点)。
距离值可以按照任何合适的和所希望的方式存储(在正则空间或世界空间中,根据需要)。距离值可以被存储为,例如它们被计算的原形式。然而,在一个实施方式中,当距离值大于一个阈值时,该距离值被截断,例如被设置为阈值或默认值。通过仅存储直到阈值的所确定的距离值,所以存储空间可被最小化。如果采样点靠近曲线,使得知道该距离变得重要,例如可被用来生成特殊的渲染效果,则实际距离值是可用的。然而,这个距离范围之外,例如进一步远离输入曲线的采样点,可能不必知道与输入曲线上的最近点的距离的精确值,只知道它至少是所述阈值即可。
当有多个输入曲线时,从采样点到作为整体的多条曲线的距离(例如,连同最近点所处的曲线的标识一起),或针对所述多个输入曲线中的每一个输入曲线从采样点到该每一个输入曲线的距离,另外或代替地,在合适和希望的情况下,相应的最近点可以被存储。
距离(另外或代替,最近点)可以被存储为任何适当的和期望的形式(和在正则空间和/或世界空间中,根据需要),并在任何合适的和所需的存储器中,使得能够在生成渲染输出时使用这个信息。在一个优选实施方式中,对于每个采样点的距离(另外或代替,最近点)被存储为一个或更多个图形纹理的形式。这是特别有利和有益的,因为不仅图形纹理旨在存储与特定地理位置的阵列有关的数据,而且将数据存储为纹理形式使得能够将图形处理系统中通常包含的现有纹理映射处理用来以本发明的方式生成渲染输出。
申请人还相信,这种形式的图形纹理的生成本身就是新颖的和有利的。因此,本发明相应地还延伸到构建这种纹理。
因此,根据第三方面,本发明提供了一种生成图形纹理的方法,该图形纹理在使用输入曲线来生成渲染输出时在图形处理系统中使用,该方法包括以下步骤:
针对在世界空间中定义的输入曲线:
确定在正则空间中定义的正则曲线的与所述输入曲线相对应的部分和将所述输入曲线映射到所述正则曲线的所述部分所需的变换;
针对所述世界空间中围绕所述输入曲线的多个采样点中的每一个采样点:
利用在所述世界空间和所述正则空间之间的所确定的变换将所述采样点从所述世界空间变换到所述正则空间;以及
在所述正则空间中,确定所述正则曲线的所确定的部分上的到变换采样点的最近点;
以由此针对所述正则空间中围绕所述正则曲线的每一个所述变换采样点,确定所述正则空间中的所述正则曲线上的对应最近点;
针对每一个采样点,确定从所述采样点到所述曲线上所确定的最近点的距离;以及
生成包括纹理像素的阵列的图形纹理,其中每一个纹理像素对应于所述多个采样点中的至少一个采样点,并且针对所述至少一个采样点,将从所述至少一个采样点到所述曲线的所确定的(多个)距离与该每一个纹理像素关联。
从第四方面来看,本发明提供了一种用于生成图形纹理的设备,该图形纹理在使用输入曲线来生成渲染输出时在图形处理系统中使用,该设备包括:
处理电路,其配置为针对在世界空间中定义的输入曲线:
确定在正则空间中定义的正则曲线的与所述输入曲线相对应的部分和将所述输入曲线映射到所述正则曲线的所述部分所需的变换;
针对所述世界空间中围绕所述输入曲线的多个采样点中的每一个采样点:
利用在所述世界空间和所述正则空间之间的所确定的变换将所述采样点从所述世界空间变换到所述正则空间;以及
在所述正则空间中,确定所述正则曲线的所确定的部分上的到变换采样点的最近点;
以由此针对所述正则空间中围绕所述正则曲线的每一个所述变换采样点,确定所述正则空间中的所述正则曲线上的对应最近点;
针对每一个采样点,确定从所述采样点到所述曲线上所确定的最近点的距离;以及
生成包括纹理像素的阵列的图形纹理,其中每一个纹理像素对应于所述多个采样点中的至少一个采样点,并且针对所述至少一个采样点,将从所述至少一个采样点到所述曲线的所确定的(多个)距离与该每一个纹理像素关联。
本领域技术人员可以理解,本发明的这些方面和实施方式根据情况,可以而且优选地包括本文中描述的本发明的优选和任选特征的任何一种。
例如,从每个采样点到曲线上的对应最近点距离可以在正则空间或世界空间中确定。所确定的距离可被存储在,因此,纹理可以存储在(即,纹理像素可以位于)正则空间或世界空间中。然而优选的是,纹理(和纹理像素),因此也优选所确定的距离,被存储在中间空间中。该中间空间可以是任何合适和所需的空间。优选地,中间空间是世界空间的缩放和/或平移版本。这可能是在纹理像素的基准点设定原点,例如围绕采样点的边界框的左下角。
同样地,一个或更多个纹理中的每一个纹理像素优选地将上述针对正则曲线上的方案讨论的关于该纹理像素位置的信息与其相关联。换句话说,每一个纹理像素将代表正则空间的至少一个位置并针对正则空间中的该位置,存储与到正则曲线上的最近点的距离有关的信息。例如优选地,该信息可包括最近点的参数值和/或最近点所处的输入曲线的标识。
如果信息要被存储为纹理形式,则纹理可以是任何合适的和所希望的尺寸(即根据需要包含任意数量的纹理像素),并且每个纹素可以具有与之关联的任意数量的数据分量。然而,每个纹理像素优选地仅将与正则空间中单个离散位置有关的信息与其相关联。
纹理也可存储任何其它合适的和所希望的信息。例如,纹理可以存储以下一个或更多个:世界空间中输入曲线的定义(包括输入曲线的任何控制点);正则空间中的正则曲线的定义(包括正则曲线的任何控制点);输入曲线到相应正则曲线的变换;抗混叠信息(例如与所确定的最近点有关,到最近点的距离和/或判定采样点位于所述输入曲线的哪一侧);以及当曲线是椭圆或双曲线时输入和/或正则曲线的偏心。纹理也可存储与输入曲线有关的后处理信息,例如输入曲线将被渲染为描边曲线(stroked curve)和优选还有它的宽度(在这个例子中,到曲线的距离被用于确定采样点是落在描边曲线的宽度之内还是之外)。
当有多个输入曲线时,优选与多个不同输入曲线有关的信息,例如如上详述的,被一起存储为例如相同的纹理。例如,这可以通过在空间上分离纹理中的输入曲线,然后针对所讨论的输入曲线的纹理中的相应区域进行采样。此外,当输入曲线涉及字形时,优选地纹理存储与构成字体的所有字形有关的信息,例如以字体图集的形式。对于多个输入曲线,这可以通过例如在空间上分离纹理中的字形,然后针对所讨论的字形的纹理中的适当区域进行采样来实现。
如上所述,在本发明的这些方面和实施方式中,表示输入曲线的纹理被配置成使得围绕所述输入曲线的采样纹理点(纹理像素)会给出指示从纹理点到曲线上的最近点的距离的采样纹理值,例如在正则或世界空间中,并且也可能是曲线上到世界空间中的纹理点的最近点,以及可被存储在纹理中的任何其他信息。因此,当纹理被采样时,采样纹理值可被用于确定采样点位于曲线的哪一侧,然后可被用于使用输入曲线来生成渲染输出。
也可以或替代将必要信息存储在纹理中,所确定的信息的一些或全部,或者作为确定用于生成渲染输出的信息的过程的一部分例如作为中间步骤而被确定的信息,可以被存储在图形处理系统中,例如如上所述存储在高速缓存中的例如任何合适的和所希望的位置。当要实时确定信息时,这可能是方便的。在另一个实施方式中,所确定的信息可以存储在本地,例如芯片上,图形处理系统中存储器中,例如像素本地存储器中。
一旦确定了最近点的阵列(并且,例如,存储在纹理中),随后连同可以利用曲线上的最近点确定的任何其它合适的和所希望的信息,例如从采样点到曲线上的最近点的距离(并且,例如存储在纹理中)一起,可以按照在任何合适的和期望的方式,使用针对正则空间中的变换采样点确定的正则曲线上的最近点来生成使用输入曲线的渲染输出。这可能是通过直接使用正则曲线上所确定的最近点,或来自由其衍生的信息,例如当变换回世界空间中的输入曲线时的最近点或者从采样点到曲线上的最近点的距离(在正则空间或世界空间中,根据需要)。
如上所述,确定和存储到曲线的最近点的步骤可以离线执行,并且存储在例如纹理中,供以后生成渲染输出时使用。优选地,曲线上的最近点是实时确定的,虽然优选地也将曲线上的最近点(和/或与此相关的信息,如距离)存储在例如纹理中,使得它们可供将来使用,例如如果稍后要使用相同的输入曲线来生成渲染输出。
优选地,使用所确定的从该曲线上所确定的最近点到采样点的距离来生成渲染输出(在正则空间或世界空间中,根据需要)。因此,在一个优选实施方式中,为了使用输入曲线来生成渲染输出,当已经针对围绕该曲线的多个采样点中的每一个,确定了从该曲线上所确定的最近点到采样点的距离时,该方法包括以下步骤(图形处理系统包括被配置成执行以下操作的处理电路):
对于世界空间中的多个采样点中的每一个:
在世界空间中与采样点相对应的位置,对从输入曲线上所确定的最近点到采样点的所确定的距离进行采样;以及
在世界空间中使用针对采样点所确定的距离来生成渲染输出。
渲染输出可以按照任何合适的和所希望的方式使用所确定的最近点来生成,例如如上所述通过使用所确定的距离。在优选实施方式中,可以确定与输入曲线和采样点有关的进一步信息,其可在使用所确定的最近点生成渲染输出时被确定和/或与连同最近点一起被确定,使得它可以被存储,例如在纹理中,并在生成渲染输出时使用。
在优选实施方式中,该方法包括以下步骤(图形处理系统包括被配置成执行以下操作的处理电路):
对于围绕曲线的多个采样点中的每一个:
使用曲线上所确定的最近点来确定采样点应视为存在于曲线的哪一侧;
以由此针对围绕曲线的每个采样点,确定采样点应当被视为存在于曲线的哪一侧;以及
在生成渲染输出时,利用采样点被视为存在于曲线的哪一侧的确定。
如果合适和希望,确定采样点应当被视为存在于曲线的哪一侧的步骤可以在正则空间或世界空间中进行。
因此,一旦它们已经被确定(并且,例如,从纹理中采样),曲线上所确定的最近点中的每一个被优选使用,以确定采样点应当被视为存在于曲线的哪一侧。该确定可以按照任何适当和期望的方式来执行。知道采样点位于该曲线的哪一侧允许使用该信息来生成渲染输出。例如,如果采样点位于(例如具有至少部分由输入曲线限定的轮廓的)对象内,也可以按照对象的颜色着色,或者,如果采样点位于(例如由具有至少部分由输入曲线限定的轮廓的对象投射的)阴影内,它可以被适当地阴影化。
使用曲线上针对每个采样点确定的最近点来确定采样点应当被视为存在于曲线的哪一侧的步骤可包括采样点相对于所述曲线的切线检查。当针对采样点已经确定了采样点与曲线上的对应最近点之间的距离时,确定采样点应当被视为存在于曲线的哪一侧的步骤也可以使用从采样点到曲线上的最近点的距离。优选地,确定从采样点到曲线上对应最近点的距离的步骤还包括确定采样点应当被视为存在于曲线的哪一侧。同样,这可以在正则空间或世界空间中进行。
当有多个输入曲线,并且已经针对每个采样点以多个输入曲线作为整体确定(并且例如,存储)了曲线上的最近点时,该最近点可以被用来确定采样点应当被视为存在于曲线的哪一侧。或者,当已经针对每个采样点为多条曲线中的每一个(例如,至少一些)确定了最近点时,这些最近点可以一起被用来确定采样点应当被视为存在于曲线的哪一侧。
优选地,当存在多个输入曲线时,使用所确定的最近点确定采样点应当被视为存在于曲线的哪一侧的步骤包括(并优选,所述处理电路被配置成)执行采样点相对于多条曲线的(例如,至少一些)的平均正切检查。平均正切检查可以使用所确定的最近点与所有这多条曲线,例如针对字形来进行,但是优选地多条曲线的仅一个子集被用于执行平均正切检查。平均正切检查可以在正则空间或世界空间中进行。
优选地,用于平均正切检查的多条曲线的子集是预先选定的,例如使用在确定曲线上的最近点时所使用的相同的子集(其可以是最靠近采样点的)。
当输入曲线包括直线时,优选地,使用变换最近点确定采样点应当被视为存在于曲线的哪一侧的步骤包括(并优选,所述处理电路被配置成)确定采样点在正则空间中高于还是低于轴线。
当已针对每个采样点确定了采样点与曲线上对应最近点之间的距离和/或采样点应当被视为存在于曲线的哪一侧时,这两条信息至少一个可以被存储,例如在纹理中。所存储的信息可以在正则空间和/或在世界空间中。因此,当这两个信息都被确定时,它们可按照带符号的距离场的形式被使用(并且例如,存储)(采样点位于曲线的哪一侧决定了所存储的到曲线的距离的符号)。如上所述,优选地,确定距离的步骤还确定采样点位于曲线的哪一侧,因此可容易地使用和/或一起存储每个采样点的这两种信息。
优选地,生成渲染输出的步骤(所述处理电路被配置成)使用在正则空间或世界空间中从采样点到曲线上最近点的距离,和/或采样点应当被视为存在于曲线的哪一侧的确定。当从采样点到曲线上最近点的距离已被预先确定时,可以使用例如存储在纹理中的所确定的值。可替代地,从采样点到曲线上最近点的距离可以根据采样点和曲线上最近点来确定。
因此,在一组特别优选的实施方式中,在正则空间或世界空间中从采样点到曲线上最近点的距离,和采样点应当被视为存在于曲线的哪一侧的确定,这两个信息都被用于,例如以带符号的距离场的方式生成渲染输出。
渲染输出可以在世界空间中生成,例如最初限定了采样点以确定该曲线上的最近点的空间(从那里它们被变换到正则空间),并且因此在优选例如以纹理存储到最近点的距离的空间,或渲染输出可以在不同的“表面”空间中生成,例如,对应于要输出显示的空间。当文本要被渲染到例如面对观察者不平坦的三维表面上时,后一种情况可能是方便的。这在虚拟或增强现实中很有用。
在后一种实施方式中,曲线上所确定的最近点可以直接采样,并用来生成渲染输出。然而,优选地,为了使用输入曲线来生成渲染输出,当已经针对围绕曲线的多个采样点中的每一个确定了从该曲线上所确定的最近点到采样点的距离时,该方法优选包括如下步骤(图形处理系统包括被配置成执行以下操作的处理电路):
针对面空间中的多个采样点中的每一个:
在世界空间中与面空间中的采样点相对应的位置,对从输入曲线上最近点到采样点的所确定的距离进行采样;和
在世界空间中使用针对采样点所确定的距离来生成渲染输出。
当已经确定(并且,例如,存储)了采样点应当被视为存在于曲线的哪一侧,优选针对面空间中的多个采样点中的每一个,也在世界空间中与面空间中的采样点相对应的位置对该信息进行采样,然后用来生成渲染输出,例如使用信息在世界空间与面空间之间的适当变换,如果需要的话。在另一个实施方式中,从采样点到输入曲线上的最近点的距离和/或采样点应当被视为存在于曲线的哪一侧的确定可以在面空间中确定。
当在面空间中生成渲染输出时,优选地,在使用输入曲线生成渲染输出中的第一步骤是,针对面空间(要生成,例如要显示,渲染输出的空间)中多个采样点中的每一个,在世界空间中与该采样点相对应的位置,对从曲线上的最近点到采样点的所确定的距离进行采样(优选地还有,采样点应当被视为存在于曲线的哪一侧的确定)。为此,取决于面空间和世界空间之间的关系,可能必须执行针对采样点的在该面空间与世界空间之间的适当变换。例如,如果针对采样点确定的信息只在正则空间中确定,而没有变换回世界空间,则还可能需要进行从世界空间到正则空间的进一步变换。
例如,面空间可以位于平行于世界空间的平面上,例如当输入曲线形成要渲染的某个对象,例如字形,的至少一部分,使得渲染输出可能涉及2D图像时。在这种情况下,面空间可以是与世界空间相同的空间(或在缩放因子内),使得面空间的多个采样点可以直接对应于世界空间中的多个采样点(虽然面空间中采样点可能不以世界空间中的采样点相同的密度来提供,使得它们可能需要被适当映射到世界空间的相应采样点)。
在另一个实施方式中,可能需要面空间和世界空间之间执行采样点的变换,因为渲染输出可以涉及3D场景,例如曲线被用于创建阴影或当在曲面上显示书写(例如虚拟现实)。
如已经提到的,输入曲线(因此还有所提供的纹理)可用于例如使用阴影来渲染与输入曲线形成其至少一部分的对象不同的对象。然而优选地,输入曲线形成待渲染对象的至少一部分,例如它形成其轮廓。例如,待渲染对象可以包括字形(作为字体的一部分)。输入曲线可以按照任何弯曲表示的形式来定义,例如矢量图形。优选地,输入曲线以可缩放的矢量图形(SVG)格式来定义。
一旦确定了针对要在生成渲染输出时使用的输入曲线的信息,例如输入曲线上的最近点、从采样点到输入曲线上的最近点的距离和/或采样点应当被视为存在于曲线的哪一侧的确定,就可以按照任何合适的和所期望的方式,例如直接在世界空间中或从面空间,生成渲染输出。当纹理已确定和存储时,可以使用,例如任何合适的图形纹理映射处理来进行这种操作。
在一个优选实施方式中,渲染输出是这样生成,例如用于显示的:首先生成覆盖了渲染输出要出现的场景区域的基元(primitive),例如在面空间中,然后在由基元覆盖的场景区域上对输入曲线使用所确定的信息,例如通过对基元施加纹理,并相应地对基元进行阴影化。
可根据需要,例如通过定义一个或更多个覆盖要出现待绘制形状的场景区域,例如覆盖字形,的边界框或边界多边形,来生成基元。
生成基元时,确保所生成的基元仅对纹理的所需(及适当)的区域进行采样,可能是必要的。(在以相同纹理表示多个输入曲线(或者,例如,字形)时,尤其是这样。)
所生成的基元然后可以光栅化到生成的基元和片段内的多个采样点,以及例如,代表通过在纹理中与基元采样点(和/或片段)位置相对应的位置进行采样而施加到基元的每个采样点(和/或片段)的输入曲线的纹理。(纹理应该使用适当的纹理过滤处理,如,优选双向线性过滤,进行采样)。这可以涉及生成覆盖面空间中所述一个或更多个基元的采样点的阵列和将这些采样点变换到可以对例如根据纹理所确定的信息进行采样的世界空间。
采样信息,例如纹理值,随后被用来对相应的采样位置进行适当着色,例如使用采样点应当被视为存在于曲线的哪一侧的确定和/或采样位置到所述输入曲线的距离。基于该确定,根据情况对所述多个采样点分配数据,如红色、绿色和蓝色(RGB)颜色值和一个“阿尔法”透明度值,以允许正确显示例如包含字形的场景。
应当理解的是,当从采样点到输入曲线上最近点的距离可用于生成渲染输出时,这可以被用来允许执行相比只存在针对输入曲线的边缘的阈值而言更复杂的渲染效果,例如旋转、阴影化等。
本发明适用于任何形式或构造的渲染器,例如具有“流水线”构造(在此情况下,渲染器将为渲染流水线的形式)的渲染器。在一个优选实施方式中,本发明应用于硬件图形渲染流水线。本发明的各种功能和元素等都可根据需要来实现,例如优选地,通过适当的功能单元、处理逻辑、处理器、微处理器装置等。也可以设想,在一个实施方式中,本发明可以在功能最小化的,例如简装版的,图形处理流水线上执行。这样的系统可能适合于在低功率设备,例如可穿戴设备、电子阅读器等上使用。
本发明适用于所有形式的渲染,例如即时模式渲染、延迟模式渲染、基于块元的渲染等。在一个优选实施方式中,它被用在延迟模式渲染和基于块元的渲染器中。
如从上面可以理解的,本发明特别地,但不排他地,适用于2D或3D图形处理器和处理设备,并且相应地延伸到包括根据此处所描述的本发明的任何一个或更多个方面的装置或者按照此处所描述的本发明的任何一个或更多个方面来操作的2D或3D图形处理器和2D或3D图形处理平台。关于执行上述讨论的特定功能的任何硬件,例如2D或3D图形处理器可以以其他方式包括2D或3D图形处理器所包括的任何一个或更多个或所有通常功能单元等。在一个优选实施方式中,该系统包括固定功能硬件单元,其被具体配置为,例如确定曲线上到采样点的最近点和/或从采样点到曲线上的最近点的距离(例如,在正则空间中)。
本发明适用于任何合适的形式或构造的图形处理器。它特别适用于基于块元的图形处理器和图形处理系统。因此,在优选实施方式中,图形处理系统和图形处理流水线分别是基于块元的系统和流水线。
在特别优选的实施方式中,本发明的各种功能在生成并输出例如被写出到用于显示设备的帧缓存的经渲染的(例如,片段)数据的单个图形处理平台上执行。
本发明能够在任何合适的系统,例如合适配置的基于微处理器的系统中实现。在优选实施方式中,本发明在计算机和/或基于微处理器的系统中实现。
本发明的各种功能能够以任何合适且期望的方式来执行。例如,如所期望的,本发明的功能能够在硬件或软件中实现。因此,例如,除非另有说明,本发明的各种功能元件、阶段和“手段”可以包括能够被操作为执行各种功能等的合适的处理器或多个处理器、控制器或多个控制器、功能单元、电路、处理逻辑器、微处理器装置等,例如能够被编程为以期望的方式运行的适当专用的硬件元件和/或可编程硬件元件。
这里应当注意的是,如本领域技术人员将要理解的,本发明的各种功能、阶段等可以在给定的处理器上重复和/或执行。同样地,如果需要的话,各种处理阶段可以共享处理电路等。
关于执行上述的特定功能所需的任何硬件,数据处理系统和流水线另外能够包括数据处理流水线所包括的通常的功能单元中的任何一个或更多个或者全部等。
本领域技术人员还将理解,视情况而定,本发明的全部所述的方面和实施方式都能够并且优选地确实包括本文所述的优选的和可选的特征中的任何一个或多个或者全部。
根据本发明的方法可以至少部分地利用软件,例如计算机程序,来实现。因此可见,当从其他方面来看时,本发明提供:计算机软件,当安装在数据处理装置上时,该计算机软件具体适用于执行本文所述的方法的;计算机程序元件,其包括当该程序元件在数据处理装置上运行时用于执行本文所述的方法的计算机软件代码部分;以及计算机程序,当该程序在数据处理系统上运行时,该计算机程序包括适用于执行本文所述的方法或多种方法的全部步骤的代码装置。数据处理器可以是微处理器系统、可编程FPGA(现场可编程门阵列)等。
本发明还延伸至包括如下软件的计算机软件载体,即,当该软件被用来操作图形处理器时,包括数据处理装置的渲染器或微处理器系统促进与所述数据处理装置和所述处理器、渲染器或系统的连接,以执行本发明的方法的步骤。这种计算机软件载体可以是诸如ROM芯片、CD ROM、RAM、闪速存储器或磁盘的物理存储介质,或者可以是诸如通过电线的电子信号、光学信号或例如对卫星等的无线电信号这样的信号。
将要进一步理解的是,并非本发明的方法的全部步骤都需要由计算机软件来执行,因此从更宽泛的方面来看,本发明提供用于执行本文所列出的方法的步骤中的至少一个的计算机软件和安装在计算机软件载体上的这种软件。
因此本发明可以被合适地体现为计算机程序产品,与计算机系统一起使用。这种实施可以包括要么是固定在有形非瞬时性介质上的一系列计算机可读指令,该有形非瞬时性介质例如有计算机可读介质,例如磁盘、CD-ROM、ROM、闪速存储器或硬盘。这种实施还可以包括通过有形介质或者无形地利用无线技术经由调制解调器或其它接口装置可以向计算机系统传输的一系统计算机可读指令,该有形介质包括但不限制于光学或模拟通信线路,该无线技术包括但不限制于微波、红外或其它传输技术。一系列的计算机可读指令体现本文之前所述的全部或部分的功能。
本领域技术人员将理解,这种计算机可读指令能够以许多编程语言的形式来编写,与很多计算机架构或操作系统一起使用。进一步地,这种指令可以利用当前或未来的包括但不限制于半导体、磁性的或光学的任何存储技术来存储,或者可以利用当前或未来包括但不限制于光学、红外或微波的任何通信技术来进行发送。可以想到,这种计算机程序产品可以利用另外的印刷或电子文档,例如利用计算机系统在例如系统ROM或固定磁盘上预加载的压缩打包软件,作为可去除介质进行分发,或者通过网络例如因特网或万维网从服务器或电子公告板进行分发。
附图说明
下面将参照附图以示例的方式描述本发明的多个优选实施方式,图中:
图1示出了根据本发明一个实施方式的渲染文本串的工作流的概图;
图2示出了作为本发明一个实施方式的处理的一部分的要渲染的字形,其边缘由一系列输入曲线来定义;
图3示出了作为本发明一个实施方式的处理的一部分,对输入曲线从世界空间到正则空间的变换;
图4(i)、图4(ⅱ)和图4(ⅲ)示出了作为本发明一个实施方式的处理的一部分,对输入曲线从世界空间到正则空间的变换的步骤;
图5示出了作为本发明一个实施方式的处理的一部分,确定正则曲线上到采样点的最近点的步骤;
图6示出了在本发明一个实施方式中生成的针对三个字形的带符号的距离场的图形表示;
图7示出了针对被图形表示为纹理图集以用于本发明实施方式的字体中的每个字形的带符号的距离场的图形表示;
图8示出了根据本发明一个实施方式的用于执行用于渲染字形的处理的步骤的流程图。
具体实施方式
如上述讨论的,本发明的基本前提是,使用输入曲线生成渲染输出,确定输入曲线上到每个不同采样点的最近点用于在渲染中使用,例如以确定采样点应该被视为存在于输入曲线的哪一侧。输入曲线可以形成待渲染对象的至少一部分(例如,其边缘的至少一部分),或者它可形成要以某种其他方式被用作渲染输出(例如阴影化)的一部分的形状或曲线的至少一部分。
这里将在使用图形处理系统来渲染字形(作为字体一部分的字符的图形表示)形式的文本的上下文中描述本发明的优选实施方式,字形的边缘由一个或更多个输入曲线来定义。在本实施方式中,生成使用带符号的距离场表示字形的纹理,然后再对纹理进行采样,以例如使用带符号的距离场渲染字形,以确定采样点位于形成该字形的边缘的曲线的哪一侧。
图1示出了根据本发明一个实施方式的渲染文本串的工作流的概图。生成包含例如字“reinforced”的文本串的渲染输出的第一步骤(步骤1)是为每个字形(该字中的字母)定义一组矩形边界框,其被分成两个三角形用于定义每个字形的纹理。边界框可由字体文件提供,即,被输入到图形处理系统,每个框之间的间隔决定了字中每个字母之间的间隔。如下所述,随后可以计算针对每个单独字形的带符号的距离场(步骤2,图1)。
图2示出了边缘由一系列输入曲线定义的字形1。
为了渲染字形1来进行显示,字形1,或限定字形1的典型信息被初始输入到图形处理系统。
如图2中所示,字母“O”的字形1(例如为矢量图形对象的形式)通过曲线的起点和终点控制点的位置以及中间控制点的位置被定义为2D世界空间中的二次贝塞尔曲线序列2,3,4,5,6,7,8,9。该字形的外部由四个二次贝塞尔曲线2,3,4,5定义,字形的内部被另外4个二次贝塞尔曲线6,7,8,9定义。当字形1被渲染时,如将在下面更详细描述的,内部和外部曲线2,3,4,5,6,7,8,9之间的区域被适当地着色(shade),以显示字形1。
在渲染过程中,最初对形成字形1的构成二次贝塞尔曲线2,3,4,5,6,7,8,9中的每一个进行分别处理。对每个二次贝塞尔曲线2,3,4,5,6,7,8,9,将世界空间中的曲线映射到正则空间中的正则曲线的对应部分,以能够确定(在正则空间中)该曲线上到围绕该曲线的多个采样点中每一个的最近点。(在正则空间中确定最近点允许执行精确的计算,进而允许确定针对曲线的精确计算的带符号的距离场)。
下面将描述将世界空间中最初定义的输入曲线变换为正则空间中的正则曲线的处理。
图3示出了针对世界空间11中的输入贝塞尔曲线10到正则空间13中的正则曲线12的对应部分10"的示范性变换TUC。世界空间11中的输入贝塞尔曲线10具有在世界空间中限定了该曲线的开始控制点b0、结束控制点b2和中间控制点b1,它们被映射到正则空间13中的正则曲线12的部分10",该部分10"具有相应的起点b0'和相应的终点b2'。
在正则空间13中定义了正则曲线12,如以上所讨论的,它是一个预定的单个的或基本曲线,一个曲线族中的所有曲线都可以仅使用旋转、平移和/或均匀缩放变换到该单个的或基本曲线(或至少到其一部分)上。例如,在本实施方式中,在世界空间11中定义的输入贝塞尔曲线10是二次曲线(由三个控制点定义),正则曲线12是曲线y=x2。
如将要理解的,为了实施本实施方式,有必要确定世界到正则变换(TUC),即,将世界空间11中定义的输入贝塞尔曲线10映射到正则空间13中的正则曲线12的相应部分10″的变换。
图4中示出了在本实施方式中,对于任意给定的二次贝塞尔曲线,得到世界空间11中的输入贝塞尔曲线10到正则空间13中的正则曲线12的变换的方式。
在2D空间的投影表示中,2D空间中的点被表示为具有分量(ax,ay,1)的3D矢量。这种表示是均匀的,所以A和λA表示同一个点。
一般的二次曲线由以下形式的等式定义:
这相当于在分量方程
ax2+2hxy+by2+2gx+2fy+c=0
一般的二次贝塞尔曲线是通过满足以下条件的系数从这个等式定义的:
ab-h2=0
假定对于二次贝塞尔曲线的输入是2D中的三个控制点:b0,b1和b2,其中b0和b2是两个端点,而b1为中间点。由此看来,对于正则曲线y=x2的分段(segment),需要确定世界到正则变换。
世界到正则变换,如上所述,仅由旋转(由矩阵Mr定义)、平移(由矩阵Mt定义)和/或均匀缩放(由矩阵Ms=kI定义,其中k为常数,I是单位矩阵)。
第一阶段是从三个控制点b0,b1,b2找到分量方程的系数(a,b,c,f,g,h)。然后这些系数可以用于计算需要将输入贝塞尔曲线变到正则曲线上的旋转、平移和缩放。
在b0=(x0,y0),b1=(x1,y1)和b2=(x2,y2)的条件下,系数被给定为:
a=(y0–2y1+y2)2
b=(x0–2x1+x2)2
c=x0 2y2 2–4x0x1y1y2–2x0x2y0y2+4x0x2y1 2+4x1 2y0y2–4x1x2y0y1+x2 2y0 2
h=–(y0–2y1+y2)(x0–2x1+x2)
g=x0y0y2–2x0y1 2+2x0y1y2–x0y2 2+2x1y0y1–4x1y0y2+2x1y0y1–x2y0 2+2x2y0y1+x2y0y2–2x2y1 2
f=–(x0 2y2–2x0x1y1–2x0x1y2–x0x2y0+4x0x2y1–x0x2y2+2x1 2y0+2x1 2y2–2x1x2y0–2x1x2y1+x2 2y0)
现在需要找到经由组合的旋转、平移和缩放将世界空间中的点变换到正则空间的世界到正则变换(TUC),即3×3矩阵。这个变换的效果是将贝塞尔曲线的终点映射到正则曲线,y=x2上。
本实施方式中确定世界到正则变换(TUC)的处理的第一阶段是确定变换的旋转分量(旋转矩阵Mr)。所需的旋转被确定为旋转世界空间11中的输入二次贝塞尔曲线10的对称轴21使之平行于正则空间13中的正则曲线12的对称轴23,见图4(i)。
该旋转是通过针对输入贝塞尔曲线10操纵二次型以计算旋转矩阵Mr而确定的。首先,旋转矩阵Mr被定义为
其中,
符号(signum)函数被定义为
signum(x)=-1如果x<0
signum(x)=+1否则
对于输入二次贝塞尔曲线10上的点的集合,保证条件ab-h2=0,所以表达式中对于cosθ和sinθ的平方根的幅角都是正的。(在a=b=0的情况下,这是一条直线,其应预先标识和单独处理,如下面讨论的)。
因此可以通过旋转来定义针对f和g的变换值:
一旦世界到正则变换的旋转分量被确定,接下来就确定平移分量(即,旋转矩阵Mt)。此处理示于图4(ⅱ)。
所需的平移被确定为将旋转后的输入曲线14的最低点20平移到正则空间13中的原点(0,0),即正则曲线12的相应最低点22所需的平移。该平移同样是通过针对输入贝塞尔曲线10操纵二次型以计算平移矩阵Mt而确定的。首先,旋转矩阵Mt被定义为
其中,
最后,确定世界到正则变换的均匀缩放分量(即,缩放矩阵Ms)。这在图4(ⅲ)中示出。
如将要理解的,已经被适当旋转并平移到正则空间13中的世界空间11中的输入曲线10,即图4(ⅲ)中的曲线16,现在的形式为y=x2/|λ|,其中1/|λ|是待确定的缩放因子。同样,这种平移是通过针对输入贝塞尔曲线10操纵二次型以计算缩放矩阵Ms而确定的。首先,缩放矩阵Ms被定义为:
其中,
一旦计算出将在世界空间11中定义的输入贝塞尔曲线10映射到正则空间13中的正则曲线12的相应部分10″上所需要的世界到正则变换,即TUC=MsMtMr=1/|λ|MtMr,就可以通过对输入贝塞尔曲线10的参数应用所确定的变换来确定正则曲线12的实际部分10″。该处理在图3中示出。
如在图3中所示,使用世界到正则变换TUC将在世界空间11中定义的并且具有控制点b0,b1,b2的输入贝塞尔曲线10映射到正则曲线12的对应部分10″。
正则曲线段10″的起点和终点b0’,b2’定义了正则空间13中的输入贝塞尔曲线10的参数(x)范围。因此,如图3所示,正则曲线段10″具有在正则空间13中的参数位置XA和XB之间延伸的参数范围。
在本实施方式中,为形成字形1的每个输入贝塞尔曲线2,3,4,5,6,7,8,9定义了世界空间11中的一组采样点(例如,如图2所示)。对于任何给定的输入贝塞尔曲线(例如,如图3中所示在世界空间11中定义的输入贝塞尔曲线10),针对围绕所述输入贝塞尔曲线的每个采样点来确定输入贝塞尔曲线上的最近点。
对于世界空间11中的给定采样点,输入贝塞尔曲线10上的最近点如下来确定:利用先前确定的用于将世界空间11中的输入贝塞尔曲线10映射到正则空间13中的正则曲线12的部分10″上的世界到正则变换TUC,首先将世界空间中的采样点变换到正则空间13中的对应位置。通过使从正则空间13中与世界空间11的采样点相对应的变换采样点到正则曲线的距离最小化,确定正则曲线12的部分10″上到变换采样点的最近点。
对于具有坐标(u,v)的变换采样点,从该点到曲线的距离在正则空间中可以仅就x坐标写为:
使D2最小化是相对简单的,这给出了
4x3+(1-2v)2x-2u=0
或者
x3+ax+b=0
其中
这个三次方程已经是标准形式,因此可以直接写出封闭形式的解。根据a和b之间的关系,有三种情况要考虑。
当b2/4+a3/27>0时,仅存在如下定义的一个实数根
该立方根是明确定义的,因为该幅角被保证是实数,并且该立方根是针对正的和负的幅角二者定义的(负数的立方根是负的)。
当b2/4+a3/27=0时,这是退化的情况,其中三个根中的两个重合。然而,因为在寻求全局最小值,对任何拐点都没有兴趣,所以之前的对于x1的公式仍然成立并且有单一的最小值。
(需要存储一个解与两个解之间的过渡曲线是
这条曲线从抛物线的焦点延伸出去。)
当b2/4+a3/27=0时,这对应于具有三个不同实数根的三次方程,由下式给出:
其中
如果b>0
如果b<0
中间根(取决于)是一个全局最大值且可以忽略。外面的两个根将对应于局部最小值且是感兴趣的。绝对最小值(这两个局部最小值之一)可能不一定是正则曲线12的部分10″上到变换采样点的最近点,因为它可能会落入正则曲线12的部分10″之外。进行检查以查看外面的根中的一个或两个是否落在正则曲线12的部分10″之内,如果需要,对从变换采样点到正则曲线12的部分10″上与外面的两个根相对应的点的距离进行比较,从而能够确定正则曲线12的部分10″上到变换采样点的最近点。
一旦正则曲线12的部分10″上到变换采样点的这个最近点被确定,就计算在正则空间13中从变换采样点的位置到该点的距离(如果尚未作为最近点的确定的一部分计算出该距离,如上文所述)。
从变换采样点到曲线上的最近点的距离可以按照任何合适的和所期望的方式来确定。因为变换采样点的x和y坐标是已知的,且最近点的x值已经确定,所以y=x2(正则曲线)给出了最近点的y坐标。于是很容易地从这两组坐标确定所述距离。
计算所述距离的一种方法是将正则曲线12的部分10″的起点b0’平移到原点,然后旋转终点b2’使之位于正x轴上。
对于正则曲线12的包括具有坐标(x0,y0)的起点b0’和具有坐标(x1,y1)的终点b2’的部分10″,首先定义平移矩阵
和旋转矩阵
其中
这将终点旋转至(d,0)。这个点可以缩放到点(1,0),但是这样做没有真正的益处。
因此,变换矩阵可被定义为R=RθT,变换点的坐标表示为(u,v)。于是,到曲线上的最近点的距离s由下式给出:
如果u<0
s=|v|如果0<u<d
如果u>0
注意,v的符号还决定了采样点位于线的哪一侧,所以这可以被用作带符号的距离场的符号。
这个距离随后与从采样点到正则曲线的所述部分的每一端的距离进行比较。在这三个点当中,正则曲线12的部分10″上与变换采样点的距离最小的点被确定为正则曲线12上到变换采样点的最近点。
图5示出了已经被确定为正则曲线12的部分10″上到正则空间13中的变换采样点P最近的点p0。对于该变换采样点P,正则曲线上的最近点p0已被确定为是使从变换采样点P到正则曲线12的距离最小化的点,即由此确定正则曲线12上的点p0是到变换采样点P的最近点。这是因为,对于此采样点和正则曲线的所述部分,变换采样点P与最近点p0之间的距离d小于从变换采样点P到正则曲线的所述部分的端点的距离。
图5中还示出了,从变换采样点P到正则曲线12的部分10″上的最近点p0的距离d可以简单地根据这些点来确定,如果它尚未从使距离最小化以找到最近点p0的处理中确定。
当输入曲线是一条直线时,使用包括旋转和平移的世界到正则变换将在世界空间中定义的曲线变换到正则空间的x轴上(输入曲线如果长度有限,也可以缩放到例如位于正则空间的x轴上的0和1之间,但这不是必要的)。于是,正则曲线上的最近点就只是正则空间中变换采样点的x坐标。当输入曲线具有有限长度,带有起点和终点时,如果变换采样点的x坐标位于正则曲线的起点和终点的x坐标之间,则正则曲线上到变换采样点的最近点就是变换采样点的x坐标。当变换采样点的x坐标位于正则曲线的起点和终点之外时,正则曲线上到变换采样点的最近点是起点和终点当中更接近变换采样点的一方。
一旦确定了(从正则空间13中的变换采样点P到正则曲线12上的最近点p0的)距离d,以及必要时正则曲线12的部分10″上的最近点p0,就利用从世界空间11到正则空间13的变换TUC的逆变化将其变换到世界空间11,例如,以给出输入贝塞尔曲线10上到世界空间11中的采样点的最近点以及这两个点之间的距离。针对世界空间11中围绕输入贝塞尔曲线10的阵列中的每个采样点,重复确定输入贝塞尔曲线10上对于采样点的最近点和这两个点之间的距离的这个处理。
还可以利用针对附近采样点已经确定的距离,确定针对另一组采样点到输入贝塞尔曲线10的距离,而无需执行到正则空间的变换,以及在正则空间中的确定。
一旦在围绕输入贝塞尔曲线10的阵列中,对每个采样点完成了这个操作,使得已为世界空间11中的每个采样点确定了输入贝塞尔曲线10上的最近点和到它的距离,就对形成字形1的输入贝塞尔曲线2,3,4,5,6,7,8,9中的每一个重复这个处理。
利用与形成字形1的多个输入贝塞尔曲线2,3,4,5,6,7,8,9相对应的采样点的这些多个阵列,可以确定作为整体的多个输入贝塞尔曲线2,3,4,5,6,7,8,9上对围绕整个字形1的采样点的阵列中的每个采样点的最近点,并且还可以确定相应最近点与采样点之间的距离。对于给定的采样点,通过简单地比较已经确定的对于围绕各个贝塞尔曲线2,3,4,5,6,7,8,9的每个采样点阵列中的相应采样点的距离并选择最小的距离,就可以确定多个输入贝塞尔曲线2,3,4,5,6,7,8,9上的最近点和到它的距离。
(可以只使用构成字形1的所有多个输入贝塞尔曲线2,3,4,5,6,7,8,9的子集,例如通过丢弃多个输入贝塞尔曲线2,3,4,5,6,7,8,9中明显比其他曲线更远的一个或更多个,来确定多个输入贝塞尔曲线2,3,4,5,6,7,8,9上对于给定采样点的最近点。例如,对于图2中所示的字形1,对于位于字形1的右侧的采样点,可以丢弃在字形1的左侧的输入曲线3,9)。
如果,例如作为确定从采样点到曲线上的最近点的距离的一部分,尚未确定世界空间11中每个采样点位于输入贝塞尔曲线10的哪一侧,则随后通过执行正则空间11中的采样点对与多个输入贝塞尔曲线2,3,4,5,6,7,8,9相对应的正则曲线进行平均正切检查来确定。同样,用于对采样点进行平均正切检查的多个输入贝塞尔曲线2,3,4,5,6,7,8,9可以是构成字形1的所有多个输入贝塞尔曲线2,3,4,5,6,7,8,9的子集,并且这些可以对应于用于确定多个输入贝塞尔曲线2,3,4,5,6,7,8,9上到采样点的最近点的子集。
利用世界空间11中每个采样点位于输入贝塞尔曲线10的哪一侧,连同采样点与输入贝塞尔曲线10上到采样点的所确定的最近点之间的距离,为所述距离提供一个符号:与位于字形内部的采样点相对应的距离被提供了负号,与位于字形外部的采样点相对应的距离被提供了正号。
带符号的距离,与针对围绕字形1的每个采样点输入贝塞尔曲线10上到采样点的所确定的最近点和所确定的最近点所位于的输入贝塞尔曲线(形成字形1的多个输入贝塞尔沿着曲线2,3,4,5,6,7,8,9)的标识一起,被存储在纹理中,即纹理中存储此信息的每个纹理像素都对应于一个采样点。因此,该纹理将字形1存储为带符号的距离场,其随后可用于渲染字形1,如下面所讨论的。
如上面针对特定的字体中每个字形所讨论的确定要存储在纹理中每个纹理像素的信息(带符号的距离、输入贝塞尔曲线上所确定的最近点和所确定的最近点所位于的输入贝塞尔曲线的标识),每个字形的这种信息(即包括带符号的距离场)被存储在纹理中。
针对代表字符“c”26,“2”27和“,”28的字形,示例性带符号的距离场的图形被示出在图6中。字形26,27,28内部、相对于定义了字形26,27,28的边缘的输入贝塞尔曲线上各自最近点具有正距离值(高于特定阈值)的点被表示为黑色。字形26,27,28外部、相对于定义了字形26,27,28的边缘的曲线上各自最近点具有负距离值(低于特定阈值)的点被表示为白色。接近(正和负阈值之间)定义了字形26,27,28的边缘的输入贝塞尔曲线的点被表示为灰度,这取决于它们与曲线上的最近点的距离。
带符号的距离值的阈值是这样的:当这些值被存储在纹理中时,如果它们高于或低于特定值时,只有适当的(正或负)阈值被存储(或一些其它默认值)。这是因为,在考虑相对于定义了字形26,27,28的边缘的曲线的距离超过一定距离的点时,确切的距离并不重要,因为在生成渲染输出时,它不会被考虑。其中可以使用从采样点到定义了字形26,27,28的边缘的输入曲线上的最近点的确切距离来例如生成特定渲染效果的感兴趣的区域是针对那些靠近字形26,27,28的边缘的点。因此,对于这些位于正负阈值之间的距离值,存储针对带符号的距离场计算出的值,而不施加阈值。
可以针对构成字体的每个字形(字符),例如字母、数字和标点符号来计算要被存储在纹理中的信息。图7示出了针对被图形表示为纹理图集29的字体中每个字形的带符号的距离场的图形表示。每个字形的纹理在纹理图集29内是空间分离的,使得当需要渲染特定字形时,能够对纹理图集29的适当区域进行采样。在本示例中,纹理图集29被紧密地堆放以保存在纹理存储器中,所以每个字形具有不同的大小。
一旦针对要渲染的字形已经生成了带符号的距离场(或为了生成如图7所示的完整纹理图集)并将其存储在纹理中,就可以通过在每个字形的边界框内的采样点的阵列对该纹理进行采样,或者当作为渲染处理的一部分实时计算带符号的距离场时使用在采样点的阵列处的所确定的带符号的距离场,来渲染所需的字形。这个步骤可以使用抗混叠技术,使用带符号的距离场,如图1的步骤3所示,其随后可以在渲染到纹理操作中被存储为纹理的一部分。
然后,可以显示最终渲染的文本串,如图1中“结果”步骤所示。
字形可以渲染在“面”空间(即在其中生成渲染输出的空间)中,其与如果要在三维弯曲表面上显示书写而为字形定义纹理的世界空间不同。在本实施方式中,在要绘制该字形的面空间中的场景(显示)区域上生成一个或更多个基元,使得该字形被所述一个或更多个基元所覆盖。
这些基元然后以正常方式被光栅化为被传递给着色流水线的片段以用于着色。(如果如可能发生,对基元进行光栅化不生成任何片段(因为在场景被显示时,基元实际上并不覆盖场景的任何采样点),则该处理可以在这里停止,因为这意味着在场景将被显示时,该形状实际上不会在场景中被看到。)
然后将适当的纹理施加到基元来绘制字形。这是通过如下来实现的:使用与要绘制的字形相对应的纹理映射图(或纹理映射图的一部分),以通过针对(多个)基元所覆盖的场景中的(一个或多个)采样点的位置,从表示字形的纹理中取出纹理样本,而对(一个或多个)基元应用纹理(将面空间中的采样点适当变换到存储有该纹理的世界空间)。
每个采样纹理值,包括到定义了该字形的多个输入曲线上最近点的带符号的距离,然后被用于确定样本位置是应被绘制(渲染)为落入字形内(也就是,实际上,位于由输入曲线定义的字形的边缘的内部),还是因为落在字形以外而被丢弃,这取决于带符号的距离的值。
图8示出了用于在图形处理单元(GPU)的图形处理流水线中执行上述根据本发明的实施方式的渲染字形的处理的步骤的流程图30。
首先,从存储在中央处理单元(CPU)中的字体文件中提取例如在CPU上生成的预先定义的路径31。这些路径使用直线、贝塞尔曲线、弧(例如定义了字形的边缘),以及颜色和例如定义了输入贝塞尔曲线在世界空间中的起点和终点的其它位置数据,来定义该字形。
这些路径(输入曲线)随后由图形处理流水线(SDF生成器)32的处理级来处理(按照上述方式针对每个输入曲线使用到正则空间中的变换),以针对每个字形,使用返回在正则空间中变换采样点与正则曲线上的最近点之间的距离的查找表(LUT)33来生成带符号的距离场。
路径缓存34然后存储该字形的带符号的距离场,以及与路径(输入曲线)有关的信息,该信息然后在固定功能单元36(其使用纹理管道37来访问带符号的距离场的值)中与位置数据35组合,以生成要渲染的最终纹理。这可能涉及混合、掩蔽和裁剪测试操作中的一个或更多个。
然后,要渲染的最终纹理被传递到帧缓存38用于输出,例如显示。
从上文可以看出,例如作为生成带符号的距离场的一部分,使用正则空间来确定正则曲线上到采样点的最近点提供了一种使用一个或更多个输入曲线来生成渲染输出的有效且便捷的机制,这使得例如使用矢量图形所定义的输入曲线的数学表示能够保留。这是确定此信息的简单且精确的方式,因此提供了一种使用输入曲线来生成渲染输出的快速且准确的处理。
提供一种使用这样的输入曲线来生成渲染输出的简单处理,有利于减少运行该处理的设备的处理和电力负载,从而允许它被用在更简单的设备上,例如用于由电池供电并且可以不执行多功能处理的移动和可穿戴设备上。除了该处理的效率提高可允许它执行更复杂的渲染特征以外,或在需要时能够实时地(重新)计算必要的信息,而相比先前的技术不会造成设备的处理和电力负载的相关增加。
Claims (16)
1.一种在图形处理系统中使用输入曲线生成渲染输出的方法,该方法包括以下步骤:
针对在世界空间中定义的输入曲线:
确定在正则空间中定义的正则曲线的与所述输入曲线相对应的部分和将所述输入曲线映射到所述正则曲线的所述部分所需的变换;
针对所述世界空间中围绕所述输入曲线的多个采样点中的每一个采样点:
利用在所述世界空间和所述正则空间之间的所确定的变换将所述采样点从所述世界空间变换到所述正则空间;以及
在所述正则空间中,确定所述正则曲线的所确定的部分上的到变换采样点的最近点;
以由此针对所述正则空间中围绕所述正则曲线的每一个所述变换采样点,
确定所述正则空间中的所述正则曲线上的对应最近点;以及
在生成渲染输出时,使用在所述正则空间中所述正则曲线上针对所述变换采样点所确定的最近点。
2.根据权利要求1所述的方法,其中,确定所述正则曲线上的所述最近点的步骤包括:使从所述变换采样点到所述正则曲线的距离最小化。
3.根据权利要求1或2所述的方法,其中,确定所述正则曲线上的所述最近点的步骤包括:确定从所述变换采样点到所述正则曲线的所述部分的起点和终点的距离,并确定所述起点和所述终点中的一个是否为所述正则曲线上到所述变换采样点的所述最近点。
4.根据权利要求1或2所述的方法,其中,确定所述正则曲线上的所述最近点的步骤包括:在所述正则空间中确定所述变换采样点和所述正则曲线上到所述变换采样点的所述最近点之间的距离。
5.根据权利要求4所述的方法,所述方法还包括以下步骤:对于每一个采样点,存储从所述采样点到所述曲线上的所述最近点的所确定的距离。
6.根据权利要求1或2所述的方法,所述方法还包括以下步骤:
针对围绕曲线的所述多个采样点中的每一个采样点:
使用所述曲线上所确定的最近点来确定所述采样点应视为存在于所述曲线的哪一侧;
以由此对于围绕所述曲线的每一个采样点,确定采样点应视为存在于所述曲线的哪一侧;以及
在生成所述渲染输出时,使用所述采样点应视为存在于所述曲线的哪一侧的确定。
7.一种在图形处理系统中使用多个输入曲线来生成渲染输出的方法,该方法包括以下步骤:
对于所述多个输入曲线中的每一个输入曲线,执行根据权利要求1或2所述的方法;
以由此针对围绕所述多个正则曲线中的每一个正则曲线的正则空间中的变换采样点的阵列,确定所述正则空间中所述多个正则曲线中的每一个正则曲线上分别对于所述变换采样点的阵列的相应最近点的阵列;以及
在生成渲染输出时,使用在所述正则空间中针对所述变换采样点的阵列所确定的所述多个正则曲线中的每一个正则曲线上的最近点的阵列。
8.一种使用输入曲线来生成渲染输出的图形处理系统,该图形处理系统包括:
处理电路,其能够针对在世界空间中定义的输入曲线:
确定在正则空间中定义的正则曲线的与所述输入曲线相对应的部分和将所述输入曲线映射到所述正则曲线的所述部分所需的变换;
针对所述世界空间中围绕所述输入曲线的多个采样点中的每一个采样点:
利用在所述世界空间和所述正则空间之间的所确定的变换将所述采样点从所述世界空间变换到所述正则空间;以及
在所述正则空间中,确定所述正则曲线的所确定的部分上的到变换采样点的最近点;
以由此针对所述正则空间中围绕所述正则曲线的每一个所述变换采样点,
确定所述正则空间中的所述正则曲线上的对应最近点;和
处理电路,其能够在生成渲染输出时,使用在所述正则空间中所述正则曲线上针对所述变换采样点所确定的最近点。
9.根据权利要求8所述的图形处理系统,其中,为了确定所述正则曲线上的所述最近点,所述处理电路能够使从所述变换采样点到所述正则曲线的距离最小化。
10.根据权利要求8或9所述的图形处理系统,其中,为了确定所述正则曲线上的所述最近点,所述处理电路能够确定从所述变换采样点到所述正则曲线的所述部分的起点和终点的距离,并确定所述起点和所述终点中的一个是否为所述正则曲线上到所述变换采样点的所述最近点。
11.根据权利要求8或9所述的图形处理系统,其中,为了确定所述正则曲线上的所述最近点,所述处理电路能够在所述正则空间中确定所述变换采样点和所述正则曲线上到所述变换采样点的所述最近点之间的距离。
12.根据权利要求11所述的图形处理系统,其中,所述处理电路能够对于每一个采样点,存储从所述采样点到所述曲线上的所述最近点的所确定的距离。
13.根据权利要求8或9所述的图形处理系统,其中,所述处理电路能够:
针对围绕曲线的所述多个采样点中的每一个采样点,使用所述曲线上所确定的最近点来确定所述采样点应视为存在于所述曲线的哪一侧;
以由此对于围绕所述曲线的每一个采样点,确定采样点应视为存在于所述曲线的哪一侧;以及
其中,所述处理电路能够在生成所述渲染输出时,使用所述采样点应视为存在于所述曲线的哪一侧的确定。
14.根据权利要求8或9所述的图形处理系统,其中,所述图形处理系统使用多个输入曲线来生成渲染输出,所述图形处理系统包括能够执行以下步骤的处理电路:
针对在世界空间中定义的多个输入曲线中的每一个输入曲线,确定在正则空间中定义的正则曲线的与所述输入曲线相对应的部分和将所述输入曲线映射到所述正则曲线的所述部分所需的变换;
针对所述世界空间中围绕所述输入曲线的多个采样点中的每一个采样点:
利用在所述世界空间和所述正则空间之间的所确定的变换将所述采样点从所述世界空间变换到所述正则空间;以及
在所述正则空间中,确定所述正则曲线的所确定的部分上的到变换采样点的最近点;
以由此针对围绕所述多个正则曲线中的每一个正则曲线的所述正则空间中的变换采样点的阵列,确定所述正则空间中所述多个正则曲线中的每一个正则曲线上分别对于所述变换采样点的阵列的相应最近点的阵列;以及
在生成渲染输出时,使用在所述正则空间中针对所述变换采样点的阵列所确定的所述多个正则曲线中的每一个正则曲线上的最近点的阵列。
15.一种生成图形纹理的方法,该图形纹理在使用输入曲线来生成渲染输出时在图形处理系统中使用,该方法包括以下步骤:
针对在世界空间中定义的输入曲线:
确定在正则空间中定义的正则曲线的与所述输入曲线相对应的部分和将所述输入曲线映射到所述正则曲线的所述部分所需的变换;
针对所述世界空间中围绕所述输入曲线的多个采样点中的每一个采样点:
利用在所述世界空间和所述正则空间之间的所确定的变换将所述采样点从所述世界空间变换到所述正则空间;以及
在所述正则空间中,确定所述正则曲线的所确定的部分上的到变换采样点的最近点;
以由此针对所述正则空间中围绕所述正则曲线的每一个所述变换采样点,确定所述正则空间中的所述正则曲线上的对应最近点;
针对每一个采样点,确定从所述采样点到所述曲线上所确定的最近点的距离;以及
生成包括纹理像素的阵列的图形纹理,其中每一个纹理像素对应于所述多个采样点中的至少一个采样点,并且针对所述至少一个采样点,将从所述至少一个采样点到所述曲线的所确定的距离或所确定的多个距离与该每一个纹理像素关联。
16.一种用于生成图形纹理的设备,该图形纹理在使用输入曲线来生成渲染输出时在图形处理系统中使用,该设备包括:
处理电路,其能够针对在世界空间中定义的输入曲线:
确定在正则空间中定义的正则曲线的与所述输入曲线相对应的部分和将所述输入曲线映射到所述正则曲线的所述部分所需的变换;
针对所述世界空间中围绕所述输入曲线的多个采样点中的每一个采样点:
利用在所述世界空间和所述正则空间之间的所确定的变换将所述采样点从所述世界空间变换到所述正则空间;以及
在所述正则空间中,确定所述正则曲线的所确定的部分上的到变换采样点的最近点;
以由此针对所述正则空间中围绕所述正则曲线的每一个所述变换采样点,确定所述正则空间中的所述正则曲线上的对应最近点;
针对每一个采样点,确定从所述采样点到所述曲线上所确定的最近点的距离;以及
生成包括纹理像素的阵列的图形纹理,其中每一个纹理像素对应于所述多个采样点中的至少一个采样点,并且针对所述至少一个采样点,将从所述至少一个采样点到所述曲线的所确定的距离或所确定的多个距离与该每一个纹理像素关联。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1513675.7A GB2541644B (en) | 2015-08-03 | 2015-08-03 | Graphics processing systems |
GB1513675.7 | 2015-08-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106408626A true CN106408626A (zh) | 2017-02-15 |
CN106408626B CN106408626B (zh) | 2021-08-17 |
Family
ID=54063090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610629321.7A Active CN106408626B (zh) | 2015-08-03 | 2016-08-03 | 生成渲染输出的系统和方法及生成图形纹理的装置和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10140736B2 (zh) |
JP (1) | JP6863693B2 (zh) |
KR (1) | KR102666054B1 (zh) |
CN (1) | CN106408626B (zh) |
GB (1) | GB2541644B (zh) |
TW (1) | TWI708208B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109166359A (zh) * | 2018-09-28 | 2019-01-08 | 广州狄卡视觉科技有限公司 | 一种孤独症康复训练动作导引教育互动方法及系统 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10347016B2 (en) * | 2016-01-12 | 2019-07-09 | Monotype Imaging Inc. | Converting font contour curves |
US10311060B2 (en) * | 2017-06-06 | 2019-06-04 | Espial Group Inc. | Glyph management in texture atlases |
US10936792B2 (en) | 2017-12-21 | 2021-03-02 | Monotype Imaging Inc. | Harmonizing font contours |
US11062499B2 (en) * | 2018-10-31 | 2021-07-13 | Facebook Technologies, Llc | Distance-field texture interpolation optimizations |
US11074724B2 (en) * | 2018-12-07 | 2021-07-27 | Microsoft Technology Licensing Llc | GPU calculation of signed distance fields |
US11037341B1 (en) * | 2020-01-15 | 2021-06-15 | Adobe Inc. | Generative shape creation and editing |
US12002132B1 (en) * | 2021-03-09 | 2024-06-04 | Apple Inc. | Rendering using analytic signed distance fields |
US11875435B2 (en) * | 2021-10-12 | 2024-01-16 | Adobe Inc. | Generating scalable fonts utilizing multi-implicit neural font representations |
US11893667B2 (en) * | 2022-03-31 | 2024-02-06 | Think Silicon Research and Technology Single Member S.A. | Techniques for rendering vector graphics using precomputed textures |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100097383A1 (en) * | 2008-10-06 | 2010-04-22 | Arm Limited | Graphics processing systems |
CN101714259A (zh) * | 2008-10-06 | 2010-05-26 | Arm有限公司 | 图形处理系统 |
CN101714261A (zh) * | 2008-10-06 | 2010-05-26 | Arm有限公司 | 图形处理系统 |
CN101986344A (zh) * | 2009-07-28 | 2011-03-16 | Arm有限公司 | 图形处理系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7564459B2 (en) * | 2005-10-31 | 2009-07-21 | Microsoft Corporation | Resolution-independent curve rendering using programmable graphics hardware |
US8059119B2 (en) * | 2007-12-05 | 2011-11-15 | Stmicroelectronics S.R.L. | Method for detecting border tiles or border pixels of a primitive for tile-based rendering |
CN103092577A (zh) * | 2011-10-28 | 2013-05-08 | 鸿富锦精密工业(深圳)有限公司 | 三维影像量测程序生成系统及方法 |
-
2015
- 2015-08-03 GB GB1513675.7A patent/GB2541644B/en active Active
-
2016
- 2016-07-27 TW TW105123682A patent/TWI708208B/zh active
- 2016-08-02 JP JP2016151823A patent/JP6863693B2/ja active Active
- 2016-08-02 US US15/226,538 patent/US10140736B2/en active Active
- 2016-08-03 CN CN201610629321.7A patent/CN106408626B/zh active Active
- 2016-08-03 KR KR1020160098709A patent/KR102666054B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100097383A1 (en) * | 2008-10-06 | 2010-04-22 | Arm Limited | Graphics processing systems |
CN101714259A (zh) * | 2008-10-06 | 2010-05-26 | Arm有限公司 | 图形处理系统 |
CN101714261A (zh) * | 2008-10-06 | 2010-05-26 | Arm有限公司 | 图形处理系统 |
CN101986344A (zh) * | 2009-07-28 | 2011-03-16 | Arm有限公司 | 图形处理系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109166359A (zh) * | 2018-09-28 | 2019-01-08 | 广州狄卡视觉科技有限公司 | 一种孤独症康复训练动作导引教育互动方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US10140736B2 (en) | 2018-11-27 |
US20170039739A1 (en) | 2017-02-09 |
TWI708208B (zh) | 2020-10-21 |
GB2541644B (en) | 2017-11-22 |
JP6863693B2 (ja) | 2021-04-21 |
GB2541644A (en) | 2017-03-01 |
KR102666054B1 (ko) | 2024-05-16 |
CN106408626B (zh) | 2021-08-17 |
JP2017073120A (ja) | 2017-04-13 |
GB201513675D0 (en) | 2015-09-16 |
KR20170016305A (ko) | 2017-02-13 |
TW201712632A (zh) | 2017-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106408626A (zh) | 图形处理系统 | |
US8928668B2 (en) | Method and apparatus for rendering a stroked curve for display in a graphics processing system | |
CN101986344B (zh) | 图形处理系统 | |
EP1453007A2 (en) | Color gradient paths | |
US10540789B2 (en) | Line stylization through graphics processor unit (GPU) textures | |
US8477148B2 (en) | Graphics processing systems | |
US8743135B2 (en) | Graphics processing systems | |
US20200279415A1 (en) | Efficiently Computed Distance Fields | |
US11087511B1 (en) | Automated vectorization of a raster image using a gradient mesh with arbitrary topology | |
CN105023288B (zh) | 二维矢量实线在三维场景中的视觉误差消除方法 | |
US11989807B2 (en) | Rendering scalable raster content | |
Parilov et al. | Real-time rendering of textures with feature curves | |
CN102074004B (zh) | 空间实体遮挡类型的判定方法及装置 | |
Reshetov et al. | Infinite resolution textures. | |
Ivo et al. | Improved silhouette rendering and detection of splat-based models | |
US11776179B2 (en) | Rendering scalable multicolored vector content | |
CN114937117A (zh) | 一种热力图渲染方法、系统、介质和设备 | |
Cha et al. | An optimized rendering algorithm for hardware implementation of openVG 2D vector graphics | |
Livny et al. | Interactive GPU-based adaptive cartoon-style rendering | |
Schröder et al. | Feature-based Visualization of Dense Integral Line Data | |
Beebe | A Bibliography of Computer Graphics Forum |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190117 Address after: cambridge Applicant after: Advanced Risc Machines Ltd. Address before: cambridge Applicant before: Advanced Risc Machines Ltd. Applicant before: GEOMERICS LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |