CN111066066B - 可变比率着色 - Google Patents
可变比率着色 Download PDFInfo
- Publication number
- CN111066066B CN111066066B CN201880055109.1A CN201880055109A CN111066066B CN 111066066 B CN111066066 B CN 111066066B CN 201880055109 A CN201880055109 A CN 201880055109A CN 111066066 B CN111066066 B CN 111066066B
- Authority
- CN
- China
- Prior art keywords
- coarse
- quadrilateral
- quadrilaterals
- pixel
- fine
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- 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)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本文提供了一种用于以分开的分辨率执行光栅化和像素着色的技术。所述技术涉及正常地执行光栅化以生成精细光栅化数据和一组(精细)四边形。将所述四边形累积到图块缓冲区中并且基于着色率而从所述图块缓冲区中的所述四边形生成粗略四边形。所述着色率决定了所述精细四边形中有多少像素被组合来生成所述粗略四边形的粗略像素。精细像素的组合涉及针对待组合的每个这样的精细像素生成单个粗略像素。基于对应的精细像素的位置而设置所述粗略四边形的所述粗略像素的位置。正常地对所述粗略四边形进行着色并且基于所述精细光栅化数据而修改所得的着色的粗略四边形以生成着色的精细四边形。
Description
相关申请的交叉引用
本申请要求于2017年8月25日提交的美国非临时申请号15/687,421的权益,所述申请的内容以引用的方式并入本文,就好像在本文全面阐述一样。
背景技术
三维(“3D”)图形处理管线执行一系列步骤来将输入几何图形转换为二维(“2D”)图像以在屏幕上显示。步骤中的一些包括光栅化和像素着色。光栅化涉及识别哪些像素(或子像素样本)被管线的在光栅器之前的级所提供的三角形覆盖。光栅化的输出包括四边形(2x2像素的分块)和覆盖数据,所述覆盖数据指示哪些样本被四边形的像素覆盖。像素着色器对四边形的像素进行着色,然后将四边形的像素写入到帧缓冲区。由于像素着色非常耗费资源,因此正在不断开发技术来提高像素着色的效率。
附图说明
从下文结合附图通过举例的方式进行的描述中可以获得更详细的理解,在附图中:
图1是可以实现本公开的一个或多个特征的示例装置的框图;
图2示出了根据一个实例的图1的装置的细节;
图3是示出了图2所示的图形处理管线的附加细节的框图;
图4示出了根据一个实例的一种用于以与像素着色不同的分辨率执行光栅化的技术;
图5示出了根据一些实例的在不同于四分之一的着色率下进行的粗略四边形生成;
图6示出了图4所示的技术的一些细节,包括与对多样本渲染目标的渲染相关的细节;并且
图7示出了图6的示例技术的替代技术,其中着色的粗略像素中的一些样本覆盖被像素着色器消除。
具体实施方式
本文提供了一种用于以分开的分辨率执行光栅化和像素着色的技术。所述技术涉及正常地执行光栅化以生成精细光栅化数据和一组(精细)四边形。将四边形累积到图块缓冲区中并且基于着色率而从图块缓冲区中的四边形生成粗略四边形。所述着色率决定了精细四边形中有多少像素被组合来生成粗略四边形的粗略像素。精细像素的组合涉及针对待组合的每个这样的精细像素生成单个粗略像素。每个粗略像素具有对应于对应的精细像素(即,被组合来形成粗略像素的精细像素)的覆盖的覆盖数据。如果来自精细像素的样本覆盖数据的组合将超过分配给像素覆盖的位数,则去除来自精细像素的覆盖数据中的一些,从而在粗略像素中留下缩减的覆盖数据集。基于对应的精细像素的位置而设置粗略四边形的粗略像素的位置。在一个实例中,将粗略四边形的每个像素的位置设置为渲染目标的由对应的精细像素覆盖的区域的中心点。正常地对粗略四边形进行着色并且基于精细光栅化数据而修改所得的着色的粗略四边形以生成着色的精细四边形。这种修改涉及对粗略四边形的每个像素进行上采样(克隆)以生成多个上采样的克隆像素,所述多个上采样的克隆像素各自具有对应的粗略像素的颜色;然后将精细光栅化数据应用于每个上采样的克隆像素。
图1是可以实现本公开的一个或多个特征的示例装置100的框图。装置100可以是例如计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话、平板计算机或其他计算装置中的一者,但是不限于以上各项。装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108以及一个或多个输出装置110。装置100还包括一个或多个输入驱动器112和一个或多个输出驱动器114。输入驱动器112中的任一个被体现为硬件、硬件和软件的组合或软件,并且服务于控制输入装置108的目的(例如,控制操作,从输入驱动器112接收输入以及向所述输入驱动器提供数据)。类似地,输出驱动器114中的任一个被体现为硬件、硬件和软件的组合或软件,并且服务于控制输出装置110的目的(例如,控制操作,从输出驱动器114接收输入以及向所述输出驱动器提供数据)。应理解,装置100可以包括图1中未示出的其他部件。
在各种替代方案中,处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU或一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。在各种替代方案中,存储器104与处理器102位于同一管芯上,或者与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储装置106包括固定或可移除存储装置,例如但不限于硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置108包括但不限于:键盘、小键盘、触摸屏、触摸板、检测器、传声器、加速度计、陀螺仪、生物识别扫描仪或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。输出装置110包括但不限于:显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112和输出驱动器114包括被配置成相应地与输入装置108和输出装置110交互并驱动所述输入装置和输出装置的一个或多个硬件、软件和/或固件部件。输入驱动器112与处理器102和输入装置108通信,并且准许处理器102从输入装置108接收输入。输出驱动器114与处理器102和输出装置110通信,并且准许处理器102将输出发送到输出装置110。输出驱动器114包括加速处理装置(“APD”)116,所述APD 116耦合到显示装置118,所述显示装置118在一些实例中是物理显示装置或使用远程显示协议来显示输出的模拟装置。APD 116被配置成接受来自处理器102的计算命令和图形渲染命令,处理所述计算和图形渲染命令,并且向显示装置118提供像素输出以进行显示。如下面进一步详细描述的,APD 116包括被配置成根据单指令多数据(“SIMD”)范式执行计算的一个或多个并行处理单元。因此,虽然各种功能在本文中被描述为由APD 116执行或结合所述APD来执行,但是在各种替代方案中,被描述为由APD 116执行的功能另外地或可选地可以由具有类似能力的其他计算装置执行,所述其他计算装置并不由主处理器(例如,处理器102)驱动并且被配置成向显示装置118提供图形输出。例如,可以预期的是,根据SIMD范式执行处理任务的任何处理系统都可以被配置成执行本文描述的功能。可选地,可以预期的是,不根据SIMD范式执行处理任务的计算系统执行本文描述的功能。
图2示出了根据一个实例的装置100和APD 116的细节。处理器102(图1)执行操作系统120、驱动器122和应用程序126,并且还可以可选地或另外地执行其他软件。操作系统120控制装置100的各个方面,诸如管理硬件资源、处理服务请求、调度和控制进程执行以及执行其他操作。APD驱动器122控制APD 116的操作,向APD 116发送诸如图形渲染任务的任务或其他工作以进行处理。APD驱动器122还包括即时编译器,所述即时编译器编译可供APD116的处理部件(诸如在下文中进一步详细论述的SIMD单元138)执行的程序。
APD 116执行用于选定功能的命令和程序,诸如可能适合于并行处理的图形操作和非图形操作。APD 116可以用于执行图形管线操作,诸如像素操作、几何计算,并且基于从处理器102接收的命令而将图像渲染到显示装置118。APD 116还基于从处理器102接收的命令而执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。
APD 116包括计算单元132,所述计算单元132包括一个或多个SIMD单元138,所述SIMD单元138被配置成在处理器102(或另一个单元)的请求下根据SIMD范式以并行方式执行操作。SIMD范式是多个处理元件共享单个程序控制流程单元和程序计数器并且因此执行相同程序但是能够用不同数据执行所述程序的一种范式。在一个实例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其他通道同时执行相同指令,但是可以用不同数据执行所述指令。如果并不是所有通道都需要执行给定指令,则可以通过预测关闭通道。预测还可以用于执行具有分开的控制流程的程序。更确切地说,对于具有条件分支或控制流程是基于由单个通道执行的计算的其他指令,对与当前未执行的控制流程路径对应的通道的预测以及不同控制流程路径的串行执行允许任意控制流程。
计算单元132中的基本执行单元是工作项。每个工作项表示将要在特定通道中并行执行的程序的单个实例化。工作项可以作为“波前”在单个SIMD处理单元138上同时(或部分同时并部分顺序地)执行。一个或多个波前被包括在“工作组”中,所述工作组包括指定来执行相同程序的工作项的集合。可以通过执行构成工作组的每个波前来执行工作组。在替代方案中,所述波前是在单个SIMD单元138上或在不同的SIMD单元138上执行。波前可以被视作是可以在单个SIMD单元138上同时(或伪同时)执行的最大工作项集合。在波前大于SIMD单元138中的通道数量的情况下会发生“伪同时”执行。在这种情况下,在多个循环内执行波前,其中不同的工作项集合是在不同的循环中执行。APD调度器136被配置成执行与在计算单元132和SIMD单元138上调度各种工作组和波前相关的操作。
由计算单元132提供的并行性适合于图形相关操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,接受来自处理器102的图形处理命令的图形管线134向计算单元132提供计算任务以便并行地执行。
计算单元132还用于执行与图形不相关或不作为图形管线134的“正常”操作的一部分执行的计算任务(例如,被执行来对为了图形管线134的操作而执行的处理进行补充的自定义操作)。在处理器102上执行的应用程序126或其他软件将定义这类计算任务的程序传输到APD 116以供执行。
图3是示出了图2所示的图形处理管线134的附加细节的框图。图形处理管线134包括各自执行图形处理管线134的特定功能的各级。每个级被部分地或完全地实现为在可编程计算单元132中执行的着色器程序,或者部分地或完全地实现为在计算单元132外部的固定功能的不可编程的硬件。
输入汇编器级302从用户填充的缓冲区(例如,在由处理器102执行的软件,诸如应用程序126的请求下填充的缓冲区)读取图元数据并且将所述数据汇编成图元以供管线的其余部分使用。输入汇编器级302可以基于用户填充的缓冲区中包括的图元数据而生成不同类型的图元。输入汇编器级302将已汇编的图元格式化以供管线的其余部分使用。
顶点着色器级304处理由输入汇编器级302汇编的图元的顶点。顶点着色器级304执行各种逐顶点操作,诸如变换、蒙皮、变形和逐顶点光照。变换操作包括用于变换顶点的坐标的各种操作。这些操作包括以下中的一者或多者:修改顶点坐标的建模变换、视点变换、投影变换、透视分割和视口变换,以及修改非坐标属性的其他操作。
顶点着色器级304被部分地或完全地实现为将要在一个或多个计算单元132上执行的顶点着色器程序。顶点着色器程序由处理器102提供并且是基于由计算机程序员预先编写的程序。驱动器122编译这类计算机程序以生成具有适合于在计算单元132内执行的格式的顶点着色器程序。
外壳着色器级306、曲面细分器级308和域着色器级310协同工作来实现曲面细分,所述曲面细分通过细分图元来将简单的图元转换为更复杂的图元。外壳着色器级306基于输入图元而生成用于曲面细分的面片。曲面细分器级308针对所述面片生成一组样本。域着色器级310计算对应于面片的样本的顶点的顶点位置。外壳着色器级306和域着色器级310可以被实现为将要在计算单元132上执行的着色器程序,与顶点着色器级304一样,所述着色器程序由驱动器122编译。
几何着色器级312在逐个图元的基础上执行顶点操作。可以由几何着色器级312执行各种不同类型的操作,包括诸如点精灵扩展、动态粒子系统操作、毛发-鳍片生成、阴影体生成、单程渲染到立方体贴图、逐图元的材料交换以及逐图元的材料构建的操作。在一些实例中,由驱动器122编译并在计算单元132上执行的几何着色器程序执行几何着色器级312的操作。
光栅器级314接受在光栅器级314上游生成的简单图元(三角形)并且将所述简单图元光栅化。光栅化包括确定特定图元覆盖哪些屏幕像素(或子像素样本)。光栅化由固定功能硬件执行。
像素着色器级316基于在上游生成的图元和光栅化的结果而计算屏幕像素的输出值。像素着色器级316可以应用来自纹理存储器的纹理。像素着色器级316的操作由驱动器122编译并在计算单元132上执行的像素着色器程序执行。
输出合并器级318接受来自像素着色器级316的输出并且将这些输出合并到帧缓冲区中,从而执行诸如z测试和α混合的操作以确定屏幕像素的最终颜色。
在一种操作模式中,由光栅器级314执行的光栅化以与由像素着色器级316执行的像素着色相同的分辨率完成。借助于比上文提供的描述更详细的背景知识,光栅器级314从较前面的级接受三角形并且对三角形执行扫描转换以生成片段。片段是渲染目标的各个像素的数据,并且包括诸如位置、深度和覆盖数据之类的信息,以及稍后的在像素着色器级之后的诸如颜色的着色数据。渲染目标是正在进行渲染(即,正在写入颜色或其他值)的目标图像。
通常,片段被分组成四边形,每个四边形包括对应于四个相邻的像素位置的片段(即,2x2个片段)。对三角形的扫描转换涉及针对由三角形覆盖的每个像素位置生成片段。如果渲染目标是多样本图像,则每个像素都有多个样本位置,测试其中每一个样本位置的覆盖。片段记录了由三角形覆盖的像素区域内的样本的覆盖数据。由光栅器级314生成的片段被传输到像素着色器级316,所述像素着色器级316确定所述片段的颜色值并且同样可以确定其他值。
以相同的分辨率执行光栅化和像素着色意味着针对光栅器所生成的每个片段,像素着色器316执行计算来确定所述片段的颜色。换言之,由像素占据的屏幕空间的区域是与确定颜色的精度一致的区域。在一个实例中,在计算单元132的基于SIMD的硬件中,由光栅器级314生成的每个片段通过不同的工作项来着色。因此,在所生成的片段与产生来对所述片段进行着色的工作项之间存在一一对应关系。应注意,光栅器级314通常执行深度测试,从而剔除被先前渲染的片段遮挡的片段。因此,在经受住这种深度剔除的片段与产生来对所述存留的片段进行着色的工作项之间存在一一对应关系。理解其中以与着色相同的分辨率执行光栅化的操作模式的另一种方式是,可以对三角形的边缘定义的分辨率等于可以对所述三角形的颜色定义的分辨率。
上文中的其中以与像素着色相同的分辨率进行光栅化的操作模式对于具有固定颜色或不太频繁的颜色变化的三角形来说存在一个问题。对于这类三角形,对邻近片段的像素着色操作会产生相同或相似的颜色,并且实际上是多余的。因此,可以用明显更少数量的像素着色器操作来实现类似的结果。因此,将光栅化分辨率与着色分辨率分开是有利的,并且下文提供了允许以与像素着色不同的分辨率进行光栅化的技术。这种技术的优点是减少了被执行的像素着色器操作的数量,从而减轻处理负担并且提高性能。
图4示出了根据一个实例的一种用于以与像素着色不同的分辨率执行光栅化的技术。图4示出了一组步骤,提供了不同步骤的示例直观图,并且示出了图形处理管线134的哪些级与哪些步骤相关联。
所述技术开始于步骤402,其中光栅器级314将从图形处理管线134的较前面的级接收的三角形光栅化。这种光栅化以渲染目标的分辨率完成。光栅化涉及确定渲染目标的由三角形覆盖的样本。光栅器级314还在步骤402处执行深度测试。在一个实例中,深度测试涉及检查由三角形覆盖的每个样本的深度值,并且将所述深度值与存储已处理的三角形的深度值的深度缓冲区进行比较。将特定样本的深度值与在与特定样本相同的位置处的存储在深度缓冲区处的深度值进行比较。如果深度缓冲区指示样本被遮挡,则丢弃所述样本,并且如果深度缓冲区指示样本未被遮挡,则存留所述样本。在一些深度测试模式下,存留的样本会带来深度缓冲区中针对所述样本的位置的更新。可以不同模式执行深度测试,诸如对应于以下项的模式:在深度缓冲区中的深度值与所讨论的样本的深度值之间的各种类型的比较(例如,小于比较、大于比较、等于比较或其他类型的比较)以及用于更新深度缓冲区的各种条件(例如,存留的样本可能会触发更新,其他条件可能会触发更新,或者可能会关闭更新)。将指示哪些样本位置被覆盖并且未被遮挡的数据传递到图形处理管线134的其他部分以进行如本说明书其他位置所描述的后续处理。
除了覆盖数据(又被称为精细光栅化数据)之外,光栅化的结果是四边形。更确切地说,针对具有由三角形覆盖的至少一个样本的每个像素,光栅器级314生成片段。光栅器314从这些片段产生四边形。四边形包括2x2像素的相邻部分的片段,即使一个或多个这类片段完全未被三角形覆盖(在这种情况下,这类片段被称为“辅助像素”——所述辅助像素由像素着色器使用来协助生成非辅助像素的颜色,但是所述辅助像素的如由像素着色器所确定的颜色不会被写入到帧缓冲区)。
同样在步骤402处,光栅器级314针对三角形的样本确定一个或多个着色率。着色率定义了在像素着色器级316中被一起着色的像素数量。更确切地说,着色率决定了在渲染目标中有多少像素位置会被赋予由像素着色器级316中的单个工作项确定的颜色。例如,如果着色率是四分之一,则像素着色器级316中的工作项确定渲染目标中四个像素位置的颜色。应注意,上文说成是为像素位置而不是为像素确定颜色的原因是由于基于深度测试,一些像素处于三角形外部或者被遮挡,因此可能会丢弃所述像素的颜色。例如,如果着色率是四分之一并且一个特定工作项因此确定渲染目标的四个像素位置的颜色,并且如果所述像素位置中的三个处于三角形外部或者被遮挡,则所述工作项实际上确定了仅一个像素的颜色。然而,工作项确定了颜色的所有像素位置也都可能在三角形之内并且未被遮挡。在这种情况下,单个工作项确定四个不同像素的颜色。
基于以下一种或多种技术而将着色率应用于渲染目标:基于图块的比率确定技术,其中将渲染目标分为一组着色率图块并且向每个着色率图块分配特定的着色率;基于三角形的比率确定技术,其中向每个图元分配特定的着色率;以及基于状态的比率确定技术,其中在整个管线中传播着色率状态变化,并且在光栅器级314处设置后续像素的着色率,直到光栅器级314处理下一个着色率状态变化为止。可以将这些技术进行组合,其中对不同的技术赋予不同的优先级。在一个实例中,基于状态的比率确定技术定义了三角形的样本的默认着色率。在这个实例中,基于图块的比率确定技术优先于基于状态的值,并且基于三角形的着色率优先于基于状态的值和基于图块的值。可以可选地存在其他优先级,或者可以独立地应用不同的技术。
光栅化图420示出了三角形506,所述三角形506包括被覆盖的像素(覆盖像素502)和未被三角形覆盖的像素(未覆盖像素504)。光栅化图420仅覆盖渲染目标(未示出)的一部分——应理解,也对未示出的渲染目标的其他部分进行了光栅化。所示的部分被分为四个不同的图块508。这些图块508是如下文所详述对像素进行下采样以允许将光栅化分辨率与像素着色分辨率分开来所用机制的一部分。应注意,图块508不同于上文描述的着色率图块。
在步骤404处,光栅器级314将因步骤402中的精细光栅化而生成的四边形累积到如由图块缓冲区图422所示的图块缓冲区510中。图块缓冲区510是存储图块508的四边形的小型存储器。在图4中,图块缓冲区510的大小是四个2×2的相邻的精细像素四边形,但是在其他实例中,图块缓冲区510可以存储不同数量的四边形。示出了精细像素514——这些像素对应于处于渲染目标的分辨率,而不是下采样分辨率的像素。对于已被深度剔除(即,在步骤402中没有像素经受住深度测试)的四边形,图块缓冲区510的对应部分保持为空的。光栅器级314了解相对于屏幕位置生成四边形的顺序,并且因此能够确定何时“缺失”四边形。
在步骤406处,光栅器级基于着色率而生成粗略四边形515(如在粗略四边形图424中所示)。图块缓冲区可以被认为包括多个粗略像素区域512。粗略像素区域512的大小取决于着色率。更确切地说,每个粗略像素区域512包括等于着色率的倒数的数量的像素。例如,如果着色率为1/4,则每个粗略像素区域512包括4个精细像素514。如果着色率为1/2,则每个粗略像素区域512包括2个精细像素514,依此类推。
基于图块缓冲区510的大小和着色率而生成一个或多个粗略四边形515。所生成的粗略四边形515的数量等于图块缓冲区510的以精细像素514计算的大小除以四(四边形含四个像素),并且乘以着色率。因此,与在图4的实例中一样,如果图块缓冲区510是十六个像素16,并且着色率是四分之一,则所生成的粗略四边形515的数量等于16/4*(1/4)=1。对于类似的图块缓冲区510和1/2的着色率,生成2个粗略四边形515,依此类推。
每个粗略四边形515包括四个粗略像素520。分配给任何特定的粗略像素520的覆盖是分配给“归并”为所述粗略像素520的精细像素514的覆盖的合并。在一些情况下,这种合并会导致粗略像素520具有过多的覆盖数据。更确切地说,图形处理管线134可能对可以使用来为像素指定覆盖数据的位数会有限制。在这种情况下,当将来自精细像素514的覆盖数据合并为粗略像素520的覆盖数据时,所述数据的保真度会降低。保留下来的覆盖数据将在几何学上表示单独的精细像素的覆盖。将相对于图6更详细地论述这个想法。如果生成没有覆盖的粗略四边形515,则不会生成这类粗略四边形515。如果图块缓冲区510一直没有接收到有关渲染目标的特定图块508的任何四边形,则光栅器级314确定不存在覆盖所述图块508的三角形或者针对所述图块508生成的任何四边形已被其他几何图形遮挡。在这种情况下,不会针对所述图块508生成粗略四边形515。
在步骤408处,光栅器级314设置在步骤406处生成的粗略四边形515的粗略像素520的位置(如在图426中所示)。所述位置在几何学上表示包括被归并为粗略像素520的精细像素514的粗略像素区域512。在一个实例中,将粗略像素520的位置设置为对应的粗略像素区域512的中心。用于设置粗略像素520的位置的任何其他技术上可行的技术都是可能的。
在步骤410处,像素着色器级316对所生成的粗略四边形515进行着色以生成如像素着色图524所示的着色的粗略像素524。这种着色以标准方式完成——例如,每个粗略像素520作为在SIMD硬件中处理的工作项开始操作。
在步骤412处,如调节图526所示,输出合并器级318将在步骤412处确定的精确覆盖数据应用于着色的粗略像素524。更确切地说,基于着色率而克隆每个着色的粗略像素524以生成着色的精细像素526,其中每个克隆获得着色的粗略像素524的颜色。基于由光栅器级314生成的样本覆盖数据而将覆盖应用于每个着色的精细像素526。如果所述数据中未覆盖某个样本,则在对应的克隆的精细像素中消除所述样本。同样,将光栅器级314所生成的数据中未覆盖的克隆像素设置为不具有像素覆盖。在步骤412中涉及的操作在此可以被称为“调节”。例如,可以说成是通过由光栅化级314生成的覆盖数据来调节着色的粗略像素524以生成着色的精细像素526。
在步骤414处,将通过来自光栅器级314的样本覆盖修改了覆盖的着色的精细像素526写入到渲染目标。也可以应用其他后期像素操作,诸如后期z操作、混合等等。
图5示出了图块缓冲区510,以及根据一些实例的在不同于四分之一的着色率下从图块缓冲区510的内容进行的粗略四边形生成。确切地说,示出了2:1水平配置550(1)、2:1竖直配置550(2)和1:1直通配置550(3)。
2:1水平配置550(1)具有二分之一着色率,其中两个水平相邻的精细像素514被组合为粗略像素520。类似地,2:1竖直配置550(2)具有二分之一着色率,其中两个竖直相邻的精细像素514被组合为粗略像素520。对于所示的两种2:1配置,就像四分之一着色率一样,四个粗略像素520被包括在每个粗略四边形514内。由于图块缓冲区510对应于八个粗略像素520,因此生成了两个四边形。另外,对每个粗略像素520分配累积到粗略像素520中的精细像素514的覆盖,其中如果粗略像素520没有包括足够的位以存储精细像素514的所有覆盖数据,则覆盖保真度会降低。像素位置调整涉及将每个粗略像素520的位置设置为在几何学上表示粗略像素区域512的位置。在一个实例中,这个位置是粗略像素区域512的中心。用于设置粗略像素520的像素位置的其他技术上可行的技术也是可能的。在1:1配置550(3)中,未执行特殊操作。不存在粗略四边形——不经过修改就输出通过光栅化生成的四边形540以供像素着色器级316着色。
图6示出了根据一个实例的图4所示的技术的一些细节,包括与对多样本渲染目标的渲染相关的细节。图6示出了图4的一些步骤,其中为了简洁起见省略了其他步骤。
精细光栅化数据606包括在步骤402处由光栅器级314针对多样本渲染目标生成的光栅化数据。多样本渲染目标是其中每个像素都有多个覆盖样本的渲染目标。在图6中,为了简洁起见,仅示出了单个粗略像素区域512。另外,着色率是四分之一,但是这个着色率仅用作实例。四分之一着色率意味着粗略像素区域512包括四个精细像素514。
精细光栅化数据606示出了在三角形(如由三角形边缘602限定)内部的若干个覆盖样本608和在三角形外部的若干个未覆盖样本604。“保守的下采样”操作对应于图4的步骤406。确切地说,保守的下采样操作说明了从多个精细像素514到单个粗略像素520的归并,以及因可用于每个像素的样本覆盖数据的限制所致的样本覆盖数据的减少。如上所述,这种归并涉及保留在几何学上表示精细像素514的较高保真度样本覆盖的一组样本覆盖。在图6中,每个样本对应于不同的精细像素514。下采样是保守的,因为如果精细像素514具有被覆盖的任何样本,则对应于所述精细像素514的粗略像素520的样本被认为已被覆盖。应注意,每个精细像素514在粗略像素520中并不需要只有一个样本。粗略像素520中的多个样本可以对应于单个精细像素514。在这种情况下,粗略像素520中的每个样本将在几何学上表示精细像素514中的对应样本。
在左下角,在由像素着色器处理之后,粗略像素520被示出为着色的粗略像素524。这个着色的粗略像素524用标记为“像素着色器应用颜色”(简称为“(PS-C)”)的颜色着色。这个着色的粗略像素524对应于图4中的步骤410的输出。在此操作之后,基于着色率而对着色的粗略像素524进行上采样。更确切地说,根据等于着色率的倒数的精细像素的数量(例如,在图6中为4)来克隆着色的粗略像素524。向每个精细像素分配着色的粗略像素524的颜色。每个这种精细像素中的样本数量等于在生成粗略四边形之前的精细像素514的样本数量。以二进制方式设置每个克隆的精细像素的所有样本——如果着色的粗略像素524中的对应样本被覆盖,则对应的精细像素中的所有样本也都被覆盖,并且如果着色的粗略像素524中的对应样本未被覆盖,则对应的精细像素中的所有样本也都未被覆盖。最后,将这些精细样本与精细光栅化数据606合并。合并包括将“AND”应用于具有未最终确定的覆盖的着色的精细像素525的样本和精细光栅化数据606的对应样本。如果具有未最终确定的覆盖的着色的精细像素525中的对应样本和精细光栅化数据606中的对应样本都已被覆盖,则着色的精细像素中的样本也被认为已被覆盖。如果任一者或两者都未被覆盖,则着色的精细像素526中的样本也未被覆盖。
图7示出了图6的替代实例,其中着色的粗略像素524中的一些样本覆盖被像素着色器消除。像素着色器级316有可能修改或设置正被着色的四边形的覆盖。如果像素着色器级316消除了粗略四边形的样本(例如,将所述样本设置为未被覆盖),则即使精细光栅化数据606的对应样本被认为已被覆盖,从步骤412输出的着色的精细像素526的对应样本也不会被覆盖。图7的实例使用图6所示的相同的精细光栅化数据606。因此,在图7中,即使所述精细光栅化数据606指示左边两个精细像素514中的一些样本被覆盖,但是由于像素着色器级316已消除着色的粗略像素524的对应样本,因此左边两个精细像素516的样本不会被认为已被覆盖。
应理解,基于本文的公开内容,许多变化是可能的。尽管上面以特定组合描述了特征和元件,但是每个特征或元件可以在没有其他特征和元件的情况下单独使用,或者在具有或不具有其他特征和元件的各种组合中使用。
所提供的方法可以在通用计算机、处理器或处理器核心中实现。作为举例,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(这类指令能够存储在计算机可读介质上)的结果来配置制造过程来制造这种处理器。这种处理的结果可以是掩模件,所述掩模件随后在半导体制造工艺中用于制造实现本公开的特征的处理器。
本文提供的方法或流程图可以在计算机程序、软件或固件中实现,所述计算机程序、软件或固件并入在非暂时性计算机可读存储介质中,以供通用计算机或处理器来执行。非暂时性计算机可读存储介质的实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器装置、诸如内部硬盘和可移除磁盘的磁介质、磁光介质以及诸如CD-ROM盘和数字多功能磁盘(DVD)的光学介质。
Claims (18)
1.一种以分开的光栅化分辨率和像素着色分辨率处理三维图形以将图像渲染到渲染目标的方法,所述方法包括:
通过光栅器将三角形光栅化以产生精细光栅化数据和一组一个或多个四边形;
将所述一组一个或多个由所述光栅器输出的四边形中的至少一个四边形累积到具有图块缓冲区大小的图块缓冲区中;
对所述图块缓冲区中的四边形进行下采样以生成粗略四边形,所述下采样是基于为所述一组一个或多个四边形中的至少一个四边形所限定的着色率,其中所述着色率表示从适合所述图块缓冲区大小的第二数量的四边形中生成的第一数量的四边形;
对所述粗略四边形进行着色以生成着色的粗略四边形;以及
用所述精细光栅化数据调节所述着色的粗略四边形。
2.如权利要求1所述的方法,其中所述图块缓冲区包括存储器,所述存储器具有足够的容量以存储所述一组一个或多个四边形中的两个或更多个四边形的数据。
3.如权利要求1所述的方法,所述方法还包括:
对所述精细光栅化数据执行深度测试以从所述一个或多个四边形中去除被遮挡的像素。
4.如权利要求1所述的方法,其中将所述一组一个或多个四边形中的至少一个四边形累积到所述图块缓冲区中包括:
用所述一组一个或多个四边形的对应于渲染目标的图块的四边形填充所述图块缓冲区,其中所述图块缓冲区的对应未被三角形覆盖或深度剔除的四边形的部分不填充任何四边形。
5.如权利要求1所述的方法,所述方法还包括:
确定所述着色率。
6.如权利要求5所述的方法,其中对所述图块缓冲区中的所述四边形进行下采样包括:
基于所述着色率而生成一组一个或多个粗略四边形,所述一组一个或多个粗略四边形各自包括从所述图块缓冲区中的所述四边形的像素生成的粗略像素。
7.如权利要求6所述的方法,其中每个粗略像素对应于所述渲染目标的对应于所述一组一个或多个四边形的像素数量的区域,所述数量是基于所述着色率。
8.如权利要求6所述的方法,其中:
所述渲染目标是多重采样的渲染目标;并且
每个粗略像素包括与所述一组一个或多个四边形的对应像素相关联的多样本覆盖。
9.一种用于以分开的光栅化分辨率和像素着色分辨率处理三维图形以将图像渲染到渲染目标的加速处理装置,所述加速处理装置包括:
光栅器级,所述光栅器级被配置成:
将三角形光栅化以产生精细光栅化数据和一组一个或多个四边形,
将所述一组一个或多个由所述光栅器输出的四边形中的至少一个四边形累积到具有图块缓冲区大小的图块缓冲区中,以及
对所述图块缓冲区中的四边形进行下采样以生成粗略四边形,所述下采样是基于为所述一组一个或多个四边形中的至少一个四边形所限定的着色率,其中所述着色率表示从适合所述图块缓冲区大小的第二数量的四边形中生成的第一数量的四边形;
像素着色器级,所述像素着色器级被配置成对所述粗略四边形进行着色以生成着色的粗略四边形;以及
输出合并器级,所述输出合并器级被配置成用所述精细光栅化数据调节所述着色的粗略四边形。
10.如权利要求9所述的加速处理装置,其中所述图块缓冲区包括存储器,所述存储器具有足够的容量以存储所述一组一个或多个四边形中的两个或更多个四边形的数据。
11.如权利要求9所述的加速处理装置,其中所述光栅器级被进一步配置成:
对所述精细光栅化数据执行深度测试以从所述一个或多个四边形中去除被遮挡的像素。
12.如权利要求9所述的加速处理装置,其中所述光栅器级被配置成通过以下方式将所述一组一个或多个四边形中的所述至少一个四边形累积到所述图块缓冲区中:
用所述一组一个或多个四边形的对应于渲染目标的图块的四边形填充所述图块缓冲区,其中所述图块缓冲区的对应未被三角形覆盖或深度剔除的四边形的部分不填充任何四边形。
13.如权利要求9所述的加速处理装置,其中所述光栅器级被进一步配置成确定所述着色率。
14.如权利要求13所述的加速处理装置,其中所述光栅器被配置成通过以下方式对所述图块缓冲区中的所述四边形进行下采样:
基于所述着色率而生成一组一个或多个粗略四边形,所述一组一个或多个粗略四边形各自包括从所述图块缓冲区中的所述四边形的像素生成的粗略像素。
15.如权利要求14所述的加速处理装置,其中每个粗略像素对应于所述渲染目标的对应于所述一组一个或多个四边形的像素数量的区域,所述数量是基于所述着色率。
16.如权利要求13所述的加速处理装置,其中:
所述渲染目标是多重采样的渲染目标;并且
每个粗略像素包括与所述一组一个或多个四边形的对应像素相关联的多样本覆盖。
17.一种处理装置,所述装置包括:
处理器;以及
加速处理装置,所述加速处理装置用于以分开的光栅化分辨率和像素着色分辨率处理从所述处理器接收的命令以将图像渲染到渲染目标,所述加速处理装置包括:
光栅器级,所述光栅器级被配置成:
将三角形光栅化以产生精细光栅化数据和一组一个或多个四边形,
将所述一组一个或多个四边形中的至少一个四边形累积到具有图块缓冲区大小的图块缓冲区中,以及
对所述图块缓冲区中的四边形进行下采样以生成粗略四边形,所述下采样是基于为所述一组一个或多个四边形中的至少一个四边形所限定的着色率,其中所述着色率表示从适合所述图块缓冲区大小的第二数量的四边形中生成的第一数量的四边形;
像素着色器级,所述像素着色器级被配置成对所述粗略四边形进行着色以生成着色的粗略四边形;以及
输出合并器级,所述输出合并器级被配置成用所述精细光栅化数据调节所述着色的粗略四边形。
18.如权利要求17所述的处理装置,其中所述图块缓冲区包括存储器,所述存储器具有足够的容量以存储所述一组一个或多个四边形中的两个或更多个四边形的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/687,421 | 2017-08-25 | ||
US15/687,421 US10510185B2 (en) | 2017-08-25 | 2017-08-25 | Variable rate shading |
PCT/US2018/047401 WO2019040541A1 (en) | 2017-08-25 | 2018-08-21 | VARIABLE RATE SURFACE |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111066066A CN111066066A (zh) | 2020-04-24 |
CN111066066B true CN111066066B (zh) | 2022-07-05 |
Family
ID=65436111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880055109.1A Active CN111066066B (zh) | 2017-08-25 | 2018-08-21 | 可变比率着色 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10510185B2 (zh) |
EP (1) | EP3673465A4 (zh) |
JP (1) | JP7266021B2 (zh) |
KR (1) | KR102192065B1 (zh) |
CN (1) | CN111066066B (zh) |
WO (1) | WO2019040541A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10460513B2 (en) | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
US10657699B1 (en) * | 2018-12-08 | 2020-05-19 | Arm Limited | Performing texturing operations for sets of plural execution threads in graphics processing systems |
US11276211B2 (en) * | 2018-12-20 | 2022-03-15 | Advanced Micro Devices, Inc. | Integration of variable rate shading and super-sample shading |
US11170533B1 (en) * | 2020-07-27 | 2021-11-09 | Weta Digital Limited | Method for compressing image data having depth information |
US11989918B2 (en) | 2020-09-25 | 2024-05-21 | Advanced Micro Devices, Inc. | Swizzle mode detection |
US20220414816A1 (en) * | 2021-06-24 | 2022-12-29 | Intel Corporation | Dynamic dependency scoreboard for overlapping pixels of primitives |
US12067649B2 (en) | 2021-06-29 | 2024-08-20 | Advanced Micro Devices, Inc. | Per-pixel variable rate shading controls using stencil data |
US11763521B2 (en) | 2021-08-13 | 2023-09-19 | Samsung Electronics Co., Ltd. | Method and apparatus for the automation of variable rate shading in a GPU driver context |
US11935175B2 (en) * | 2022-04-07 | 2024-03-19 | Huawei Technologies Co., Ltd. | Apparatus, method, and computer-readable medium for image processing using variable-precision shading |
CN116957900A (zh) * | 2022-04-20 | 2023-10-27 | 象帝先计算技术(重庆)有限公司 | 图形处理器、系统、电子装置、设备及图形处理方法 |
GB2624205A (en) * | 2022-11-10 | 2024-05-15 | Imagination Tech Ltd | Graphics processing system and method of rendering |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8044956B1 (en) * | 2007-08-03 | 2011-10-25 | Nvidia Corporation | Coverage adaptive multisampling |
CN105283900A (zh) * | 2013-06-10 | 2016-01-27 | 索尼电脑娱乐公司 | 用于压缩顶点着色器输出参数的方案 |
CN105556565A (zh) * | 2013-06-10 | 2016-05-04 | 索尼电脑娱乐公司 | 片段着色器执行顶点着色器计算 |
US9569886B2 (en) * | 2013-12-19 | 2017-02-14 | Intel Corporation | Variable shading |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8040357B1 (en) * | 2007-08-15 | 2011-10-18 | Nvidia Corporation | Quotient remainder coverage system and method |
US20090102843A1 (en) * | 2007-10-17 | 2009-04-23 | Microsoft Corporation | Image-based proxy accumulation for realtime soft global illumination |
US9569883B2 (en) | 2013-12-12 | 2017-02-14 | Intel Corporation | Decoupled shading pipeline |
US9552667B2 (en) * | 2013-12-13 | 2017-01-24 | Nvidia Corporation | Adaptive shading in a graphics processing pipeline |
US9905046B2 (en) * | 2014-04-03 | 2018-02-27 | Intel Corporation | Mapping multi-rate shading to monolithic programs |
US10242493B2 (en) * | 2014-06-30 | 2019-03-26 | Intel Corporation | Method and apparatus for filtered coarse pixel shading |
US9934606B2 (en) * | 2014-09-16 | 2018-04-03 | Intel Corporation | Deferred coarse pixel shading |
GR20140100528A (el) * | 2014-10-20 | 2016-06-01 | Arm Limited | Ενας βασισμενος σε πλακιδια επεξεργαστης γραφικων και μια μεθοδος επεξεργασιας γραφικων σε ενα βασισμενο σε πλακιδια επεξεργαστη |
US10985078B2 (en) | 2015-11-06 | 2021-04-20 | Lam Research Corporation | Sensor and adjuster for a consumable |
US10262455B2 (en) | 2015-12-04 | 2019-04-16 | Intel Corporation | Merging fragments for coarse pixel shading using a weighted average of the attributes of triangles |
US10192280B2 (en) * | 2016-04-08 | 2019-01-29 | Qualcomm Incorporated | Per-vertex variable rate shading |
US10147227B2 (en) * | 2017-02-17 | 2018-12-04 | Microsoft Technology Licensing, Llc | Variable rate shading |
-
2017
- 2017-08-25 US US15/687,421 patent/US10510185B2/en active Active
-
2018
- 2018-08-21 EP EP18848113.9A patent/EP3673465A4/en active Pending
- 2018-08-21 KR KR1020207008091A patent/KR102192065B1/ko active IP Right Grant
- 2018-08-21 JP JP2020511305A patent/JP7266021B2/ja active Active
- 2018-08-21 CN CN201880055109.1A patent/CN111066066B/zh active Active
- 2018-08-21 WO PCT/US2018/047401 patent/WO2019040541A1/en unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8044956B1 (en) * | 2007-08-03 | 2011-10-25 | Nvidia Corporation | Coverage adaptive multisampling |
CN105283900A (zh) * | 2013-06-10 | 2016-01-27 | 索尼电脑娱乐公司 | 用于压缩顶点着色器输出参数的方案 |
CN105556565A (zh) * | 2013-06-10 | 2016-05-04 | 索尼电脑娱乐公司 | 片段着色器执行顶点着色器计算 |
US9569886B2 (en) * | 2013-12-19 | 2017-02-14 | Intel Corporation | Variable shading |
Also Published As
Publication number | Publication date |
---|---|
EP3673465A1 (en) | 2020-07-01 |
US20190066371A1 (en) | 2019-02-28 |
KR102192065B1 (ko) | 2020-12-16 |
JP2020532789A (ja) | 2020-11-12 |
KR20200035467A (ko) | 2020-04-03 |
EP3673465A4 (en) | 2021-05-19 |
JP7266021B2 (ja) | 2023-04-27 |
WO2019040541A1 (en) | 2019-02-28 |
US10510185B2 (en) | 2019-12-17 |
CN111066066A (zh) | 2020-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111066066B (zh) | 可变比率着色 | |
US11158106B2 (en) | VRS rate feedback | |
US11276211B2 (en) | Integration of variable rate shading and super-sample shading | |
EP3333805B1 (en) | Removing or identifying overlapping fragments after z-culling | |
US20240257435A1 (en) | Hybrid binning | |
US12067649B2 (en) | Per-pixel variable rate shading controls using stencil data | |
US11030791B2 (en) | Centroid selection for variable rate shading | |
US20220414939A1 (en) | Render target compression scheme compatible with variable rate shading | |
US20220319091A1 (en) | Post-depth visibility collection with two level binning | |
US20210398349A1 (en) | Fine grained replay control in binning hardware | |
CN115769264A (zh) | 用于多采样抗锯齿的加载指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |