CN104050619A - 具有共享边缘的模板然后覆盖路径渲染 - Google Patents
具有共享边缘的模板然后覆盖路径渲染 Download PDFInfo
- Publication number
- CN104050619A CN104050619A CN201310741730.2A CN201310741730A CN104050619A CN 104050619 A CN104050619 A CN 104050619A CN 201310741730 A CN201310741730 A CN 201310741730A CN 104050619 A CN104050619 A CN 104050619A
- Authority
- CN
- China
- Prior art keywords
- edge
- unit
- sample
- path
- covering
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本发明提供了具有共享边缘的模板然后覆盖路径渲染。本发明的一个实施例包括用于光栅化包括在路径之间共享的边缘的图元的技术。对于每个边缘,光栅化器从多个样本规则选择并且应用样本规则。如果边缘被共享,那么所选择的样本规则使与单个颜色样本相关联的每组覆盖样本被认为完全在边缘里面或完全在边缘外面。因此,每像素覆盖样本的数目超过每像素颜色样本的数目时所造成的混淆伪像可被减少。在现有技术中,减少这类混淆伪像典型地涉及增加每像素颜色样本的数目以等于每像素覆盖样本的数目。有利地,所公开的技术使能使用减少颜色与覆盖样本的比率的算法进行渲染,由此减小存储器消耗和存储器带宽使用,而不造成与共享边缘相关联的混淆伪像。
Description
相关申请的交叉引用
本申请要求享有于2013年3月15日提交的、具有序列号61/799,948的美国临时专利申请的优先权。该相关申请的主题在此通过援引并入本文。
技术领域
本发明的实施例总地涉及图形处理,并且更具体地,涉及具有共享边缘的模板然后覆盖(stencil-then-cover)渲染。
背景技术
路径渲染是与分辨率无关的2维渲染风格,通常被称为“向量图形”,其是若干重要渲染标准的基础。那些标准包括Postscript、Java2D、Apple’sQuartz2D、OpenVG、PDF、TrueType字体、OpenType字体、PostScript字体、HTML5Canvas、可缩放向量图形(SVG)网络格式、Microsoft’sSilverlight和Adobe Flash用于交互式网络体验、Microsoft’s XMLSpecification(XPS)、Office文件格式中的绘图,包括PowerPoint、AdobeIllustrator插图以及更多。
在路径渲染中,软件应用典型地将场景指定为与分辨率无关的轮廓的序列,已知为路径,其可以涂有恒定的颜色、线性或径向渐变或图像。许多图形处理单元(GPU)支持通过已知为“模板然后覆盖”的两步渲染过程渲染这类路径。首先,在路径模板步骤中,GPU生成指示哪些样本(即每个像素内的位置)由路径覆盖的模板缓冲区。其次,在路径覆盖步骤中,GPU生成用于路径的覆盖几何体并且利用经使能的模板测试为覆盖几何体着色。典型地,GPU利用某种保守的边界几何体实现覆盖几何体,该保守的边界几何体诸如边界框(即两个三角形)、凸包或类似结构。因为模板测试在路径覆盖步骤期间被使能,所以GPU丢弃未由路径所覆盖的任何片段并且将残存的片段作为经处理的图形数据写到颜色缓冲区。
在模板然后覆盖路径渲染的一些方法中,GPU维护每像素N个覆盖样本和每像素M个颜色样本,其中N大于M。在操作中,GPU以每像素N个覆盖样本确定路径的覆盖。之后,在路径覆盖步骤期间,在GPU实施混合和颜色写操作之前,GPU将覆盖样本的数目减少到颜色样本的数目。显而易见地,在该减少操作期间,GPU可以选择与单个颜色样本相关联的一组N/M个覆盖样本并且基于N/M个覆盖样本的被覆盖的部分生成用于颜色样本的不透明度值。该渲染方法的一个限制是将多个覆盖样本的组减少到单个颜色样本可能在于不同路径之间所共享的边缘处引入混淆伪像(conflation artifact)。特别地,减少操作将覆盖的布尔概念和用于不透明度的分数值混淆。
例如,假定存在与每个颜色样本相对应的4个覆盖样本(N=4并且M=1),背景颜色是蓝色,并且GPU将配置为渲染阴阳符号-首先阴部分。此外,假定符号的阴部分是黄色,符号的阳部分是绿色,并且阴和阳部分将共享两部分之间的边界处的边缘。最后假定与特定颜色样本相关联的覆盖样本中的两个由符号的阴部分覆盖,并且与特定颜色样本相关联的覆盖样本中的两个由符号的阳部分覆盖。一旦渲染符号的阴部分,GPU就将指派中间蓝色调(blue-tinged)的颜色到特定颜色样本-与符号的阴部分相关联的黄色的50%和与背景相关联的蓝色的50%的混合。随后,一旦渲染符号的阳部分,GPU就将指派不同的蓝色调的颜色到特定颜色样本-与符号的阳部分相关联的绿色的50%和与中间蓝色调的颜色的50%的混合。这类背景颜色渗色将降低所显示的图像的质量。特别地,蓝色背景颜色的分数在阴阳符号的阴和阳部分之间的边界处将是可见的(就像阴阳符号的阴和阳部分之间存在间隙)。
在减少与不同路径之间所共享的边缘相关联的混淆伪像的一个方法中,增加颜色样本的数目以匹配覆盖样本的数目。在这类实现方案中,覆盖被作为布尔值分开地维护用于每个颜色样本并且不与不透明度值混淆。因此,渲染包括在不同路径之间共享的边缘的场景不引入可归因于这些共享边缘的混淆伪像。然而,增加颜色样本的数目增加由颜色缓冲区所使用的存储器消耗和存储器带宽这二者。因为GPU的本地存储器容量和相关联的存储器带宽二者都有限,所以存储器消耗或存储器带宽使用的任何增加一般都是不理想的。
因此,本领域需要渲染在不同路径之间共享的边缘的更有效方法。
发明内容
本发明的一个实施例阐述用于光栅化图形图元的方法。方法包括确定与图形图元的第一边缘相关联的光栅化状态,基于光栅化状态从多个样本规则选择第一样本规则,基于第一样本规则确定第一覆盖样本是否被认为在第一边缘里面,;以及基于第一覆盖样本是否被认为在第一边缘里面确定第一覆盖样本是否被认为由图形图元覆盖。
所公开的方法的一个优势是处理单元可以实施存储器高效路径渲染操作而不引入可与在不同路径之间共享的边缘相关联的混淆伪象。因为光栅化器单元考虑与特定颜色样本相关联的每组覆盖样本完全在每个共享边缘的里面或完全在其外面,所以每像素覆盖样本的数目可以超过颜色样本的数目而不在所显示的图像中造成背景渗色。因此,处理单元不引发与现有技术相关联的增加的存储器消耗和存储器带宽,在现有技术中颜色样本的数目被增加以匹配覆盖样本的数目。
附图说明
因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图;
图2是根据本发明的一个实施例的、包括在图1的并行处理子系统中的并行处理单元的框图;
图3是根据本发明的一个实施例的、可以在图2的并行处理单元内实现的图形处理管线的示意图;
图4是根据本发明的一个实施例的、示出了图2的并行处理单元可以配置为实现其的路径模板步骤和路径覆盖步骤的示意图;
图5是根据本发明的一个实施例的、示出了图3的图形处理管线可以配置为渲染其的三角扇的示意图;
图6是根据本发明的一个实施例的、示出了图3的光栅化器单元可以配置为实现其的样本组和样本边缘规则的示意图;
图7是根据本发明的一个实施例的、示出了索引缓冲区的示意图;
图8A-8B阐述了根据本发明的一个实施例的、用于光栅化三角形的方法步骤的流程图;以及
图9是根据本发明的一个实施例的、用于渲染路径的方法步骤的流程图。
具体实施方式
在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。在其他实例中,未描述公知特征以避免对本发明造成混淆。
系统概述
图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。如所示的,计算机系统100包括但不限于经由存储器桥105和通信路径113耦连到并行处理子系统112的中央处理单元(CPU)102和系统存储器104。存储器桥105进一步配置为经由通信路径106耦连到I/O(输入/输出)桥107,并且I/O桥107转而耦连到交换器116。
在操作中,I/O桥107配置为从诸如键盘或鼠标的输入设备108接收用户输入信息,并且经由通信路径106和存储器桥105将输入信息转发到CPU102用于处理。交换器116配置为提供I/O桥107和诸如网络适配器118以及各种插卡120和121的计算机系统100的其他部件之间的连接。
还如所示的,I/O桥107耦连到系统盘114,该系统盘114可以配置为存储内容和应用和数据用于由CPU102和并行处理子系统112使用。作为一般问题,系统盘114为应用和数据提供非易失性存储并且可以包括固定的或可移动的硬盘驱动器、闪存设备和CD-ROM(光盘只读存储器)、DVD-ROM(数字多功能光盘-ROM)、蓝光、HD-DVD(高清DVD)或其他磁性、光学或固态存储设备。最后,尽管未明确示出,但是其他部件,诸如通用串行总线或其他端口连接、光盘驱动器、数字多功能光盘驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107。
在各种实施例中,存储器桥105可以是北桥芯片,并且I/O桥107可以是南桥芯片。另外,通信路径106和113以及计算机系统100内的其他通信路径可以使用任何技术适合的协议实现,包括但不限于AGP(加速图形端口)、超传输或者本领域已知的任何其他总线或点到点通信协议。
在一些实施例中,并行处理子系统112包括将像素传递到显示设备110的图形子系统,显示设备110可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等等。在这类实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路。如以下在图2中更详细描述的,这类电路可以跨包括在并行处理子系统112内的一个或多个并行处理单元(PPU)被合并。在其他实施例中,并行处理子系统112包含经优化用于通用和/或计算处理的电路。此外,这类电路可以跨包括在并行处理子系统112内的、配置为实施这类通用和/或计算操作的一个或多个PPU被合并。在又一些实施例中,包括在并行处理子系统112内的一个或多个PPU可以配置为实施图形处理、通用处理以及计算处理操作。系统存储器104包括配置为管理并行处理子系统112内的一个或多个PPU的处理操作的至少一个设备驱动程序103。系统存储器104还包括在CPU102上执行并且可以发出控制PPU的操作的命令的软件应用125。
在各种实施例中,并行处理子系统112可以与图1的一个或多个其他元件集成以形成单个系统。例如,并行处理子系统112可以与CPU102和单个芯片上的其他连接电路集成以形成片上系统(SoC)。
应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、CPU102的数目以及并行处理子系统112的数目,可根据需要修改。例如,在一些实施例中,系统存储器104可以直接连接到CPU102而不是通过存储器桥105,并且其他设备将经由存储器桥105和CPU102与系统存储器104通信。在其他替代性拓扑中,并行处理子系统112可以连接到I/O桥107或直接连接到CPU102,而不是连接到存储器桥105。而在其他实施例中,I/O桥107和存储器桥105可以被集成到单个芯片上而不是作为一个或多个分立设备存在。最后,在某些实施例中,图1所示的一个或多个部件可能不存在。例如,任何数目的插卡或外围设备都可能得到支持。例如,交换器116可以被去掉,网络适配器118和插卡120、121将直接连接到I/O桥107。
图2是根据本发明的一个实施例的、包括在图1的并行处理子系统112中的并行处理单元(PPU)202的框图。如以上所指示的,尽管图2描绘了一个PPU202,但是并行处理子系统112可以包括任何数目的PPU202。如所示的,PPU202耦连到本地并行处理(PP)存储器204。PPU202和PP存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(ASIC)或存储器设备,或者以任何其他技术可行的方式来实现。
在一些实施例中,PPU202包括图形处理单元(GPU),该图形处理单元可以配置为实现图形处理管线以实施与基于由CPU102和/或系统存储器104所供应的图形数据生成像素数据相关的各种操作。当处理图形数据时,PP存储器204可以用作存储一个或多个常规帧缓冲区并且如果需要的话也存储一个或多个其他渲染目标的图形存储器。在其他方面,PP存储器204可以用来存储并且更新像素数据并且将最终的像素数据或显示帧传递到显示设备110用于显示。在一些实施例中,PPU202还可以配置为用于通用处理和计算操作。
在操作中,CPU102是计算机系统100的主处理器,控制和协调其他系统部件的操作。具体地,CPU102发出控制PPU202的操作的命令。在一些实施例中,CPU102写入用于PPU202的命令流到数据结构中(在图1或图2中未明确示出),该数据结构可位于系统存储器104、PP存储器204、或CPU102和PPU202都可访问的其他存储位置中。将指向数据结构的指针写到入栈缓冲区(pushbuffer)以发起对数据结构中的命令流的处理。PPU202从入栈缓冲区读取命令流,然后相对于CPU102的操作异步地执行命令。在生成多个入栈缓冲区的实施例中,可以经由设备驱动程序103由应用程序为每个入栈缓冲区指定执行优先级以控制对不同入栈缓冲区的调度。
还如所示的,PPU202包括经由通信路径113和存储器桥105与计算机系统100的其余部分通信的I/O(输入/输出)单元205。I/O单元205生成用于在通信路径113上传送的包(或其他信号),并且还从通信路径113接收所有传入的包(或其他信号),将传入的包引导到PPU202的适当部件。例如,可将与处理任务相关的命令引导到主机接口206,而将与存储器操作相关的命令(例如,对PP存储器204的读取或写入)引导到交叉开关单元210。主机接口206读取每个入栈缓冲区,并且将存储在入栈缓冲区中的命令流传送到前端212。
如以上结合图1所提及的,可以改变PPU202到计算机系统100的其余部分的连接。在一些实施例中,包括至少一个PPU202的并行处理子系统112实现为可被插入计算机系统100的扩展槽中的插卡。在其他实施例中,PPU202可以与诸如存储器桥105或I/O桥107的总线桥集成在单个芯片上。另外,在又一些实施例中,PPU202的一些或所有元件可以与CPU102一起包括在单个集成芯片或片上系统(SoC)中。
在操作中,前端212将从主机接口206所接收的处理任务传送到任务/工作单元207内的工作分布单元(未示出)。工作分布单元接收指向编码为任务元数据(TMD)并存储在存储器中的处理任务的指针。指向TMD的指针包括在存储为入栈缓冲区并由前端单元212从主机接口206接收的命令流中。可以编码为TMD的处理任务包括与所要处理的数据相关联的索引,以及定义数据将被如何处理。例如,状态参数和命令可以定义将要对数据执行的程序。任务/工作单元207从前端212接收任务并确保在每一个TMD所指定的处理任务发起前,将GPC208配置为有效状态。可以为每个TMD指定用来调度处理任务的执行的优先级。还可从处理集群阵列230接收处理任务。可选地,TMD可包括控制将TMD添加到处理任务列表(或指向处理任务的指针的列表)的头部还是尾部的参数,从而提供除执行优先级以外的另一级别的控制。
PPU202有利地基于处理集群阵列230实现高度并行处理架构,该处理集群阵列230包括C个通用处理集群(GPC)208的集,其中C≥1。每个GPC208能够并发执行大量的(例如,几百或几千)线程,其中每个线程是程序的实例(instance)。在各种应用中,可分配不同的GPC208用于处理不同类型的程序或用于实施不同类型的计算。GPC208的分配可以取决于因每种类型的程序或计算所产生的工作量而变化。
存储器接口214包括D个分区单元215的集,其中D≥1。每个分区单元215耦连到驻留在PP存储器204内的一个或多个动态随机存取存储器(DRAM)220。在一个实施例中,分区单元215的数目等于DRAM220的数目,并且每个分区单元215耦连到不同的DRAM220。在其他实施例中,分区单元215的数目可以与DRAM220的数目不同。本领域的普通技术人员应该理解DRAM220可以用其他技术合适的存储设备来替代。在操作中,诸如纹理图和帧缓冲区的各种渲染目标可以跨DRAM220加以存储,这允许分区单元215并行写入每个渲染目标的各部分以高效地使用PP存储器204的可用带宽。
给定GPC208可以处理要被写到PP存储器204内的任何DRAM220的数据。交叉开关单元210配置为路由每个GPC208的输出到任何分区单元215的输入或到任何其他GPC208用于进一步处理。GPC208经由交叉开关单元210与存储器接口214通信,以对各DRAM220进行读取或写入。在一个实施例中,交叉开关单元210除经由存储器接口214到PP存储器204的连接以外,具有到I/O单元205的连接,从而使得在不同GPC208内的处理核心能够与系统存储器104或对于PPU202而言非本地的其他存储器通信。在图2所示的实施例中,交叉开关单元210直接与I/O单元205连接。在各种实施例中,交叉开关单元210可使用虚拟信道来分开GPC208与分区单元215之间的业务流。
另外,GPC208可被编程以执行与种类繁多的应用相关的处理任务,包括但不限于,线性和非线性数据变换、视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分(tessellation)着色器、顶点着色器、几何着色器、和/或像素/片段着色器程序)、通用计算操作等等。在操作中,PPU202配置为将数据从系统存储器104和/或PP存储器204转移到一个或多个片上存储器单元,处理该数据,并且将结果数据写回到系统存储器104和/或PP存储器204。之后结果数据可以由其他系统部件访问,所述其他系统部件包括CPU102、并行处理子系统112内的另一个PPU202或计算机系统100内的另一个并行处理子系统112。
如上所示,在并行处理子系统112中可以包括任何数目的PPU202。例如,可在单个插卡上提供多个PPU202、或可将多个插卡连接到通信路径113、或可将一个或多个PPU202集成到桥式芯片中。在多PPU系统中的PPU202可以彼此同样或不同。例如,不同的PPU202可能具有不同数目的处理核心和/或不同容量的PP存储器204。在存在多个PPU202的实现方案中,可并行操作那些PPU从而以高于单个PPU202所可能达到的吞吐量来处理数据。包含一个或多个PPU202的系统可以以各种配置和形式因素来实现,包括但不限于台式电脑、笔记本电脑、手持式个人计算机或其他手持设备、服务器、工作站、游戏控制台、嵌入式系统等等。
图形管线架构
图3是根据本发明的一个实施例的、可以在图2的PPU202内实现的图形处理管线350的示意图。如所示的,图形处理单元350包括但不限于图元分布器(PD)355;顶点属性获取单元(VAF)360;顶点、曲面细分、几何处理单元(VTG)365;视窗(viewport)缩放、剔除(cull)和裁剪(clip)单元(VPC)370;分块(tiling)单元375、设定单元(setup)380、光栅化器(raster)单元385、片段处理单元也标识为像素着色单元(PS)390以及光栅操作单元(ROP)395。
PD355从前端212收集与高阶表面、图形图元等相关联的顶点数据并且将顶点数据传送到VAF360。
VAF360从共享存储器检索与即将来临的顶点中的每一个相关联的顶点属性,并且将顶点数据与相关联的顶点属性一起存储到共享存储器中。
VTG365是配置为执行顶点着色器程序、细分曲面程序和几何程序的可编程执行单元。这些程序处理从VAF360所接收的顶点数据和顶点属性并且产生图形图元用于在图形处理管线350内进一步处理。尽管未明确示出,但是在一些实施例中,VTG365可以包括顶点处理单元、细分曲面初始化处理单元、任务生成单元、任务分布器、拓扑生成单元、细分曲面处理单元和几何处理单元中的一个或多个。
顶点处理单元是配置为执行着色器程序的可编程执行单元,照明和转换如由顶点着色器程序所指定的顶点数据。例如,顶点处理单元可以经编程以将顶点数据从基于对象的坐标表示(对象空间)转换为基于其他的坐标系,诸如世界空间或规格化设备坐标(NDC)空间。顶点处理单元可以读取由VAF存储在共享存储器中的顶点数据和顶点属性并且可以处理该顶点数据和顶点属性。
细分曲面初始化处理单元是配置为执行细分曲面初始化着色程序的可编程执行单元。细分曲面初始化处理单元处理由顶点处理单元所产生的顶点并且生成已知为补丁(patch)的图形图元。细分曲面初始化处理单元还生成各种补丁属性。之后细分曲面初始化单元将补丁数据和补丁属性存储在共享存储器中。在一些实施例中,细分曲面初始化着色器程序可以被称为外壳(hull)着色器或细分曲面控制着色器。
任务生成单元从共享存储器索引用于顶点和补丁的数据和属性。任务生成单元生成用于处理顶点和补丁的任务用于由图形处理单元管线350中的稍后级处理。
任务分布器重新分布由任务生成单元所产生的任务。由顶点着色器程序和曲面细分初始化程序的各实例所产生的任务可以在一个图形处理管线350和另一个图形处理管线之间显著地变化。任务分布器重新分布这些任务,以使得每个图形处理管线350在稍后的管线级期间大约具有相同的工作量。
拓扑生成单元检索由任务分布器所分布的任务。拓扑生成单元索引顶点,包括与补丁相关联的顶点,并且计算用于细分曲面顶点和连接经细分的顶点以形成图形图元的索引的(U,V)坐标。拓扑生成单元之后将经索引的顶点存储在共享存储器中。
细分曲面处理单元是配置为执行细分曲面着色器程序的可编程执行单元。细分曲面处理单元从共享存储器读取输入数据并且将输出数据写到共享存储器。共享存储器中的该输出数据作为输入数据被传递到下一个着色器级、几何处理单元。在一些实施例中,曲面细分着色器程序可以被称为域着色器或曲面细分评估着色器。
几何处理单元是配置为执行几何着色器程序,由此转换图形图元的可编程执行单元。对顶点进行分组以构建图形图元用于处理,其中图形图元包括三角形、线段、点等等。例如,几何处理单元可以经编程以将图形图元再分为一个或多个新的图形图元并且计算用来光栅化新的图形图元的参数,诸如平面方程系数。
几何处理单元将指定新的图形图元的参数和顶点传送到VPC370。几何处理单元可以读取存储在共享存储器中的数据用于在处理几何数据时使用。VPC370实施裁剪、剔除和视窗转换以确定哪些图形图元在最终的经渲染图像中是潜在地可见的以及哪些图形图元不是潜在地可见的。VPC370之后将经处理的图形图元传送到分块单元375。
如本文所进一步描述的,分块单元375是驻留在世界空间管线352和屏幕空间管线354之间的图形管线分拣(sorting)引擎。在世界空间管线352中处理图形图元并且之后将其传送到分块单元375。屏幕空间被分为高速缓存像素块,其中每个高速缓存像素块与屏幕空间的一部分相关联。对于每个图形图元,分块单元375标识与图形图元相交的高速缓存像素块集,即本文称为“分块”的过程。在将一定数目的图形图元分块之后,分块单元375在高速缓存像素块的基础上处理图形图元,其中与特定高速缓存像素块相关联的图形图元被传送到设定单元380。分块单元375将图形图元一次一个高速缓存像素块地传送到设定单元380。与多个高速缓存像素块相交的图形图元典型地在世界空间管线352中被处理一次,并且之后被多次地传送到屏幕空间管线354。
这类技术改善在屏幕空间管线354中进行处理期间的高速缓存存储器本地性,其中与第一高速缓存像素块相关联的多个存储器操作访问可在第一高速缓存像素块的屏幕空间处理期间常驻的L2高速缓存的区域或任何其他技术可行的高速缓存存储器。一旦由屏幕空间管线354处理与第一高速缓存像素块相关联的图形图元,就可以刷新L2高速缓存的与第一高速缓存像素块相关联的部分并且分块单元可以传送与第二高速缓存像素块相关联的图形图元。之后与第二高速缓存相关联的多个存储器操作可以访问可在第二高速缓存像素块的屏幕空间处理期间常驻的L2高速缓存的区域。因此,到L2高速缓存和到渲染目标的整体存储器流量可以被减少。在一些实施例中,针对给定图形图元实施一次世界空间计算,而不考虑与图形图元相交的屏幕空间中的高速缓存像素块的数目。
设定单元380经由分块单元375接收来自VPC370的顶点数据并且计算与图形图元相关联的参数,包括但不限于图形图元的每个顶点处的颜色值、表面法向量和透明度值。之后设定单元380将经处理的图形图元传送到光栅化器单元385。
光栅化器单元385扫描转化新的图形图元并且将片段和覆盖数据传送到像素着色单元390。此外,光栅化器单元385可以配置为实施z剔除和其他基于z的优化。
像素着色单元390是配置为执行着色器程序的可编程执行单元,转换如由片段着色器程序所指定的从光栅化器单元385所接收的片段。片段着色器程序可以以像素级别粒度为片段着色,其中这类着色器程序可以被称为像素着色器程序。可替代地,片段着色器程序可以以样本级别粒度为片段着色,其中每个像素包括多个样本,并且每个样本代表像素的一部分。可替代地,片段着色器程序可以以任何技术可行的粒度为片段着色,这取决于经编程的采样速率。
在各种实施例中,片段处理单元460可以经编程以实施诸如透视校正、纹理映射、着色、混合等的操作以产生被传送到ROP单元395的经着色片段。像素着色单元390可以读取存储在共享存储器中的数据。
ROP单元395是实施诸如模板、z测试、混合等的光栅操作并且经由存储器接口214作为经处理的图形数据传送像素数据用于存储在图形存储器中的处理单元,其中图形存储器典型地构造为一个或多个渲染目标。经处理的图形数据可以存储在图形存储器、并行处理存储器204或系统存储器104中用于显示在显示设备110上或用于由CPU102或并行处理子系统112进一步处理。在一些实施例中,ROP单元395配置为压缩被写到存储器的z或颜色数据并且解压缩从存储器读取的z或颜色数据。在各种实施例中,ROP单元395可以位于存储器接口214中、GPC208中、GPC外部的处理集群阵列230中或PPU202内的分开的单元(未示出)中。
图形处理管线350可以由PPU202内的任何一个或多个处理元件实现。例如,图2的GPC208之一内的流多处理器(未示出)可以配置为实施VTG365和像素着色单元390中的一个或多个的功能。PD355、VAF360、VPC450、分块单元375、设定单元380、光栅化器单元385和ROP单元395的功能也可以由特定GPC208内的处理元件结合对应的分区单元215加以实施。可替代地,图形处理管线350可以使用用于以上所列出的功能中的一个或多个的专用的固定功能处理元件实现。在各种实施例中,PPU202可以配置为实现一个或多个图形处理管线350。
在一些实施例中,图形处理管线350可以被分为世界空间管线352和屏幕空间管线354。世界空间管线352处理3D空间中的图形对象,其中每个图形对象的位置是相对于其他图形对象以及相对于3D坐标系而已知的。屏幕空间管线354处理已经从3D坐标系投影到代表显示设备110的表面的2D平面上的图形对象。例如,世界空间管线352可以包括从PD355到VPC370的图形处理管线350中的管线级。屏幕空间管线354可包括从设定单元380到ROP单元395的图形处理管线350中的管线级。分块单元375将跟随在世界空间管线352的最后级即VPC370之后。分块单元375将位于屏幕空间管线354的第一级即设定单元380之前。
在一些实施例中,世界空间管线352可以进一步分为阿尔法相位管线和贝塔相位管线。例如,阿尔法相位管线可以包括从PD355到任务生成单元的图形处理管线350中的管线级。贝塔相位管线可以包括从拓扑生成单元到VPC370的图形处理管线350中的管线级。图形处理管线350在于阿尔法相位管线中进行处理期间实施第一操作集并且在于贝塔相位管线中进行处理期间实施第二操作集。如本文所使用的,操作集被定义为由单个线程、由线程组或由统一行动的多个线程组所执行的一个或多个指令。
在具有多个图形处理管线350的系统中,与图形对象集相关联的顶点数据和顶点属性可以被划分,以使得每个图形处理管线350通过阿尔法相位大约具有相同量的工作量。阿尔法相位处理可以显著地扩展顶点数据和顶点属性的量,以使得由任务生成单元所产生的顶点数据和顶点属性的量显著地大于由PD355和VAF360所处理的顶点数据和顶点属性的量。此外,甚至在两个图形处理管线350在阿尔法相位管线开始时处理相同数量的属性的情况下,与一个图形处理管线350相关联的任务生成单元也可以产生比与另一个图形处理管线350相关联的任务生成单元显著更大数量的顶点数据和顶点属性。在这类情况下,任务分布器重新分布由阿尔法相位管线所产生的属性,以使得每个图形处理管线350在贝塔相位管线开始处大约具有相同的工作量。
请注意,如本文所使用的,对共享存储器的引用可以包括任何一个或多个技术可行的存储器,包括但不限于由一个或多个流多处理器所共享的本地存储器或可经由存储器接口214访问的存储器,诸如高速缓存存储器、并行处理存储器204或系统存储器104。还请注意,如本文所使用的,对高速缓存存储器的引用可以包括但不限于任何一个或多个技术可行的存储器,包括但不限于L1高速缓存、L1.5高速缓存和L2高速缓存。
路径渲染
图1的软件应用125可以配置图形处理管线350以实施与基于由CPU102和/或系统存储器104所供应的图形数据生成像素数据相关的各种操作。特别地,软件应用125可以配置图形处理管线350以实施与路径渲染相关的操作。如本文之前所概述的,路径渲染是诸如HTML5Canvas和SVG的若干重要渲染标准的基础。在操作中,PPU202利用每像素N个覆盖样本和每像素M个颜色样本实现模板然后覆盖路径渲染。一般地,软件应用125定义路径并且配置PPU202以将模板然后覆盖路径渲染实施为两个连续的渲染步骤-路径模板步骤和路径覆盖步骤。
图4是根据本发明的一个实施例的、示出了图2的PPU202可以配置为实现其的路径模板步骤485和路径覆盖步骤495。如本文之前所公开的,PPU202配置为实施模板然后覆盖路径渲染。首先,PPU202实施路径模板步骤485,由此生成来自模板步骤的模板数据445。随后,PPU202发起路径覆盖步骤495,由此生成经渲染的路径455。
在操作中,图1的软件应用指定路径并且发起路径模板步骤485。一旦接收到路径规格,PPU202就生成代表路径的路径几何体403。如所示的,VPC单元370、光栅化器单元385、PS单元390和ROP单元395处理路径几何体403,将来自模板步骤的模板数据445渲染到模板缓冲区。在替代实施例中,PPU可以以任何组合使用任何可用处理单元以任何技术可行的方式处理路径几何体。模板缓冲区中的值指示哪些覆盖样本由路径覆盖。如本文之前所公开的,PPU202维护每像素N个覆盖样本和每像素M个颜色样本,其中N大于M。在路径模板步骤485期间,更新覆盖样本,但是不更新颜色样本。
在生成来自模板步骤的模板数据445之后,PPU202生成保守地覆盖路径的覆盖几何体405。如所示的,VPC单元370、光栅化器单元385、PS单元390和ROP单元395处理覆盖几何体405、为所覆盖的像素着色并且生成经渲染的路径455。在替代实施例中,PPU可以以任何组合使用任何可用处理单元以任何技术可行的方式处理覆盖几何体。在该过程期间,PPU202将覆盖样本的数目减少到颜色样本的数目。在一些实现方案中,对于每个颜色样本,PPU202标识与颜色样本相关联的一组N/M个覆盖样本并且基于N/M个覆盖样本的被覆盖的部分生成用于颜色样本的不透明度值。例如,如果每像素覆盖样本的数目是16并且每像素颜色样本的数目是4,那么PPU202将4个覆盖样本的组与每个颜色样本相关联,并且可能的不透明度值是0、0.25、0.5、0.7和1.0。显而易见地,PPU202使用包括在模板缓冲区中的来自模板步骤的模板数据455来丢弃未由路径覆盖的任何片段和覆盖数据。之后PPU202将再分的片段作为经渲染的路径455写到颜色缓冲区。
如本文之前所公开的,典型的现有技术PPU可以确定颜色样本在共享边缘处仅部分地由图形图元覆盖。因此,这类PPU可在共享边缘处引入混淆伪像。相比之下,PPU202确定每个颜色样本在每个共享边缘处由图形图元完全覆盖或不覆盖。然而,PPU202可以确定特定的颜色样本在非共享边缘处仅部分地由图形图元覆盖。因此,本文所公开的技术使得PPU202能够使用比颜色样本多的覆盖样本有效地对路径进行渲染,同时确保经渲染的路径不包括与共享边缘相关联的混淆伪像。
图5是根据本发明的一个实施例的、示出了图3的图形处理管线350可以配置为渲染其的三角扇500的示意图。如本文之前所公开的,PPU202配置为作为模板然后覆盖路径渲染的一部分渲染路径几何体403和覆盖几何体405。三角扇500可以包括在路径几何体403和覆盖几何体405二者或之一中。
如所示的,三角扇500是共享单个顶点的经连接三角形集。还如所示的,三角扇500包括共享边缘510、非共享边缘520和内部边缘530。特别地,共享边缘510中的每一个还包括在另一路径(未示出)中。例如,共享边缘510中的每一个还可以包括在不同的图形图元中。通过对比,非共享边缘520和内部边缘530不包括在任何其他路径中。可以以任何技术可行的方式标识共享边缘510。例如,图1的软件应用125可以将共享边缘510明确地标识为路径规格的一部分。另外,图1的设备驱动程序103可以将共享边缘510指明为对路径规格进行处理的一部分。
如所示的,内部边缘530是在三角扇内部的边缘。内部边缘530中的每一个在包括在三角扇500中的经连接三角形之间共享。可以以任何技术可行的方式标识内部边缘530。例如,可以基于三角扇500的规格标识内部边缘530。
在一个实施例中,在路径模板步骤485期间,PPU202与相对于非共享边缘520和内部边缘530的覆盖不同地确定相对于共享边缘510的覆盖。随后,在路径覆盖步骤495期间,PPU202与相对于共享边缘510和非共享边缘520的覆盖不同地确定相对于内部边缘530的覆盖。在替代实施例中,PPU可以配置为标识任何数目的其他边缘特征,并且随后基于这些边缘特征修改渲染过程。例如,在一些替代实施例中,在路径覆盖步骤期间,PPU当确定覆盖时不区分共享边缘、非共享边缘和内部边缘。
如本领域技术人员将理解的,三角扇500是图形处理管线350可以配置为渲染其的特定图形图元的示例。诸如三角条的其他图形图元也可以包括共享边缘510、非共享边缘520和内部边缘530。这类图形图元由PPU202以类似方式进行处理。
图6是根据本发明的一个实施例的、示出了图3的光栅化器单元385可以配置为实现其的样本组610和样本边缘规则的示意图。如本文之前所公开的,PPU202支持每像素N个覆盖样本和每像素M个颜色样本,其中N大于M。如所示的,对于每个颜色样本,PPU202标识与颜色样本相关联的N/M个覆盖样本的样本组610。此外,PPU202将包括在样本组610中的覆盖样本之一指明为主要样本617,并且将包括在样本组610中的剩余覆盖样本指明为次要样本615。
如所示的,图6将样本组610示出为虚线正方形,将主要样本617示出为重描画的点,并且将次要样本615示出为轻描画的点。此外,图6将经覆盖的样本描绘为满的并且将未经覆盖的样本描绘为未满的。还如所示的,样本组610中的每一个包括单个主要样本617和三个次要样本615。计算机系统100可以确定覆盖样本的位置并且以任何技术可行的方式指明主要覆盖样本617。例如,设备驱动程序103可以确定覆盖样本的位置并且将包括在每个样本组610中的第一覆盖样本指明为主要覆盖样本617。然而,对于每个样本组610,计算机系统100跨路径确定地并且一致地选择对应的主要样本617。在替代实施例中,样本组可以包括任何数目的次要样本,包括0个。
有利地,在一个实施例中,光栅化器单元385配置为基于与每个边缘相关联的特征在不同样本边缘规则之间进行选择。注意样本边缘规则,本文也称为“样本规则”,是可被应用到覆盖样本以确定覆盖样本是否被认为在边缘里面的光栅化规则。对于每个边缘,光栅化器单元385将所选择的样本边缘规则应用到边缘以确定包括在样本组610中的覆盖样本的覆盖。简单边缘规则包括但不限于单独样本边缘规则455、主要简单边缘规则465和任何样本边缘规则475。如在常规的光栅化操作中,光栅化器单元385通过确定与图元的每个边缘相关的覆盖结果的相交或联合来确定样本组610相对于特定图元的覆盖。
在应用单独样本边缘规则455时,光栅化器单元385独立于包括在样本组610中的其他覆盖样本确定包括在样本组610中的覆盖样本中的每一个的覆盖。特别地,光栅化器单元385基于主要样本617相对于边缘的位置确定主要样本617的覆盖。类似地,对于次要样本615中的每一个,光栅化器单元385基于次要样本615相对于边缘的位置确定次要样本615的覆盖。
如所示的,光栅化器单元385将单独样本边缘规则455应用到位于三角形的一个边缘上的两个样本组610。对于左手样本组610,光栅化器单元385确定次要样本615之一的位置在三角形的边缘里面并且因此被覆盖。对于右手样本组610,光栅化器单元385确定主要样本617和三个次要样本中的两个的位置位于三角形的边缘里面并且因此被覆盖。
在应用主要样本边缘规则465时,光栅化器单元385基于次要样本617相对于边缘的位置确定包括在样本组610中的所有覆盖样本的覆盖。因此,光栅化器单元385确定包括在样本组610中的所有样本被覆盖或者包括在样本组610中的所有样本未被覆盖。有利地,以该方式确定覆盖确保对于与样本组610相关联的颜色样本来说,在从(N/M)个覆盖样本减少到单个颜色样本期间,覆盖不与不透明度混淆。
如所示的,光栅化器单元385将主要样本边缘规则465应用到位于三角形的边缘上的两个样本组610。对于左手样本组610,光栅化器单元385确定主要样本617的位置在三角形的边缘外面,并且因此主要样本617和所有次要样本615未被覆盖。对于右手样本组610,光栅化器单元385确定主要样本617在三角形的边缘里面,并且因此主要样本617和所有次要样本615被覆盖。
在应用任何样本边缘规则475时,如果光栅化器单元385确定主要样本617或次要样本615中的任何一个的位置相对于边缘在图元里面,那么光栅化器单元385确定所有覆盖样本被覆盖。以该方式确定覆盖确保对于与样本组610相关联的颜色样本来说,在从(N/M)个覆盖样本减少到单个颜色样本期间,覆盖不与不透明度混淆。显而易见地,任何样本边缘规则475比单独样本边缘规则455和主要样本边缘规则465更保守。
如所示的,光栅化器单元385将任何样本边缘规则465应用到位于三角形的一个边缘上的两个样本组610。对于左手样本组610,光栅化器单元385确定四个覆盖样本之一的位置在三角形的边缘里面,并且因此主要样本617和所有次要样本617被覆盖。对于右手样本组610,光栅化器单元385确定四个覆盖样本中的三个的位置在三角形的边缘里面,并且因此主要样本617和所有次要样本615被覆盖。
另外,光栅化器单元385可以配置为基于边缘的特征将不同样本边缘规则应用到图元的边缘。此外,光栅化器单元385可以配置为基于PPU202是否正在执行路径模板步骤485或路径覆盖步骤495来选择不同的边缘规则。尽管结合图6所描述的示例示出了相对于单个边缘的覆盖,但是光栅化器385通过确定与图元的每个边缘有关的覆盖结果的相交来确定样本组610相对于特定图元的覆盖。
在一个实施例中,在路径模板步骤485期间,光栅化器单元385将单独样本边缘规则应用到非共享边缘520和内部边缘530。通过对比,光栅化器单元385将主要样本边缘规则465应用到共享边缘510。因为光栅化器单元385确定每个样本组610相对于共享边缘510被完全覆盖或完全不覆盖,所以现有技术中的与共享边缘相关联的混淆伪像可以被减少。
在路径覆盖步骤495期间,光栅化器单元385将任何样本边缘规则475应用到非共享边缘520和共享边缘510,并且将主要样本边缘规则465应用到内部边缘530。另外,因为光栅化器单元385确定每个样本组610相对于共享边缘510被完全覆盖或完全不覆盖,所以现有技术中的与共享边缘相关联的混淆伪像可以被减少。此外,通过将主要样本边缘规则465应用到内部边缘530,光栅化器单元385避免路径覆盖步骤495期间的双倍光栅化。
在本发明的一些实施例中,计算机系统100可以配置PPU202以有效地在每路径基础上应用主要样本边缘规则465。特别地,如果计算机系统100确定包括在路劲中的任何边缘是共享边缘510,那么计算机系统100配置PPU202以基于主要样本617的位置确定整个样本组610的覆盖。
在一个实施例中,如果图1的设备驱动程序103确定路径包括共享边缘510,那么设备驱动程序103当光栅化路径时共同定位包括在样本组610中的每一个中的覆盖样本的位置。更具体地,在光栅化器单元385光栅化与这类路径相关联的图元之前,设备驱动程序103重新编程所有次要样本615的位置以匹配相关联的主要样本617的位置。因此,对于每个样本组610,光栅化器单元385将单个位置与所有覆盖样本相关联。在光栅化器单元385光栅化图元之后,设备驱动程序103将次要样本615的位置恢复到原始指派的位置。本领域技术人员应该理解,当PPU202处理全部包括共享边缘510的图元序列时,涉及共同定位和恢复次要样本615的位置的操作可以被减少。
在另一个实施例中,如果计算机系统100确定路径包括共享边缘510,则计算机系统100配置PS单元390以经由样本掩码将单个输出覆盖指派到包括在样本组510中的所有样本。在操作中,PS单元390选择主要样本617的输出覆盖、将所选择的覆盖指派到相关联的次要样本615中的每一个并且写入对应的样本掩码。
图7是根据本发明的一个实施例的、示出了索引缓冲区760的示意图。如本领域所公知的,索引缓冲区760可以用来减少用于作为经索引的几何渲染的一部分存储图形图元的存储器。
在操作中,图形图元可以由包括在索引缓冲区760中的索引缓冲区条目序列750代表。如所示的,每个索引缓冲区条目750包括边缘标志752和顶点索引754。一般地,每个索引缓冲区条目750包括N个总位数,其中最高的M位存储边缘标志752并且剩余(N-M)位存储顶点缓冲区索引754。如在常规的经索引的几何渲染中,顶点索引754是到包括每顶点数据的顶点缓冲区(未示出)中的索引。然而,在现有的方法中,典型地包括在每个索引缓冲区条目中的所有N位被分配用于顶点索引的存储。有利地,通过再利用每个索引缓冲区条目750的最高位来代表边缘标志752,每个索引缓冲区条目750可以除经由顶点索引754所访问的每顶点数据以外存储每边缘数据。通过对比,常规技术典型地复制用于每个边缘的顶点数据。
例如,如所示的,三角形705-0可以由三个顶点715-0、715-1和715-2按顺时针顺序720定义。还如所示的,三角形705-1可以由三个顶点715-3、715-0和715-2按顺时针顺序720定义。此外,连接顶点715-0和顶点715-2的边缘在多个路径之间共享。如所示的,顶点缓冲区760使用8位索引缓冲区条目750代表两个三角形705-0和705-1,其中最高位存储边缘标志752并且剩余7位存储顶点索引754。特别地,具有“1”的边缘标志752值指示源自对应的顶点索引754的图形图元边缘是共享边缘510之一。
为了进一步优化存储器使用,边缘标志752的语义可以取决于渲染步骤而变化。在示范性索引缓冲区760中,PPU202配置为实现路径模板步骤485,并且经激活边缘标志752指示特定共享边缘510的起源顶点715。通过对比,如果PPU202配置为实现路径覆盖步骤495,之后经激活边缘标志752指示特定内部边缘530的起源顶点715。
在替代实施例中,可以为边缘标志保留任何数目的位,并且边缘标志可以代表与边缘相关联的任何数据。在一些实施例中,光栅化器单元可以配置为基于边缘标志在两个样本边缘规则之间进行选择。在其他实施例中,边缘标志可以代表边缘的数个不同特征,诸如共享对非共享以及内部对外部。如本领域技术人员将理解的,本发明的实施例包括在光栅化操作期间再利用包括在索引缓冲区中的位来指导样本边缘规则的选择的任何技术。
图8A-8B阐述根据本发明的一个实施例的、用于光栅化三角形的方法步骤的流程图。尽管参考图1-7的系统描述了该方法步骤,但是本领域技术人员将理解配置为以任何顺序实施该方法步骤的任何系统均在本发明的范围内。
如所示的,方法800始于步骤802,其中光栅化器单元385作为路径模板步骤485的一部分接收输入三角形。在步骤804,光栅化器单元385选择覆盖样本的特定样本组610,并且将相关联的主要覆盖值和相关联的次要覆盖值初始化为‘1’。主要覆盖值和次要覆盖值的每一个代表相关联的覆盖样本是否被认为由输入三角形覆盖。如本文之前所描述的,PPU202维护每像素N个覆盖样本和每像素M个颜色样本,其中N大于M。每个样本组610与特定颜色样本相关联。此外,样本组610中的(N/M)个覆盖样本之一是主要样本617并且剩余覆盖样本是次要样本615。计算机系统100可以以任何技术可行的方式选择主要样本617。然而,对于每个颜色样本,计算机系统跨路径确定地和一致地选择对应的主要样本617。显而易见地,次要颜色值的数目等于次要样本615的数目。
在步骤806,光栅化器单元385选择包括在输入三角形中的第一边缘。在步骤808,光栅化器单元385相对所选择的边缘评估主要样本617。如果光栅化器单元385确定主要样本617的位置关于所选择的边缘在输入三角形的里面,之后光栅化器单元385将主要边缘覆盖值设置为‘1’。反之,如果光栅化器单元385确定主要样本617关于所选择的边缘在输入三角形的外面,之后光栅化器单元385将主要边缘覆盖值设置为‘0’。一般地,主要边缘覆盖值代表主要样本617是否被认为在输入三角形的所选择的边缘里面。在步骤810,如果光栅化器385确定所选择的边缘不是共享边缘510之一,之后方法800前进至步骤812。光栅化器单元385可以以任何技术可行的方式确定所选择的边缘是共享边缘510之一。例如,在一些实施例中,光栅化器单元385可以对边缘标志752实施读操作以确定边缘标志752是否被激活。在步骤812,光栅化器单元385将单独样本边缘规则455应用到所选择的边缘。在操作中,对于次要样本615中的每一个,光栅化器单元385基于次要样本615是否关于所选择的边缘在输入三角形的里面设置对应的次要边缘覆盖值。一般地,次要边缘覆盖值代表次要样本615是否被认为在输入三角形的所选择的边缘里面。之后方法800前进至步骤816。
如果在步骤810,光栅化器单元385确定所选择的边缘不是共享边缘510之一,之后方法800前进至步骤814。在步骤814,光栅化器单元385将主要样本边缘规则465应用到所选择的边缘。在操作中,对于次要样本615中的每一个,光栅化器单元385设置对应的次要边缘覆盖值以匹配主要边缘覆盖值。有利地,通过确定样本组610由输入三角形完全覆盖或完全不覆盖,光栅化器单元385实现覆盖的布尔概念用于与共享边缘510相关联的颜色样本。
在步骤816,光栅化器单元385在主要边缘覆盖值和主要覆盖值之间实施逻辑与(AND)操作。以此方式,光栅化单元385合成所选择的边缘的覆盖和任何先前的每边缘覆盖值。在步骤818,对于每个次要边缘覆盖值,光栅化器单元385在次要边缘覆盖值和次要覆盖值之间实施逻辑与操作。在步骤820,如果光栅化器单元385确定所选择的边缘不是包括在输入三角形中的第三边缘,之后光栅化器单元385前进至步骤822。
在步骤822,光栅化单元285选择包括在输入三角形中的下一个边缘,并且方法800返回到步骤808。光栅化器单元385从步骤808到822循环,选择边缘规则并且将其应用到每个边缘直到光栅化器单元385已经处理包括在输入三角形中的所有三个边缘为止。在替代实施例中,输入三角形可以由任何输入图元所替代,并且光栅化器单元385从步骤808到822循环直到光栅化器385已经处理包括在输入图元中的所有边缘。在步骤820,如果所选择的边缘是包括在输入三角形中的第三边缘,那么主要覆盖值和次要覆盖值代表由输入三角形对样本组610的覆盖。在替代实施例中,光栅化器单元385可以并行处理多个样本组或边缘。在一些替代实施例中,光栅化器单元385可以基于任何技术可行的标准选择任何光栅化规则,诸如包括在索引缓冲区条目750中的其他标志。
图9是根据本发明的一个实施例的、用于渲染路径的方法步骤的流程图。尽管参考图1-7的系统描述了该方法步骤,但是本领域技术人员将理解配置为以任何顺序实施该方法步骤的任何系统均在本发明的范围内。
如所示的,方法900始于步骤902,其中软件应用125指定路径。作为定义路径的一部分,软件应用125指明任何共享边缘510。在步骤904,设备驱动程序103确定路径包括任何共享边缘510。设备驱动程序103可以以任何技术可行的方式标识包括在路径中的共享边缘510。例如,设备驱动程序103可以基于由软件应用125所发出的明确命令标识一些共享边缘510,并且在生成路径几何体的同时标识其他共享边缘510。
在步骤906,如果设备驱动程序103确定路径包括一个或多个共享边缘510,之后方法900前进至步骤908。在步骤908,对于每个颜色样本,设备驱动程序103共同定位包括在相关联的样本组610中的覆盖样本。更具体地,对于每个样本组610,设备驱动程序103设置所有次要样本615的位置以匹配主要样本617的位置。在替代实施例中,设备驱动程序可以以任何技术可行的方式重新编程覆盖样本的位置。在步骤910,光栅化器单元385处理路径。有利地,因为每个样本组610与单个位置相关联,光栅化器单元285确定每个颜色样本由每个图形图元完全覆盖或完全不覆盖。在步骤912,设备驱动程序103恢复包括在每个样本组610中的次要样本615的位置,并且方法900前进至步骤916。在步骤916,PS单元390和ROP单元395完成渲染步骤,并且方法900终止。在替代实施例中,PS单元390和ROP单元395在设备驱动程序103实施步骤912,恢复次要样本615的位置之前实施步骤916,完成渲染步骤。
如果在步骤906,设备驱动程序103确定路径不包括一个或多个共享边缘510,之后方法900前进至步骤914。在步骤914,光栅化器单元385处理路径。特别地,光栅化器单元385在处理路径的同时维护每像素N个明确定位的覆盖样本和每像素N个颜色样本。之后方法900前进至步骤916。在步骤916,PS单元390和ROP单元395完成渲染步骤,并且方法900终止。
总之,在一个实例中,光栅化器单元基于与路径相关联的特征将不同的边缘规则应用到图元的边缘。特别地,在路径模板步骤中,光栅化器单元基于边缘是否在不同的路径之间共享选择哪个边缘规则应用到每个边缘。如果边缘在不同的路径之间共享,那么光栅化器单元将主要样本边缘规则应用到边缘。在将主要样本边缘规则应用到边缘时,光栅化器单元基于单个覆盖样本的位置-主要样本确定与单个颜色样本相关联的一组覆盖样本全体在边缘里面还是外面。通过对比,如果边缘不被共享,那么光栅化器单元将独立样本边缘规则应用到边缘。在将独立样本边缘规则应用到边缘时,光栅化器单元基于覆盖样本的位置确定每个覆盖样本在边缘里面还是外面。随后,对于每个覆盖样本,如果光栅化器单元确定覆盖样本在与图元相关联的,每个边缘里面,之后光栅化器单元确定覆盖样本由图元覆盖。
类似地,在路径覆盖步骤中,光栅化器单元基于边缘是否在图元内部选择哪个边缘规则应用到图元的每个边缘。如果边缘在图元内部,之后光栅化器单元将主要样本边缘规则应用到边缘。通过对比,如果边缘不在图元内部,那么光栅化器单元将任何样本边缘规则应用到边缘。在将任何样本边缘规则应用到边缘时,如果光栅化器单元确定与颜色样本相关联的任何覆盖样本的位置在边缘里面,之后光栅化器单元确定与颜色样本相关联的所有覆盖样本在边缘里面。另外,对于每个覆盖样本,如果光栅化器单元确定覆盖样本在于特定图元相关联的所有边缘里面,之后光栅化器单元确定覆盖样本由图元覆盖。
在一些实例中,当渲染经索引的几何体时,设备驱动程序再利用包括在索引缓冲区条目中的最高位来存储边缘标志。一般地,包括在索引缓冲区中的一系列顺序索引缓冲区条目定义图元。例如,一系列三个顺序的索引缓冲区条目定义三角形图元。设备驱动程序指明N位索引缓冲区条目的M位存储边缘标志,并且指明索引缓冲区条目的(N-M)位存储顶点索引。如众所周知的,顶点索引是到包含顶点数据的顶点缓冲区中的索引。在路径渲染中,边缘标志的语义取决于渲染步骤而变化。在路径模板步骤过程期间,特定索引缓冲区条目中的经激活的最高位指示源自在两个或更多个路径之间共享的相关联的顶点索引的图元边缘。在路径覆盖步骤期间,特定索引缓冲区条目中的经激活的最高位指示源自图元内部的相关联的顶点索引的图元边缘。
在第三实例中,设备驱动程序可以基于与路径相关联的特征重新编程次要覆盖样本的位置。设备驱动程序在光栅化器单元作为路径模板或路径覆盖步骤的一部分处理路径之前实施任何这类重新编程。特别地,在光栅化特定路径之前,如果设备驱动程序确定特定路径包括在多个路径之间共享的一个或多个边缘,之后设备驱动程序共同定位与每个颜色样本相关联的覆盖样本位置。在操作中,对于每个覆盖样本组,设备驱动程序重新编程次要样本位置中的每一个以匹配主要样本位置。在光栅化器单元实施与路径模板或路径覆盖步骤相关联的操作之后,设备驱动程序将次要样本恢复到原始位置。
以上方法的一个优势是与在不同路径之间共享的边缘相关联的混淆伪像被减少。特别地,对于每个共享边缘,光栅化器单元设置与特定颜色样本相关联的每组覆盖样本以由每个图元完全覆盖或完全不覆盖。因此,包括共享边缘的光栅化器图元当使用比每像素颜色样本多的每像素覆盖样本进行渲染时不产生造成背景渗色的部分覆盖。此外,使用比颜色样本多的覆盖样本进行渲染与现有技术相比减少存储器消耗和存储器带宽使用,在现有技术中颜色样本的数目被增加以匹配覆盖样本的数目。在以上方法的一个方面,存储器消耗通过再利用包括在索引缓冲区中的位来存储边缘标志被进一步优化。因此,所公开的方法使能存储器高效路径渲染操作而没有典型地与现有技术相关联的共享边缘混淆伪像。
本发明的一个实施例可被实施为与计算机系统一起使用的程序产品。该程序产品的程序定义实施例的各功能(包括本文中描述的方法)并且可以被包含在各种计算机可读存储介质上。示例性计算机可读存储介质包括但不限于:(i)不可写的存储介质(例如,计算机内的只读存储器设备,诸如可由CD-ROM驱动器读取的光盘只读存储器(CD-ROM)盘、闪存、只读存储器(ROM)芯片或任何类型的固态非易失性半导体存储器),在其上存储永久性信息;和(ii)可写的存储介质(例如,磁盘驱动器或硬盘驱动器内的软盘或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。
以上已参照特定实施例对本发明进行了描述。然而,本领域普通技术人员将理解的是,可对此做出各种修改和变化而不脱离如随附权利要求书中所阐释的本发明的较宽精神和范围。因此,前面的描述以及附图应被视为是例示性而非限制性的意义。
因此,本发明的实施例的范围由随后的权利要求阐述。
Claims (10)
1.一种用于光栅化图形图元的计算机实现方法,所述方法包括:
确定与图形图元的第一边缘相关联的光栅化状态;
基于所述光栅化状态从多个样本规则选择第一样本规则;
基于所述第一样本规则确定第一覆盖样本是否被认为在所述第一边缘里面;以及
基于所述第一覆盖样本是否被认为在所述第一边缘里面,确定所述第一覆盖样本是否被认为由所述图形图元覆盖。
2.如权利要求1所述的方法,其中所述图形图元包括路径,并且所述光栅化状态指示所述第一边缘是所述路径的共享边缘。
3.如权利要求1所述的方法,其中所述图形图元包括路径,并且所述光栅化状态指示所述第一边缘是所述路径的非共享边缘。
4.如权利要求1所述的方法,其中所述图形图元包括路径,并且所述光栅化状态指示所述第一边缘是所述路径的外部边缘。
5.如权利要求1所述的方法,其中确定所述第一覆盖样本是否被认为在所述第一边缘里面包括:计算所述第一覆盖样本相对于所述第一边缘的位置是否驻留在所述图形图元内。
6.如权利要求1所述的方法,其中所述图形图元包括三角形。
7.如权利要求6所述的方法,其中确定所述第一覆盖样本是否被认为由所述图形图元覆盖包括:确定所述第一覆盖样本是否被认为在所述图形图元的所有三个边缘里面,所述所有三个边缘包括所述第一边缘、第二边缘和第三边缘。
8.如权利要求1所述的方法,进一步包括:基于所述第一覆盖样本是否被认为由所述图形图元覆盖,合成用于第一颜色样本的颜色值。
9.一种配置为光栅化图形图元的计算设备,所述计算设备包括:
存储器;
处理单元,其耦连到所述存储器并且配置为实现图形处理管线的至少一部分,其中所述图形处理管线的所述至少一部分配置为:
确定与图形图元的第一边缘相关联的光栅化状态;
基于所述光栅化状态从多个样本规则选择第一样本规则;
基于所述第一样本规则确定第一覆盖样本是否被认为在所述第一边缘里面;以及
基于所述第一覆盖样本是否被认为在所述第一边缘里面,确定所述第一覆盖样本是否被认为由所述图形图元覆盖。
10.一种配置为实现包括光栅化器的图形处理管线的至少一部分的处理单元,其中所述图形处理管线的所述至少一部分配置为实施以下步骤:
解析与所述图元的第一顶点相关联的第一索引;
标识包括在所述第一索引中的第一边缘标志和包括在所述第一索引中的第一顶点索引;
基于所述第一顶点索引访问顶点缓冲区以读取与所述第一顶点相关联的数据;
基于所述第一边缘标志和与所述第一顶点相关联的所述数据,光栅化所述图元的第一边缘,其中所述第一边缘源自所述第一顶点。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361799948P | 2013-03-15 | 2013-03-15 | |
US61/799,948 | 2013-03-15 | ||
US14/028,400 | 2013-09-16 | ||
US14/028,393 | 2013-09-16 | ||
US14/028,393 US9466115B2 (en) | 2013-03-15 | 2013-09-16 | Stencil then cover path rendering with shared edges |
US14/028,400 US9418437B2 (en) | 2013-03-15 | 2013-09-16 | Stencil then cover path rendering with shared edges |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050619A true CN104050619A (zh) | 2014-09-17 |
CN104050619B CN104050619B (zh) | 2017-07-18 |
Family
ID=51418510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310741730.2A Active CN104050619B (zh) | 2013-03-15 | 2013-12-27 | 具有共享边缘的模板然后覆盖路径渲染 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104050619B (zh) |
DE (1) | DE102013021709A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108734624A (zh) * | 2017-04-13 | 2018-11-02 | Arm有限公司 | 用于处理图形的方法和装置 |
CN108780579A (zh) * | 2016-03-29 | 2018-11-09 | 英特尔公司 | 使用压缩数据的每样本msaa渲染 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110766771B (zh) * | 2019-10-18 | 2023-07-28 | 天津津航计算技术研究所 | 一种基于fpga的字符描边方法 |
CN112651937B (zh) * | 2020-12-24 | 2024-02-20 | 中国林业科学研究院资源信息研究所 | 一种分层树冠识别方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7564456B1 (en) * | 2006-01-13 | 2009-07-21 | Nvidia Corporation | Apparatus and method for raster tile coalescing |
CN102099832A (zh) * | 2008-07-18 | 2011-06-15 | 微软公司 | Gpu贝塞尔路径光栅化 |
-
2013
- 2013-12-20 DE DE201310021709 patent/DE102013021709A1/de active Pending
- 2013-12-27 CN CN201310741730.2A patent/CN104050619B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7564456B1 (en) * | 2006-01-13 | 2009-07-21 | Nvidia Corporation | Apparatus and method for raster tile coalescing |
CN102099832A (zh) * | 2008-07-18 | 2011-06-15 | 微软公司 | Gpu贝塞尔路径光栅化 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108780579A (zh) * | 2016-03-29 | 2018-11-09 | 英特尔公司 | 使用压缩数据的每样本msaa渲染 |
CN108780579B (zh) * | 2016-03-29 | 2024-03-19 | 英特尔公司 | 使用压缩数据的每样本msaa渲染 |
CN108734624A (zh) * | 2017-04-13 | 2018-11-02 | Arm有限公司 | 用于处理图形的方法和装置 |
CN108734624B (zh) * | 2017-04-13 | 2023-09-22 | Arm有限公司 | 包括多个处理级的图形处理流水线及其操作方法与介质 |
Also Published As
Publication number | Publication date |
---|---|
DE102013021709A1 (de) | 2014-09-18 |
CN104050619B (zh) | 2017-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8659589B2 (en) | Leveraging graphics processors to optimize rendering 2-D objects | |
CN103793893B (zh) | 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序 | |
TWI616846B (zh) | 利用以空間及/或時間方式改變取樣圖案之增強型消鋸齒的一種圖形子系統、電腦實施方法及電腦裝置 | |
CN105321199B (zh) | 图形处理流水线及其操作方法与介质 | |
US6392655B1 (en) | Fine grain multi-pass for multiple texture rendering | |
TWI537870B (zh) | 多重解析度一致性光柵化 | |
TWI281639B (en) | Method for managing state variables for rendering primitives, apparatus for rendering a scene including primitives, and machine readable medium | |
US9916674B2 (en) | Baking path rendering objects into compact and efficient memory representations | |
TWI559729B (zh) | 用於低功率圖形著色的像素著色器省略 | |
CN103810669B (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
TWI645371B (zh) | 在上游著色器內設定下游著色狀態 | |
TW201432609A (zh) | 已分配的拼貼快取 | |
TW201439975A (zh) | 在光柵操作中處理後置z覆蓋率資料 | |
US9773341B2 (en) | Rendering cover geometry without internal edges | |
US9396515B2 (en) | Rendering using multiple render target sample masks | |
US9342891B2 (en) | Stencil then cover path rendering with shared edges | |
CN103871019A (zh) | 优化三角形拓扑用于路径渲染 | |
US8810587B2 (en) | Conversion of contiguous interleaved image data for CPU readback | |
CN104050619A (zh) | 具有共享边缘的模板然后覆盖路径渲染 | |
US20150015574A1 (en) | System, method, and computer program product for optimizing a three-dimensional texture workflow | |
TW201447813A (zh) | 產生防鋸齒體素資料 | |
US8823715B2 (en) | Efficient writing of pixels to tiled planar pixel arrays | |
US9767600B2 (en) | Target independent rasterization with multiple color samples | |
US20230401667A1 (en) | Graphics processing systems | |
US20230186523A1 (en) | Method and system for integrating compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |