由于GPU上所提供的图形操作的并行性、较佳的存储器带宽以及专用硬件,将多个图形计算移到图形处理单元(GPU)上改进了通常在设备中央处理单元(CPU)上所进行的处理。然而,GPU仅能够用几何着色器、顶点着色器和像素着色器来光栅化三角形。绘制路径(其中路径是补缀在一起的贝塞尔(Bézier)曲线的组合,不被光栅化图像的限制所绑定,并且对修改是直观的)需要某种转换成为GPU可理解的形式。传统方法在CPU上执行这一转换步骤,并且通常变得受CPU限制。
传统的抗混叠方法是超采样,其中该技术包括概念上以更高的分辨率进行绘图,并且随后用滤波器模式降采样来产生抗混叠的结果。超采样的缺点是它一般随着样本数量而在性能上伸缩,并且对于高用户界面(UI)质量,应使用十六或更多的样本。这可导致基于实现的大约十六倍的减速以及十六倍的存储器要求。可采用较慢但使用较少存储器的多遍方法。
另一抗混叠方法是硬件本机支持且包括对每一像素运行一次像素着色器的多样本缓冲区的方法。该方法以较高分辨率产生用于几何结构的覆盖信息,并且生成用于三角数据的抗混叠信息。然而,多样本方法有缺点。质量随着特定部分而显著地变化。大多数硬件具有某他最小样本数(例如,四个样本),这对于高质量矢量图形是不够的。此外,多样本抗混叠与提供不一致外表的不同GPU厂商不同。另外,多样本抗混叠可对每一像素只运行一次像素着色器。由此,在像素着色器中使用贝塞尔展平技术导致混叠的输出,因为像素着色器对曲线的求值是次最优的。
常用的第三种抗混叠方法涉及基于从采样点到边缘的距离的技术。在像素着色器中,可计算与几何结构的边缘的距离,并且产生阿尔法衰减来获得抗混叠的结果。使用这一方法,绘图可被完全混叠,而无需超采样的成本并且无需与多样本缓冲区相关联的额外成本。可获得沿贝塞尔的抗混叠边缘;然而,因为像素着色器对每一像素仅运行一次,并且因为像素着色器将仅在像素被包含在几何中的情况下在该像素上运行,因此如果几何结构是细小的,这一方法不能够渲染细小的几何结构。
考虑成一角度的1像素线(例如,直接角周围的弧),这在UI中是常见的。由于该细小特征有可能遗漏所有采样点。当绘图被混叠时,在每个像素的中心存在一采样点,并且如果几何结构与该采样点不相交,则什么都没有绘制。由此,对于成一角度1像素宽的线,该几何结构消失。由此,这第三种方法的缺点是如果特征变得细小,则该特征可简单地消失。
另一缺点是角是不准确的,因为角也可能遗漏采样点。解决这一问题的方法是使用像素着色器和多样本缓冲区的组合。多样本缓冲区有助于角,因为角常常具有相关联的也与角匹配的几何结构,并且以某种方式对多样本缓冲区的边缘产生掩蔽效应。然而,在不存在边缘几何结构的情况下,例如,当贝塞尔展平在接近细小特征的像素着色器中完成时,这一方法仍没有解决细小特征的问题。基本上,一像素宽的曲线消失,且尽管角变得更好,但角在采用多样本缓冲区的情况下是不准确的。
具体实施方式
所公开的体系结构至少解决了使用图形处理单元(GPU)来绘制基本曲线并且在输出中获得高质量的抗混叠的问题。采用超采样来在细小特征的两侧上产生像素着色器样本,以便允许着色器在细小形状(例如,1像素宽的线)的所有相关像素上进行处理。顶点着色器计算抗混叠采样信息,而不是使用ddx/ddy来逼近与边缘的距离。ddx指令计算相对于X窗口坐标的近似偏导来产生结果矢量。在像素的中心对该偏导求值。类似地,ddy指令计算相对于Y窗口坐标的近似偏导来产生结果矢量。同样在像素的中心对该偏导数值。采用可仅沿边缘超采样而非对整个形状采样的三角测量算法。
现在将参考附图,全部附图中相同的附图标记用于表示相同的元件。在下面的描述中,为了进行说明,阐述了很多具体细节以便提供对本发明的全面理解。然而,显而易见,可以没有这些具体细节的情况下实施各新颖实施例。在其它情况下,以框图形式示出了公知的结构和设备以便于描述它们。本发明将涵盖落入所要求保护的主题的精神和范围内的所有修改、等效方案和替换方案。
图1示出了根据所公开的体系结构的计算机实现的图形处理系统100。系统100包括用于对图像108(场景)中的对象106的边缘104进行采样来分辨几何信息的采样组件102。系统100还可包括用于通过计算抗混叠采样信息112来增强图像108的质量的质量组件110。采样组件102对边缘104进行超采样来产生用于着色器的样本。着色器可以是以较高频率进行采样(以便在边缘104的两侧上运行)来在与边缘104相关的像素上运行的像素着色器。
此处描述的系统100和其他实施例采用超采样以及用于计算与特征边缘的距离或贝塞尔求值的方法。为了避免遗漏一些特征,该技术创建少数超样本(例如,三个或四个样本)的某一超采样,这可基于超样本的数量相应地减慢过程。例如,当使用四个超样本时,该过程可减慢四倍,并且它自身没有足够质量来在用户界面(UI)中渲染。然而,这对拾取细小特征是足够质量的。换言之,通过稍微超采样,可在细小边缘的两侧产生样本,这使得细小特征可被某一像素检测到。既然细小特征命中了某一像素,质量将由与边缘的距离的方法来实现。例如,该技术可结合与边缘的距离的方法四倍超采样,从而在那里产生另外四个样本,导致16样本结果,该结果通过使用像素着色器来增强质量而看上去良好。
可通过在GPU中使用超采样以及一个或多个着色器来在GPU中完全地采用系统100以便产生额外的样本。可以理解,替换实现采用其中在硬件解决方案中采用软件的FPGA(现场可编程门阵列)技术。一般而言,一种方法提供了改变像素着色器对每一像素运行的次数的能力(可通过利用多样本缓冲区来帮助)。
更具体地,为了提供更广泛的使用,所公开的方法复制顶点着色器中的贝塞尔信息并且基于该贝塞尔信息取多个样本,而不是在像素着色器中计算距离,其中“复制”包括将位置复制并且调整到顶点着色器中不同的采样点,并且随后像素着色器对多个坐标进行贝塞尔求值。距离函数从像素着色器中移除;贝塞尔信息在顶点着色器中的不同位置浮置,并且更容易地在像素着色器中求值。抗混叠计算从每一像素移至每一顶点。
图2示出了根据所公开的体系结构的更详细的图形处理系统200。系统200包括用于对图像108(场景)中的对象106的边缘104进行采样来分辨几何信息的采样组件102。系统200还包括用于通过计算抗混叠采样信息112来增强图像108的质量的质量组件110。
系统200可进一步包括用于将三角数据生成为纹理信息、对边缘104的各侧进行超采样并且将超样本转换成纹理信息的三角测量组件202。着色器组件204可包括便于贝塞尔路径的最终路径光栅化的一个或多个着色器。例如,着色器组件204可包括用于基于细小特征的超采样的方面来计算偏移纹理单元的顶点着色器,用于使用该偏移纹理单元来执行附加采样的像素着色器,以及用于对场景进行降采样来产生最终场景结果的降采样着色器。
该方面可以是细小特征的边缘,该边缘有1像素宽。像素着色器以较高频率运行来捕捉细小几何特征。顶点着色器所计算的偏移纹理单元被用作抗混叠采样信息。三角测量组件202可基于应用于细小特征的沿贝塞尔曲线的三角形将三角数据生成为偏移纹理单元。顶点着色器、像素着色器和降采样着色器在CPU上独占地操作以提供贝塞尔路径光栅化。
或者,采样组件102可包括用于对细小特征的边缘进行超采样的像素着色器。
图3示出了GPU路径光栅化的流程框图300。这一过程可以用两个帧系统来开始:初始帧系统320和随后用于最终渲染的重新绘制的帧系统304。与初始帧系统302相关联的处理可由CPU来执行,而重新绘制的帧系统304可由GPU来执行。
三角测量方法利用三角测量组件202来接收贝塞尔路径描述306(也被称为贝塞尔信息),并且产生具有相关联的贝塞尔坐标的三角测量。对每一像素进行贝塞尔坐标求值。一旦产生,该三角测量现在是可重用的(作为顶点数据),并且可以按不同的缩放因子、变换等被绘制若干次。初始帧系统302进行预处理工作,该预处理工作还可以在创作时执行。三角测量组件202的输出是作为或具有纹理单元(或数据)的三角数据308(例如,坐标)。可利用一工具来生成三角测量数据和运行时负载后处理工作。预处理工作产生三角数据,该预处理工作可在计算系统(或CPU)上执行。
重新绘制的帧系统304是在GPU上所完成且对每帧所执行的工作。重新绘制的帧系统304上的工作可以用缩放变换等来动画。三角数据308包括运行(具有抗混叠提示)的顶点着色器310的纹理单元,该顶点着色器310基于变换来复制三角坐标,或者更具体地,基于变换(作为具有抗混叠提示的顶点数据312)来复制贝塞尔项并且将该项传递到像素着色器314(它也可执行附加采样)。像素着色器314随后在316处生成用于场景光栅化的超采样缓冲区。降采样着色器318在320处取得超采样缓冲区内容,并且随后降采样到最终路径(或目标)分辨率。因此,一般而言,该过程将细小特征重新绘制成较大,并且随后用像素着色器重新降采样以产生最终光栅化。
以下是表示用于执行所公开的体系结构的各新颖方面的示例性方法的一系列流程图。尽管出于解释简明的目的,此处例如以流图或流程图形式示出的一个或多个方法被示出并描述为一系列动作,但是可以理解和明白,各方法不受动作的次序的限制,因为根据本发明,某些动作可以按与此处所示并描述的不同的次序和/或与其他动作同时发生。例如,本领域技术人员将会明白并理解,方法可被替换地表示为一系列相互关联的状态或事件,诸如以状态图的形式。此外,并非在一方法中示出的所有动作都是新颖实现所必需的。
图4示出了处理图形的计算机实现的方法。在400处,对图像中的特征的边缘进行过采样来获得几何信息。在402处,基于几何信息来计算抗混叠采样信息作为偏移纹理单元。在404处,使用偏移纹理单元来执行附加采样。在406处,基于附加采样和几何信息来重新绘制场景。在408处,对重新绘制的场景进行降采样以产生最终渲染的结果。
偏移纹理单元可以是从贝塞尔对象所获得的偏移贝塞尔纹理单元。该方法可进一步包括以较高频率运行像素着色器来获得诸如1像素宽的特征等细小特征的样本。该方法可进一步包括运行顶点着色器来计算抗混叠采样信息,以及运行像素着色器来获得附加采样。
图5示出路径光栅化的方法。在500处,在过缩放的渲染目标上启动三角测量。例如,对于过缩放,可将水平和垂直分辨率两者加倍。在502处,在边缘的两侧上运行像素着色器来获得样本。以较高频率运行拾取了一像素宽的线通常所遗漏的样本。在504处,运行顶点着色器来基于当前变换计算用于抗混叠的偏移贝塞尔纹理单元。在506处,运行像素着色器来在像素着色器中基于偏移贝塞尔纹理单元进行附加次数的采样。例如,采用500处的2x2(水平乘以垂直)的过缩放以及504处的四个样本,存在每像素2x2x4=16个样本来用于高质量抗混叠。可在需要时采用其他过缩放和样本。在508处,绘制该场景。在510处,当该场景被绘制以后,在该场景上运行降采样着色器来产生最终渲染的结果。
图6示出了对边缘采样的方法。在600,启动超采样。在602处,为图像特征生成三角形。在604处,每个三角形被分成边缘部和内部。在606处,处理三角形的内部。这可用混叠模式来执行。在608处,对三角形的像素边缘部进行超采样。例如,超采样可被运行到超采样缓冲区中。在610处,使用从超样本所计算的像素来在目的地目标对象中重新绘制边缘三角形。该重新绘制可仅使用在超采样缓冲区中所计算的那些像素为沿边缘的像素执行。在612处,清除超采样缓冲区的内容以供下一帧使用。这可通过将边缘三角形重新绘制到超采样缓冲区以清除内容、重新绘制到背景色例如以避免全部表面清除来实现。
如在本申请中所使用的,术语“组件”和“系统”旨在表示计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是但不限于,在处理器上运行的进程、处理器、硬盘驱动器、多个(光和/或磁存储介质的)存储驱动器、对象、可执行代码、执行的线程、程序、和/或计算机。作为说明,在服务器上运行的应用程序和服务器两者都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,且组件可以位于一台计算机上和/或分布在两台或更多的计算机之间。词语“示例性”此处可用于表示用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。
现在参考图7,示出了根据所公开的体系结构的可用于采用生成贝塞尔路径光栅化的GPU的计算系统700的框图。为了提供用于其各方面的附加上下文,图7及以下讨论旨在提供对其中可实现该各方面的合适的计算系统700的简要概括描述。尽管以上描述是在可在一个或多个计算机上运行的计算机可执行指令的一般上下文中进行的,但是本领域的技术人员将认识到,新颖实施例也可结合其他程序模块和/或作为硬件和软件的组合来实现。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等等。此外,本领域的技术人员可以理解,本发明的方法可用其他计算机系统配置来实施,包括单处理器或多处理器计算机系统、小型计算机、大型计算机、以及个人计算机、手持式计算设备、基于微处理器的或可编程消费电子产品等,其每一个都可操作上耦合到一个或多个相关联的设备。
所示各方面也可以在其中某些任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
计算机通常包括各种计算机可读介质。计算机可读介质可以是可由计算机访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字视频盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来存储所需信息并可由计算机访问的任何其它介质。
再次参考图7,用于实现各方面的示例性计算系统700包括具有处理单元704、系统存储器706和系统总线708的计算机702。系统总线708向包括但不限于系统存储器706的各系统组件提供到处理单元704的接口。处理单元704可以是市场上可购买到的各种处理器中的任意一种。双微处理器和其它多处理器体系结构也可用作处理单元704。
系统总线708可以是若干种总线结构中的任一种,这些总线结构还可互连到存储器总线(带有或没有存储器控制器)、外围总线、以及使用各类市场上可购买到的总线体系结构中的任一种的局部总线。系统存储器706可包括非易失性存储器710和/或易失性存储器712(例如,随机存取存储器(RAM))。基本输入/输出系统(BIOS)可被存储在非易失性存储器710(例如,ROM、EPROM、EEPROM等)中,其中BIOS是帮助诸如在启动期间在计算机702内的元件之间传输信息的基本例程。易失性存储器712还可包括诸如静态RAM等高速RAM来用于高速缓存数据。
计算机702还包括内置硬盘驱动器(HDD)714(例如,EIDE、SATA),该内置HDD 714还可被配置成在合适的机壳中外部使用;磁软盘驱动器(FDD)716(例如,从可移动磁盘718中读取或向其写入);以及光盘驱动器720(例如,从CD-ROM盘722中读取,或从诸如DVD等其他高容量光学介质中读取或向其写入)。HDD 714、FDD 716、以及光盘驱动器720可分别由HDD接口724、FDD接口726和光盘驱动器接口728连接到系统总线708。用于外置驱动器实现的HDD接口724可包括通用串行总线(USB)和IEEE 1394接口技术中的至少一种或两者。
驱动器及相关联的计算机可读介质提供了对数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机702,驱动器和介质容纳适当的数字格式的任何数据的存储。尽管以上对计算机可读介质的描述涉及HDD、可移动磁盘(例如FDD)以及诸如CD或DVD等可移动光学介质,但是本领域的技术人员应当理解,示例性操作环境中也可使用可由计算机读取的任何其他类型的介质,诸如zip驱动器、磁带盒、闪存卡、盒式磁带等等,并且任何这样的介质可包含用于执行所公开的体系结构的新颖方法的计算机可执行指令。
多个程序模块可被存储在驱动器和易失性存储器712中,包括操作系统730、一个或多个应用程序732、其他程序模块734和程序数据736。操作系统、应用程序、模块和/或数据的全部或部分也可被高速缓存在易失性存储器712中。应该明白,所公开的体系结构可以用市场上可购得的各种操作系统或操作系统的组合来实现。
用户可以通过一个或多个有线/无线输入设备,例如键盘738和诸如鼠标740等定点设备将命令和信息输入到计算机702中。其他输入设备(未示出)可包括话筒、IR遥控器、操纵杆、游戏手柄、指示笔、触摸屏等等。这些和其他输入设备通常通过耦合到系统总线708的输入设备接口742连接到处理单元704,但也可通过诸如并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口等其他接口连接。
监视器744或其他类型的显示设备也经由诸如视频适配器746等接口连接到系统总线708。适配器746可用于包括例如采样组件102、质量组件110、抗混叠信息112、着色器组件204、顶点着色器310、像素着色器314、降采样着色器318、以及相关联的数据(例如,具有混叠提示312的顶点数据、图像光栅化316、以及最终路径光栅化)。三角测量组件202可用于计算702。
除了监视器744之外,计算机通常包括诸如扬声器、打印机等其他外围输出设备(未示出)。
计算机702可使用经由有线和/或无线通信至诸如远程计算机748等的一个或多个远程计算机的逻辑连接在网络化环境中操作。远程计算机748可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其他常见的网络节点,并且通常包括相对于计算机702描述的许多或所有元件,尽管为简明起见仅示出了存储器/存储设备750。所描绘的逻辑连接包括到局域网(LAN)752和/或例如广域网(WAN)754等更大的网络的有线/无线连接。这一LAN和WAN连网环境常见于办公室和公司,并且方便了诸如内联网等企业范围计算机网络,所有这些都可连接到例如因特网等全球通信网络。
当在LAN连网环境中使用时,计算机702通过有线和/或无线通信网络接口或适配器756连接到LAN 752。适配器756可以方便到LAN 752的有线和/或无线通信,并且还可包括其上设置的用于使用适配器756的无线功能进行通信的无线接入点。
当在WAN连网环境中使用时,计算机702可包括调制解调器758,或连接到WAN 754上的通信服务器,或具有用于诸如通过因特网等通过WAN 754建立通信的其他装置。或为内置或为外置以及有线和/或无线设备的调制解调器758经由输入设备接口742连接到系统总线708。在联网环境中,相对于计算机702所描绘的程序模块或其部分可以存储在远程存储器/存储设备750中。应该理解,所示网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。
计算机702可操作来使用IEEE 802标准家族来与有线和无线设备或实体进行通信,这些实体例如是在操作上安置成与例如打印机、扫描仪、台式和/或便携式计算机、个人数字助理(PDA)、通信卫星、任何一件与无线可检测标签相关联的设备或位置(例如,电话亭、报亭、休息室)以及电话进行无线通信(例如,IEEE 802.11空中调制技术)的无线设备。这至少包括Wi-Fi(即无线保真)、WiMax和蓝牙TM无线技术。由此,通信可以如对于常规网络那样是预定义结构,或者仅仅是至少两个设备之间的自组织(ad hoc)通信。Wi-Fi网络使用称为IEEE 802.11x(a、b、g等等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可用于将计算机彼此连接、连接到因特网以及连接到有线网络(使用IEEE 802.3相关介质和功能)。
上面描述的包括所公开的体系结构的各示例。当然,描述每一个可以想到的组件和/或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,许多其他组合和排列都是可能的。因此,该新颖体系结构旨在涵盖所有这些落入所附权利要求书的精神和范围内的更改、修改和变化。此外,就在说明书或权利要求书中使用术语“包括”而言,这一术语旨在以与术语“包含”在被用作权利要求书中的过渡词时所解释的相似的方式为包含性的。