分段线性不规则光栅化的制作方法

文档序号:11953661阅读:263来源:国知局
分段线性不规则光栅化的制作方法与工艺

本发明的实施例一般地涉及计算机图形处理,并且更具体地,涉及分段线性不规则光栅化。



背景技术:

虚拟现实(VR)护目镜是用于当玩计算机游戏、观看三维(3D)电影或查看其它3D媒体内容时获得更加沉浸式的体验的越来越流行的设备。VR护目镜被佩戴在观看者的头部,并且阻去来自现实世界环境的光。VR护目镜通常包括两个平的显示器屏幕,其中佩戴一个显示器屏幕以用于由左眼查看,而佩戴另一个显示器屏幕以用于由右眼查看。游戏内容或其他3D媒体内容被传输至两个显示器屏幕,使得观看者能够当佩戴VR护目镜时看到3D内容。由于两个显示器屏幕被以一定距离佩戴在观看者的眼睛前方,因此,显示器屏幕自身无法向观看者提供外围内容。换言之,观看者看到眼睛前方的内容,但是不能看到两个显示器屏幕上方、下方或两侧的内容。

因此,VR护目镜还包括在每个显示器屏幕前方的非线性畸变镜头。畸变镜头使得靠近特定位置(诸如显示器屏幕的中心)的内容光学汇聚,并且使得靠近显示器屏幕的边缘的内容光学发散。经发散的内容随后被投影至观看者的眼睛的外围观看区域上。结果,观看者能够看到观看者外围以及前方的3D内容,这导致更加沉浸式的虚拟现实体验。

除了VR护目镜以外,这些技术还被用于其他宽屏渲染应用,诸如曲形观看面,其包括一个或多个显示屏幕。这种宽屏渲染应用包括针对家用的曲形高分辨率和超高分辨率显示器屏幕,以及针对工业应用(诸如控制房间)的多屏幕平铺式显示器。在这种应用中,观看者所感知的相邻像素之间的距离从显示器屏幕的一部分至另一部分是变化的,这导致与当使用VR护目镜时所观察到的伪影相类似的畸变伪影。

虽然非线性畸变透镜提供将内容投影在视角外围的益处,但是这些畸变透镜显示有所不希望的副作用,即渲染在显示器屏幕上并投影至观看者的眼睛的对象看起来是畸变的。光学畸变的一个通常形式是插针包(pin-cushion)畸变,其中所感知的对象上的一点的位置相对于该点实际所位于的位置而言更加靠近显示器屏幕的中心。结果,带有直线的对象,诸如方形或矩形,当经由VR护目镜观看时,看起来具有曲形边缘。针对该现象,图像处理单元(GPU)或其他处理器通常通过有意引起非线性桶形畸变来渲染意欲通过VR护目镜查看的3D内容,其中所感知的对象上的点的位置相对于该点实际所位于的位置而言远离显示器屏幕的中心。所引起的桶形畸变抵消了光学插针包畸变,使得观看者当佩戴VR护目镜时看到非畸变的内容。

以上方式的一个缺陷是,靠近显示器屏幕的中心的内容被放大,而靠近显示器屏幕的边缘的内容被压缩。因此,在观看者的眼睛直接前方处的内容具有相对低的分辨率,这导致细节的丢失。换言之,相对于高质量观看体验所需的渲染的像素数量而言,在显示器屏幕的中心处渲染了过少的像素。细节丢失可被感知为软的、模糊的,或块状不均匀的视频。相比之下,观看者可看到的内容的外围的内容具有比高质量观看所需的分辨率更高的分辨率。换言之,相对于高质量观看体验所需的渲染的像素的数量而言,在显示器屏幕的边缘附近渲染了更多的像素,这导致计算资源的浪费。

以上方式的另一个缺陷是,GPU通常被优化,以利用线性网格来渲染内容。由于光学插线包透镜畸变是非线性的,因此,理想的情形是,GPU在渲染期间所引起的桶形畸变也应当是非线性的。但是,利用非线性网格的渲染可导致相对于利用线性网格的渲染的显著低的GPU性能。

如前述所阐释的,现有技术中所需要的是,用于针对VR护目镜或其他宽屏渲染应用的渲染内容的更加有效的方式。



技术实现要素:

本发明的一个实施例给出了一种用于渲染计算机生成的场景中的几何对象的方法。所述方法包括将与显示器屏幕相关联的屏幕空间划分成多个区域。该方法还包括针对每个区域,计算水平维度中的第一抽样因子,所述第一抽样因子代表用于位于所述区域内的像素的水平抽样因子,计算垂直维度中的第二抽样因子,所述第二抽样因子代表用于位于所述区域内的所述像素的垂直抽样因子,计算所述水平维度中的第一偏移,所述第一偏移代表与所述区域相关联的水平位置,以及计算所述垂直维度中的第二偏移,所述第二偏移代表与所述区域相关联的垂直位置。该方法还包括确定所述几何对象与多于一个区域相交。该方法还包括针对与所述几何对象相交的第一区域,生成所述几何对象的第一实例。该方法还包括针对与所述几何对象相交的第二区域,生成所述几何对象的第二实例。

本发明的其他实施例包括但不限于,计算机可读介质,其包括用于执行所公开的技术的一个或多个方面的指令,以及用于执行所公开的技术的一个或多个方面的系统。

所公开的技术的一个优势是,位于靠近屏幕空间的边缘处的像素被以较低的分辨率渲染,这导致相对于之前的宽屏幕渲染技术的改进的性能。

附图说明

因此,可以详细地理解本发明的上述特征,并且可以参考示范性实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。

图1是示出了计算机系统的框图,该计算机系统被配置为实现本发明的一个或多个方面;

图2是根据本发明的一个实施例的、包括在图1的并行处理子系统中的并行处理单元的框图;

图3A是根据本发明的一个实施例的、包括在图2的并行处理单元中的通用处理集群的框图;

图3B是根据本发明的一个实施例的、可被实现在图2的并行处理单元中的图形处理管线的概念图;

图4是根据本发明的一个实施例的、图3B的图形处理管线可被配置为生成并处理的高速缓存块的概念图;

图5是根据本发明的一个实施例的、图3B的图形处理管线的一部分的详细的示图;

图6A至图6D示出了根据本发明的各实施例的、可在分段非线性光栅化期间实现的示例性样本网格;以及

图7阐述了根据本发明的一个实施例的、用于执行分段不规则渲染的方法步骤的流程图。

具体实施方式

在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。

系统概述

图1是示出了计算机系统100的框图,该计算机系统100被配置为实现本发明的一个或多个方面。如所示,计算机系统100包括但不限于,中央处理单元(CPU)102和经由存储器桥105和通信路径113耦合至并行处理子系统112的系统存储器104。存储器桥105还经由通信路径106被耦合至I/O(输入/输出)桥107,并且I/O桥107转而耦合至交换器116。

在操作中,I/O桥107被配置为从输入设备108(诸如键盘或鼠标)接收用户输入信息,并且经由通信路径106和存储器桥105将输入信息转发给CPU 102,以用于处理。交换器116被配置为提供I/O桥107和计算机系统100的其他组件(诸如网络适配器118以及各种插卡120和121)之间的连接。

如所示,I/O桥107被耦合至系统盘114,其可被配置为存储内容和应用以及数据,以用于CPU 102和并行处理子系统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被配置为执行这种通用目的和/或计算操作。在其他实施例中,包括在并行处理子系统112内的一个或多个PPU可被配置为执行图形处理、通用目的处理,以及计算处理操作。系统存储器104包括至少一个设备驱动器103,其被配置为管理并行处理子系统112内的一个或多个PPU的处理操作。

在各实施例中,并行处理子系统112可与图1的一个或多个其他元件集成,以形成单个系统。例如,并行处理子系统112可与CPU 102以及单个芯片上的其他连接电路集成,以形成片上系统(SoC)。

将理解,此处所示出的系统是示例性的,并且变化和修改是可能的。连接拓扑(其包括桥的数量和布置,CPU 102的数量,以及并行处理子系统112的数量)可按照所希望的修改。例如,在一些实施例中,系统存储器104可直接连接至CPU 102,而非通过存储器桥105,而其他设备将经由存储器桥105和CPU 102与系统存储器104通信。在其他可替换的拓扑中,并行处理子系统112连接至I/O桥107或直接连接至CPU 102,而非连接至存储器桥105。在其他实施例中,I/O桥107和存储器桥105可被集成在单个芯片上,而非作为一个或多个分立的设备存在。最后,在一些实施例中,图1中所示的一个或多个组件可不存在。例如,可去除交换器116,并且,网络适配器118和插卡120、121将直接连接至I/O桥107。

图2是根据本发明的一个实施例的、包括在图1的并行处理子系统112中的并行处理单元(PPU)202的框图。虽然图2描绘了一个PPU 202,如以上所指示的,但是,并行处理子系统112可包括任意数量的PPU 202。如所示,PPU 202被耦合至本地并行处理(PP)存储器204。PPU 202和PP存储器204可以利用一个或多个集成电路设备实现,诸如可编程处理器,专用集成电路(ASIC),或存储设备,或以任何其他技术上可行的方式。

在一些实施例中,PPU 202包括图形处理单元(GPU),其可被配置为实现图形渲染管线,该图形渲染管线基于CPU 102和/或系统存储器104所提供的图形数据来执行各种与生成像素数据相关的操作。当处理图形数据时,PP存储器204可被用作图形存储器,其存储一个或多个惯常的帧缓冲器,并且如果需要的话,还存储一个或多个其他渲染目标。此外,PP存储器204可被用于存储并更新像素数据,并且将最终的像素数据或显示帧传递给显示设备110以用于显示。在一些实施例中,PPU 202还可被配置用于通用处理和计算操作。

在操作中,CPU 102是计算机系统100的主处理器,其控制并协调其他系统组件的操作。具体地,CPU 102发布命令,其控制PPU 202的操作。在一些实施例中,CPU 102将PPU 202的命令流写入到数据结构(未在图1或图2中明确示出)中,该数据结构可位于系统存储器104、PP存储器204,或CPU 102和PPU 202二者均可访问的另一存储位置中。指向数据结构的指针被写入到推缓冲器(pushbuffer)中,以发起对数据结构中的命令流的处理。PPU 202从推缓冲器中读取命令流,并且随后相对于CPU 102的操作异步地执行命令。在生成多个推缓冲器的实施例中,通过应用程序经由设备驱动器103可针对每个推缓冲器指定执行优先级,以控制对不同推缓冲器的调度。

同样如所示,PPU 202包括I/O(输入/输出)单元205,其经由通信路径113和存储器桥105与计算机系统100的其余部分进行通信。I/O单元205生成数据包(或其他信号)以用于在通信路径113上传输,并且还从通信路径113上接收所有进来的数据包,将进来的数据包指引到PPU 202的合适的组件。例如,与处理任务相关的命令可被指引至主机接口206,而与存储器操作相关的命令(例如,从PP存储器204读取或写入到PP存储器204)可被指引到交叉开关单元210。主机接口206读取每个推缓冲器,并且将存储在推缓冲器中的命令流发送至前端212。

如上述与图1一起的,PPU 202至计算机系统100的其余部分的连接可以变化。在一些实施例中,包括至少一个PPU 202的并行处理子系统112被实现为插卡,其可被插入到计算机系统100的扩展槽中。在其他实施例中,PPU 202可通过总线桥被集成在单个芯片上,诸如存储器桥105后I/O桥107。再次,在又其他实施例中,PPU 202的一些或全部元件可与CPU 102一起被包括在单个集成电路或片上系统(SoC)中。

在操作中,前端212将从主机接口206接收的处理任务发送至任务/工作单元207内的工作分配单元(未示出)。工作分配单元接收指向处理任务的指针,其被编码为任务元数据(TMD)并存储在存储器中。指向TMD的指针被包括在命令流中,该命令流被存储为推缓冲器并从主机接口206由前端单元212接收。可被编码为TMD的处理任务包括与将要处理的数据相关联的索引以及定义了将如何处理数据的状态参数和命令。例如,状态参数和命令可定义将对数据执行的程序。任务/工作单元207从前端212接收任务,并且确保在每个TMD所指定的处理任务被发起之前GPC 208被配置到有效的状态。可针对每个TMD指定优先级,其被用于调度对处理任务的执行。处理任务还可被从处理集群阵列230接收。可选地,TMD可包括参数,其控制TMD是被添加至处理任务列表的头部还是尾部(或添加至执行处理任务的指针列表中),从而提供对执行优先级的另一级别的控制。

有优势地,PPU 202基于处理集群阵列230实现极其并行处理的体系架构,该处理集群阵列230包括C个通用处理集群(GPC)208的集合,其中C≥1。每个GPC 208能够并发地执行大量(例如,成百或上千)的线程,其中每个线程是程序的实例。在各种应用中,不同的GPC 208可被分配,以用于处理不同类型的程序或用于执行不同类型的计算。取决于针对每个类型的程序或计算所引发的工作负荷,GPC 208的分配可以变化。

存储器接口214包括D个分区单元215的集合,其中D≥1。每个分区单元215被耦合至贮存在PPM存储器204内的一个或多个动态随机存取存储器(DRAM)。在一个实施例中,分区单元215的数量等于DRAM 220的数量,并且每个分区单元215被耦合至不同的DRAM 220。在其他实施例中,分区单元215的数量可以不同于DRAM 220的数量。本领域技术人员将理解,可用任意其他技术上合适的存储设备来替代DRAM 220。在操作中,各种渲染目标(诸如纹理图和帧缓冲器)可跨越DRAM 220被存储,这允许分区单元215并行地写入每个渲染目标的部分,以高效地利用PP存储器204的可用带宽。

给定的GPC 208可处理将写入至PP存储器204内的任意DRAM 220的数据。交叉开关单元210被配置为将每个GPC 208的输出路由至任意分区单元215的输入或任意其他GPC 208,以用于进一步的处理。GPC 208经由交叉开关单元210与存储器接口214进行通信,以从各种DRAM 220读取或写入至各种DRAM 220。在一个实施例中,除了经由存储器接口214至PP存储器204的连接之外,交叉开关单元210具有至I/O单元205的连接,从而使得不同GPC 208内的处理核能够与系统存储器104或其他非本地于PPU 202的存储器进行通信。在图2的实施例中,交叉开关单元210直接连接至I/O单元205。在各种实施例中,交叉开关单元210可使用虚拟通道来分离GPC 208和分区单元215之间的交通流。

再次,GPC 208可被编程,以执行与广泛的各种引用相关的处理任务,其包括但不限于,线性和非线性数据转换,对视频和/或音频数据的滤波,建模操作(例如,应用物理规律来确定对象的位置、速度或其他属性),图像渲染操作(例如,细分着色器,顶点着色器,几何着色器,和/或像素/分段着色器程序),一般的计算操作等。在操作中,PPU 202被配置为将数据从系统存储器104和/或PP存储器204传输至一个或多个片上存储器单元,处理该数据,并且将结果数据写回至系统存储器104和/或PP存储器204。结果数据可随后被其他系统组件访问,其包括CPU 102,并行处理子系统112内的另一PPU 202,或计算机系统100内的另一并行处理子系统112。

如以上所示,任意数量的PPU 202可被包括在并行处理子系统112中。例如,多个PPU 202可被设置在单个插卡上,或多个插卡可被连接至通信路径113,或一个或多个PPU 202可被集成到桥芯片中。多PPU系统内的PPU 202可以彼此相同或不同。例如,不同的PPU 202可具有不同数量的处理核以及/或不同量的PP存储器204。在出现多个PPU 202的实现中,那些PPU可被并行操作,从而以比通过单个PPU202所可能的吞吐量更高的吞吐量来处理数据。合并了一个或多个PPU 202的系统可以以各种配置和形式因素来实现,其包括但不限于,台式计算机,膝上型计算机,手持个人计算机或其他手持设备,服务器,工作站,游戏机,嵌入式系统等。

图3A是根据本发明的一个实施例的、包括在图2的PPU 202中的GPC 208的框图。在操作中,GPC 208可被配置为并行执行大量的线程,以执行图形、通用处理和/或计算操作。如此处所使用的,“线程”指在特定的一组输入数据上执行的特定程序的实例。在一些实现中,单指令多数据(SIMD)指令发布技术被用于支持对大量线程的并行执行,而无需提供多个独立的指令单元。在其他实施例中,单指令多线程(SIMT)技术被用于支持对大量一般同步的线程的并行执行,其利用被配置为向GPC 208内的一组处理引擎发布指令的公共指令单元。不同于所有的处理引擎通常执行相同的指令的SIMD执行制度,SIMT执行允许不同的线程更容易地通过给定程序来跟随分散执行路径。本领域技术人员将理解,SIMD处理制度代表SIMT处理机制的功能子集。

经由管线管理器305来控制GPC 208的操作,其将从任务/工作单元207内的工作分布单元(未示出)接收的处理任务分布到一个或多个流多处理器(SM)310。管线管理器305还可被配置为通过为由SM 310所输出的处理数据指定目的地来控制工作分布交叉开关330。

在一个实施例中,GPC 208包括M个SM 310的集合,其中M≥1。每个SM 310还包括一组功能执行单元(未示出),诸如执行单元和加载-存储单元。特定于任意功能执行单元的处理操作可被管线化,其使得在先前的指令完成执行之前新的指令能够被发布以用于执行。可提供给定SM 310内的功能执行单元的任意组合。在各种实施例中,功能执行单元可被配置为支持各种不同的操作,其包括整数和浮点算数(例如,加法和乘法)、比较操作、布尔操作(AND,OR,XOR)、移位,以及各种代数函数的计算(例如,平面插值和三角函数、指数和对数函数等)。有优势地,相同的功能执行单元可被配置为执行不同的操作。

在操作中,每个SM 310被配置为处理一个或多个线程组。如此处所使用的,“线程组”或“线程束(warp)”指对不同的输入数据并发执行相同程序的一组线程,该组的一个线程被指派到SM 310内的不同的执行单元。线程组可包括比SM 310内的执行单元的数量更少的线程,在这种情形中,当该线程组正被处理时,一些执行单元可在周期期间内是空闲的。线程组也可以包括比SM 310内的执行单元的数量更多的线程,在这种情形中,处理可跨连续的时钟周期发生。由于每个SM 310可并发支持多达G个线程组,结果是在任意给定时间在GPC 208中可执行多达G*M个线程组。

另外,多个相关的线程组可在SM310内同时处于活动状态(在执行的不同阶段)。该线程组的集合在本文中被称为“协作线程阵列”(“CTA”)或“线程阵列”。特定CTA的大小等于m*k,其中k是线程组中并发执行线程的数量,其通常是SM 310内的执行单元数量的整数倍,并且m是SM 310内同时活动的线程组的数量。

虽然在图3A中未被示出,但是,每个SM 310包括一级(L1)高速缓存或使用SM 310外部的对应的L1高速缓存中的空间,以另外支持由执行单元执行的加载和存储操作。每个SM 310还有权访问二级(L2)高速缓存(未示出),其在PPU 202内的所有GPC 208之间被共享。L2高速缓存可被用于在线程之间传输数据。最后,SM 310还有权访问片外“全局”存储器,其可包括PP存储器204和/或系统存储器104。将理解,任意在PPU202外部的存储器可被用作全局存储器。另外,如图3A中所示,一点五级(L1.5)高速缓存335可被包括在GPC 208内,并且被配置为接收并保持经由存储器接口214由SM 310从存储器请求的数据。这种数据可包括但不限于,指令、统一(uniform)数据和恒定数据。在GPC 208内具有多个SM 310的实施例中,SM 310可有益地共享高速缓存在L1.5高速缓存335中的公共指令和数据。

每个GPC 208可具有相关联的存储器管理单元(MMU)320,其被配置为将虚拟地址映射到物理地址。在各种实施例中,MMU 320可驻于GPC208内或存储器接口214内。MMU 320包括一组页表条目(PTE),其被用于将虚拟地址映射到块(tile)或存储器页的物理地址并且可选地映射到高速缓存行索引。MMU 320可包括地址转换后备缓冲器(TLB)或高速缓存器,其可驻于SM 310内、一个或多个L1高速缓存内、或GPC 208内。

在图形和计算应用中,GPC 208可被配置,使得每个SM 310被耦合至纹理单元315,以用于执行纹理映射操作,诸如确定纹理样本位置,读取纹理数据,以及滤波纹理数据。

在操作中,每个SM 310将经处理的任务发送至工作分布交叉开关330,以便将经处理的任务提供给另一GPC 208,以用于进一步的处理,或者经由交叉开关单元210将经处理的任务存储在L2高速缓存(未示出)、并行处理存储器204、或系统存储器104中。另外,预光栅操作(preROP)单元325被配置为从SM 310接收数据、将数据指引至分区单元215内的一个或多个光栅操作(ROP)单元、针对颜色混合执行优化、组织像素颜色数据以及执行地址转译。

将理解,此处所描述的核体系架构是示例性的,并且变化和修改是可能的。另外,任意数量的处理单元,诸如SM 310、纹理单元315,或preROP单元325可被包括在GPC 208内。另外,如以上与图2一起描述的,PPU 202可包括任意数量的GPC 208,其被配置为功能上彼此类似,使得执行行为并不取决于哪个GPC 208接收了特定的处理任务。另外,每个GPC 208独立于PPU 202中的其他GPC 208操作,以针对一个或多个应用程序来执行任务。鉴于上述,本领域技术人员将理解,图1至图3A中所描述的体系架构绝对没有限制本发明的范围。

图形管线体系架构

图3B是根据本发明的一个实施例的、可被实现在图2的并行处理单元中的图形处理管线350的概念图。如所示,图形处理管线350包括但不限于,基元分布器(PD)355;顶点属性取回单元(VAF)360;顶点细分几何处理单元(VTG)365;视口缩放、剔除和裁剪单元(VPC)370;分块单元(tiling unit)375,设置单元(设置)380,光栅化器(光栅)385;片段处理单元,其也被认为是像素着色单元(PS)390,以及光栅操作单元(ROP)395。

PD 355收集来自前端212的与高阶表面、图形基元等相关联的顶点数据,并且将该顶点数据发送至VAF 360。

VAF 360从共享存储器取回与进来的顶点中的每一个相关联的顶点属性,并且将顶点数据与相关联的顶点属性一起存储至共享存储器。

VTG 365是可编程的执行单元,其被配置为执行顶点着色程序、细分程序以及几何程序。这些程序处理从VAF 360接收的顶点数据和顶点属性,并且产生图形基元、以及颜色值、表面法向量,以及针对图形基元的每个顶点处的透明度值,以用于图形处理管线350内的进一步处理。虽然未明确示出,但是,在一些实施例中,VTG 365可包括一个或多个顶点处理单元、细分初始化处理单元、任务生成单元、任务分布器、拓扑生成单元、细分处理单元,以及几何处理单元。

顶点处理单元是可编程的执行单元,其可被配置为执行顶点着色程序,按照顶点着色程序所指定的来亮化并变换顶点数据。例如,顶点处理单元可被编程以将顶点数据从基于对象的坐标表示(对象空间)变换到可替换地基于诸如世界空间或归一化设备坐标(NDC)空间的坐标系。顶点处理单元可读取由VAF存储在共享存储器中的顶点数据和顶点属性,并且处理顶点数据和顶点属性。顶点处理单元415将经处理的顶点存储在共享存储器中。

细分初始化处理单元是可编程的执行单元,其被配置为执行细分初始化着色程序。细分初始化处理单元处理由顶点处理单元所产生的顶点,并且生成被称作补丁(patch)的图形基元。细分初始化处理单元还生成各种补丁属性。细分初始化处理单元随后将补丁数据和补丁属性存储在共享存储器中。在一些实施例中,细分初始化着色程序可被称为外壳着色器或细分控制着色器。

任务生成单元从共享存储器取回针对顶点和补丁的数据和属性。任务生成单元生成任务,以用于处理顶点和补丁,其用于由图形处理管线350中的后续级处理。

任务分布器重新分布由任务生成单元所产生的任务。由顶点着色程序和细分初始化程序的各种实例所产生的任务可在一个图形处理管线350和另一个之间显著不同。任务分布器重新分布这些任务,使得每个图形处理管线350在后续管线阶段期间具有大致相同的工作负荷。

拓扑生成单元取回由任务分布器所分布的任务。拓扑生成单元将顶点进行索引,其包括与补丁相关联的顶点,并且针对细分顶点计算(U,V)坐标以及索引,其连接经细分的顶点以形成图形基元。拓扑生成单元随后将经索引的顶点存储在共享存储器中。

细分处理单元是可编程执行单元,其被配置为执行细分着色程序。细分处理单元从共享存储器读取输入数据并将输出数据写入到共享存储器。该共享存储器中的输出数据被传递至下一着色级,几何处理单元445,以作为输入数据。在一些实施例中,细分着色程序可被称为域着色器或细分评估着色器。

几何处理单元是可编程执行单元,其被配置为执行几何着色程序,从而变换图形基元。顶点被分组,以构建用于处理的图形基元,其中图形基元包括三角、线段、点等。例如,几何处理单元可被编程以将图形基元再分成一个或多个新的图形基元,并且计算参数,诸如平面方程系数,其被用于将新的图形基元光栅化。

几何处理单元将指定了新的图形基元的参数和顶点发送至VPC 370。几何处单元可读取存储在共享存储器中的数据,用于在处理几何数据中使用。VPC 370执行裁剪、剔除、透视校正,以及视口变换,以确定哪些图形基元在最终渲染的图像中是潜在可视的,以及哪些图形基元是不潜在可视的。VPC 370随后将经处理的图形基元发送至分块单元375。

分块单元375是图形基元分类引擎,其驻于世界空间管线352和屏幕空间管线354之间,如本文进一步所描述的。图形基元在世界空间管线352中被处理,并且随后被发送至分块单元375。屏幕空间被分割成高速缓存块,其中每个高速缓存块与屏幕空间的一部分相关联。针对每个图形基元,分块单元375识别一组高速缓存块,其与图形基元相交,此处这种处理被称为“分块”。在分块若干数量的图形基元之后,分块单元375基于高速缓存块来处理图形基元,其中与特定高速缓存块相关联的图形基元被发送至设置单元380。分块单元375一次一个高速缓存块地将图形基元发送至设置单元380。与多个高速缓存块相交的图形基元通常被在世界空间管线352中一次处理,但是随后经多次被发送至屏幕空间管线354。

这种技术提升了屏幕空间管线354中的处理期间的高速缓存存储器的本地性,其中与第一高速缓存块相关联的多个存储器操作访问L2高速缓存的区域,或任意其他技术上可行的高速缓存存储器,其可在对第一高速缓存块的屏幕空间处理期间保持驻留。一旦与第一高速缓存块相关联的图形基元被屏幕空间管线354处理,与第一高速缓存块相关联的L2高速缓存的部分可被清除,并且分块单元可发送与第二高速缓存块相关联的图形基元。与第二高速缓存块相关联的多个存储器操作可随后访问L2高速缓存的区域,其可在对第二高速缓存块的屏幕空间处理期间保持驻留。因此,可减少到L2高速缓存和到渲染目标的整个存储器流量。在一些实施例中,针对给定的图形基元,世界空间计算被执行一次,而不管与图形基元相交的屏幕空间中的高速缓存块的数量。

设置单元380经由分块单元375从VPC 370接收顶点数据,并且计算与图形基元相关联的参数,其包括但不限于,边缘方程、部分平面方程、以及深度平面方程。设置单元380随后将经处理的图形基元发送至光栅化器385。

光栅化器385扫描转换新的图形基元并将片段和覆盖数据发送至像素着色单元390。另外,光栅化器385可被配置为执行z剔除和其他基于z的优化。

像素着色单元390是可编程执行单元,其被配置为执行片段着色程序,按照片段着色程序所指定的将从光栅化器385接收的片段进行变换。片段着色程序可以在像素级别粒度着色片段,其中这种着色程序可被称为像素着色程序。可替换地,片段着色程序可以样本级别粒度着色片段,其中每个像素包括多个样本,并且,每个样本代表像素的一部分。可替换地,片段着色程序可以任意其他技术上可行的粒度着色片段,这取决于经编程的采样率。

在各种实施例中,片段处理单元460可被编程为执行诸如透视校正、纹理映射、着色、混合等之类的操作,以产生被发送至ROP 395的经着色的片段。像素着色单元390可读取被存储在共享存储器中的数据。

ROP 395是执行光栅操作的处理单元,诸如模具(stencil)、z测试,混合等,并且将像素数据作为经处理的图形数据进行传输,以用于经由存储器接口214存储在图形存储器中,其中图形存储器通常被结构化,以作为一个或多个渲染目标。经处理的图形数据可被存储在图形存储器、并行处理存储器204、或系统存储器104中,以用于在显示设备110上显示或用于CPU 102或并行处理子系统112的进一步处理。在一些实施例中,ROP 395被配置为压缩被写入到存储器中的z或颜色数据,并且解压缩从存储器读取的z或颜色数据。在各种实施例中,ROP 395可位于GPC 208的存储器接口214中、GPC外部的处理集群阵列230中、或PPU 202的单独单元(未示出)中。

图形处理管线可由PPU 202内的任意一个或多个处理元件实现。例如,图3A的SM 310中的一个可被配置为执行VTG 365和像素着色单元390中的一个或多个的功能。PD 355、VAF 360、VPC 450、分块单元375、设置单元380、光栅化器385、以及ROP 395的功能也可由特定GPC 208内的处理元件结合对应的分区单元215执行。可替换地,图形处理管线350可针对一个或多个以上列出的功能,利用专用固定功能处理元件来实现。在各种实施例中,PPU 202可被配置为实现一个或多个图形处理管线350。

在一些实施例中,图形处理管线350可被分成世界空间352和屏幕空间管线354。世界空间管线352处理3D空间中的几何对象,其中每个几何对象的位置相对于其他几何对象并相对于3D坐标系统是已知的。屏幕空间管线354处理已经从3D坐标系统投影至表示显示设备110的表面的2D平面表面的几何对象。例如,世界空间管线352可包括图形处理管线350中从PD 355至VPC 370的管线级。屏幕空间管线354可包括图形处理管线350中从设置单元380至ROP 395的管线级。分块单元375将追随世界空间管线352的最后级,即,VPC 370。分块单元375将在屏幕空间管线354的第一级即设置单元380之前。

在一些实施例中,世界空间管线352可进一步被分成阿尔法(alpha)阶段管线和贝塔(beta)阶段管线。例如,阿尔法阶段管线可包括图形处理管线350从PD 355至任务生成单元的管线阶段。贝塔阶段管线可包括图形处理管线350从拓扑生成单元至VPC 370的管线阶段。图形处理管线350在阿尔法阶段管线处理期间执行第一组操作,并且在贝塔阶段管线处理期间执行第二组操作。如本文所使用的,一组操作被定义为由单个线程、线程组、或同时动作的多个线程组执行的一个或多个指令。

在具有多个图形处理管线350的系统中,与一组几何对象相关联的顶点数据和顶点属性可被分割,使得每个图形处理管线350具有通过阿尔法阶段大致相同量的工作负荷。阿尔法阶段处理可显著地扩张顶点数据和顶点属性的量,使得由任务生成单元所产生的顶点数据和顶点属性的量显著大于由PD 355和VAF 360所处理的顶点数据和顶点属性的量。另外,与一个图形处理管线350相关联的任务生成单元可产生比与另一图形处理管线350相关联的任务生成单元产生显著多的顶点数据和顶点属性量,即使两个图形处理管线350在阿尔法阶段管线的开始处处理相同量的属性的情形中也是如此。在这种情形中,任务分布器重新分布由阿尔法阶段管线所产生的属性,使得每个图形处理管线350在贝塔阶段管线的开始处具有大致相同的工作负荷。

请注意,如本文所使用的,对共享存储器的参考可包括任意一个或多个技术上可行的存储器,其包括但不限于,由一个或多个SM 310所共享的本地存储器,或经由存储器接口214可访问的存储器,诸如,高速缓存存储器、并行处理存储器204、或系统存储器104。还请注意,如本文所使用的,对高速缓存存储器的参考可包括任意一个或多个技术上可行的存储器,其包括但不限于,L1高速缓存、L1.5高速缓存以及L2高速缓存。

分块高速缓存

图4是根据本发明的一个实施例的、图3B的图形处理管线350可被配置为生成并处理的高速缓存块410(0)的概念图。如所示,高速缓存块410(0)代表屏幕空间400的一部分,并且被分割成多个光栅块420。

屏幕空间400代表一个或多个存储器缓冲器,其被配置为存储经渲染的图像数据以及由图形处理管线350内的功能单元所传输的其他数据。在一些实施例中,一个或多个存储器缓冲器可被配置为一个或多个渲染目标。屏幕空间代表存储器缓冲器,其被配置为存储由图形处理管线所渲染的图像。屏幕空间400可与任意数量的渲染目标相关联,其中每个渲染目标可独立于其他渲染目标而被配置,以包括任意数量的字段。渲染目标内的每个字段可独立于其他字段被配置,以包括任意数量的位。每个渲染目标可包括多个图片元素(像素),并且每个像素可依次包括多个样本。在一些实施例中,每个高速缓存块的大小可基于与屏幕空间相关联的渲染目标的大小和配置。在操作中,一旦渲染完成,则一个或多个渲染目标中的像素可被传输至显示设备,以便显示经渲染的图像。

通过示例,针对屏幕空间400的一组渲染目标可包括八个渲染目标。第一渲染目标可包括四个字段,其代表颜色(包括红色,绿色和蓝色组分颜色)和与对应的片段相关联的透明度信息。第二渲染目标可包括两个字段,其代表与对应的片段相关联的深度和模具信息。第三渲染目标可包括三个字段,其代表表面法向量信息,其包括与对应的片段相关联的x轴法向量,y轴法向量和z轴法向量。剩余五个渲染目标可被配置为存储与对应的片段相关联的额外信息。这种配置可包括用于各种信息(其包括但不限于,3D位置数据,漫反射光照信息,以及镜面反射光照信息)的存储。

每个高速缓存块410代表屏幕空间400的一部分。为了清楚,图4中仅示出了五个高速缓存块410(0)-410(4)。在一些实施例中,高速缓存块在X和Y屏幕空间中可具有任意大小。例如,如果高速缓存块驻于高速缓存存储器(其还被用于存储其他数据)中,则高速缓存块可被调整大小至仅消耗高速缓存存储器的特定部分。高速缓存块的大小可以基于若干因素,其包括与屏幕空间400相关联的渲染目标的数量和配置,每个像素的样本量,以及存储在高速缓存块中的数据是否被压缩。一般而言,高速缓存块被调整大小以增加高速缓存块数据保持驻于高速缓存存储器中的可能性,直到与高速缓存块相关联的所有图形基元被完全压缩为止。

光栅块420代表高速缓存块410(0)的一部分。如所示,高速缓存块410(0)包括十六个光栅块420(0)-420(15),其以四个光栅块420宽并且四个光栅块420高的阵列布置。在包括多个GPC 208的系统中,与给定高速缓存块410(0)相关联的处理可在可用的GPC 208之间被划分。在所示的示例中,如果高速缓存块410(0)的十六个光栅块由四个不同的GPC 208处理,则每个GPC 208可被指派,以处理高速缓存块410(0)中的十六个光栅块420中的四个。具体地,第一GPC 208可被指派以处理光栅块420(0)、420(7)、420(10)和420(13)。第二GPC 208可被指派以处理光栅块420(1)、420(4)、420(11)和420(14)。第三GPC 208可被指派以处理光栅块420(2)、420(5)、420(8)和420(15)。第四GPC 208可随后被指派以处理光栅块420(3)、420(6)、420(9)和420(12)。在其他实施例中,对给定高速缓存块内的不同光栅块的处理可在GPC 208中被分配,或者以任何技术上可行的方式在计算机系统100内所包括的任意其他处理实体中被分配。

分段线性不规则光栅化

图形处理管线350可被配置为执行分段线性不规则光栅化,其中这种分段线性不规则光栅化近似于逆转VR护目镜畸变透镜的影响或其他宽屏渲染技术的伪影所需的理想的非线性光栅化。现描述该分段线性不规则光栅化技术。

图5是根据本发明的一个实施例的、图3B的图形处理管线350的一部分500的详细的示图。如所示,所示出的部分500包括但不限于,顶点处理单元510,几何处理单元520;视口缩放、剔除和裁剪单元(VPC)370;分块单元375,设置单元(设置)380,光栅化器385;片段处理单元,其还被识别为像素着色单元390,以及光栅操作单元(ROP)395。图5中所示的元件大体上与图3B中所描述的元件功能相同,除了以下进一步描述的以外。

顶点处理单元510从VAF 360接收顶点数据和顶点属性,并且处理接收到的顶点数据和顶点属性。顶点处理单元510将场景划分成多个区域,其中每个区域具有不同的x,y抽样因子以及不同的x,y偏移,其中,x代表与显示器屏幕相关联的屏幕空间的水平维度,而y代表与显示器屏幕相关联的屏幕空间的垂直维度。在一些实施例中,x和y可代表屏幕空间的任意两个维度,其中,x维度与y维度形成直角。区域的x、y抽样因子分别确定在水平维度和垂直维度上拉伸每个像素的量。x、y偏移分别确定在屏幕空间中在水平和垂直维度中在何处定位该区域。一般而言,距离屏幕空间上的特定位置的水平距离越大的区域具有更高的x抽样因子,这导致相对于包括特定位置的区域而言增大的像素宽度。距离屏幕空间上的特定位置的垂直距离越大的区域具有更高的y抽样因子,这导致相对于包括特定位置的区域而言增大的像素高度。距离屏幕空间上的特定位置的水平距离和垂直距离越大的区域具有更高的x抽样因子和更高的y抽样因子,这导致相对于包括特定位置的区域而言增大的像素宽度和高度。

在一些实施例中,特定位置可以是与显示器屏幕相关联的屏幕空间的中心。在其他实施例中,特定位置可以是屏幕空间上与对应的畸变透镜的中心直接一致的位置。该位置可以位于屏幕空间的中心,或可以不位于屏幕空间的中心。在另外其他实施例中,特定位置可以是屏幕上的任意位置。在这些之后的实施例中,特定位置可以是与凹渲染(foveated rendering)相关的定点。通过凹渲染,可建立定点,其中定点可由指针设备指定,其包括但不限于,计算机鼠标或数字笔设备。可替换地,定点可经由遵循凹位置的眼睛追踪设备确定,即,观看者的眼睛的视网膜中心。在这些实施例中,x抽样因子和y抽样因子可基于距离定点的特定区域的水平距离和垂直距离。

在一些实施例中,x抽样因子和y抽样因子可以分别是x和y缩放因子,其可指定与特定区域相交的对应几何对象和顶点的缩放量。一般而言,新的顶点位置(x’,y’)可以指定为x’=f(x,y,z,w),而y’=f(x,y,z,w),这指示新的顶点位置是当前的顶点位置的同类坐标x,y,z和w的函数。可以利用同类坐标x,y,z和w的任意线性函数,拼接其在将顶点缩放至新的顶点位置之后,与几何对象的当前顶点相关联的线仍旧是线。在一个示例中,新的顶点位置可以被指定为x’=A*x,而y’=B*y,其中,x和y指定当前的顶点位置,x’和y’指定新的顶点位置,并且A和B分别是水平缩放因子和垂直缩放因子。

在一些实施例中,可在已经裁剪了几何对象之后来应用x、y抽样因子和x、y偏移。在其他实施例中,可在几何对象被裁剪之前应用x、y抽样因子和x、y偏移。类似地,在一些实施例中,x、y抽样因子和x、y偏移可在通过将坐标除以“w”来归一化同类坐标x、y、z和w之后被应用。在其他实施例中,x、y抽样因子和x、y偏移可在通过将坐标除以“w”来归一化同类坐标x、y、z和w之前被应用。

在一些实施例中,针对特定列的所有区域,x抽样因子可以是相同的,并且针对特定行的所有区域,y抽样因子可以是相同的。在这种实施例中,顶点可在一个区域和相邻区域之间被对齐。结果,与多个区域相交的几何对象可被渲染,而不存在区域边界处的不连续或接缝。在其他实施例中,x抽样因子可在一个区域和垂直的相邻区域之间不同,或者y抽样因子可在一个区域和水平相邻的区域之间不同。在这种实施例中,顶点可能在一个区域和相邻区域之间不对齐。结果,与多个区域相交的几何对象可被渲染,其带有区域边界处的不连续、接缝、或其他伪影。在这些实施例中,可在这种区域边界处应用插值和滤波,以减少或消除这种伪影。顶点处理单元510针对每个接收到的顶点产生x、y属性,并且将x、y属性传输给几何处理单元520。

几何处理单元520从顶点处理单元510接收经处理的顶点。在一些实施例中,几何处理单元520可经由视口多播来传输经复制的几何对象。在这种实施例中,几何处理单元520可一次性绘出几何对象并且将几何对象的实例发送至多个视口,其中每个视口具有给定的x、y抽样因子和x、y偏移以及剪刀框(scissor box),其可定义针对特定视口用以绘制的屏幕空间的部分。场景可被划分成多个视口,其中每个视口对应于屏幕空间的不同区域,如本文所描述的。当几何处理单元520接收几何对象时,几何处理单元520可生成相交掩码(intersection mask),其导致几何对象仅被发送至对应于与几何对象相交的区域的视口。可替换地,几何处理单元520可将几何对象发送至所有视口,而无需生成相交掩码,并且每个视口可基于几何对象是否与屏幕空间中的对应区域相交来确定是否绘制几何对象。

VPC 370针对每个视口从几何处理单元520接收经处理的顶点和剪刀框。VPC 370还可从几何处理单元520接收相交掩码。如果VPC 370从几何处理单元520接收相交掩码,则VPC 370针对每个相交的视口,生成输出顶点和对应的剪刀框,如由相交掩码所确定的。如果VPC 370没有从几何处理单元520接收到相交掩码,则VPC 370针对每个视口生成输出顶点和对应的剪刀框。在一些实施例中,VPC 370确定哪些区域与各几何对象相交,而非几何处理单元520确定。

分块单元375从VPC 370接收顶点和剪刀框,并且将顶点和剪刀框发送至一个或多个设置单元380,如本文将进一步描述的。

设置单元(设置)380从分块单元375接收顶点和对应的剪刀框。设置单元380将剪刀框应用到顶点,以确定对应于当前的顶点的几何对象的全部与对应于剪刀框的视口相交、还是部分与对应于剪刀框的视口相交、还有没有与对应于剪刀框的视口相交。设置单元380计算线性平面方程和线性属性边缘方程,并将其发送至光栅化器385。

光栅化器385、像素着色单元390,以及ROP 395执行其标准的功能,而没有特别在意分段线性不规则光栅化。因为屏幕空间的每个区域包括对齐至规则线性网格的顶点,因此,光栅化器385、像素着色单元390以及ROP 395正确并高效地对进来的顶点和像素进行光栅化和着色,而无需修改这些处理元件的功能。为了高效,这些处理元件依赖于线性网格空间。由于设置单元380生成的平面方程和边缘方程是线性的,因此,光栅化器385、像素着色单元390以及ROP 395保持高效的处理。例如,光栅化器385可利用线性边缘方程来执行操作。一个或多个光栅化器385、像素着色单元390以及ROP 395可基于线性平面方程来访问共享存储器中的属性。

如以上所描述的,带有不同的x,y抽样因子和x,y偏移的屏幕空间中的每个区域与不同的视口相关联。因此,屏幕空间中的每个区域对应于不同的视口。例如,在包括16个视口的系统中,屏幕空间可被以不超过16个区域的任何方式划分。因此,屏幕空间可被划分成2行8列,3行5列,4行4列的区域。在一些实施例中,视口可被分离成分离的x视口和y视口,诸如16个x视口16个y视口。在这种实施例中,屏幕空间中的每个区域可与两个视口——x视口和y视口相关联。例如,带有16个x视口16个y视口的系统将总共具有256个视口。在其他实施例中,可利用高速缓存块而非视口来定义区域。在这种实施例中,屏幕空间中的每个区域可与不同的高速缓存块相关联,其中,每个高速缓存块代表屏幕空间中的不同的64像素乘64像素区域,并且,每个高速缓存块具有给定的x,y抽样因子和x,y偏移。在另外其他实施例中,可利用粗光栅块或细光栅块而非视口来定义区域。在这种实施例中,屏幕空间中的每个区域可与不同的粗光栅块相关联,其中每个高速缓存块代表屏幕空间中的不同的16像素乘16像素的区域,并且,每个光栅块具有给定的x,y抽样因子和x,y偏移。可替换地,屏幕空间中的每个区域可与不同的粗光栅块相关联,其中每个高速缓存块代表屏幕空间中的不同的8个样本乘8个样本的区域。通过利用高速缓存块或光栅块而非视口,可定义屏幕空间中更多的区域。结果,与视口方式相比,利用高速缓存块或光栅块的分段线性不规则光栅化可更加接近地近似理想的非线性光栅化网格。

在一些实施例中,图形处理管线350中的元件可在访问一些属性之前将分段线性不规则平面方程逆转回规则方网格。例如,纹理存储器中的纹理可被映射至方像素。访问纹理存储器的元件将把分段线性不规则平面方程逆转回规则方网格。元件将基于经逆转的平面方程,利用顶点位置来访问纹理存储器,以便取回正确的纹元。

图6A至图6D示出了根据本发明的各实施例的、可在分段非线性光栅化期间实现的示例性样本网格。

如图6A所示,样本网格包括九个区域610(0)-610(8),其被布置为三行乘三列。靠近屏幕空间的中心的区域610(4)包括相对精细的分辨率的方像素。位于距离中心区域610(4)水平距离的区域610(3)和610(5)包括相对于中心区域610(4)更大的水平间隔的像素。位于距离中心区域610(4)垂直距离的区域610(1)和610(7)包括相对于中心区域610(4)更大的垂直间隔的像素。位于距离中心区域610(4)水平距离和垂直距离的区域610(0)、610(2)、610(6)和610(8)包括相对于中心区域610(4)更大的水平间隔和更大的垂直间隔的像素。如所示,相同列中的区域都具有相同的水平分辨率,并且相同行中的区域都具有相同的垂直分辨率。

如图6B中所示,三角620将要被渲染到由区域610(0)-610(8)所表示的屏幕空间上。三角620与四个区域610(4)、610(6)、610(7)和610(8)相交。当被渲染到分段线性不规则网格上时,三角620表现为三角630,其示出相邻区域之间的边界处的不连续。但是,当被投影到VR护目镜上时,三角630所示出的畸变和VR护目镜中的透镜的光学畸变彼此抵消,并且观看者看到近似于三角620的三角。

如图6C中所示,样本网格包括六个区域640(0)-640(5),其布置为两行乘三列。区域640(4)包括相对精细的分辨率的5行乘8列方像素。位于距离中心区域640(4)水平距离的区域640(3)和640(5)包括相对于区域640(4)更大的水平间隔的像素。位于距离中心区域610(4)垂直距离的区域640(1)包括相对于区域640(4)更大的垂直间隔的像素。位于距离区域640(4)水平距离和垂直距离的区域640(0)和640(2)包括相对于区域640(4)更大的水平间隔和垂直间隔的像素。如所示,640(0)和640(2)相对于紧接相邻的区域具有不同的水平分辨率和垂直分辨率。因此,驻于区域640(0)和640(2)中的一者或二者中的几何对象以及相邻区域很有可能显示不连续、接缝,或其他伪影。因此,这种几何对象应当在区域边界处被插值和滤波,以降低这种伪影的影响。

如图6D中所示,样本网格包括六个区域650(0)-650(5),其被布置为两行乘三列。区域650(1)、650(3)、650(4)和650(5)包括8行乘8列的方像素。区域650(0)和650(2)包括6行乘6列的方像素。区域650(0)和650(2)包括6行乘6列的方像素。六个区域650(0)-650(5)的所有区域具有相同的水平分辨率和垂直分辨率。

图7阐述了根据本发明的一个实施例的、用于执行分段不规则渲染的方法步骤的流程图。虽然与图1至图6D的系统一起来描述方法步骤,但是,本领域技术人员将理解,任意被配置为以任意次序执行方法步骤的系统在本公开的范围内。

如所示,方法开始于步骤702,其中顶点处理单元510计算x,y属性,其包括针对每个接收到的顶点的x,y抽样因子和x,y偏移。经计算的x,y抽样因子和x,y偏移将接收到的顶点以及与顶点相对应的几何对象布置到屏幕空间的合适区域。屏幕空间的每个区域与特定的x和y抽样因子相关联,x和y抽样因子分别定义了区域的水平分辨率和垂直分辨率。类似地,屏幕空间的每个区域与特定的x和y偏移相关联,x和y偏移分别定义了区域的水平位置和垂直位置。一般而言,不同的区域具有不同的x,y抽样因子和x,y偏移,使得像素的分辨率可因区域而不同。在针对VR护目镜进行渲染的情形中,靠近屏幕空间的所指定的位置的区域具有相对精细的分辨率,以便当靠近所指定的位置的区域被畸变透镜放大时,提供足够的分辨率。水平距离屏幕的所指定的位置的区域随着距离屏幕的所指定的位置的水平距离的增大,具有对应的更加粗的分辨率。类似地,垂直距离屏幕的所指定的位置的区域随着距离屏幕的所指定的位置的垂直距离的增大,具有对应的更加粗的分辨率。更一般地,每个区域可被独立地调整大小、缩放和偏移。结果,经由所公开的技术,对区域的各种配置是可能的。

