CN104541305A - Gpu加速的路径再现 - Google Patents
Gpu加速的路径再现 Download PDFInfo
- Publication number
- CN104541305A CN104541305A CN201380041786.5A CN201380041786A CN104541305A CN 104541305 A CN104541305 A CN 104541305A CN 201380041786 A CN201380041786 A CN 201380041786A CN 104541305 A CN104541305 A CN 104541305A
- Authority
- CN
- China
- Prior art keywords
- coordinate
- tessellation
- territory
- instruction
- gpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- 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
- G06T9/00—Image coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Image Generation (AREA)
Abstract
图形处理单元GPU的棋盘形布置单元确定所接收基元的顶点的域坐标。所述棋盘形布置单元输出所述顶点的所述所确定域坐标。所述棋盘形布置单元进一步确定所述所接收基元的域类型不是三角形、等值线或方形域中的一者,且当所述域类型不是所述三角形、等值线或方形域中的一者时输出指示与所述所确定域坐标中的一或多者相关联的图形特征的信息。
Description
本申请案主张2012年8月9日申请的第61/681,498号美国临时申请案、2013年1月22日申请的第61/755,359号美国临时申请案、2012年10月12日申请的第61/713,377号美国临时申请案、2013年1月22日申请的第61/755,312号美国临时申请案、2012年11月6日申请的第61/723,274号美国临时申请案以及2013年1月22日申请的第61/755,391号美国临时申请案的权益,以上申请案中的每一者的整个内容以引用的方式并入本文中。
技术领域
本发明涉及图形处理,且更具体地说涉及用于路径再现的技术。
背景技术
路径再现可指代二维(2D)向量图形路径(可替代地在本文中被称作“路径”)的再现,所述路径中的每一者可包含一或多个路径片段。当路径包含两个或两个以上路径片段时,个别路径片段可具有相同类型或不同类型。路径片段的类型可包含(例如)线、椭圆形弧、二次贝塞尔曲线和三次贝塞尔曲线。在一些实例中,路径片段类型可根据例如开放向量图形(OpenVG)API等标准向量图形应用程序编程接口(API)来界定。
图形处理单元(GPU)通常实施经设计以与一或多个3D图形API顺应的三维(3D)图形管线。因为当今在使用的流行的3D图形API并不需要顺应装置支持路径再现命令,所以现代的GPU常常提供极少到不提供用于路径再现命令的硬件加速。举例来说,现代的GPU中实施的典型3D图形管线可包含光栅化器,其经设计以光栅化低阶非弯曲3D图形基元(例如点、线和三角形),但不能够直接再现弯曲基元(例如,椭圆形弧和贝塞尔曲线)。
发明内容
本发明中的技术提供图形处理单元(GPU),其包含用于3D图形管线中的硬件加速路径再现的棋盘形布置硬件。通过使用GPU将路径片段棋盘形布置为线段,预处理路径片段的负担从中央处理单元(CPU)起离,进而释放处理资源用于其它CPU任务。此外,在一些实例中,GPU可利用高度平行的现代GPU棋盘形布置架构来执行棋盘形布置操作,其在一些实例中可允许GPU以比CPU更高效的方式棋盘形布置路径片段。另外,因为棋盘形布置在GPU中发生而不是在CPU中发生,所以众多的经棋盘形布置基元不需要存储于系统存储器中且不需要从CPU传递到GPU,进而减少用于路径再现需要的存储器占据面积以及用于路径再现需要的存储器带宽。
在一些实例中,GPU可能够使用由特定3D图形应用程序编程接口(API)指定的图形架构棋盘形布置且再现路径片段,例如更详细描述的DirectX 11 API,本发明中描述的技术描述对图形硬件的可能修改以允许划虚线、末端盖、再棋盘形布置以及使用再棋盘形布置的尖点处置。以此方式,本发明中描述的技术允许具有一些修改的DirectX11架构的图形硬件以划虚线、盖来执行路径再现且支持尖点。然而,所述技术不限于此且可以用于其它类型的路径再现,以及除路径再现之外或替代路径再现的技术。
本发明的技术包含经修改棋盘形布置单元,其在一些情况下经配置以输出指示图形特征的信息。传统地,所述棋盘形布置单元在等值线、三角形和方形域上操作。所述域表示二维线、三角形和四边形,棋盘形布置器针对其基于一或多个棋盘形布置因数确定许多域坐标,所述域坐标表示所述线、三角形或方形的较详细版本。本发明的技术增加新的域类型,其致使棋盘形布置器执行额外操作,包含输出指示图形特征的信息。图形特征的信息可与所述棋盘形布置单元输出的一或多个域坐标相关联,且可指示域坐标是否与图形特征相关联,例如起始盖、末端盖、接合点和线段。另外,本发明的经修改棋盘形布置单元可经配置以输出其它信息作为输出指示图形特征的信息的一部分。通过输出指示图形特征的信息,本发明的经修改棋盘形布置单元可将信息提供到图形管线的其它级,例如域着色器、几何形状着色器等,其可使得其它级能够基于指示图形特征的信息执行操作。
作为一个非限制性实例,域着色器可解译指示图形特征的信息以便基于由经修改棋盘形布置单元输出的域坐标确定顶点坐标。域着色器可基于例如信息是否指示域坐标与起始盖、末端盖、接合点、线段或另一特征相关联而以不同方式基于域坐标确定顶点坐标。根据本发明的技术,此为上下文提供域坐标的能力可允许图形处理单元的棋盘形布置级增加图形特征,例如接合点和盖,且执行再棋盘形布置和尖点处置。
在一个实例中,本发明描述一种方法,其包括:以图形处理单元(GPU)的棋盘形布置单元确定所接收基元的顶点的域坐标;以所述棋盘形布置单元输出所述顶点的所述所确定域坐标;以所述棋盘形布置单元确定所述所接收基元的域类型不是三角形、等值线或方形域中的一者;以及当所述域类型不是所述三角形、等值线或方形域中的一者时以所述棋盘形布置单元输出指示与所述所确定域坐标中的一或多者相关联的图形特征的信息。
在另一实例中,本发明描述一种包含GPU的装置,所述GPU包括棋盘形布置单元,所述棋盘形布置单元经配置以:确定所接收基元的顶点的域坐标;输出所述顶点的所述所确定域坐标;确定所述所接收基元的域类型不是三角形、等值线或方形域中的一者;以及当所述域类型不是所述三角形、等值线或方形域中的一者时输出指示与所述所确定域坐标中的一或多者相关联的图形特征的信息。
在另一实例中,本发明描述一种设备,其包含:用于确定所接收基元的顶点的域坐标的装置;用于输出所述顶点的所述所确定域坐标的装置;用于确定所述所接收基元的域类型不是三角形、等值线或方形域中的一者的装置;以及用于当所述域类型不是所述三角形、等值线或方形域中的一者时输出指示与所述所确定域坐标中的一或多者相关联的图形特征的信息的装置。
在另一实例中,本发明描述一种存储指令的非暂时性计算机可读存储媒体,所述指令在被执行时致使一或多个处理器:确定所接收基元的顶点的域坐标;输出所述顶点的所述所确定域坐标;确定所述所接收基元的域类型不是三角形、等值线或方形域中的一者;以及当所述域类型不是所述三角形、等值线或方形域中的一者时输出指示与所述所确定域坐标中的一或多者相关联的图形特征的信息。
在附图及以下描述中阐述本发明的一或多个实例的细节。本发明的其它特征、目标及优势将从描述及图式及权利要求书显而易见。
附图说明
图1是说明可用以实施本发明的GPU加速的路径再现技术的实例计算装置的框图。
图2是更详细说明图1中的计算装置的中央处理单元(CPU)、图形处理单元(GPU)和存储器的框图。
图3是说明可执行本发明的路径再现技术的实例图形管线的概念图。
图4A到4B是说明根据本发明的技术棋盘形布置所接收基元的概念图。
图5A到5B是说明根据本发明的技术的线段的再棋盘形布置的概念图。
图6A到6C是说明根据本发明的技术再棋盘形布置线段且将划虚线应用于线段的概念图。
图7A到7C是说明应用根据本发明的一或多种技术的划虚线的概念图。
图8是说明实例斜边接合点的概念图。
图9是说明实例斜接接合点的概念图。
图10是说明实例圆形接合点的概念图。
图11是说明实例正方形盖的概念图。
图12是说明实例圆形盖的概念图。
图13A到13D是说明根据本发明的一或多种技术应用末端盖和接合点的概念图。
图14A到14B是说明根据本发明的技术的线段的尖点的再棋盘形布置的概念图。
图15是说明根据本发明的用于执行GPU加速的路径再现的实例技术的流程图。
图16是说明根据本发明的用于执行GPU加速的路径再现的实例技术的流程图。
具体实施方式
本发明是针对用于执行GPU加速的路径再现的技术。路径再现可指代二维(2D)向量图形路径(可替代地在本文中被称作“路径”)的再现,所述路径中的每一者可包含一或多个路径片段。当路径包含两个或两个以上路径片段时,个别路径片段可具有相同类型或不同类型。路径片段的类型可包含(例如)线、椭圆形弧、二次贝塞尔曲线和三次贝塞尔曲线。在一些实例中,路径片段类型可根据例如开放向量图形(OpenVG)API等标准向量图形应用程序编程接口(API)来界定。
图形处理单元(GPU)通常实施经设计以与一或多个3D图形API顺应的三维(3D)图形管线。因为当今在使用的流行的3D图形API并不需要顺应装置(例如,GPU)支持路径再现命令,所以现代的GPU常常提供极少到不提供用于路径再现命令的硬件加速。举例来说,现代的GPU中实施的典型3D图形管线可包含光栅化器,其经设计以光栅化低阶非弯曲3D图形基元(例如点、线和三角形),但可能不能够直接再现弯曲路径再现基元(例如,椭圆形弧和贝塞尔曲线)。
用于路径再现的一个方法可涉及使用3D GPU管线来提供部分GPU硬件加速以用于路径再现命令的执行。此方法涉及以中央处理单元(CPU)预处理路径片段以便将所述路径片段转换为可由GPU光栅化的一或多个低阶非弯曲图形基元。在除根据本发明中描述的技术外的实例中,CPU可将弯曲路径片段(例如,椭圆弧或贝塞尔曲线)划分为近似所述路径片段的曲率的相对较小三角形的集合,且可致使使用GPU再现所述三角形集合。然而,此方法可为CPU密集的,且因此可限制可用于其它CPU任务的CPU处理循环的量。此外,在某些情况下,可需要相对较大量的三角形来以所要细节水平再现路径片段。相对较大量的三角形在存储数据时可消耗大量存储器存储空间,且在将数据传送到GPU时可消耗大量的存储器带宽。
本发明中的路径再现技术可提供GPU硬件加速的路径再现解决方案,其利用GPU的经修改棋盘形布置器级和两个再现遍次来确定由经修改棋盘形布置器级接收的基元的顶点的域坐标。图形管线中的后续级解译所述域坐标以对线段执行路径再现操作,例如将划虚线和末端盖应用于路径,以及使用3D图形管线应用内部路径片段的端点之间的接合点。通过使用GPU来执行路径再现操作,执行这些操作的负担从CPU起离,进而释放处理资源以用于其它CPU任务。此外,在一些实例中,GPU可利用高度并行的现代GPU棋盘形布置架构来辅助执行路径再现操作,其可允许GPU以比CPU更高效的方式再现路径片段。
在一些实例中,GPU可能够使用由例如DirectX 11 API等特定3D图形API指定的图形架构来棋盘形布置且再现路径片段。如更详细描述,本发明中描述的技术描述对图形硬件、且明确地说棋盘形布置级的可能修改以产生顶点的域坐标,GPU图形管线中的后续级可解译所述域坐标以执行用于末端盖、划虚线、接合点和尖点处置的再现操作。以此方式,本发明中描述的技术允许具有一些修改的DirectX 11架构的图形硬件以划虚线、接合点、末端盖和再棋盘形布置来执行路径再现。
路径再现可划分成两个主操作:(1)填充路径片段,和(2)来回划动路径片段。在一些实例中,可执行填充和来回划动操作中的一或两者以完全再现路径。概念地,填充操作可对应于以指定填充颜色填充路径片段的内部区。出于说明的目的,相对于来回划动操作描述所述技术。填充操作可以任何方式执行。
来回划动操作可概念地对应于使用保持垂直于路径的直线笔“加宽”路径片段的边缘。除主操作之外,路径再现还可涉及将各种类型的划虚线、末端盖应用于路径的末端,应用路径的内部路径片段的端点之间的各种类型的接合点,以及使用再棋盘形布置处置尖点。
GPU可使用也被称作“棋盘形布置单元”或棋盘形布置器的棋盘形布置级来棋盘形布置(例如,划分)基元或路径片段。在GPU棋盘形布置路径片段之后,实施本发明的路径再现技术的GPU可经配置以基于棋盘形布置器级确定且输出到GPU图形再现管线中的后续级的域坐标而产生3D几何形状。通过基于由GPU产生的3D几何形状再现用于路径片段的来回划线区域,3D GPU管线可用以提供100%或几乎100%GPU解决方案用于来回划动操作的执行。
图1是说明可用以实施本发明的GPU加速的路径再现技术的实例计算装置2的框图。计算装置2可包括个人计算机、桌上型计算机、膝上型计算机、计算机工作站、平板计算装置、视频游戏平台或控制台、无线通信装置(例如,移动电话、蜂窝式电话、卫星电话和/或移动电话手持机)、陆线电话、因特网电话、手持式装置(例如,便携式视频游戏装置或个人数字助理(PDA))、个人音乐播放器、视频播放器、显示装置、电视、电视机顶盒、服务器、中间网络装置、主机计算机、或处理及/或显示图形数据的任何其它类型的装置。
如图1的实例中所示,计算装置2包含用户接口4、CPU 6、存储器控制器8、存储器10、图形处理单元(GPU)12、GPU高速缓冲存储器14、显示接口16、显示器18和总线20。用户接口4、CPU 6、存储器控制器8、GPU 12及显示接口16可使用总线20彼此通信。应注意,图1中展示的不同组件之间的总线及通信接口的特定配置仅是示范性的,且具有相同或不同组件的计算装置及/或其它图形处理系统的其它配置可用于实施本发明的技术。
CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以致使CPU 6执行一或多个软件应用程序。在CPU 6上执行的软件应用程序可包含(例如)操作系统、字处理器应用程序、电子邮件应用程序、电子数据表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。用户可经由一或多个输入装置(未图示)(例如,键盘、鼠标、麦克风、触摸垫或经由用户接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。
在CPU 6执行的软件应用程序可包含指示GPU 12致使图形数据到显示器18的再现的一或多个图形再现指令。在一些实例中,软件指令可符合图形应用程序编程接口(API),例如开放图形库API、开放图形库嵌入系统(OpenGL ES)API、Direct3D API、DirectX API、RenderMan API、WebGL API或任何其它公众或专有标准图形API。为了处理图形再现指令,CPU 6可将一或多个图形再现命令发出到GPU 12以致使GPU 12执行图形数据的再现的一些或全部。在一些实例中,待再现的图形数据可包含图形基元列表,例如点、线、三角形、四边形、三角形条带、片等。在其它实例中,待再现的图形数据可包含一或多个路径再现基元,例如线段、椭圆形弧、二次贝塞尔曲线和三次贝塞尔曲线。
存储器控制器8促使数据进出存储器10的传送。举例来说,存储器控制器8可从CPU 6和/或GPU 12接收存储器读取请求和存储器写入请求,且相对于存储器10服务此类请求以便为计算装置2中的组件提供存储器服务。存储器控制器8通信地耦合到存储器10。虽然存储器控制器8在图1的实例计算装置2中图解说明为与CPU 6和存储器10两者分开的处理模块,但在其它实例中,存储器控制器8的功能性的一些或全部可在CPU 6、GPU 12和存储器10中的一或多者上实施。
存储器10可存储可存取以用于由CPU 6执行的程序模块和/或指令和/或用于由CPU 6上执行的程序使用的数据。举例来说,存储器10可存储用户应用程序和与所述应用程序相关联的图形数据。存储器10还可存储用于由计算装置2的其它组件使用和/或由其产生的信息。举例来说,存储器10可充当用于GPU 12的装置存储器且可存储将在GPU 12上操作的数据以及由GPU 12执行的操作而产生的数据。举例来说,存储器10可存储路径数据、路径片段数据、表面、纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或类似者的任何组合。另外,存储器10可存储用于由GPU12处理的命令流。举例来说,存储器10可存储路径再现命令、3D图形再现命令和/或通用GPU(GPGPU)计算命令。存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、同步动态随机存取存储器(SDRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
GPU 12可经配置以执行由CPU 6发出到GPU 12的命令。由GPU 12执行的命令可包含图形命令、绘制调用命令、GPU状态编程命令、存储器传送命令、通用计算命令、核心执行命令、棋盘形布置命令等。
在一些实例中,GPU 12可经配置以执行图形操作以将一或多个图形基元再现到显示器18。在此等实例中,当在CPU 6上执行的软件应用程序中的一者需要图形处理时,CPU 6可将图形数据提供到GPU 12用于再现到显示器18且将一或多个图形命令发出到GPU 12。图形命令可包含例如绘制调用命令、GPU状态编程命令、条件性命令、存储器传送命令、传图命令、棋盘形布置命令等。图形数据可包含顶点数据、纹理数据、表面数据等。在一些实例中,CPU 6可通过将命令和图形数据写入到可由GPU 12存取的存储器10而将命令和图形数据提供到GPU 12。
在其它实例中,GPU 12可经配置以执行通用计算,所谓的通用GPU(GPGPU),以用于在CPU 6上执行的应用程序。在此等实例中,当在CPU 6上执行的软件应用程序中的一者决定将计算任务卸载到GPU 12时,CPU 6可将通用计算数据提供到GPU12,且将一或多个通用计算命令发出到GPU 12。通用计算命令可包含例如核心执行命令、存储器传送命令等。在一些实例中,CPU 6可通过将命令和图形数据写入到可由GPU 12存取的存储器10而将命令和通用计算数据提供到GPU 12。
在一些情况下,GPU 12可内置有高度并行的结构,其提供比CPU 6对图形操作的更有效的处理。举例来说,GPU 12可包含经配置而以并行方式对多个顶点、控制点、像素和/或其它数据操作的多个处理元件。在一些情况下,GPU 12的高度并行本质可允许GPU 12比使用CPU 6再现图像更快地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)再现到显示器18上。另外,GPU 12的高度并行本质可允许GPU 12比CPU 6更快地处理某些类型的向量和矩阵运算以用于通用计算应用程序。
在一些实例中,GPU 12可集成到计算装置2的母板中。在其它情况下,GPU 12可存在于安装在计算装置2的母板中的端口中的图形卡上或否则可并入在经配置以与计算装置2交互操作的外围装置内。在进一步例子中,GPU 12可与CPU 6位于同一微芯片上从而形成芯片上系统(SoC)。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。
在一些实例中,GPU 12可直接耦合到GPU高速缓冲存储器14。因此,GPU 12可从GPU高速缓冲存储器14读取数据且写入数据到GPU高速缓冲存储器14而不一定使用总线20。换句话说,GPU 12可使用局部存储装置而非片外存储器来局部地处理数据。此允许GPU 12通过消除GPU 12经由总线20读取及写入数据的需要而以更有效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU12可不包含单独的高速缓冲存储器,但改为经由总线20利用存储器10。GPU高速缓冲存储器14可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
CPU 6和/或GPU 12可将经再现图像数据存储在存储器10内分配的帧缓冲器中。经再现图像数据可包含用于待再现路径片段的经再现填充区域和来回划线区域。显示接口16可从帧缓冲器检索数据且配置显示器18以显示由经再现图像数据表示的图像。在一些实例中,显示接口16可包含数/模转换器(DAC),其经配置以将从帧缓冲器检索的数字值转换为可由显示器18消耗的模拟信号。在其它实例中,显示接口16可将数字值直接传递到显示器18以进行处理。
显示器18可包含监视器、电视、投影装置、液晶显示器(LCD)、等离子显示器面板、发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。显示器18可集成在计算装置2内。举例来说,显示器18可为移动电话手持机或平板计算机的屏幕。或者,显示器18可为经由有线或无线通信链路而耦合到计算机装置2的独立装置。举例来说,显示器18可为经由电缆或无线链路而连接到个人计算机的计算机监视器或平板显示器。
总线20可使用总线结构和总线协议的任何组合来实施,包含第一、第二和第三代总线结构和协议、共享总线结构和协议、点对点总线结构和协议、单向总线结构和协议以及双向总线结构和协议。可用以实施总线20的不同总线结构和协议的实例包含例如超传输总线、InfiniBand总线、高级图形端口总线、外围组件互连(PCI)总线、PCI高速总线、高级微控制器总线架构(AMBA)、高级高性能总线(AHB)、AMBA高级外围总线(APB),和AMBA高级eXentisible接口(AXI)总线。也可以使用其它类型的总线结构和协议。
根据本发明,GPU 12可经配置以提供部分到总体GPU硬件加速以用于各种路径再现命令的执行。举例来说,CPU 6可将一或多个路径再现命令发出到GPU 12,且GPU 12可执行所述路径再现命令。作为根据本发明的技术的一个实例,GPU 12可包含棋盘形布置单元,其经配置以确定所接收基元的顶点的域坐标,输出顶点的所确定的域坐标,确定所接收的基元的域类型不是三角形、等值线或方形域中的一者,且当域类型不是三角形、等值线或方形域中的一者时输出指示与所确定域坐标中的一或多者相关联的图形特征的信息。三角形、等值线和方形域的概念以及指示图形特征的信息全部在下文更详细描述。
在一些实例中,GPU 12可使用两遍次再现方法来执行路径来回划动操作。在第一遍次中,GPU 12可确定盖和接合点的域坐标,且可将基元划分为子片段。在第二遍次中,棋盘形布置单元可基于第一遍次中确定的域坐标确定额外域坐标,且可基于划虚线模式执行图形操作,例如基于所述模式保持或丢弃片段。GPU 12在第二遍次中确定的域坐标可对应于根据划虚线模式指定的子片段的盖、接合点和处置尖点。在一些实例中,GPU 12的棋盘形布置单元还可输出指示与在第二遍次中确定的域坐标中的一或多者相关联的图形特征的信息。指示图形特征的信息可指示域坐标是否与起始盖、末端盖、接合点或线段相关联。例如域着色器级等后续级可接收域坐标输入且可基于域坐标确定顶点坐标。
作为来回划动操作的一部分,且为了产生在空间上对应于线段的来回划线区域的一或多个基元(例如,三角形基元),GPU 12可接收可由方程式(例如参数方程式等)界定的基元。GPU 12可根据本发明的技术利用棋盘形布置单元将所接收的基元划分为一或多个线段。在一些实例中,GPU 12可产生根据所接收基元确定的线段的每一端点的多个法向量。所述法线中的每一者对应于沿着路径片段的多个点中的相应一者。
基于GPU 12的棋盘形布置单元产生的域坐标,GPU 12可执行路径再现操作,例如尖点处置、添加起始和末端盖、添加划虚线以及添加接合点到根据所接收基元确定的线段。GPU 12可基于指示与所述一或多个确定的域坐标相关联的图形特征的信息而确定如何解译所确定的域坐标。
在本发明中描述的技术中,与所述一或多个确定的域坐标相关联的图形特征可帮助以高效方式实施路径再现技术。举例来说,图形特征的实例包含指示所述域坐标是否用于尖点处置、添加起始和末端盖、添加划虚线和添加接合点(作为几个实例)的信息,但可存在图形特征的其它实例且所述技术不应被视为如此限制性的。通过图形特征,GPU 12可能已经确定域坐标将用于何种目的,其允许GPU 12经由棋盘形布置单元以高效方式实施尖点处置、添加起始和末端盖、添加划虚线以及添加接合点(作为几个实例)。
本发明中描述的路径再现技术可在图1中图解说明的计算装置2中的组件中的任一者中实施,包含例如CPU 6、GPU 12和存储器10。在一些实例中,路径再现技术的全部或几乎全部可在GPU 12中(例如,GPU 12的图形管线中)实施。在额外实例中,CPU 6可实施用于配置图形管线的状态且将着色器程序绑定到图形管线以实施GPU 12中执行本发明的路径再现技术的路径再现管线的技术。在其它实例中,CPU 6可经配置以将指示待再现路径的数据放置到一或多个缓冲器(例如,一或多个顶点缓冲器)中,所述缓冲器可由GPU 12存取以再现一或多个路径。
图2是进一步详细说明图1中的计算装置2的CPU 6、GPU 12和存储器10的框图。如图2中所示,CPU 6通信地耦合到GPU 12和存储器10,且GPU 12通信地耦合到CPU 6和存储器10。在一些实例中,GPU 12可与CPU 6集成到母板上。在额外实例中,GPU 12可实施在安装于包含CPU 6的母板的端口中的图形卡上。在其它实例中,GPU 12可并入在经配置以与CPU 6交互操作的外围装置内。在额外实例中,GPU12可与CPU 6位于同一微芯片上从而形成芯片上系统(SoC)。
CPU 6经配置以执行软件应用程序24、图形应用程序处理接口(API)26、GPU驱动器28和操作系统30。软件应用程序24可包含致使显示图形图像的一或多个指令和/或致使在GPU 12上执行非图形任务(例如,通用计算任务)的一或多个指令。软件应用程序24可将指令发出到图形API 26。图形API 26可为将从软件应用程序24接收的指令转译为可由GPU驱动器28消耗的格式的运行时间服务。GPU驱动器28经由图形API26从软件应用程序24接收指令,且控制GPU 12的操作以服务所述指令。举例来说,GPU驱动器28可调配一或多个命令38,将命令38放置到存储器10中,且指示GPU12执行命令38。在一些实例中,GPU驱动器28可将命令38放置到存储器10中且经由操作系统30、例如经由一或多个系统调用与GPU 12通信。
GPU 12包含命令引擎32和一或多个处理单元34。在一些实例中,所述一或多个处理单元34可形成和/或实施3D图形再现管线,例如DX 11图形再现管线(即,与DX11图形API顺应的3D图形管线)。
命令引擎32经配置以从CPU 6(例如,经由存储器10)接收命令且致使GPU 12执行命令。响应于接收到状态命令,命令引擎32可经配置以基于所述状态命令将GPU12中的一或多个状态寄存器设定到特定值,和/或基于所述状态命令配置固定功能处理单元34中的一或多者。响应于接收到绘制调用命令,命令引擎32可经配置以致使处理单元34基于指示待再现路径的类型的数据而再现存储器10中由顶点表示的几何形状,所述数据可包含在待再现顶点缓冲器的顶点数据结构中。命令引擎32还可接收着色器程序绑定命令,且基于着色器程序绑定命令将特定着色器程序加载到可编程处理单元34中的一或多者中。
处理单元34可包含一或多个处理单元,其中的每一者可为可编程处理单元或固定功能处理单元。可编程处理单元可包含(例如)可编程着色器单元,其经配置以执行从CPU 6下载到GPU 12上的一或多个着色器程序。在一些实例中,着色器程序可为以高级着色语言编写的程序的经编译版本,例如OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言等。在一些实例中,可编程着色器单元可包含经配置以并行操作的多个处理单元,例如SIMD管线。可编程着色器单元可具有存储着色器程序指令的程序存储器和执行状态寄存器,例如指示程序存储器中正执行的当前指令或待提取的下一指令的程序计数器寄存器。处理单元34中的可编程着色器单元可包含(例如)顶点着色器单元、像素着色器单元、几何形状着色器单元、壳着色器单元、域着色器单元、计算着色器单元和/或统一着色器单元。
固定功能处理单元可包含经硬连线以执行某些功能的硬件。虽然固定功能硬件可经由举例来说一或多个控制信号而配置以执行不同功能,但所述固定功能硬件通常并不包含能够接收用户编译程序的程序存储器。在一些实例中,处理单元34中的固定功能处理单元可包含(例如)执行光栅操作的处理单元,例如深度测试、剪刀测试、α掺合等,以及
存储器10可存储路径数据36和一或多个命令38。在一些实例中,路径数据36可作为多个顶点(或控制点)存储在存储器10中分配的一或多个顶点缓冲器中。在一些实例中,路径数据可存储于片列表数据结构(例如,四个控制点片列表)中。命令38可存储于一或多个命令缓冲器(例如,环缓冲器)中。CPU 6(例如,经由操作系统30的GPU驱动器28)可将路径数据36和命令38放置到存储器10中用于由GPU 12消耗。GPU12(例如,命令引擎32)可检索且执行存储于存储器10中的命令38。
在其中路径数据36存储为顶点的实例中,所述顶点可包含几何学上界定待再现的路径的一或多个属性。举例来说,对于线,片控制列表中的顶点可包含指示所述线的端点的坐标(例如,(x0,y0)和(x1,y1))的数据。对于三次贝塞尔曲线,片控制列表中的顶点可包含指示界定所述曲线的四个控制点的坐标(例如,(x0,y0)、(x1,y1)、(x2,y2)、(x3,y3))的数据。对于二次贝塞尔曲线,片控制列表中的顶点可包含指示三个控制点而非四个控制点的坐标的数据。对于椭圆形弧,片控制列表中的顶点可包含指示椭圆形弧的端点参数化的数据或指示椭圆形弧的中心参数化的数据。
在某些情况下,几何学上界定待再现路径的一或多个属性可为分辨率独立的。换句话说,几何学上界定路径的属性可独立于当再现路径片段时执行的棋盘形布置的量和/或独立于当再现路径片段时产生的顶点的量。
CPU 6还可将指示待再现路径的类型的数据(即,“路径类型指示符”)放置到顶点缓冲器中的一或多个原本未使用的顶点属性中。在一些实例中,不同路径类型可对应于由向量图形API界定且可用于由软件应用程序24使用的一组路径类型。在一些实例中,不同路径类型可对应于由OpenVG API界定的一组路径类型。
命令38可包含一或多个状态命令和/或一或多个绘制调用命令。状态命令可指示GPU 12改变GPU 12中的状态变量中的一或多者,例如绘制颜色、填充颜色、来回划线颜色等。在一些实例中,状态命令可包含路径再现状态命令,其经配置以设定与再现路径相关联的一或多个状态变量。举例来说,状态命令可包含图画模式命令,其经配置以指示待再现路径是否将填充、来回划线或两者。作为另一实例,状态命令可包含指定将用于填充操作的颜色的填充颜色命令,和/或指定用于来回划动操作的颜色的来回划线颜色命令。作为另一实例,状态命令可指定用于来回划线操作的一或多个参数,例如来回划线宽度、末端盖样式(例如,对接、圆形、正方形)、线接合点样式(例如,斜接、圆形、斜边)、斜接限制等。在一些实例中,除使用状态命令来设定一或多个状态参数之外或代替使用状态命令来设定一或多个状态参数,所述状态参数中的一或多者可通过使用绘制调用命令或通过将状态指示符放置到含有路径数据36的顶点缓冲器中来设定。
绘制调用命令可指示GPU 12再现由存储于存储器10中的一或多个顶点的群组(例如,在顶点缓冲器中界定)界定的几何形状。在一些实例中,绘制调用命令可调用GPU12以再现存储于存储器10的经界定区段(例如,顶点缓冲器或路径数据36)中的全部顶点。换句话说,一旦GPU 12接收到绘制调用命令,控制便传递到GPU 12用于再现由存储器10的经界定区段(例如,顶点缓冲器或路径数据36)中的顶点表示的几何形状和基元。
绘制调用命令可包含3D绘制调用命令和路径再现绘制调用命令中的一者或两者。对于3D再现绘制调用命令,由顶点缓冲器中的一或多个顶点的群组界定的几何形状可对应于待再现的一或多个3D图形基元(例如,点、线、三角形、四边形、三角形条带、片等),且3D再现绘制调用命令可指示GPU 12再现所述一或多个3D图形基元。对于路径再现绘制调用命令,由顶点缓冲器中的一或多个顶点的群组界定的几何形状可对应于待再现的一或多个路径基元(例如,线段、椭圆形弧、二次贝塞尔曲线和三次贝塞尔曲线等),且路径再现绘制调用命令可指示GPU 12再现所述一或多个路径基元。
绘制调用还可指定一或多个棋盘形布置命令,其利用可包含壳着色器、棋盘形布置器和域着色器的固定功能且可编程单元。壳着色器可指定待棋盘形布置的域。在一些实例中,待棋盘形布置的域可包括等值线、三角形(tri)或方形(四边形)域中的一者。棋盘形布置器对指定域操作,且输出域坐标,域着色器基于域坐标可确定顶点坐标。本发明的技术修改棋盘形布置器以使得棋盘形布置器可对除等值线、三角形和方形域类型外的额外域类型操作。新域类型可影响棋盘形布置单元执行的操作,且可致使棋盘形布置器将指示图形特征的信息输出到GPU 12的后续级,例如域着色器级。
在一些实例中,本发明中描述的路径再现技术可在图2中所示的组件中的任一者中实施,包含例如图形API 26、GPU驱动器28、命令引擎32和处理单元34。在一些实例中,路径再现技术的全部或几乎全部可在由处理单元34形成的GPU 12中的图形管线中实施。举例来说,棋盘形布置单元可为处理单元34的单元。在额外实例中,CPU 6的软件应用程序24、图形API 26和/或GPU驱动器28可实施技术以配置图形管线的状态且将着色器程序绑定到图形管线以实施执行本发明的路径再现技术的GPU 12中的路径再现管线。在其它实例中,CPU 6的软件应用程序24、图形API 26和/或GPU驱动器28可经配置以将指示待再现路径的数据放置到可由GPU 12存取以再现一或多个路径的一或多个缓冲器(例如,一或多个顶点缓冲器)中。
根据本发明的技术,GPU 12可包含棋盘形布置单元,其经配置以确定所接收基元的顶点的域坐标,输出顶点的所确定的域坐标,确定所接收的基元的域类型不是三角形、等值线或方形域中的一者,且当域类型不是三角形、等值线或方形域中的一者时输出指示与所确定域坐标中的一或多者相关联的图形特征的信息。
图3是说明可执行本发明的路径再现技术的实例图形管线40的概念图。在一些实例中,所述图形管线可对应于DirectX(DX)11图形管线。如图3中示出,图形管线40包含资源块42和多个处理级,其可包括图2的处理单元34。所述多个处理级(例如处理单元34)包含输入组装器(IA)44、顶点着色器(VS)46、壳着色器(HS)48、棋盘形布置器50、域着色器(DS)52、几何形状着色器(GS)54、光栅化器56、像素着色器(PS)58和输出合并器60。壳着色器48、棋盘形布置器50和域着色器52可形成图形管线40的棋盘形布置级62。
资源块42可对应于由图形管线40使用的一或多个存储器资源,例如一或多个纹理和/或一或多个缓冲器。资源块42可存储将由图形管线40中的处理级中的一或多者处理的输入数据和/或来自图形管线40中的处理级中的一或多者的输出数据。作为一实例,资源块42可存储帧缓冲器,其如本发明中所描述保持用于路径片段的填充区域的光栅化版本和/或用于路径片段的来回划线区域的光栅化版本。在一些实例中,形成资源块42的存储器资源可驻留在计算装置2的存储器10和/或GPU高速缓冲存储器14中。
图3中以直拐角所描绘的处理级表示固定功能处理级,且图3中以圆形拐角所描绘的处理级表示可编程处理级。举例来说,如图3中示出,输入组装器44、棋盘形布置器50、光栅化器56和输出合并器60是固定功能处理级,且顶点着色器46、壳着色器48、域着色器52、几何形状着色器54和像素着色器58是可编程处理级。可编程级中的每一者可经配置以执行特定类型的着色器程序。举例来说,顶点着色器46可经配置以执行顶点着色器程序,壳着色器48可经配置以执行壳着色器程序等。不同类型的着色器程序中的每一者可在GPU的共同着色器单元上或在专用于执行一或多个特定类型的着色器程序的一或多个专用着色器单元上执行。
如图3中示出,输入组装器44、顶点着色器46、壳着色器48、域着色器52、几何形状着色器54、像素着色器58和输出合并器60通信地耦合到资源块42。输入组装器44、顶点着色器46、壳着色器48、域着色器52、几何形状着色器54、像素着色器58和输出合并器60经配置以从资源块42检索和/或接收输入数据。几何形状着色器54和输出合并器60经配置以将输出数据写入到资源块42。上述图形管线40中的处理级与资源块42之间的通信的配置仅是在图形管线40的处理级与资源块42之间可如何配置通信的一个实例。在其它实例中,在图形管线40的处理级与资源块42之间可提供更多或更少的单向和/或双向通信信道。
关于DirectX 11图形管线的大体操作的进一步信息可参见辛克(Zink)等人的“以Direct3D 11进行的实际再现和计算”CRC出版社(2011年),其整个内容以引用的方式并入本文中。
如上文所论述,所述两个主路径再现操作是:(1)填充路径片段;以及(2)来回划动路径片段。现将描述用于以图形再现管线40(例如,DirectX 11图形管线)执行来回划动操作的解决方案。
CPU 6可将指示待再现路径片段的数据放置到顶点缓冲器的一或多个顶点中。在一些实例中,顶点缓冲器可对应于图2中所示的路径数据36。用于顶点缓冲器中的顶点的基元拓扑可在一些实例中为片控制列表。对于线,片控制列表中的顶点可包含指示所述线的端点的坐标(例如,(x0,y0)和(x1,y1))的数据。对于三次贝塞尔曲线,片控制列表中的顶点可包含指示界定所述曲线的四个控制点的坐标(例如,(x0,y0)、(x1,y1)、(x2,y2)、(x3,y3))的数据。对于二次贝塞尔曲线,片控制列表中的顶点可包含指示界定曲线的三个控制点而非四个控制点的坐标的数据。对于椭圆形弧,片控制列表中的顶点可包含指示椭圆形弧的端点参数化的数据或指示椭圆形弧的中心参数化的数据。CPU 6还可将指示待再现路径的类型的数据放置到片控制列表的原本未使用的顶点属性中。
现将描述由GPU 12接收且使用以执行路径再现的路径数据36的一个实例格式。应理解这仅是指示待再现路径的数据可如何由CPU 6提供到GPU 12的一个实例且其它实例是可能的且在本发明的范围内。在此实例中,GPU 12接收每一路径片段作为四个(4)控制点片列表基元。在此实例中,片列表中的顶点(例如,控制点)中的每一者包含界定相应顶点(例如,控制点)的属性的三(3)个浮动属性。
对于线路径片段,输入路径数据可采取以下形式或相似形式:
{XMFLOAT3(X0,Y0,2.0f)},
{XMFLOAT3(X1,Y1,1.0f)},
{XMFLOAT3(0.0f,0.0f,1.0f)},
{XMFLOAT3(0.0f,0.0f,1.0f)},
在此实例中,每一行表示四个控制点片的顶点或控制点,且圆括号中的每一参数表示相应顶点或控制点的属性。在此实例中,第一控制点的最后属性存储指示待再现路径的类型的数据(即,“路径类型指示符”)。具体来说,在此实例中路径类型指示符是2.0f,其意味着所述路径片段是线路径片段。X0、Y0、X1、Y1是线路径片段的端点的坐标,其中(X0,Y0)表示第一端点且(X1,Y1)表示第二端点。
在此实例中剩余顶点和属性可未使用和/或可用以指示路径片段的其它属性。路径片段的其它属性可包含例如路径片段是否为开放路径的开始或末端、路径片段是否应针对路径显示、起始盖或末端盖是否应放置于路径片段的末端上、应使用何种类型的盖(如果存在)、是否应在路径片段的末端上放置接合点,以及将使用何种类型的接合点(如果存在)。
一般来说,壳着色器48可确定控制点,以及域类型的指示。棋盘形布置器50可从壳着色器48接收域类型的指示。在一些实例中,棋盘形布置器可对等值线、三角形或方形域操作,如上文所描述。棋盘形布置器50可确定由壳着色器48指示的域的域坐标,且可将所确定的域坐标输出到域着色器52,所述域着色器可基于由棋盘形布置器50输出的域坐标确定顶点坐标。
当路径片段的属性指示GPU 12需要实施接合点、起始或末端盖、尖点处置或划虚线时,棋盘形布置器50可经配置以确定所接收基元的顶点的域坐标,将顶点的所确定的域坐标输出到例如域着色器52,确定所接收的基元的域类型不是三角形、等值线或方形域中的一者,且当所述域类型不是三角形、等值线或方形域中的一者时例如向域着色器52输出指示与所确定的域坐标中的一或多者相关联的图形特征的信息。
用于三次贝塞尔路径片段的输入路径数据可采取以下形式或相似形式:
{XMFLOAT3(X0,Y0,3.0f)},
{XMFLOAT3(X1,Y1,1.0f)},
{XMFLOAT3(X2,Y2,1.0f)},
{XMFLOAT3(X3,Y3,1.0f)},
在此实例中,每一行表示四个控制点片的顶点或控制点,且圆括号中的每一参数表示相应顶点或控制点的属性。在此实例中,第一控制点的最后属性存储指示待再现路径的类型的数据(即,“路径类型指示符”)。具体来说,在此实例中路径类型指示符是3.0f,其意味着所述路径片段是三次贝塞尔路径片段。X0-X3和Y0-Y3是用于三次贝塞尔路径片段的控制点的坐标,其中(X0,Y0)表示第一控制点,(X1,Y1)表示第二控制点等。在此实例中剩余顶点和属性可未使用和/或可用以指示路径片段的其它属性。路径片段的其它属性可类似于上文相对于线路径片段描述的那些属性。
相似输入可用于二次贝塞尔路径片段,不同之处在于可提供三个控制点而非四个控制点,且基元类型指示符可为不同的以区分所述基元与三次贝塞尔路径片段。举例来说,用于二次贝塞尔路径片段的输入路径数据可采取以下形式或相似形式:
{XMFLOAT3(X0,Y0,1.0f)},
{XMFLOAT3(X1,Y1,1.0f)},
{XMFLOAT3(X2,Y2,1.0f)},
{XMFLOAT3(0.0f,0.0f,1.0f)},
在此实例中,每一行表示四个控制点片的顶点或控制点,且圆括号中的每一参数表示相应顶点或控制点的属性。在此实例中,第一控制点的最后属性存储指示待再现路径的类型的数据(即,“路径类型指示符”)。具体来说,在此实例中路径类型指示符是1.0f,其意味着所述路径片段是二次贝塞尔路径片段。X0-X2和Y0-Y2是用于二次贝塞尔路径片段的控制点的坐标,其中(X0,Y0)表示第一控制点,(X1,Y1)表示第二控制点等。在此实例中剩余顶点和属性可未使用和/或可用以指示路径片段的其它属性。路径片段的其它属性可类似于上文相对于线路径片段描述的那些属性。
在一些实例中,用于椭圆形弧路径片段的输入路径数据可包含指示所述椭圆形弧路径片段的中心参数化的数据。举例来说,用于椭圆形弧路径片段的输入路径数据可采取以下形式或相似形式:
{XMFLOAT3(X0,Y0,4.0f)},
{XMFLOAT3(X1,Y1,1.0f)},
{XMFLOAT3(c.x,c.y,1.0f)},
{XMFLOAT3(angle1,0.0f,angle2)},
在此实例中,每一行表示四个控制点片的顶点或控制点,且圆括号中的每一参数表示相应顶点或控制点的属性。在此实例中,第一控制点的最后属性存储指示待再现路径的类型的数据(即,“路径类型指示符”)。在此实例中,路径类型指示符可为4.0、4.1、4.2或4.3中的任一者,其分别对应于大顺时针(LCW)椭圆形弧、大逆时针(LCCW)弧、小顺时针(SCW)椭圆形弧以及小逆时针(SCCW)椭圆形弧。X0、X1和Y0、Y1是椭圆形弧路径片段的端点坐标,其中(X0,Y0)表示弧的初始端点且(X1,Y1)表示弧的最终端点。另外,rH和rV分别表示水平和垂直半径,c.x和c.y是表示椭圆形弧路径片段是其一部分的椭圆的中心点的坐标坐标,angle1表示椭圆形弧的初始点的角度(在未按比例缩放圆上测量),且angle2表示椭圆形弧的最终点的角度(在未按比例缩放圆上测量)。
在一些实例中,CPU 6可在将指示椭圆形弧的数据发送到GPU 12用于再现之前将以端点参数形式表示的椭圆形弧转换为中心参数形式。举例来说,CPU 6可基于椭圆形弧的端点参数化产生椭圆形弧的中心参数化,且将椭圆形弧的中心参数化发送到GPU 12。椭圆形弧的中心参数化可符合以上指定的实例输入数据形式。中心参数化可由CPU 6使用以找到椭圆形弧的端点切线,其又可由CPU 6使用以产生用于由GPU 12再现的接合点基元。特别地,即使以上指定的实例输入数据形式是中心参数化,输入数据形式仍可包含弧的初始和最终端点的坐标(即,(X0,Y0)、(X1,Y1))。在一些实例中,此类坐标可用以确保所得几何形状的密封性。
在其它实例中,用于椭圆形弧路径片段的输入路径数据可包含指示所述椭圆形弧路径片段的端点参数化的数据。举例来说,用于椭圆形弧路径片段的输入路径数据可采取以下形式或相似形式:
{XMFLOAT3(X0,Y0,4.0f)},
{XMFLOAT3(X1,Y1,1.0f)},
{XMFLOAT3(rH,rV,1.0f)},
{XMFLOAT3(angle,0.0f,1.0f)},
在此实例中,每一行表示四个控制点片的顶点或控制点,且圆括号中的每一参数表示相应顶点或控制点的属性。在此实例中,第一控制点的最后属性存储指示待再现路径的类型的数据(即,“路径类型指示符”)。在此实例中,路径类型指示符可为4.0、4.1、4.2或4.3中的任一者,其分别对应于大顺时针(LCW)椭圆形弧、大逆时针(LCCW)弧、小顺时针(SCW)椭圆形弧以及小逆时针(SCCW)椭圆形弧。X0、X1和Y0、Y1是椭圆形弧路径片段的端点坐标,其中(X0,Y0)表示弧的初始端点且(X1,Y1)表示弧的最终端点。另外,rH和rV分别表示水平和垂直半径,且angle表示在以(rh,rv)按比例缩放之前测量的椭圆相对于x轴线的逆时针旋转角度。
在一些实例中,来回划动操作可使用顶点路径数据输入的三个额外字段来处置末端盖、接合点和开放路径。举例来说,某些顶点坐标可存储指示路径片段是否是开放路径的开始、开放路径的末端以及路径片段是否可丢失((例如,路径片段是开放路径的封闭路径片段)的数据。以下是包含上述顶点属性的实例模板:
{XMFLOAT3(X0,Y0,2.0f)},
{XMFLOAT3(X1,Y1,2.0f)},
{XMFLOAT3(0.0f,0.0f,2.0f)},
{XMFLOAT3(0.0f,0.0f,2.0f)},
在此模板中,第二顶点的z坐标(即第三坐标或属性)上的2.0f指示所述路径片段是开放路径的开始且可发信号到GPU 12以在所述路径片段的开始处放置末端盖(即,起始盖)。第三顶点的z坐标上的2.0f指示所述路径片段是开放路径的终止且可发信号到GPU 12以在所述路径片段的结束处放置末端盖。最后顶点的z坐标上的2.0f指示当前基元将丢失(例如,其是开放路径的封闭线或路径片段)。
为了执行路径来回划动操作,输入组装器44从存储器10获得路径数据36,且将路径数据传递到图形管线40的后续级上以再现由路径数据36指定的路径片段(例如,路径基元)。举例来说,输入组装器44可从存储于存储器10中的顶点缓冲器获得多个顶点且致使顶点着色器46处理所述顶点。在一些实例中,输入组装器44可将待处理顶点直接传递到顶点着色器46。在额外实例中,输入组装器44可引导顶点着色器46以从资源块42中的顶点缓冲器检索用于处理的特定顶点。
顶点着色器46经配置以处理从输入组装器44和/或资源块42接收的顶点且针对由顶点着色器46处理的每一输入顶点产生输出顶点。举例来说,对于每一输入顶点,顶点着色器46可执行GPU 12的着色器单元上的顶点着色器程序的实例。由顶点着色器46接收的输入顶点和由顶点着色器46产生的输出顶点可替代地分别被称作输入控制点和输出控制点。
在其它实例中,顶点着色器46可产生与对应输入顶点的输入属性不等同的输出顶点的一或多个输出属性。举例来说,顶点着色器46可对输入顶点的属性中的一或多者执行实质性的处理以产生输出顶点的一或多个属性。作为另一实例,顶点着色器46可从输入属性集合增加和/或删除属性以产生输出顶点的输出属性的集合。
棋盘形布置级62(即,壳着色器48、棋盘形布置器50和域着色器级52)可将由输入路径数据界定的路径片段棋盘形布置为多个线段。在一些实例中,棋盘形布置级62可例如从顶点着色器46接收形成基元的多个顶点。在一些实例中,四个顶点可构成基元。棋盘形布置级62可基于所接收的基元确定一或多个域坐标。所确定的域坐标可近似待再现路径的曲率。一般来说,壳着色器48可将从顶点着色器46接收的控制点传递到域着色器52用于进一步处理,且将例如域类型等配置数据提供到棋盘形布置器50。
棋盘形布置器50可确定表示特定类型的路径片段或基元的一或多个参数方程式应在其评估的域坐标。一般来说,本发明的技术修改棋盘形布置器50的行为以包含可在除上述三角形、等值线和方形域外的域上操作的硬件。在一些非限制性实例中,新域可被称为“路径1”和“路径2”。当棋盘形布置器50接收到路径1或路径2域的指示时,棋盘形布置器50可通过使用再棋盘形布置来平滑尖点位置而确定域坐标以支持图形操作,例如添加划虚线、盖、接合点和处置尖点。当在路径1或路径2域上操作时,棋盘形布置器50还可输出指示图形特征的信息。指示图形特征的信息可与棋盘形布置器50输出的域坐标中的至少一者相关联。为了在新域上操作,棋盘形布置器50可包含额外硬件,其可与图形管线40的棋盘形布置器硬件并行地起作用。出于实例的目的,将棋盘形布置器50图解说明为一个固定功能单元,但在一些实例中支持额外路径类型的硬件可为单独的硬件块。
另外,棋盘形布置器级62可支持两遍次棋盘形布置。在可由壳着色器48指示的指定路径1域类型的第一遍次中,棋盘形布置器50可确定所接收基元的域坐标,输出所确定的域坐标且输出指示与所确定的域坐标中的一或多者相关联的图形特征的信息。在一些实例中,指示图形特征的信息可向图形管线40中的后续级指示所确定的域坐标是否为起始盖或末端盖、线段或接合点的一部分。基于图形特征的此信息,图形管线的后续级可确定一或多个基元的顶点坐标。
在可由壳着色器48指示的指定路径2域类型的第二遍次中,棋盘形布置器50可基于在第一棋盘形布置遍次中确定的信息类似地确定域坐标。图形管线40的后续级还可利用由棋盘形布置器50确定的域坐标以及指示图形特征的信息来确定一或多个基元的顶点坐标。
域着色器52可在由棋盘形布置器50确定的域坐标值处评估参数方程式且针对每一评估输出顶点。在一些实例中,由域着色器52输出的顶点中的每一者可包含指示所述顶点的位置的一或多个属性。在额外实例中,由域着色器52输出的顶点中的每一者可包含指示与所述顶点相关联的路径再现基元的类型的一或多个属性。
更确切地说,壳着色器48可处理从顶点着色器46和/或资源块42接收的控制点且可针对由壳着色器48执行的壳着色器程序的每一实例产生输出控制。举例来说,对于将由壳着色器48产生的每一输出控制点,壳着色器46可执行GPU 12的着色器单元上的壳着色器程序的实例。
在其它实例中,壳着色器48可产生与输入控制点中的相应一者的输入属性不等同的输出控制点的一或多个输出属性。举例来说,壳着色器48可对输入控制点的属性中的一或多者执行实质性处理以产生输出控制点的一或多个属性。作为另一实例,壳着色器48可从输入属性集合增加和/或删除属性以产生输出顶点的输出属性的集合。在一些实例中,如果GPU 12接收到呈端点参数化形式的椭圆弧的路径数据,那么壳着色器48可将椭圆弧的端点参数化转换为椭圆弧的中心参数化,如下文进一步详细描述。
在其它实例中,壳着色器48可丢弃针对特定再现操作将不再现的基元。丢弃基元可指代致使对应于基元的数据不传递到图形管线的其它级上进而有效地致使此基元不由管线的剩余部分再现的过程。举例来说,当图形管线40正执行填充操作时,壳着色器48可丢弃接合点基元和盖基元。
壳着色器48还可执行用于每一路径片段的片恒定功能的实例。片恒定功能可确定且提供配置参数到棋盘形布置器50以当产生输出值时由棋盘形布置器50使用。举例来说,片恒定功能可致使壳着色器48将棋盘形布置因数提供到棋盘形布置器50。棋盘形布置因数可指定棋盘形布置器50将应用于特定棋盘形布置域的棋盘形布置程度(例如,所述域应细分的精细程度和/或所述域应细分为的较小对象的数目)。
作为另一实例,片恒定功能可致使壳着色器48将棋盘形布置域提供到棋盘形布置器50。棋盘形布置域可指代由棋盘形布置器50使用以产生用于由棋盘形布置器50使用的多个坐标的对象。棋盘形布置域概念地可对应于由棋盘形布置器50细分为多个较小对象的对象。较小对象的顶点的位置坐标随后发送到域着色器52用于进一步处理。在一些实例中,棋盘形布置域可选择为方形、三角形和等值线中的一者。在一些其它实例中,所述域可选择为路径1或路径2域中的一者。在一些实例中,域细分为的较小对象可对应于三角形、线段或点。路径1和路径2域可指示棋盘形布置器50将执行操作以支持划虚线、尖点、盖和接合点,以及输出指示图形特征的信息。在一些实例中,壳着色器48可指定等值线棋盘形布置域且指定棋盘形布置器50应将等值线域细分为线段。
根据本发明的技术,壳着色器48可经配置以指定被称作“路径1”和“路径2”的两个额外域类型中的一者,其不同于上述方形、三角形和等值线。如果壳着色器48指定路径1作为域类型,那么棋盘形布置器50可解译从壳着色器48接收的棋盘形布置因数以包含片段棋盘形布置因数、起始盖棋盘形布置因数、接合点棋盘形布置因数和末端盖棋盘形布置因数。片段棋盘形布置因数可指示棋盘形布置器50将确定域坐标的所接收基元的线段的数目。起始盖棋盘形布置因数和末端盖棋盘形布置因数可指示棋盘形布置器50将产生域坐标的起始盖或末端盖片段的数目。类似地,接合点棋盘形布置因数可指示当确定两个线段之间的接合点的域坐标时棋盘形布置器50将产生域坐标的子片段的数目。
如果来自壳着色器48的域类型指示域是路径2,那么壳着色器48从几何形状着色器54、例如从流式输出缓冲器(GPU高速缓冲存储器14或存储器10内)接收输入。基于此输入,壳着色器48产生用于棋盘形布置单元50的棋盘形布置因数以在第二棋盘形布置遍次中使用。此第二遍次接收在以路径1的域类型指定的第一遍次中由棋盘形布置器50产生的棋盘形布置因数。然而,棋盘形布置器50以与上文相对于路径1域类型所述不同的方式解译从壳着色器48接收的棋盘形布置因数。当壳着色器48指定路径2的域类型时,棋盘形布置器50将来自壳着色器48的所接收棋盘形布置因数解译为包含棋盘形布置差量值、片段长度值、片段长度倒数值和基元类型值。
如上文所描述,线段的每一端点具有相关联端点法线。如果两个连接的线段的端点法线超出最大角度偏差,那么棋盘形布置器50可确定对应于子片段的额外域坐标。与额外域坐标相关联的端点法线具有较小角度偏差,其在一些情况下当再现时可产生具有较平滑外观的曲线。壳着色器48维持最大角度偏差为状态,且根据最大角度偏差确定棋盘形布置因数,棋盘形布置器50结合棋盘形布置差量值使用所述棋盘形布置因数以确定额外域坐标。
如果线段具有大于棋盘形布置差量值的长度,那么棋盘形布置器50确定对应于具有小于棋盘形布置差量值的长度的子片段的域坐标,GPU管线40的较后级(例如域着色器52)使用所述域坐标来确定所述子片段中的每一者的起始点和终点。额外域坐标大体上对应于额外子片段的起始点和终点的顶点。棋盘形布置器50还可确定对应于域坐标的端点中的每一者的新法向量。为了确定域坐标和端点法线,棋盘形布置器50可执行线性内插,其在下文更详细地论述。
当域类型指定为路径2时,棋盘形布置器50可根据由一或多个图形命令指定的划虚线模式确定域坐标。棋盘形布置器50当确定如何将划虚线模式应用到接收的线段时利用片段值和倒数片段长度值。如果划虚线模式指示正由棋盘形布置器50处理的控制点是“开”的,也就是说,片段将再现,那么棋盘形布置器50确定对应于待再现的线段的顶点的坐标。如果根据划虚线模式线段是“关”的,那么棋盘形布置器50可丢弃所述线段。当丢弃线段时,棋盘形布置器50并不确定或输出线段的域坐标以使得后续级将不确定“关”线段的顶点坐标。
当在路径2域下操作时,棋盘形布置器50还接收指示图形特征的信息,例如所述域是否对应于起始或末端盖、接合点或线段。在划虚线的情况下,如果信息指示域是起始或末端盖,那么棋盘形布置器50可不确定所述盖的额外域坐标。然而,如果划虚线模式的状态指示当前域是“关”,那么棋盘形布置器50可丢弃与所述线段相关联的起始和/或末端盖。
在其中棋盘形布置器50正在路径1或路径2域类型上操作的情况下,棋盘形布置器50可产生对应于起始或末端盖的顶点的域坐标。为了产生起始或末端盖域坐标,棋盘形布置器50基于在路径1域类型的情况下接收或在路径2域类型的情况下存储为状态的起始和末端盖棋盘形布置因数线性地内插域坐标。在确定起始和末端盖的域坐标之后,棋盘形布置器50可输出域坐标,且还可输出指示所述域坐标中的至少一者是起始或末端盖类型的信息。
棋盘形布置器50还可针对由棋盘形布置级62处理的每一路径片段产生多个输出值。所述输出值可确定表示特定类型路径片段的一或多个参数方程式应由域着色器52评估的值。在一些实例中,棋盘形布置器50可基于由壳着色器48提供到棋盘形布置器50的一或多个棋盘形布置因数和/或棋盘形布置域而产生多个输出值。举例来说,棋盘形布置器50可将等值线细分为多个线段,且针对归一化坐标系中的多个线段的每一端点产生输出值。
域着色器52可从棋盘形布置器50接收域坐标和指示一或多个图形特征的信息,且从壳着色器48接收用于路径片段的控制点、棋盘形布置因数和后续基元的起始法线。基于这些输入,域着色器52产生输出顶点坐标、对应于由所述坐标表示的顶点的端点法线,以及与所述顶点相关联的图形特征的指示。如上文所描述,图形特征的指示可指示所述顶点是起始或末端盖、线段或接合点的一部分。举例来说,针对从棋盘形布置器50接收的每一输出值,域着色器52可执行GPU 12的着色器单元上的域着色器程序的实例。域着色器程序可致使域着色器52在基于从棋盘形布置器50接收的特定值确定的特定值处评估一或多个参数方程式,且基于所述评估产生输出顶点的坐标以及与每一顶点坐标相关联的图形特征。用以产生输出顶点坐标的参数方程式的系数中的一或多者可基于从壳着色器48接收的控制点中的一或多者而界定。每一输出顶点可对应于多个经棋盘形布置线段中的一者的端点。两个连续输出顶点可对应于单个经棋盘形布置线段的端点。在额外实例中,域着色器程序可致使域着色器52在基于从棋盘形布置器50接收的特定值确定的特定值处评估一或多个额外参数方程式以便产生每一输出顶点的法线坐标。
域着色器52可以经排序序列输出顶点,其中邻近顶点的每一集合表示经棋盘形布置线段。线段可共同地近似在顶点缓冲器中界定的路径片段。举例来说,域着色器52可输出以下顶点集合{0,1,2,3,4,5},其界定以下线段:{0,1}、{1,2}、{2,3}、{3,4}、{4,5}。在额外实例中,域着色器52可输出以下顶点集合{0,1,1,2,2,3,3,4,4,5},其可界定与先前实例中所列相同的线段。
在一些实例中,棋盘形布置器50和域着色器52可经配置以根据以下技术均匀地将路径片段棋盘形布置为多个线段。具体来说,棋盘形布置器50可输出用于参数评估的坐标(例如,t=0/T、1/T、2/T ... T/T,其中T是棋盘形布置因数)。取决于基元的类型,域着色器52可在由棋盘形布置器50输出的值处评估一或多个参数方程式。
对于线,在一些实例中,T可始终等于1。在此些实例中,域着色器52可不一定需要执行任何评估来产生对应于线路径片段的顶点。
对于三次贝塞尔曲线,域着色器52可根据以下参数方程式评估曲线且产生输出顶点:
V(t)=C0*(1-t)3+C1*3*(1-t)2*t+C2*3*(1-t)*t2+C3*t3 (1)
其中t对应于由棋盘形布置器50提供的输出值,V(t)对应于针对特定输出值(即,t)产生的输出顶点,且C0,C1,C2,C3对应于用于三次贝塞尔曲线的控制点。
或者,对于三次贝塞尔曲线,域着色器52可根据以下参数方程式评估曲线且产生输出顶点:
x(t)=X0*(1-t)3+X1*3*(1-t)2*t+X2*3*(1-t)*t2+X3*t3 (2)
y(t)=Y0*(1-t)3+Y1*3*(1-t)2*t+Y2*3*(1-t)*t2+Y3*t3 (3)
其中t对应于由棋盘形布置器50提供的输出值,x(t)对应于针对特定输出值(即,t)产生的输出顶点的x坐标,y(t)对应于针对特定输出值(即,t)产生的输出顶点的y坐标,且(X0,Y0)、(X1,Y1)、(X2,Y2)、(X3,Y3)对应于用于三次贝塞尔曲线的控制点。
对于二次贝塞尔曲线,域着色器52可根据以下参数方程式评估曲线且产生输出顶点:
V(t)=C0*(1-t)2+C1*2*(1-t)*t+C2*t2 (4)
其中t对应于由棋盘形布置器50提供的输出值,V(t)对应于针对特定输出值(即,t)产生的输出顶点,且C0,C1,C2对应于用于二次贝塞尔曲线的控制点。
或者,对于二次贝塞尔曲线,域着色器52可根据以下参数方程式评估曲线且产生输出顶点:
x(t)=X0*(1-t)2+X1*(1-t)*t+X2*t2 (5)
y(t)=Y0*(1-t)2+Y1*(1-t)*t+Y2*t2 (6)
其中t对应于由棋盘形布置器50提供的输出值,x(t)对应于针对特定输出值(即,t)产生的输出顶点的x坐标,y(t)对应于针对特定输出值(即,t)产生的输出顶点的y坐标,且(X0,Y0)、(X1,Y1)、(X2,Y2)对应于用于二次贝塞尔曲线的控制点。
对于椭圆形弧路径片段,域着色器52可根据以下参数方程式评估曲线且产生输出顶点:
x=Centerx+rhCos*cos(anglet)-rvSin*sin(anglet) (7)
y=Centery+rhSin*cos(anglet)+rvCos*sin(anglet) (8)
其中参数化角度anglet是从棋盘形布置器输出t确定,x对应于针对特定参数化角度(即,anglet)产生的输出顶点的x坐标,y对应于针对参数化角度(即,anglet)产生的输出顶点的y坐标,rh表示未旋转椭园的水平半径,rv表示未旋转椭圆的垂直半径,rvCos、rvSin、rhCos和rhSin分别表示rv*Cos(角度)、rv*Sin(角度)、rh*Cos(角度)和rh*Sin(角度),且angle表示在通过(rh,rv)按比例缩放之前测量的椭圆相对于x轴线的逆时针角度。在一些实例中,壳着色器48可经配置以确定(例如,预计算)cos(角度)和sin(角度)和/或确定(例如,预计算)rvCos、rvSin、rhCos和rhSin值,且将这些值提供到域着色器52供用于针对椭圆形弧评估上文所述的参数方程式。
如上文相对于椭圆形弧所论述,在一些实例中,片控制列表中的顶点可包含指示用于椭圆形弧的端点参数化的数据。在此等实例中,壳着色器48(例如,在GPU 12的着色器单元上执行的壳着色器程序)可用以将指示椭圆形弧的端点参数化的数据转换到指示椭圆形弧的中心参数化的数据。
现在描述用于当将椭圆形弧的端点参数化转换到椭圆形弧的中心参数化时寻找椭圆的正确中心的实例技术。所述实例技术可基于由参数集合(x0,y0)、(x1,y1)、rh、rv、φ、fS和fA界定的椭圆的端点表示而确定椭圆和/或椭圆形弧的中心点(cx,cy)以及初始和最终角度θ1和θ2。具有中心点(cx,cy)半径rh和rv以及旋转角度rot的椭圆可满足隐式方程式(x′)2+(y′)2=1,其中x′=((x-cx)*cos(rot)+(y-cy)*sin(rot))/rh且y′=(-(x-cx)*sin(rot)+(y-cy)*cos(rot))/rv。从(x,y)到(x′,y′)的变换将所要椭圆映射到以原点为中心的单位圆中。
为了确定穿过两个给定点(x0,y0)和(x1,y1)的具有共同半径和旋转角度的一对椭圆形的中心点,首先将平面变换到合适按比例缩放且旋转的坐标系中以使得每一椭圆的方程式变成(x′-cx′)2+(y′-cy′)2=1。随后可发现圆周穿过两个给定点的两个单位圆的中心(即,(cx0′,cy0′)和(cx1′,cy1′))。最后,通过逆变换放置中心点以获得原始坐标系中的解。
穿过点(x0,y0)和(x1,y1)的两个单位圆的中心点由(xm±Ay*d,)给定,其中xm=(x0+x1)/2、ym=(y0+y1)/2、Ax=(x0-x1)、Ay=(y0-y1)且d=√(1/(Δx2+Ay2)-1/4.)。如果d是无限的或虚数,那么分别由于输入点一致或相隔太远而不存在解。通过寻找圆上的端点的斜率且计算反正切可发现角度θ1和θ2。
以下伪码说明根据上述技术计算椭圆中心的过程。在原始椭圆参数的逆变换后findUnitCircles函数由findEllipses调用。
关于将椭圆形弧的端点参数化转换到椭圆形弧的中心参数化的进一步细节可参见2008年12月3日的“OpenVG规范,版本1.1”章节18.4,其在http://www.khronos.org/registry/vg/specs/openvg-1.1.pdf可用且整个内容以引用的方式并入本文中。
几何形状着色器54可从域着色器52接收经棋盘形布置线段且基于经棋盘形布置线段产生多个三角形基元。举例来说,针对经棋盘形布置线段中的每一者,几何形状着色器54可执行GPU 12的着色器单元上的几何形状着色器程序的实例,且基于相应经棋盘形布置线段产生用于经棋盘形布置线段的三角形基元。在一些实例中,针对经棋盘形布置线段中的每一者,几何形状着色器54可从域着色器52接收对应于相应经棋盘形布置线段的两个顶点,且产生对应于三角形基元的一组三个顶点。
在一些实例中,三角形基元的所述顶点中的两者可为与两个所接收顶点相同的顶点(例如,具有相同位置坐标)。在此些实例中,几何形状着色器54可基于针对与待再现路径片段相关联的全部经棋盘形布置线段为共同的共同顶点产生第三顶点。所述共同顶点可或可不对应于经棋盘形布置线段的端点中的一者。在一些实例中,所述共同顶点可对应于对应于用于待再现路径片段的经棋盘形布置线段的一组顶点中的第一顶点。在一些实例中,几何形状着色器54还可经配置以根据本发明的技术将额外棋盘形布置因数输出到棋盘形布置器50和再棋盘形布置/划虚线单元51。
几何形状着色器54可针对由域着色器52产生的经棋盘形布置线段中的每一者调用一次。针对经棋盘形布置线段中的每一者,几何形状着色器54可使用共同控制点作为三角形的第一顶点且使用相应经棋盘形布置线段的两个端点作为三角形的第二和第三顶点而产生三角形基元。举例来说,以上提供实例,其中域着色器52产生以下顶点集合{0,1,2,3,4,5},其界定以下线段:{0,1}、{1,2}、{2,3}、{3,4}、{4,5}。对于以上所列线段序列,几何形状着色器54可产生以下三角形:{C,0,1}、{C,1,2}、{C,2,3}、{C,3,4}、{C,4,5}、{C,4,5},其中C是对全部三角形为共同的任何单一顶点。
在一些实例中,几何形状着色器54还可经配置以将输出数据“流式输出”回到资源块42。图形管线40可将流式输出数据发射回到壳着色器48,且在一些实例中发射回到域着色器52,以便执行根据本发明的技术的第二棋盘形布置遍次。第二棋盘形布置遍次可在路径2域类型上操作。
光栅化器56可经配置以将多个3D图形基元(例如,点、线和三角形)转换为对应于3D图形基元的多个像素。举例来说,光栅化器56可接收对应于三角形基元的三个顶点,且将所述三个顶点转换为对应于由三角形基元覆盖的屏幕像素位置的多个像素。由三角形基元覆盖的屏幕像素位置可包含对应于三角形的顶点、三角形的边缘和三角形的内部的屏幕像素位置。
像素着色器58可从光栅化器56接收像素,且根据像素着色器程序基于所接收的像素产生经着色像素。举例来说,对于从光栅化器56接收的每一像素,像素着色器58可执行GPU 12的着色器单元上的像素着色器程序的实例。
在其它实例中,像素着色器58可产生与输入像素中的相应一者的输入属性不等同的输出像素的一或多个输出属性。举例来说,像素着色器58可对输入像素的属性中的一或多者执行实质性处理以产生输出像素的一或多个属性。作为另一实例,像素着色器58可从输入属性集合增加和/或删除属性以产生输出像素的输出属性的集合。
输出合并器60可将从像素着色器58接收的像素数据放置到再现目标(例如,帧缓冲器或模板缓冲器)中。在一些实例中,输出合并器60可基于光栅操作将从像素着色器58接收的像素数据与已经存储于再现目标中的像素数据合并。
除域着色器52评估参数方程式以产生顶点的位置坐标之外,域着色器52还可在来回划动操作期间产生顶点的法线(例如,切线)。为了产生法线,域着色器52可针对由棋盘形布置器50产生的值中的每一者评估额外参数方程式,且针对每一评估输出一或多个法线。在某些情况下,法线可作为由域着色器52输出的顶点的属性而输出。举例来说,对于来回划动操作,由域着色器52产生的输出顶点可包含指示顶点的位置的一或多个属性,指示与顶点相关联的法线或切线的一或多个属性,以及指示与顶点相关联的图形特征的信息。法线属性可指示路径片段上对应于由棋盘形布置器50产生的参数值的点的法向量。对于线段,通过取线段的终点与起始点之间的向量差可获得法线(例如,(X1-X0,Y1-Y0))。
为了产生弯曲路径片段(例如,贝塞尔曲线和椭圆形弧)的法线,可使用用于弯曲路径片段的切线公式。一般来说,用于曲线和椭圆形弧(可用以确定法线)的切线公式是上文相对于产生曲线和弧的顶点描述的参数公式的导数。
举例来说,对于三次贝塞尔曲线,域着色器52可根据以下参数方程式产生曲线的输出顶点的法线:
N(t)=C0*-3*(1-t)2+C1*(-6*(1-t)*t+3*(1-t)2)+C2
(9)
*(-3*t2+6*(1-t)*t)+C3*3*t2
其中t对应于由棋盘形布置器50提供的输出值,N(t)对应于针对特定输出值(即,t)产生的输出法线,且C0、C1、C2、C3对应于用于三次贝塞尔曲线的控制点。以上提供的用于二次贝塞尔曲线的参数方程式的导数可用以以类似方式产生用于二次贝塞尔曲线的法线。
或者,对于三次贝塞尔曲线,域着色器52可根据以下参数方程式产生曲线的输出顶点的法线:
x(t)=X0*-3*(1-t)2+X1*(-6*(1-t)*t+3*(1-t)2)+X2
(10)
*(-3*t2+6*(1-t)*t)+X3*3*t2
y(t)=Y0*-3*(1-t)2+Y1*(-6*(1-t)*t+3*(1-t)2)+Y2
(11)
*(-3*t2+6*(1-t)*t)+Y3*3*t2
其中t对应于由棋盘形布置器50提供的输出值,x(t)对应于针对特定输出值(即,t)产生的输出法线的x坐标,y(t)对应于针对特定输出值(即,t)产生的输出法线的y坐标,且(X0,Y0)、(X1,Y1)、(X2,Y2)、(X3,Y3)对应于用于三次贝塞尔曲线的控制点。以上提供的用于二次贝塞尔曲线的参数方程式的导数可用以以类似方式产生用于二次贝塞尔曲线的法线。
对于椭圆形弧路径片段,域着色器52可根据以下参数方程式产生曲线的输出顶点的法线:
Tanx=-rhCos*sin(anglet)-rvSin*cos(anglet) (12)
Tany=-rhSin*sin(anglet)+rvCos*cos(anglet) (13)
其中参数化角度anglet是从棋盘形布置器输出(即,t)确定,Tanx对应于针对特定参数化角度(即,anglet)产生的输出法线的x坐标,Tany对应于针对参数化角度(即,anglet)产生的输出法线的y坐标,rh表示未旋转椭园的水平半径,rv表示未旋转椭圆的垂直半径,rvCos、rvSin、rhCos和rhSin分别表示rv*Cos(角度)、rv*Sin(角度)、rh*Cos(角度)和rh*Sin(角度),且angle表示在通过(rh,rv)按比例缩放之前测量的椭圆相对于x轴线的逆时针角度。在一些实例中,壳着色器48可经配置以确定(例如,预计算)cos(角度)和sin(角度)和/或确定(例如,预计算)rvCos、rvSin、rhCos和rhSin值,且将这些值提供到域着色器52供用于针对椭圆形评估上文所述的参数方程式。
在找到切线之后,可根据以下方程式发现法向量:
法线=归一化(-Tany,Tanx) (14)
其中法线对应于(Tanx,Tany)向量的归一化向量,且normalize(x,y)是产生输入向量(x,y)的归一化版本的函数。向量(x,y)的归一化版本可指代具有与向量(x,y)相同的方向和一的长度(例如,范数)的向量。
如上文相对于椭圆形弧所论述,在一些实例中,片控制列表中的顶点可包含指示端点参数化的数据。在此等实例中,壳着色器48可将指示椭圆形弧的端点参数化的数据转换到指示椭圆形弧的中心参数化的数据。
图4A到4B是说明根据本发明的技术棋盘形布置所接收基元的概念图。图4A图解说明例如贝塞尔曲线的曲线80A或由如上文所描述方程式界定的另一种类型的曲线。根据本发明的技术,GPU 12、且明确地说棋盘形布置级62可将曲线80A划分为多个线段。每一线段由起始点和终点界定。
图4B图解说明根据本发明的技术将曲线80棋盘形布置为多个线段的结果的曲线。如上所述,壳着色器48可确定棋盘形布置器可作为输入接收的棋盘形布置因数。棋盘形布置器50可使用作为输入接收的棋盘形布置因数来确定所接收的基元(在此实例中,曲线80A)的多个域坐标。
在一些实例中,棋盘形布置因数可界定基元将划分成的线段的数目。在图4B的实例中,曲线80A已划分成七个线段,表示为线段82A到82G。基于所接收的线段棋盘形布置因数,棋盘形布置因数确定图4B中图解说明的七个线段的域坐标。
棋盘形布置器50确定u-v坐标系中线段82A到82G的域坐标。所述线段具有起始点和终点A0到A7。一般来说,u-v坐标系在u轴线和v轴线两者上是从[0...1]归一化的。u坐标可指示沿着u轴线的水平位置,且v坐标可指示沿着v轴线的垂直位置。然而,在其中棋盘形布置器50如图4B中所示出于将曲线划分为子片段的目的确定曲线的域坐标的实例中,棋盘形布置器50仅针对每一线段的每一起始点和终点计算u坐标。图形管线40的较后级(例如域着色器52)可确定与沿着曲线82A驻留的线段相关联的任何垂直偏移。
如上所述,u-v坐标系从零行进到一。因此,第一线段的起始点A0始终具有零的u坐标,且最后线段的终点(在此实例中)A7始终具有一的u坐标。为了确定沿着曲线82A的每一u坐标,棋盘形布置器50基于所确定的线段数目线性地内插每一u坐标。则在图4B的实例中,A1具有1/7(.14285...)的u坐标值,第三线点A2具有2/7(.285714...)的u坐标值等。在一些实例中,棋盘形布置器50可输出线段的起始点,之后是所述线段的终点。棋盘形布置器50随后输出后续线段的起始点。
除确定沿着曲线80A的线段中的每一者的起始点和终点中的每一者的域坐标(即,u和v坐标)之外,棋盘形布置器50还可输出指示与所确定域坐标中的一或多者相关联的图形特征的信息。在其中一个线段的终点u坐标与所述线段的起始点u坐标相同的图4B的实例中,同一u坐标输出两次,一次对应于先前线段的终点,且一次对应于后续线段的起始点。
图5A到5B是说明根据本发明的技术的线段的再棋盘形布置的概念图。如上文相对于图5所描述,棋盘形布置器50在一些实例中可执行再棋盘形布置。在图5中图解说明的第一遍次中,棋盘形布置器50可将路径划分为线段。然而,一些邻近(即连接的)线段的端点法线可能相对于彼此超出某个最大角度偏差。壳着色器48可确定所接收基元的角度偏差和最大角度偏差。壳着色器48通过将角度偏差除以最大角度偏差而确定用于基元的棋盘形布置因数,且将结果向上舍入到最接近整数值。壳着色器48随后将基元的原始线段的长度除以棋盘形布置因数以确定棋盘形布置差量(tessDelta)值,壳着色器48将所述值输出到棋盘形布置器50。
在第二遍次中,即当在路径2域类型上操作时,棋盘形布置器50可接收棋盘形布置因数,其包含壳着色器48输出的棋盘形布置差量值。棋盘形布置器50可在输入片段具有大于所接收的棋盘形布置差量值的长度的情况下通过将5A的片段划分或“切割”为子片段而确定额外u-v域坐标。
作为所述划分过程的一部分,棋盘形布置器50确定子片段的新的u和v起始点和终点坐标。为了确定每一子片段的u和v坐标,棋盘形布置器50利用如上文相对于图4A和4B所描述的相同线性内插技术。确切地说,棋盘形布置器50基于棋盘形布置差量值确定棋盘形布置因数,且基于棋盘形布置因数线性地内插u坐标值。在图5A和5B的实例中,棋盘形布置器50可确定用于图5A的片段的棋盘形布置因数3,其指示棋盘形布置器50应将图5A的片段划分为三个子片段。棋盘形布置器50随后确定且输出所述三个线段中的每一者的终点的u坐标。在图5B的实例中,四个终点域坐标的所确定的u-v坐标是:(0,0)、(.333,0)、(.666,0)和(1,0)。棋盘形布置器50还确定新子片段的终点的新法线。子片段的新法线由两个最内箭头指示。
一旦棋盘形布置器50确定且输出子片段的域坐标,域着色器52便基于域坐标、来自壳着色器48的控制点数据以及指示与所确定域坐标相关联的图形特征的信息而确定子片段的起始点和终点的顶点坐标。在此实例中,指示图形特征的信息可指示域坐标与线段而不是起始点或终点相关联。
图6A到6C是说明根据本发明的技术再棋盘形布置线段且将划虚线应用于线段的概念图。图6A图解说明具有可超出最大角度偏差的端点法线的线段100。如上文相对于图5A到5B所描述,壳着色器48可确定最大角度偏差且输出棋盘形布置器50作为输入接收的棋盘形布置差量。棋盘形布置器50在原始片段的长度超出棋盘形布置差量值的情况下确定对应于额外子片段的额外域坐标。域着色器52可确定子片段的顶点坐标。将线段100分裂为子片段可改善可包括曲线的经再现子片段的外观。
不同于相对于图5A和5B描述的过程,在图6B的实例中,棋盘形布置器50当在路径2域上操作(即在第二棋盘形布置遍次中)时确定超过棋盘形布置差量值的子片段的域坐标。在图6A到6C的实例中,棋盘形布置器50基于划虚线模式确定图6A的片段的子片段的域坐标。对于由划虚线模式指示为“关”的片段,棋盘形布置器50并不确定域坐标,且并不将任何域坐标输出到图形管线40中的较后级。对于由划虚线模式指示为“开”的片段,棋盘形布置器50根据上文相对于图5A-5B所述的技术确定起始点和终点域坐标。
在图6B的实例中,棋盘形布置器50确定划虚线模式指示片段的当前部分是开还是关。棋盘形布置器50可在一些实例中维持划虚线模式为状态。如果当前片段是开,那么棋盘形布置器50可确定所述线段的起始点和终点的域坐标。如果划虚线模式指示当前线段是关,那么棋盘形布置器50可丢弃或切割“关”线段且并不确定经切割线段的起始点和终点的域坐标。
当切割线段时,棋盘形布置器50还可切割与所述线段相关联的起始和末端盖或接合点。然而,划虚线模式或其它状态信息可指示先前“开”片段原本具有棋盘形布置器50在关片段的切割期间删除的起始或末端盖。因此,棋盘形布置器50可根据本发明的技术确定需要盖的线段的起始或末端盖的域坐标。相对于图12和13A到13D更详细地描述确定线段的起始或末端盖的过程。
返回到图6A到6C的实例,棋盘形布置器50基于划虚线模式确定子片段102和104的域坐标。棋盘形布置器50还确定应切割片段100的一部分,因为划虚线模式指示片段100的所述部分是“关”。棋盘形布置器50基于划虚线模式确定子片段中的每一者的u坐标,类似于相对于图5A到5B描述的线性内插过程。一旦棋盘形布置器50已将图6A的片段划分为两个子片段,其中在所述两个片段之间具有间隙或切割,壳着色器48便可确定线段的端点法线之间的角度偏差是否超出最大角度偏差。如果端点法线超出最大角度偏差,那么棋盘形布置器50可产生对应于额外子片段的端点的额外域坐标。如上文相对于图5A到5B所描述,如果端点法线超出所确定的最大角度偏差,那么棋盘形布置器50可确定具有不大于棋盘形布置差量输入参数的长度的线子片段的域坐标,如图6C中所示。在图6C中,棋盘形布置器50以长度棋盘形布置差量细分第一片段(在切割的左边)以产生具有较少发散端点法线的两个片段。
图7A到7C是说明应用根据本发明的一或多种技术的划虚线的概念图。图7A图解说明许多划虚线模式。划虚线模式可包括GPU 20可再现的许多“开”线段,以及GPU 20不可再现的许多“关”线段。划虚线模式中的开和关片段可具有变化长度,如图7A中所示。图7B图解说明棋盘形布置器50可输出到域着色器52和几何形状着色器54的另一实例划虚线模式。图7B的划虚线实例并不具有应用的末端盖以图解说明棋盘形布置器50并不应用末端盖或划虚线。图7C图解说明在几何形状着色器54将末端盖应用于“开”线段之后图7B的划虚线模式。
现在描述用于再现接合点的技术。接合点可在不同路径片段会合处应用。在一些实例中,可存在三个不同类型的接合点:(1)斜边;(2)斜接;以及(3)圆形。在一些实例中,待再现的接合点的类型可存储于GPU 12中的缓冲器(例如,片恒定缓冲器)中,且CPU 6可通过将指示接合点类型的值放置到所述缓冲器中而指示将用于再现的接合点的类型。
接合点可在两个路径片段会合的位置处形成。为了再现接合点,CPU 6可将指示两个路径片段会合处位置的数据和指示在所述位置处的两个切线(即,每一路径片段一个切线)的数据放置到缓冲器(例如,路径数据36中的顶点缓冲器)中用于由GPU 12消耗。
在一些实例中,用于接合点的输入路径数据可采取以下形式或相似形式:
{XMFLOAT3(pos.x,pos.y,5.0f)},
{XMFLOAT3(tan0.x,tan0.y,1.0f)},
{XMFLOAT3(tan1.x,tan1.y,1.0f)},
{XMFLOAT3(0.0f,0.0f,1.0f)},
在此实例中,每一行表示四个控制点片的顶点或控制点,且圆括号中的每一参数表示相应顶点或控制点的属性。在此实例中,第一控制点的最后属性存储指示待再现路径的类型的数据(即,“路径类型指示符”)。具体来说,在此实例中路径类型指示符是5.0f,其意味着所述路径片段是接合点路径片段。接合点路径片段的类型(例如,斜边、斜接或圆形)可由存储于GPU 12的缓冲器(例如,片恒定缓冲器)中的值指示。在此实例中,pos.x和pos.y是对应于所述两个路径片段会合的位置的(x,y)坐标,tan0.x和tan0.y是对应于在所述两个路径片段会合的位置处两个路径片段中的第一者的法向量的(x,y)坐标,且tan1.x和tan1.y是对应于在所述两个路径片段会合的位置处两个路径片段中的第二者的法向量的(x,y)坐标。在一些实例中,CPU 6可基于指示所述两个路径片段中的一者或两者的数据确定法向量的坐标。在此实例中剩余顶点和属性可未使用和/或可用以指示接合点的其它属性。
在一些实例中,为了再现接合点,壳着色器48可将对应于接合点的法向量{(tan0.x,tan0.y)和(tan1.x,tan1.y)}从笛卡耳坐标转换到角度坐标。在其它实例中,壳着色器48可在将笛卡耳坐标转换到角度坐标之前将对应于接合点的法向量{(tan0.x,tan0.y)和(tan1.x,tan1.y)}归一化。在额外实例中,壳着色器48可将法向量的角度坐标放置到由壳着色器48接收的片控制列表的一或多个属性中,且将经修改片控制列表传递到域着色器52用于进一步处理。
作为一个具体实例,针对接合点由壳着色器48接收的输入片控制列表可如下:
{XMFLOAT3(0.4f,0.8f,5.0f)}//位置
{XMFLOAT3(0.8f,0.0f,1.0f)}//第一切线
{XMFLOAT3(0.2f,-0.2f,1.0f)}//第二切线
{XMFLOAT3(0.0f,0.0f,1.0f)}
在此实例中,壳着色器48可产生每一切线(即,法向量)的角度坐标并且针对每一切线,将所述角度坐标放置到对应于相应切线的控制点的第三属性中。在一些实例中,所得片控制列表可采取以下形式:
{XMFLOAT3(0.4f,0.8f,5.0f)}//位置
{XMFLOAT3(0.8f,0.0f,0.0f)}//第一切线
{XMFLOAT3(0.2f,-0.2f,5.5f)}//第二切线
{XMFLOAT3(0.0f,0.0f,1.0f)}
在一些实例中,壳着色器48可实施以下伪码和/或着色器程序代码以归一化切线,且将切线的笛卡耳坐标转换为角度坐标:
图8是说明实例斜边接合点的概念图。对于斜边接合点,GPU 12可再现在空间上对应于斜边区域的一或多个三角形(例如,图8中所示的亮着色三角形)。如图8中示出,点c可对应于两个路径片段会合处的路径片段的端点,u0和10可对应于基于端点(即,c)的第一路径片段产生的拐角点,且u1和11可对应于基于端点(即,c)的第二路径片段产生的拐角点。
在一些实例中,域着色器52可从壳着色器48接收片控制列表,且将顶点提供到几何形状着色器54。所述顶点可包含指示两个路径片段会合的共同端点(即,点c)的一或多个属性,指示在所述共同端点处路径片段中的每一者的法线的一或多个属性,以及指示路径再现基元的类型(例如,在此情况下的接合点)的一或多个属性。
图9是说明实例斜接接合点的概念图。对于斜接接合点,GPU 12可再现在空间上对应于斜接区域的一或多个三角形。针对斜接接合点再现的三角形中的一者可类似于如上文相对于图8所描述的针对斜边接合点再现的三角形。然而,斜接接合点与斜边接合点相比可具有额外三角形。
如图9中示出,点c可对应于两个路径片段会合处的路径片段的端点,u0和10可对应于基于端点(即,c)的第一路径片段产生的拐角点,且u1和11可对应于基于端点(即,c)的第二路径片段产生的拐角点。类似于上文相对于图8所述的斜边接合点,域着色器52可从壳着色器48接收片控制列表,且将顶点提供到几何形状着色器54。所述顶点可包含指示两个路径片段会合的共同端点(即,点c)的一或多个属性,指示在所述共同端点处路径片段中的每一者的法线的一或多个属性,以及指示路径再现基元的类型(例如,在此情况下的接合点)的一或多个属性。
图10是说明实例圆形接合点的概念图。如图10中示出,点c可对应于两个路径片段会合处的路径片段的端点,u0和10可对应于基于端点(即,c)的第一路径片段产生的拐角点,且u1和11可对应于基于端点(即,c)的第二路径片段产生的拐角点。本文所描述的是利用棋盘形布置级62来提供圆形接合点的GPU加速再现的技术。
根据本发明的技术,图形管线40可使用棋盘形布置级62产生圆形接合点区域的多个顶点,每一顶点具有相关联法线方向。每一顶点可对应于接合点区域的相应切片,其中每一切片由共同端点(即,c)和沿着圆形接合点的弯曲边缘的两个相应点界定。为了近似切片,棋盘形布置器50可确定对应于沿着圆形接合点的边缘的与切片相关联的顶点的域坐标以近似接合点的切片的曲率。在此些实例中,为了再现接合点,域着色器52可基于切片近似中的每一者的域坐标而确定切片近似中的每一者的顶点坐标,其一起可近似接合点的聚合区域。
为了产生用于圆形接合点的切片近似,棋盘形布置器50可确定后续线段的起始点的法线。如上文所描述,棋盘形布置器50接收接合点棋盘形布置因数,其指示棋盘形布置器50确定其域(u-v)坐标的片段的数目。与接合点相关联的域坐标中的每一者的u坐标始终等于一,因为所述接合点始终发生在棋盘形布置器50正接合的当前片段的端点处。
为了确定域坐标中的每一者的v坐标,棋盘形布置器50基于棋盘形布置因数线性地内插v坐标值中的每一者以使得与接合点相关联的第一域坐标的起始v坐标是零,与接合点相关联的最后v坐标是一,且对应于这两个点之间的域坐标(或顶点)的全部其它v坐标值具有均匀分布的v坐标。作为一实例,对于具有接合点棋盘形布置因数“3”的接合点,棋盘形布置器50可输出对应于三个切片的u-v坐标。每一切片可对应于具有法线方向的顶点(被称作正+法线)。在图10的实例中,顶点中的每一者可具有相同位置,但可具有不同法线。不同法线可通过由棋盘形布置器50输出的与顶点相关联的不同u-v坐标来指示。第一坐标对具有u-v坐标(1,0)且对应于例如图10的点10。最后域坐标对具有u-v坐标(1,1)且对应于接合点的最后线段,例如图10的11。其它两个顶点s具有u-v坐标(1,.33)和(1,.66)。如果不同数目的切片由不同接合点棋盘形布置因数指定,那么线段中的每一者的端点的u-v坐标可不同,但在v轴线上仍从零到一线性地分布。
除确定线段中的每一者的域坐标之外,棋盘形布置器50还确定指示接合点的确定域坐标中的一或多者的图形特征的信息。在此实例中,指示图形特征的信息可指示域坐标与接合点相关联。后续级(例如域着色器52)可解译域坐标以及指示所述域坐标与接合点相关联的相关联信息以确定所述接合点的顶点坐标。在确定顶点坐标之后,图形管线40的后续级可再现接合点。
现在描述用于再现起始盖和末端盖(被称作末端盖)的技术。末端盖可在由多个路径片段形成的路径的开始和/或末端处应用。在一些实例中,可存在两个不同类型的末端盖:(1)正方形盖;以及(2)圆形盖。在一些实例中,待再现末端盖的类型可存储于GPU12中的缓冲器(例如,片恒定缓冲器)中,且CPU 6可通过将指示末端盖类型的值放置到所述缓冲器中来指示将用于再现的末端盖的类型。
末端盖可形成在对应于路径的开始或末端的路径片段的开始或末端。为了再现末端盖,CPU 6可将指示末端盖的位置(例如,路径片段的端点)的数据和指示在所述位置处的切线的数据放置到缓冲器(例如,路径数据36中的顶点缓冲器)中用于由GPU 12消耗。
在一些实例中,用于末端盖的输入路径数据可采取以下形式或相似形式:
{XMFLOAT3(pos.x,pos.y,6.0f)},
{XMFLOAT3(tan.x,tan.y,1.0f)},
{XMFLOAT3(0.0f,0.0f,1.0f)},
{XMFLOAT3(0.0f,0.0f,1.0f)},
在此实例中,每一行表示四个控制点片的顶点或控制点,且圆括号中的每一参数表示相应顶点或控制点的属性。在此实例中,第一控制点的最后属性存储指示待再现路径的类型的数据(即,“路径类型指示符”)。具体来说,在此实例中路径类型指示符是6.0f,其意味着所述路径片段是末端盖路径片段。末端盖路径片段的类型(例如,正方形或圆形)可由存储于GPU 12的缓冲器(例如,片恒定缓冲器)中的值指示。在此实例中pos.x和pos.y是对应于所述末端盖形成的位置(例如,路径片段的端点)的(x,y)坐标,且tan.x和tan.y是对应于在所述末端盖形成的位置的法向量的(x,y)坐标。在一些实例中,CPU 6可基于指示其上形成末端盖的路径片段的数据确定法向量的坐标。在此实例中剩余顶点和属性可未使用和/或可用以指示盖的其它属性。
在一些实例中,为了再现末端盖,壳着色器48可将对应于末端盖的法向量(tan.x,tan.y)从笛卡耳坐标转换到角度坐标。在其它实例中,壳着色器48可在将笛卡耳坐标转换到角度坐标之前将对应于末端盖的法向量(tan.x,tan.y)归一化。在额外实例中,壳着色器48可将法向量的角度坐标放置到由壳着色器48接收的片控制列表的一或多个属性中,且将经修改片控制列表传递到域着色器52用于进一步处理。在一些实例中,壳着色器48可实施上文相对于接合点所论述的伪码和/或着色器程序代码以归一化切线和/或将切线的笛卡耳坐标转换为角度坐标。
作为一个具体实例,针对末端盖由壳着色器48接收的输入片控制列表可如下:
{XMFLOAT3(-0.4f,0.8f,6.0f)}//位置
{XMFLOAT3(0.8f,0.0f,1.0f)}//切线
{XMFLOAT3(0.0f,0.0f,1.0f)}
{XMFLOAT3(0.0f,0.0f,1.0f)}
在此实例中,壳着色器48可产生切线(即,法向量)的角度坐标,且将角度坐标放置在含有所述切线的控制点的第三属性中。在一些实例中,所得片控制列表可采取以下形式:
{XMFLOAT3(-0.4f,0.8f,6.0f)},//位置
{XMFLOAT3(0.8f,0.0f,0.0f)},//切线
{XMFLOAT3(0.0f,0.0f,1.0f)},
{XMFLOAT3(0.0f,0.0f,1.0f)},
图11是说明实例正方形盖的概念图。对于正方形盖,GPU 12可再现在空间上对应于盖区域(例如,图11中所示的亮着色矩形)的一或多个三角形。如图11中示出,点c可对应于路径片段的端点,且u和l可对应于基于在其处形成盖的路径片段的端点(即,c)产生的拐角点。
在一些实例中,域着色器52可从壳着色器48接收片控制列表,且将顶点提供到几何形状着色器54。所述顶点可包含指示形成盖的路径片段的端点(即,点c)的一或多个属性,指示在端点(即,点c)处路径片段的法线的一或多个属性,以及指示路径再现基元的类型(例如,在此情况下的盖)的一或多个属性。
几何形状着色器54在一些实例中可从域着色器52接收顶点,且基于如本发明中所描述的方程式中的一或多者确定所述顶点的拐角点(u,1)。几何形状着色器54可根据以下方程式确定向量v:
v=(u-1)/2 (15)
其中u和l对应于用于路径片段的端点的来回划线区域的拐角点。
几何形状着色器54可根据以下方程式将向量v旋转90度以找到向量n:
n=(v.y,-v.x) (16)
其中a=(x,y)指示向量a的x和y分量,其中v.y对应于向量v的y分量,且其中v.x对应于向量v的x分量。
几何形状着色器54可根据以下方程式确定用于起始盖或末端盖的新点(例如顶点):
nu=u±n (17)
nl=l±n (18)
其中nu和nl是用于盖的新拐角点,且u和l对应于用于路径片段的端点的来回划线区域的拐角点。
几何形状着色器54可产生在空间上对应于正方形盖区域的用于再现正方形盖的一或多个三角形。举例来说,几何形状着色器54可产生在空间上对应于正方形盖区域的两个三角形(例如,(u,l,nu)和(nu,l,nl))。图形管线40可针对正方形盖区域再现由几何形状着色器54产生的一或多个三角形。一旦一个或三角形已经再现,再现目标(例如,帧缓冲器)便可存储用于正方形盖的来回划线区域的光栅化版本。
在根据本发明的技术的一些实例中,GPU 12可利用棋盘形布置级62来确定正方形盖的顶点坐标。壳着色器48可将起始盖棋盘形布置因数和/或末端盖棋盘形布置因数输出到棋盘形布置器50。非零末端盖棋盘形布置因数与非零接合点棋盘形布置因数相互排斥,因为末端盖和接合点无法在线段的端点上共存。起始盖或末端盖棋盘形布置因数可具有等于一的值,其致使棋盘形布置器保存且输出具有原始顶点位置和与线段的端点相关联的法线的域坐标,但其与正方形起始或末端盖相关联。
图12是说明实例圆形盖的概念图。如图12中示出,点c可对应于路径片段的端点,且u和l可对应于基于在其处形成盖的路径片段的端点(即,c)产生的拐角点。GPU 12可以类似于上文针对再现圆形接合点的技术中的任一者的方式再现圆形盖。
根据本发明的技术,GPU 12可利用棋盘形布置级62来确定圆形盖的顶点坐标。壳着色器48可将起始盖棋盘形布置因数和/或末端盖棋盘形布置因数输出到棋盘形布置器50。非零末端盖棋盘形布置因数与非零接合点棋盘形布置因数相互排斥,因为末端盖和接合点无法在线段的端点上共存。
如上文在图10中相对于接合点所描述,棋盘形布置器50确定线性地分布且对应于圆形盖的切片近似的u-v坐标。棋盘形布置器50基于所接收的接合点棋盘形布置因数输出域坐标。如果所述盖是起始盖,那么棋盘形布置器50输出的全部域坐标的u坐标等于零。如果所述盖是末端盖,那么棋盘形布置器50输出的全部域坐标的u坐标等于一。假定起始盖棋盘形布置因数为四,指示所述盖应划分成四个切片,且具有对应于五个线段的坐标,棋盘形布置器50针对接合点确定且输出的u-v坐标是:(1,0)、(1,.25)、(1,.5)、(1,.75)和(1,1)。除确定域坐标之外,棋盘形布置器50还确定指示图形特征(在此情况下,起始盖或末端盖)的信息。域着色器52接收域坐标和使域坐标关联的信息作为起始或末端盖的一部分,且确定所述域坐标中的每一者的顶点坐标。
图13A到13D是说明根据本发明的一或多种技术应用盖和接合点的概念图。图13A到13B图解说明用于使用棋盘形布置器50再现盖的技术。在图13A中,线段经细分为两个子片段。子片段中的一者具有端点法线80,棋盘形布置器50例如基于一或多个顶点参数将末端盖应用于所述端点法线。在一些实例中,顶点参数可根据OpenVG再现命令指定。
在图13A到13B中图解说明的圆形末端盖的情况下,棋盘形布置器50接收末端盖棋盘形布置因数作为输入且使用所述棋盘形布置因数来确定将线段的末端细分为的三角形的数目。棋盘形布置器50随后通过确定径向围绕法线140的中心点的坐标将线段的末端划分为三角形。所述划分的输出是许多u和v域坐标。u坐标可大体上对应于旋转的中心,且v坐标可大体上对应于径向围绕法线140的中心(u坐标)旋转的点。如上文所描述,与起始盖相关联的域坐标可具有等于零的u坐标,且与末端盖相关联的域坐标可具有等于一的u坐标。在棋盘形布置器50确定末端盖的u和v坐标之后,域着色器52可根据围绕圆形末端盖的中心的u和v坐标值计算顶点坐标。中心点140对应于所述末端盖将应用于的线段的端点。一般来说,u坐标值的范围可为[0,1]。然而,在其中棋盘形布置器在路径2域上操作的情况下,起始盖的v坐标范围可为[0,.5],且末端盖的v坐标范围可为[.5,1]。当在路径2域上操作时v坐标值的范围的限制允许域着色器52确定从棋盘形布置器50输出的域坐标是用于起始盖还是末端盖。当在路径2域上操作时,域着色器52在v坐标在范围[0,.5]中的情况下推断由棋盘形布置器50输出的域坐标与起始盖相关联,且在v坐标在范围[.5,1]中的情况下与末端盖相关联。
图13C到13D图解说明用于基于图13A到13B中图解说明的技术应用圆形接合点的技术。在13C的实例中,两个线段可具有需要使用圆形接合点接合的端点。待接合区域由标注142指示。为了产生用于图13C的线段的圆形接合点,棋盘形布置器50可执行与图13A到13B中图解说明的过程相似的过程,所述过程确定中心点的u坐标且确定对应于围绕所述中心u坐标径向旋转的点的许多v坐标。棋盘形布置器50随后将所述u和v坐标输出到域着色器54,所述域着色器基于所述u和v坐标计算顶点位置。
图14A到14B是说明根据本发明的技术的线段的尖点的再棋盘形布置的概念图。图14A图解说明在其交叉处具有“尖点”的两个线段。尖点经界定为两个线段之间的交叉点,其中所述两个线段的切线超出最大角度阈值,或其中在所述交叉点处的切线是不确定的。
根据本发明的技术,棋盘形布置器50可执行再棋盘形布置,例如上文相对于图13A到13D描述的圆形再棋盘形布置,以便在具有尖点的交叉点处平滑所述路径。图14B图解说明在两个线段的交叉点处执行圆形再棋盘形布置的结果。
为了执行尖点处置,棋盘形布置级62可执行与上文相对于图5A到5B和图6A到6B所述的技术相似的技术。也就是说,棋盘形布置器50可接收被称作棋盘形布置差量值的棋盘形布置因数,其用以确定线段的最大长度。壳着色器48基于基元的端点法线的角度偏差和最大角度偏差值确定棋盘形布置差量值。如果输入片段的长度超出棋盘形布置差量值,那么棋盘形布置器50确定对应于具有小于棋盘形布置差量的长度的子片段的域坐标。
棋盘形布置器50将对应于子片段的域坐标连同指示所述子片段是线段(与盖或接合点相比)的一部分的信息一起输出到域着色器52。基于域坐标和指示子片段的域坐标与线段图形特征相关联的信息,域着色器52确定所述子片段的顶点坐标。当再现时,子片段可对最终再现曲线增加平滑度或曲率,如图14B中所示。
图15图解说明根据本发明的用于执行GPU加速的路径再现的技术。出于示范性目的,图15中所示的技术描述为由图1和2中所示的GPU 12且以图3中所示的图形管线40执行。在其它实例中,图15中图解说明的技术可在以相同或不同配置具有相同或不同组件的其它系统中实施。
图15是说明根据本发明的用于执行GPU加速的路径再现的实例技术的流程图。仅出于实例的目的,例如图3的棋盘形布置器50等棋盘形布置单元可执行图15中图解说明的技术。在图15的过程中,棋盘形布置器50确定所接收基元的顶点的域坐标(160)。棋盘形布置器50输出顶点的所确定的域坐标(162)。棋盘形布置器50确定所接收基元的域类型不是三角形、等值线或方形域中的一者(164)。棋盘形布置器50随后当所述域类型不是三角形、等值线或方形域中的一者时输出指示与所确定域坐标中的一或多者相关联的图形特征的信息(166)。
为了输出指示图形特征的信息,棋盘形布置器50可基于棋盘形布置因数输出指示图形特征的信息。在一些实例中,指示图形表示的信息包括指示图形特征是末端盖、线段和接合点中的一者的数据。
图16是说明根据本发明的用于执行GPU加速的路径再现的实例技术的流程图。在一些实例中,棋盘形布置器50可接收棋盘形布置因数。为了解译棋盘形布置因数,棋盘形布置器50可接收作为第一类型和第二类型中的一者的域类型的指示(180)。当域类型是第一类型时(决策框182的“是”分支),棋盘形布置器50可接收用于线段的棋盘形布置因数、用于起始盖的棋盘形布置因数、用于接合点的棋盘形布置因数以及用于末端盖的棋盘形布置因数(184)。在此实例中,棋盘形布置器50可通过确定线段的端点法线且以棋盘形布置单元基于线段的所述端点法线以及用于起始盖的棋盘形布置因数或用于末端盖的棋盘形布置因数线性地内插起始盖或末端盖的u坐标和v坐标对,来确定所接收基元的顶点的域坐标。
当域类型是第二类型时(决策框182的“否”分支),棋盘形布置器50接收棋盘形布置因数,可包括接收棋盘形布置差量值、片段长度值、片段长度倒数值以及指示图形特征的信息(186)。在此实例中,为了确定域坐标,棋盘形布置器50可基于棋盘形布置差量值、片段长度值、片段长度倒数值以及指示图形特征的信息确定额外域坐标,从而确定指示与所述额外确定域坐标中的一或多者相关联的图形特征的信息。棋盘形布置器50可进一步输出所述额外确定域坐标,且输出指示与所述一或多个额外确定域坐标相关联的图形特征的所确定信息。
在又一些其它实例中,棋盘形布置器50可基于划虚线模式确定域坐标,且所述划虚线模式可作为状态存储在棋盘形布置器50中。作为根据本发明的技术的另一实例,棋盘形布置器50可在第一遍次中确定所接收基元的顶点的域坐标,输出所述顶点的所确定域坐标,且输出指示图形特征的信息。棋盘形布置器50可进一步经配置以:在第一遍次中接收由棋盘形布置单元输出的棋盘形布置因数,在第二遍次中基于在第一遍次中接收的棋盘形布置因数确定顶点的额外域坐标,确定指示所述额外域坐标中的一或多者的图形特征的信息,输出所述额外域坐标,且输出指示与所述额外域坐标中的一或多者相关联的图形特征的信息。
在一些实例中,本发明的技术可用以在DirectX GPU上执行路径再现。在其它实例中,本发明的技术可在OpenVG平台上实施且测试和/或可符合OpenVG路径再现标准。在额外实例中,本发明的技术可为DirectX版本9.3、11和11+提供对路径再现的GPU加速解决方案。DirectX11+可指代经修改DirectX 11架构。
在一些实例中,路径可指代多个路径片段,其可为例如线、椭圆形弧、二次贝塞尔曲线和三次贝塞尔曲线。路径可为“闭合”或不闭合的(即,开放)。闭合路径可指代其中最后顶点经由线连接到第一顶点且其中路径形成封闭形状的路径。开放路径可指代其中最后顶点未必连接到第一顶点的路径。路径可自身重叠多次。路径再现可划分成两个主任务:填充和来回划动。
本发明中所描述的技术可至少部分实施于硬件、软件、固件或其任何组合中。举例来说,所描述的技术的各种方面可实施于一或多个处理器中,包含一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或任何其它等效的集成或离散逻辑电路,以及此些组件的任何组合。术语“处理器”或“处理电路”可大体上指前述逻辑电路中的任一者(单独或结合其它逻辑电路)或例如执行处理的离散硬件的任何其它等效电路。
此硬件、软件和固件可实施于相同装置内或单独装置内以支持本发明中所描述的各种操作和功能。另外,所描述单元、模块或组件中的任一者可一起或单独作为离散但可互操作逻辑装置而实施。将不同特征描述为模块或单元意图强调不同功能方面且未必暗示此等模块或单元必须由单独硬件或软件组件实现。替代地,与一或多个模块或单元相关联的功能性可由单独硬件、固件和/或软件组件执行,或集成到共用或单独硬件或软件组件内。
本发明中所描述的技术也可存储、体现或编码于计算机可读媒体(例如,存储指令的计算机可读存储媒体)中。嵌入或编码于计算机可读媒体中的指令可导致一或多个处理器执行本文中所描述的技术(例如,当由一或多个处理器执行指令时)。计算机可读存储媒体可包含随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器、硬盘、CD-ROM、软盘、卡盒、磁性媒体、光学媒体或其他有形计算机可读存储媒体。
计算机可读媒体可包含计算机可读存储媒体,其对应于例如上文所列的那些的有形存储媒体。计算机可读媒体也可包括通信媒体,其包含促进计算机程序从一个地点到另一地点的传送(例如,根据通信协议)的任何媒体。以此方式,短语“计算机可读媒体”大体上可对应于(1)非暂时性有形计算机可读存储媒体和(2)例如暂时性信号或载波的非有形计算机可读通信媒体。
已描述各种方面和实例。然而,可在不脱离所附权利要求书的范围的情况下对本发明的结构或技术作出修改。
Claims (36)
1.一种方法,其包括:
以图形处理单元GPU的棋盘形布置单元确定所接收基元的顶点的域坐标;
以所述棋盘形布置单元输出所述顶点的所述所确定域坐标;
以所述棋盘形布置单元确定所述所接收基元的域类型不是三角形、等值线或方形域中的一者;以及
当所述域类型不是所述三角形、等值线或方形域中的一者时以所述棋盘形布置单元输出指示与所述所确定域坐标中的一或多者相关联的图形特征的信息。
2.根据权利要求1所述的方法,其进一步包括:
以所述棋盘形布置单元接收棋盘形布置因数;
其中输出指示所述图形特征的所述信息包括基于所述棋盘形布置因数输出指示所述图形特征的所述信息。
3.根据权利要求2所述的方法,其中指示所述图形表示的所述信息包括指示所述图形特征是末端盖、线段和接合点中的一者的数据。
4.根据权利要求2所述的方法,其中接收所述棋盘形布置因数进一步包括:
以所述棋盘形布置单元接收作为第一类型和第二类型中的一者的域类型的指示;
当所述域类型是所述第一类型时,以所述棋盘形布置单元接收用于线段的棋盘形布置因数、用于起始盖的棋盘形布置因数、用于接合点的棋盘形布置因数以及用于末端盖的棋盘形布置因数。
5.根据权利要求4所述的方法,所述方法进一步包括:
其中确定所述所接收基元的所述顶点的所述域坐标进一步包括:
以所述棋盘形布置单元确定线段的端点法线;以及
以所述棋盘形布置单元基于所述线段的所述端点法线以及用于起始盖的所述棋盘形布置因数或用于末端盖的所述棋盘形布置因数线性地内插所述起始盖或所述末端盖的u坐标和v坐标对。
6.根据权利要求2所述的方法,其中接收所述棋盘形布置因数进一步包括:
以所述棋盘形布置单元接收作为第一类型和第二类型中的一者的域类型的指示;
当所述域类型是所述第二类型时:
其中接收所述棋盘形布置因数包括以所述棋盘形布置单元接收棋盘形布置差量值、片段长度值、片段长度倒数值以及指示图形特征的信息。
7.根据权利要求6所述的方法,其中确定所述域坐标进一步包括基于所述棋盘形布置差量值、所述片段长度值、所述片段长度倒数值以及所述指示图形特征的信息而确定额外域坐标;
以所述棋盘形布置单元确定指示与所述额外确定域坐标中的一或多者相关联的图形特征的信息,所述方法进一步包括:
以所述棋盘形布置单元输出所述额外确定域坐标;以及
以所述棋盘形布置单元输出指示与所述一或多个额外确定域坐标相关联的所述图形特征的所述所确定信息。
8.根据权利要求1所述的方法,其中确定所述域坐标进一步包括基于划虚线模式确定所述域坐标,其中所述划虚线模式作为状态存储在所述棋盘形布置单元中。
9.根据权利要求1所述的方法,其中确定所接收基元的顶点的所述域坐标、输出所述顶点的所述所确定域坐标以及输出指示所述图形特征的所述信息在第一遍次中发生,所述方法进一步包括:
以所述棋盘形布置单元接收在所述第一遍次中由所述棋盘形布置单元输出的棋盘形布置因数;
在第二遍次中,以所述棋盘形布置单元基于在所述第一遍次中接收的所述棋盘形布置因数确定顶点的额外域坐标;
以所述棋盘形布置单元确定指示所述额外域坐标中的一或多者的图形特征的信息;
以所述棋盘形布置单元输出所述额外域坐标;以及
以所述棋盘形布置输出指示与所述额外域坐标中的一或多者相关联的所述图形特征的所述信息。
10.一种图形处理单元GPU,其包括棋盘形布置单元,所述棋盘形布置单元经配置以:
确定所接收基元的顶点的域坐标;
输出所述顶点的所述所确定域坐标;
确定所述所接收基元的域类型不是三角形、等值线或方形域中的一者;以及
当所述域类型不是所述三角形、等值线或方形域中的一者时输出指示与所述所确定域坐标中的一或多者相关联的图形特征的信息。
11.根据权利要求10所述的GPU,其中所述GPU进一步经配置以:
接收棋盘形布置因数;
其中为了输出指示所述图形特征的所述信息,所述棋盘形布置单元进一步经配置以基于所述棋盘形布置因数输出指示所述图形特征的所述信息。
12.根据权利要求11所述的GPU,其中指示所述图形表示的所述信息包括指示所述图形特征是末端盖、线段和接合点中的一者的数据。
13.根据权利要求11所述的GPU,其中为了接收所述棋盘形布置因数,所述GPU进一步经配置以:
接收作为第一类型和第二类型中的一者的域类型的指示;
当所述域类型是所述第一类型时,接收用于线段的棋盘形布置因数、用于起始盖的棋盘形布置因数、用于接合点的棋盘形布置因数以及用于末端盖的棋盘形布置因数。
14.根据权利要求13所述的GPU,其中为了确定所述所接收基元的所述顶点的所述域坐标,所述GPU进一步经配置以:
确定线段的端点法线;以及
基于所述线段的所述端点法线以及用于起始盖的所述棋盘形布置因数或用于末端盖的所述棋盘形布置因数线性地内插所述起始盖或所述末端盖的u坐标和v坐标对。
15.根据权利要求11所述的GPU,其中为了接收所述棋盘形布置因数,所述GPU进一步经配置以:
接收作为第一类型和第二类型中的一者的域类型的指示;
当所述域类型是所述第二类型时:
为了接收所述棋盘形布置因数,所述GPU经配置以接收棋盘形布置差量值、片段长度值、片段长度倒数值以及指示图形特征的信息。
16.根据权利要求15所述的GPU,其中为了确定所述域坐标,所述GPU进一步经配置以基于所述棋盘形布置差量值、所述片段长度值、所述片段长度倒数值以及所述指示图形特征的信息而确定额外域坐标;
确定指示与所述额外确定域坐标中的一或多者相关联的图形特征的信息,其中所述GPU进一步经配置以:
输出所述额外确定域坐标;以及
输出指示与所述一或多个额外确定域坐标相关联的所述图形特征的所述所确定信息。
17.根据权利要求10所述的GPU,其中为了确定所述域坐标,所述GPU进一步经配置以基于划虚线模式确定所述域坐标,其中所述划虚线模式作为状态存储在所述棋盘形布置单元中。
18.根据权利要求10所述的GPU,其中为了确定所接收基元的顶点的所述域坐标,所述GPU进一步经配置以输出所述顶点的所述所确定域坐标,且输出指示所述图形特征的所述信息在第一遍次中发生,其中所述GPU进一步经配置以:
接收在所述第一遍次中由所述棋盘形布置单元输出的棋盘形布置因数;
在第二遍次中,基于在所述第一遍次中接收的所述棋盘形布置因数确定顶点的额外域坐标;
确定指示所述额外域坐标中的一或多者的图形特征的信息;
输出所述额外域坐标;以及
输出指示与所述额外域坐标中的一或多者相关联的所述图形特征的所述信息。
19.一种设备,其包括:
用于确定所接收基元的顶点的域坐标的装置;
用于输出所述顶点的所述所确定域坐标的装置;
用于确定所述所接收基元的域类型不是三角形、等值线或方形域中的一者的装置;以及
用于当所述域类型不是所述三角形、等值线或方形域中的一者时输出指示与所述所确定域坐标中的一或多者相关联的图形特征的信息的装置。
20.根据权利要求19所述的设备,其进一步包括:
用于接收棋盘形布置因数的装置;
其中所述用于输出指示所述图形特征的所述信息的装置包括用于基于所述棋盘形布置因数输出指示所述图形特征的所述信息的装置。
21.根据权利要求20所述的设备,其中指示所述图形表示的所述信息包括指示所述图形特征是末端盖、线段和接合点中的一者的数据。
22.根据权利要求20所述的设备,其中所述用于接收所述棋盘形布置因数的装置进一步包括:
用于接收作为第一类型和第二类型中的一者的域类型的指示的装置;
用于当所述域类型是所述第一类型时接收用于线段的棋盘形布置因数、用于起始盖的棋盘形布置因数、用于接合点的棋盘形布置因数以及用于末端盖的棋盘形布置因数的装置。
23.根据权利要求22所述的设备,所述设备进一步包括:
其中所述用于确定所述所接收基元的所述顶点的所述域坐标的装置进一步包括:
用于确定线段的端点法线的装置;以及
用于基于所述线段的所述端点法线以及用于起始盖的所述棋盘形布置因数或用于末端盖的所述棋盘形布置因数线性地内插所述起始盖或所述末端盖的u坐标和v坐标对的装置。
24.根据权利要求20所述的设备,其中所述用于接收所述棋盘形布置因数的装置进一步包括:
用于接收作为第一类型和第二类型中的一者的域类型的指示的装置;
当所述域类型是所述第二类型时:
其中所述用于接收所述棋盘形布置因数的装置包括用于接收棋盘形布置差量值、片段长度值、片段长度倒数值以及指示图形特征的信息的装置。
25.根据权利要求24所述的设备,其中所述用于确定所述域坐标的装置进一步包括用于基于所述棋盘形布置差量值、所述片段长度值、所述片段长度倒数值以及所述指示图形特征的信息而确定额外域坐标的装置;
用于确定指示与所述额外确定域坐标中的一或多者相关联的图形特征的信息的装置,所述设备进一步包括:
用于输出所述额外确定域坐标的装置;以及
用于输出指示与所述一或多个额外确定域坐标相关联的所述图形特征的所述所确定信息的装置。
26.根据权利要求19所述的设备,其中所述用于确定所述域坐标的装置进一步包括用于基于划虚线模式确定所述域坐标的装置,其中所述划虚线模式作为状态存储在所述棋盘形布置单元中。
27.根据权利要求19所述的设备,其中所述用于确定所接收基元的顶点的所述域坐标的装置、所述用于输出所述顶点的所述所确定域坐标的装置以及所述用于输出指示所述图形特征的所述信息的装置在第一遍次中发生,所述设备进一步包括:
用于接收在所述第一遍次中由所述棋盘形布置单元输出的棋盘形布置因数的装置;
用于在第二遍次中基于在所述第一遍次中接收的所述棋盘形布置因数确定顶点的额外域坐标的装置;
用于确定指示所述额外域坐标中的一或多者的图形特征的信息的装置;
用于输出所述额外域坐标的装置;以及
用于输出指示与所述额外域坐标中的一或多者相关联的所述图形特征的所述信息的装置。
28.一种包括指令的非暂时性计算机可读存储媒体,所述指令在被执行时致使一或多个处理器:
确定所接收基元的顶点的域坐标;
输出所述顶点的所述所确定域坐标;
确定所述所接收基元的域类型不是三角形、等值线或方形域中的一者;以及
当所述域类型不是所述三角形、等值线或方形域中的一者时输出指示与所述所确定域坐标中的一或多者相关联的图形特征的信息。
29.根据权利要求28所述的非暂时性计算机可读媒体,其进一步包括致使所述一或多个处理器进行以下操作的指令:
接收棋盘形布置因数;
其中所述致使所述一或多个处理器输出指示所述图形特征的所述信息的指令进一步包括致使所述一或多个处理器基于所述棋盘形布置因数输出指示所述图形特征的所述信息的指令。
30.根据权利要求29所述的非暂时性计算机可读媒体,其中指示所述图形表示的所述信息包括指示所述图形特征是末端盖、线段和接合点中的一者的数据。
31.根据权利要求29所述的非暂时性计算机可读媒体,其中所述致使所述一或多个处理器接收所述棋盘形布置因数的指令进一步包括致使所述一或多个处理器进行以下操作的指令:
接收作为第一类型和第二类型中的一者的域类型的指示;
当所述域类型是所述第一类型时,接收用于线段的棋盘形布置因数、用于起始盖的棋盘形布置因数、用于接合点的棋盘形布置因数以及用于末端盖的棋盘形布置因数。
32.根据权利要求31所述的非暂时性计算机可读媒体,其中所述致使所述一或多个处理器确定所述所接收基元的所述顶点的所述域坐标的指令进一步包括致使所述一或多个处理器进行以下操作的指令:
确定线段的端点法线;以及
基于所述线段的所述端点法线以及用于起始盖的所述棋盘形布置因数或用于末端盖的所述棋盘形布置因数线性地内插所述起始盖或所述末端盖的u坐标和v坐标对。
33.根据权利要求29所述的非暂时性计算机可读媒体,其中所述致使所述一或多个处理器接收所述棋盘形布置因数的指令,所述GPU进一步致使所述一或多个处理器:
接收作为第一类型和第二类型中的一者的域类型的指示;
当所述域类型是所述第二类型时:
其中所述致使所述一或多个处理器接收所述棋盘形布置因数的指令进一步包括致使所述一或多个处理器接收棋盘形布置差量值、片段长度值、片段长度倒数值以及指示图形特征的信息的指令。
34.根据权利要求33所述的非暂时性计算机可读媒体,其中所述致使所述一或多个处理器确定所述域坐标的指令进一步包括致使所述一或多个处理器进行以下操作的指令:
基于所述棋盘形布置差量值、所述片段长度值、所述片段长度倒数值以及所述指示图形特征的信息而确定额外域坐标;
确定指示与所述额外确定域坐标中的一或多者相关联的图形特征的信息,进一步包括致使所述一或多个处理器进行以下操作的指令:
输出所述额外确定域坐标;以及
输出指示与所述一或多个额外确定域坐标相关联的所述图形特征的所述所确定信息。
35.根据权利要求28所述的非暂时性计算机可读媒体,其中所述致使所述一或多个处理器确定所述域坐标的指令进一步包括致使所述一或多个处理器基于划虚线模式确定所述域坐标的指令,其中所述划虚线模式作为状态存储在所述棋盘形布置单元中。
36.根据权利要求28所述的非暂时性计算机可读媒体,其中所述致使所述一或多个处理器确定所接收基元的顶点的所述域坐标的指令进一步包括在被执行时致使所述一或多个处理器在第一遍次中输出所述顶点的所述所确定域坐标且输出指示所述图形特征的所述信息的指令,进一步包括致使所述一或多个处理器进行以下操作的指令:
接收在所述第一遍次中由所述棋盘形布置单元输出的棋盘形布置因数;
在第二遍次中,基于在所述第一遍次中接收的所述棋盘形布置因数确定顶点的额外域坐标;
确定指示所述额外域坐标中的一或多者的图形特征的信息;
输出所述额外域坐标;以及
输出指示与所述额外域坐标中的一或多者相关联的所述图形特征的所述信息。
Applications Claiming Priority (15)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261681498P | 2012-08-09 | 2012-08-09 | |
US61/681,498 | 2012-08-09 | ||
US201261713377P | 2012-10-12 | 2012-10-12 | |
US61/713,377 | 2012-10-12 | ||
US201261723274P | 2012-11-06 | 2012-11-06 | |
US61/723,274 | 2012-11-06 | ||
US201361755312P | 2013-01-22 | 2013-01-22 | |
US201361755359P | 2013-01-22 | 2013-01-22 | |
US201361755391P | 2013-01-22 | 2013-01-22 | |
US61/755,312 | 2013-01-22 | ||
US61/755,391 | 2013-01-22 | ||
US61/755,359 | 2013-01-22 | ||
US13/841,637 US9275498B2 (en) | 2012-08-09 | 2013-03-15 | GPU-accelerated path rendering |
US13/841,637 | 2013-03-15 | ||
PCT/US2013/051525 WO2014025517A1 (en) | 2012-08-09 | 2013-07-22 | Gpu-accelerated path rendering |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104541305A true CN104541305A (zh) | 2015-04-22 |
CN104541305B CN104541305B (zh) | 2017-10-31 |
Family
ID=50065862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380041786.5A Expired - Fee Related CN104541305B (zh) | 2012-08-09 | 2013-07-22 | Gpu加速的路径再现 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9275498B2 (zh) |
JP (1) | JP6013606B2 (zh) |
CN (1) | CN104541305B (zh) |
WO (1) | WO2014025517A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107492065A (zh) * | 2016-06-12 | 2017-12-19 | 苹果公司 | 用于经改进图形流水线中的镶嵌的系统和方法 |
CN109472265A (zh) * | 2017-09-07 | 2019-03-15 | 彭文伟 | 一种图像特征提取及描述方法 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330495B2 (en) | 2012-08-09 | 2016-05-03 | Qualcomm Incorporated | Extending DX11 GPU for programmable vector graphics |
US9619853B2 (en) | 2012-08-09 | 2017-04-11 | Qualcomm Incorporated | GPU-accelerated path rendering |
US9582929B2 (en) * | 2013-06-04 | 2017-02-28 | Confetti Interactive Inc. | Dynamic skydome system |
US9299181B2 (en) | 2013-08-28 | 2016-03-29 | Qualcomm Incorporated | Target independent stenciling in graphics processing |
DE102014007914A1 (de) | 2014-05-27 | 2015-12-03 | Elektrobit Automotive Gmbh | Graphisches Darstellen von Straßen und Routen unter Benutzung von Hardware-Tesselierung |
US9916326B2 (en) | 2015-01-27 | 2018-03-13 | Splunk, Inc. | Efficient point-in-polygon indexing technique for facilitating geofencing operations |
US10026204B2 (en) | 2015-01-27 | 2018-07-17 | Splunk Inc. | Efficient point-in-polygon indexing technique for processing queries over geographic data sets |
US9607414B2 (en) | 2015-01-27 | 2017-03-28 | Splunk Inc. | Three-dimensional point-in-polygon operation to facilitate displaying three-dimensional structures |
US9836874B2 (en) | 2015-01-27 | 2017-12-05 | Splunk Inc. | Efficient polygon-clipping technique to reduce data transfer requirements for a viewport |
US9767122B2 (en) | 2015-01-27 | 2017-09-19 | Splunk Inc. | Efficient point-in-polygon indexing technique to facilitate displaying geographic data |
US10347016B2 (en) * | 2016-01-12 | 2019-07-09 | Monotype Imaging Inc. | Converting font contour curves |
US9978161B2 (en) * | 2016-04-11 | 2018-05-22 | Here Global B.V. | Supporting a creation of a representation of road geometry |
US10062206B2 (en) * | 2016-08-30 | 2018-08-28 | Advanced Micro Devices, Inc. | Parallel micropolygon rasterizers |
CN107818069B (zh) | 2016-09-12 | 2021-10-01 | 阿里巴巴集团控股有限公司 | 数据处理方法及系统 |
CN107766148B (zh) * | 2017-08-31 | 2021-02-19 | 北京百度网讯科技有限公司 | 一种异构集群及任务处理方法和装置 |
US10936792B2 (en) | 2017-12-21 | 2021-03-02 | Monotype Imaging Inc. | Harmonizing font contours |
US10643369B2 (en) * | 2018-05-30 | 2020-05-05 | Advanced Micro Devices, Inc. | Compiler-assisted techniques for memory use reduction in graphics pipeline |
KR20200073697A (ko) * | 2018-12-14 | 2020-06-24 | 삼성전자주식회사 | 경로를 포함하는 객체를 렌더링하는 장치, 이를 포함하는 컴퓨팅 장치 및 이의 렌더링 방법 |
US11257253B2 (en) * | 2019-12-10 | 2022-02-22 | Nvidia Corporation | Method and system for unified encoding of path segments, caps, and joins for path stroking |
US11164372B2 (en) * | 2019-12-10 | 2021-11-02 | Nvidia Corporation | Polar stroking for vector graphics |
DE102020130293A1 (de) | 2019-12-10 | 2021-06-10 | Nvidia Corporation | Polar stroking für vektorgrafiken |
CN112509108B (zh) * | 2020-12-03 | 2024-04-12 | 杭州群核信息技术有限公司 | 基于gpu的顶点环境光遮蔽的生成方法以及图像渲染方法 |
US11869123B2 (en) * | 2021-08-03 | 2024-01-09 | Adobe Inc. | Anti-aliasing two-dimensional vector graphics using a compressed vertex buffer |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060050072A1 (en) * | 2004-08-11 | 2006-03-09 | Ati Technologies Inc. | Unified tessellation circuit and method therefor |
CN101118644A (zh) * | 2006-08-01 | 2008-02-06 | 深圳安凯微电子技术有限公司 | 一种图形加速器及图形处理方法 |
CN101147140A (zh) * | 2004-12-21 | 2008-03-19 | 辛芬特公司 | 用于确定交点的装置和方法 |
CN101689306A (zh) * | 2007-02-16 | 2010-03-31 | 高通股份有限公司 | 有效的二维及三维图形处理 |
CN101978393A (zh) * | 2008-03-20 | 2011-02-16 | 高通股份有限公司 | 用于图形渲染的多阶段细分 |
CN102099832A (zh) * | 2008-07-18 | 2011-06-15 | 微软公司 | Gpu贝塞尔路径光栅化 |
US20110285724A1 (en) * | 2010-05-21 | 2011-11-24 | Kilgard Mark J | Conversion of dashed strokes into quadratic bèzier segment sequences |
CN102598063A (zh) * | 2009-09-09 | 2012-07-18 | 先进微装置公司 | 曲面细分引擎及其应用 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7190367B2 (en) | 2003-03-25 | 2007-03-13 | Mitsubishi Electric Research Laboratories, Inc. | Method, apparatus, and system for rendering using a progressive cache |
US7109987B2 (en) * | 2004-03-02 | 2006-09-19 | Ati Technologies Inc. | Method and apparatus for dual pass adaptive tessellation |
US7589730B1 (en) * | 2005-05-20 | 2009-09-15 | Adobe Systems Incorporated | System and method for drawing a dashed path |
US7684641B1 (en) | 2005-12-13 | 2010-03-23 | Nvidia Corporation | Inside testing for paths using a derivative mask |
US8044955B1 (en) | 2007-08-31 | 2011-10-25 | Adobe Systems Incorporated | Dynamic tessellation spreading for resolution-independent GPU anti-aliasing and rendering |
WO2009093956A1 (en) * | 2008-01-23 | 2009-07-30 | Swiftfoot Graphics Ab | Method, apparatus, and computer program product for improved graphics performance |
EP2107528B1 (en) * | 2008-04-01 | 2012-12-26 | Telefonaktiebolaget L M Ericsson (PUBL) | Method of and arrangement for rendering a path |
US8243070B1 (en) | 2008-04-18 | 2012-08-14 | Adobe Systems Incorporated | Triangulation for accelerated rendering of polygons |
US8773432B2 (en) | 2008-04-18 | 2014-07-08 | Adobe Systems Incorporated | Triangulation for accelerated multi-resolution rendering of stroked paths |
US8373702B2 (en) * | 2009-05-15 | 2013-02-12 | Stmicroelectronics S.R.L. | System and method for adaptive tessellation of a curve |
US8144147B2 (en) * | 2010-04-07 | 2012-03-27 | Intel Corporation | Hierarchical bounding of displaced parametric surfaces |
US20110310102A1 (en) | 2010-06-17 | 2011-12-22 | Via Technologies, Inc. | Systems and methods for subdividing and storing vertex data |
US8624899B2 (en) | 2010-09-27 | 2014-01-07 | Microsoft Corporation | Arc spline GPU rasterization for cubic Bezier drawing |
US8791945B2 (en) | 2011-05-18 | 2014-07-29 | Intel Corporation | Rendering tessellated geometry with motion and defocus blur |
US8854374B2 (en) * | 2011-12-23 | 2014-10-07 | Advanced Micro Devices, Inc. | Tessellation patterns |
US9330495B2 (en) | 2012-08-09 | 2016-05-03 | Qualcomm Incorporated | Extending DX11 GPU for programmable vector graphics |
US9619853B2 (en) | 2012-08-09 | 2017-04-11 | Qualcomm Incorporated | GPU-accelerated path rendering |
-
2013
- 2013-03-15 US US13/841,637 patent/US9275498B2/en not_active Expired - Fee Related
- 2013-07-22 WO PCT/US2013/051525 patent/WO2014025517A1/en active Application Filing
- 2013-07-22 JP JP2015526553A patent/JP6013606B2/ja not_active Expired - Fee Related
- 2013-07-22 CN CN201380041786.5A patent/CN104541305B/zh not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060050072A1 (en) * | 2004-08-11 | 2006-03-09 | Ati Technologies Inc. | Unified tessellation circuit and method therefor |
CN101147140A (zh) * | 2004-12-21 | 2008-03-19 | 辛芬特公司 | 用于确定交点的装置和方法 |
CN101118644A (zh) * | 2006-08-01 | 2008-02-06 | 深圳安凯微电子技术有限公司 | 一种图形加速器及图形处理方法 |
CN101689306A (zh) * | 2007-02-16 | 2010-03-31 | 高通股份有限公司 | 有效的二维及三维图形处理 |
CN101978393A (zh) * | 2008-03-20 | 2011-02-16 | 高通股份有限公司 | 用于图形渲染的多阶段细分 |
CN102099832A (zh) * | 2008-07-18 | 2011-06-15 | 微软公司 | Gpu贝塞尔路径光栅化 |
CN102598063A (zh) * | 2009-09-09 | 2012-07-18 | 先进微装置公司 | 曲面细分引擎及其应用 |
US20110285724A1 (en) * | 2010-05-21 | 2011-11-24 | Kilgard Mark J | Conversion of dashed strokes into quadratic bèzier segment sequences |
Non-Patent Citations (1)
Title |
---|
MARK SEGAL;KURT AKELEY: "《The OpenGL Graphics System:A Specification(Version 4.3 (Compatibility Profile)》", 6 August 2012 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107492065A (zh) * | 2016-06-12 | 2017-12-19 | 苹果公司 | 用于经改进图形流水线中的镶嵌的系统和方法 |
CN107492065B (zh) * | 2016-06-12 | 2021-02-02 | 苹果公司 | 用于经改进图形流水线中的镶嵌的系统和方法 |
CN109472265A (zh) * | 2017-09-07 | 2019-03-15 | 彭文伟 | 一种图像特征提取及描述方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104541305B (zh) | 2017-10-31 |
WO2014025517A1 (en) | 2014-02-13 |
US20140043330A1 (en) | 2014-02-13 |
US9275498B2 (en) | 2016-03-01 |
JP2015528598A (ja) | 2015-09-28 |
JP6013606B2 (ja) | 2016-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104541305A (zh) | Gpu加速的路径再现 | |
CN104520900B (zh) | Gpu加速的路径再现 | |
KR101776547B1 (ko) | Gpu-가속된 패스 렌더링 | |
CN104520901B (zh) | 用于路径再现的方法及装置 | |
US9177351B2 (en) | Multi-primitive graphics rendering pipeline | |
CN105493150B (zh) | 图形处理中的目标独立模板印刷 | |
US10176626B2 (en) | Systems and methods for computer-based visualization, rendering, and representation of surfaces using point clouds | |
CN102227752B (zh) | 使用三维图形硬件的二维图形渲染期间的顶点丢弃 | |
US8704830B2 (en) | System and method for path rendering with multiple stencil samples per color sample | |
US8274506B1 (en) | System and methods for creating a three-dimensional view of a two-dimensional map | |
US9697640B2 (en) | Start node determination for tree traversal in ray tracing applications | |
US9818221B2 (en) | Start node determination for tree traversal for shadow rays in graphics processing | |
US10140736B2 (en) | Graphics processing systems | |
US9495767B2 (en) | Indexed uniform styles for stroke rendering | |
CN107851330B (zh) | 用于图形处理的零像素剔除 | |
US9805495B2 (en) | Single pass bounding volume hierarchy rasterization | |
Mahsman | Projective grid mapping for planetary terrain | |
Trapp et al. | Dynamic mapping of raster-data for 3D geovirtual environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171031 Termination date: 20190722 |
|
CF01 | Termination of patent right due to non-payment of annual fee |