在步骤704处,几何处理单元520包括针对每个顶点计算视口相交掩码。视口相交掩码包括针对每个区域的指示符,其中当特定的几何对象与区域相交时,针对特定区域的指示符被设置为真,而当特定的几何对象未与区域相交时,其被设置为假。在步骤706处,VPC 370针对每个相关的视口执行裁剪操作。在一些实施例中,相关的视口是与对应于特定顶点的几何对象相交的视口。在这些实施例中,VPC 370扫描掩码,并且针对每个区域生成几何对象的实例,其中视口相交掩码中的对应的指示符被设置为真。在其他实施例中,每个视口被看作是相关的视口。在这些之后的实施例中,几何处理单元520可能不生成视口相交掩码。在这种实施例中,VPC 370可向每个视口广播几何对象的实例。设置单元380可随后裁剪或丢弃三角,因为那些视口未与该三角相交。这些之后的实施例并未利用几何处理单元520,因此提升了图形处理管线350的效率和性能。针对未与几何对象相交的区域生成几何对象的实例可能稍稍减低处于几何处理单元520的下游的图形处理管线350级的效率。但是,这些效率上的降低可能抵消由于不利用几何处理单元520来生成视口相交掩码所提升的效率。

在步骤708处,VPC 370针对每个相关的视口复制几何对象。如以上所描述的,VPC 370可仅针对与几何对象相交的视口来生成几何对象的实例,在此处这种视口是相关视口。可替换地,VPC 370可生成几何对象的实例,并且针对每个视口广播实例,在此处所有视口被看作是相关视口。

在步骤710处,VPC 370将抽样因子和偏移应用到顶点,从而针对每个对应的视口调整顶点位置。在步骤712处,VPC 370用对应的相关视口来标记每个经复制的几何对象。该标记标识带有相关联的区域的几何对象的每个实例,使得图形处理管线350的下游级恰当地基于该区域的对应的x,y抽样因子和x,y偏移来正确地渲染几何对象的每个实例。在步骤714处,设置单元380针对经标识的视口应用剪刀框。应用剪刀框导致仅与特定视口相交的几何对象的部分被在该视口渲染。在步骤716处,光栅化器385、像素着色单元390以及ROP单元395执行其正常的功能。如本文进一步所描述的,所公开的技术提供针对每个视口的线性平面方程和边缘方程。只要平面方程和边缘方程保持线性,光栅化器385、像素着色单元390以及ROP单元395无需任何特定的编程或功能变更,以针对各种视口正确地渲染几何对象的实例。随后方法700终止。

总之,利用分段不规则光栅化对3D计算机几何对象进行渲染用于宽屏应用(诸如VR护目镜)。显示器屏幕的屏幕空间被划分成多个区域,其中每个区域与特定的x,y抽样因子和x,y偏移相关联。覆盖一个或多个屏幕空间区域的像素的几何对象根据针对该特定区域的x,y抽样因子和x,y偏移被渲染,该特定区域与几何对象相交。例如,覆盖三个屏幕空间区域的几何对象可以以第一区域中的一个x,y抽样因子和x,y偏移被渲染,以第二区域中的另一x,y抽样因子和x,y偏移被渲染,以及以第三区域中的又一x,y抽样因子和x,y偏移被渲染。针对宽屏幕渲染,位于靠近屏幕空间的所指定位置的区域可具有相对小的方像素。针对位于远离所指定的位置的区域,其中高分辨率通常不是必须的,随着距离所指定的位置的水平距离的增大,x抽样因子可增大,并且随着距离所指定的位置的垂直距离的增大,y抽样因子可增大。

所公开的方式的至少一个优势是,位于靠近屏幕空间的边缘处的像素被以较低的分辨率渲染,这导致相对于之前的宽屏幕渲染技术的提升的性能。所公开的技术的另一优势是,位于靠近屏幕空间的所指定的位置处的像素被以相对于之前技术的较高的分辨率渲染,这导致相对于之前的宽屏幕渲染技术的、靠近屏幕空间的所指定位置处的提升的视频质量。

出于阐释目的,已经呈现了对各实施例的描述,但是,并不意欲穷尽式的或限制于所公开的实施例。许多修改和变化对于本领域技术人员而言是显然的,而未偏离所描述的实施例的范围和精神。

本实施例的各方面可具体化为系统、方法或计算机程序产品。相应地,本公开的方面可以采用完全硬件实施例的方式,完全软件实施例(包括固件、常驻软件,微代码等)的方式,或本文可一般均被称为“电路”、“模块”或“系统”的组合了软件和硬件方面的实施例的方式。另外,本公开的方面可采用计算机程序产品的形式,其具体化在一个或多个计算机可读介质中,所述一个或多个计算机可读介质具有具体化在其上的计算机可读程序代码。

可利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是但不限于,电子的、磁的、光学的、电磁的、红外的、或半导体系统、装置、或设备,或前述的任意合适的组合。计算机可读存储介质的更加具体的示例(非穷尽式的列表)将包括以下:具有一个或多个电线的电连接,便携式计算机软磁盘,硬盘,随机存取存储器(RAM),只读存储器(ROM),可擦写可编程只读存储器(EPROM或闪存),光纤,便携式紧致盘只读存储器(CD-ROM),光存储设备,磁存储设备,或前述任意合适的组合。在本文档的上下文中,计算机可读存储介质可以是任意可包含或存储程序的有形介质,以用于指令执行系统、装置或设备的使用或与之相连接。

通过参照根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图阐释和/或框图,以上描述了本公开的方面。将理解,流程图阐释和/或框图的每个框,以及流程图阐释和/或框图中的框的组合可由计算机程序指令实现。这些计算机程序指令可被提供给通用目的计算机、专用计算机或其他可编程数据处理装置的处理器,以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令使得能够实现流程图和/或框图框中所指定的功能/动作。这种处理器可以是但不限于,通用处理器,专用处理器,特定于应用的处理器,或现场可编程处理器。

示图中的流程图和框图阐释了根据本公开的各实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这方面,流程图或框图中的每个框可代表模块、片段、或代码的一部分,其包括用于实现一个或多个具体逻辑功能的一个或多个可执行指令。应当理解,在一些可替换的实现中,框中所显示的功能可以以示图中所示的次序以外的次序发生。例如,示出为连续的两个框事实上可以被大体上并行地执行,或者有时,框可以以相反的次序执行,这取决于所涉及的功能。还将注意到,框图和/或流程图阐释,以及框图和/或流程图阐释中的框的组合可由执行所指定的功能或动作的基于专用硬件的系统执行,或由专用硬件和计算机指令的组合来执行。

虽然前述涉及本公开的实施例,但是,可构想本公开的其他和另外的实施例,而不偏离其基本范围,并且该范围由以下的权利要求所确定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1