CN117083637A - 具有两级分箱的深度后可见性收集 - Google Patents
具有两级分箱的深度后可见性收集 Download PDFInfo
- Publication number
- CN117083637A CN117083637A CN202280023626.7A CN202280023626A CN117083637A CN 117083637 A CN117083637 A CN 117083637A CN 202280023626 A CN202280023626 A CN 202280023626A CN 117083637 A CN117083637 A CN 117083637A
- Authority
- CN
- China
- Prior art keywords
- primitive
- tile
- image
- depth test
- processor
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000012360 testing method Methods 0.000 claims abstract description 40
- 238000009877 rendering Methods 0.000 claims abstract description 38
- 238000012545 processing Methods 0.000 claims description 67
- 230000006870 function Effects 0.000 claims description 20
- 238000010586 diagram Methods 0.000 description 9
- 230000009466 transformation Effects 0.000 description 9
- 238000000844 transformation Methods 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 3
- 101150066742 TRI1 gene Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- 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
- 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
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
一种用于在计算机系统中显示的图像的图块渲染的方法和装置包括在计算机系统的图形流水线中接收图像,该图像包括一个或多个三维(3D)对象。该图像被划分成一个或多个图块。对该一个或多个图块执行深度测试,并且基于该深度测试,对该一个或多个图块的可见性信息进行分箱。
Description
相关申请的交叉引用
本申请要求于2021年3月31日提交的美国临时申请63/168,875号和于2021年12月27日提交的美国非临时申请17/562,872号的权益,这些申请的内容以引用方式并入本文,如同完整阐述一样。
背景技术
图形处理包括将三维(3D)场景渲染到二维(2D)屏幕上。经由包括不同处理阶段的图形流水线在显示屏上渲染3D场景。接收命令流的图形处理命令(例如,从应用程序),并且提供计算任务(例如,向加速处理设备,诸如GPU),以用于执行任务。
使用图元(例如,三角形、四边形或其它几何形状)在显示屏幕上渲染图形。图形处理命令包括例如图元的数目、每个图元的位置以及待在显示屏上渲染的每个图元的属性。
附图说明
可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
图1是可实现本公开的一个或多个特征的示例设备的框图;
图2是图1的设备的框图,示出了附加的细节;
图3是示出根据一个示例的图形处理流水线的框图;
图4是示出根据本公开的特征的渲染图像以供显示的示例性方法的流程图;
图5是示出根据本公开的特征的渲染图像以供显示的示例的示意图;
图6是示出根据本公开的特征的渲染图像的第一图块以供显示的示例性方法的流程图;
图7是示出根据本公开的特征的渲染图像的下一个图块以供显示的示例性方法的流程图;并且
图8是示出根据具有两级分箱的深度后可见性收集的特征的渲染图像的图块以供显示的示例性方法的流程图。
具体实施方式
图形流水线可经简化以包括前端几何部分和后端部分。例如,流水线的前端几何形状部分包括若干着色器阶段(例如,顶点着色器阶段、外壳着色器阶段、曲面细分器阶段、域着色器阶段和几何着色器阶段)。在着色器阶段期间,图元作为3D对象被接收并且被变换为2D对象,以被渲染到2D屏幕上。后端部分包括光栅器阶段和像素着色器阶段。在光栅器阶段期间,确定要被投影到2D屏幕上的每个图元的屏幕上位置。例如,在光栅化期间,加速处理设备(例如,GPU)针对每个图元确定哪些像素(或子像素样本)对应于要渲染到2D屏幕上的每个图元。在像素着色器阶段期间,针对对应于图元的像素计算值(例如,亮度和色彩)。
通过重新使用本地存储的先前处理的数据(例如,存储于GPU的高速缓存中的数据)而非使用远程存储器(例如,主存储器)处理数据,来更有效地(例如,由GPU)处理数据。与一次渲染整个帧相比,平铺(或分箱)是一种减少用于渲染帧的本地存储器(例如,高速缓存)和带宽量的技术。平铺将帧分割为若干部分(例如,图块或箱)并且在渲染帧的另一图块之前渲染帧的一个图块。例如,如果将帧(或图像)分割为四个相等图块(即,左上象限、右上象限、左下象限和右下象限),则在继续渲染下一图块中的一个图块之前渲染第一图块(例如,左上象限)。然后,在继续渲染最后两个图块中的一个图块之前渲染其他图块中的一个图块(例如,右上象限),诸如此类,直到渲染帧的每个图块为止。
常规平铺技术包括粗略层级平铺(即,每帧较大图块及较小数目的图块或箱)和精细层级平铺(即,每帧较小图块及较大数目的图块或箱)。因为每帧存在较小数目的图块,所以粗略层级平铺导致比精细层级平铺更少的平铺(分箱)开销,但包括比精细层级平铺总体更低的高速缓存命中率。精细层级平铺包括比粗略层级平铺更高的高速缓存命中率,具有更少平铺,但导致比精细层级平铺更高的平铺开销。
另外,在常规平铺技术中,在设置图元之后发生分箱。在平铺和分箱之后,图元可被传递到各种其它过程(例如,深度测试)。因此,一些图元被标记为可见和不可见。因此,不可见的图元最终在平铺/分箱过程期间被处理。
本申请公开了以独特且高效的方式使用粗略层级平铺和精细层级平铺两者来提供高效的图块渲染的实施方案。本申请中公开的实施方案在进行到下一个粗略图块以执行粗略层级平铺和精细层级平铺之前,执行粗略图块的粗略层级平铺和该粗略图块的精细图块的精细层级平铺。所公开的一些实施方案使用相同的固定功能硬件来执行粗略层级平铺和精细层级平铺,从而在没有附加硬件成本的情况下提供从粗略层级平铺和精细层级给予的优点。此外,实施方案公开了在已执行深度测试之后执行可见性收集(即,执行平铺或分箱过程的方面)在许多情况下可减少用于分箱/平铺操作的图元的数目。
一种用于在计算机系统中显示的图像的图块渲染的方法包括在计算机系统的图形流水线中接收图像,该图像包括一个或多个三维(3D)对象。该图像被划分成一个或多个图块。对该一个或多个图块执行深度测试,并且基于该深度测试,对该一个或多个图块的可见性信息进行分箱。
一种用于在计算机系统中显示的图像的图块渲染的处理装置包括存储器和以通信方式耦合到存储器的处理器。该处理器被配置为:在图形流水线中接收图像,该图像包括一个或多个三维(3D)对象;将该图像划分成一个或多个图块;对该一个或多个图块执行深度测试;以及基于该深度测试,对该一个或多个图块的可见性信息进行分箱。
一种用于在计算机系统中显示的图像的图块渲染的非暂态计算机可读介质,该非暂态计算机可读介质具有记录在其上的指令,该指令在由处理器执行时使该处理器执行操作。这些操作包括在该计算机系统的图形流水线中接收该图像,该图像包括一个或多个三维(3D)对象。该图像被划分成一个或多个图块。对该一个或多个图块执行深度测试,并且基于该深度测试,对该一个或多个图块的可见性信息进行分箱。
一种用于在计算机系统中显示的图像的图块渲染的非暂态计算机可读介质,该非暂态计算机可读介质具有记录于其上的指令,该指令适于创建处理器。该处理器适于执行功能,这些功能包括:在该计算机系统的图形流水线中接收该图像,该图像包括一个或多个三维(3D)对象;以及基于深度测试,将该图像的图元分箱为一个或多个图块。
图1是可实现本公开的一个或多个特征的示例设备100的框图。设备100可包括例如计算机、游戏设备、手持设备、机顶盒、电视、移动电话或平板计算机。设备100包括处理器102、存储器104、存储装置106、一个或多个输入设备108以及一个或多个输出设备110。设备100还可任选地包括输入驱动器112和输出驱动器114。应当理解,设备100可包括图1中未示出的附加部件。
在各种另选方案中,处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU、或一个或多个处理器核心,其中每个处理器核心可为CPU或GPU。在各种另选方案中,存储器104位于与处理器102相同的管芯上,或与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储装置106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108包括但不限于键盘、小键盘、触摸屏、触控板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出设备110包括但不限于显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入设备108通信,并允许处理器102从输入设备108接收输入。输出驱动器114与处理器102和输出设备110通信,并允许处理器102向输出设备110发送输出。应注意,输入驱动器112和输出驱动器114是任选的部件,并且如果输入驱动器112和输出驱动器114不存在,则设备100将以相同方式操作。输出驱动器116包括联接到显示设备118的加速处理设备(″APD″)116。APD从处理器102接受计算命令和图形渲染命令,处理这些计算命令和图形渲染命令,并将像素输出提供给显示设备118进行显示。如下文所详述,APD 116包括根据单指令多数据(″SIMD″)范式来执行计算的一个或多个并行处理单元。因此,尽管这里将各种功能描述为由APD 116执行或与其结合执行,但在各种另选方案中,被描述为由APD 116执行的功能另外地或另选地由具有类似能力的其他计算设备执行,该其他计算设备不由主机处理器(例如,处理器102)驱动并且向显示设备118提供图形输出。例如,可以设想根据SIMD范式执行处理任务的任何处理系统都可执行本文所述的功能。另选地,设想不根据SIMD范式执行处理任务的计算系统执行本文所述的功能。
图2是设备100的框图,示出了涉及在APD 116上执行处理任务的附加细节。处理器102在系统存储器104中保持一个或多个控制逻辑模块以供处理器102执行。控制逻辑模块包括操作系统120、内核模式驱动器122和应用程序126。这些控制逻辑模块控制处理器102和APD 116的操作的各种特征。例如,操作系统120直接与硬件通信并为在处理器102上执行的其他软件提供到硬件的接口。内核模式驱动器122通过例如向在处理器102上执行的软件(例如,应用程序126)提供应用编程接口(″API″)来控制APD 116的操作,以访问APD 116的各种功能。内核模式驱动器122还包括即时编译器,该即时编译器编译程序以供APD 116的处理部件(诸如下文所详述的SIMD单元138)执行。
APD 116执行用于所选功能的命令和程序,诸如可适于并行处理的图形操作和非图形操作。APD 116可用于执行图形流水线操作,诸如像素操作、几何计算,并且用于基于从处理器102接收的命令将图像渲染给显示设备118。APD 116还基于从处理器102接收的命令来执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。
APD 116包括计算单元132,该计算单元包括根据SIMD范式以并行方式在处理器102的请求下执行操作的一个或多个SIMD单元138。SIMD范式是这样一种范式,其中多个处理元件共用单个程序控制流单元和程序计数器并由此执行相同的程序,但能够执行具有不同数据的该程序。在一个示例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其他通道同时执行相同的指令,但可执行具有不同数据的该指令。如果不是所有通道都需要执行给定指令,则可通过预测来关闭通道。还可使用预测来执行具有发散控制流的程序。更具体地,对于具有条件分支或其中控制流基于由单个通道执行的计算的其他指令的程序,预测对应于当前未被执行的控制流路径的通道,并且不同控制流路径的串行执行可实现任意控制流。
计算单元132中的基本执行单元是工作项。每个工作项表示要在特定通道中并行执行的程序的单个实例化。可在单个SIMD处理单元138上作为″波前″同时执行工作项。一个或多个波前包括在一个″工作组″中,该″工作组″包括被指定执行相同程序的工作项的集合。可通过执行构成工作组的波前中的每一者来执行工作组。在另选方案中,波前在单个SIMD单元138上顺序地执行,或在不同SIMD单元138上部分地或完全地并行执行。波前可被视为可在单个SIMD单元138上同时执行的工作项的最大集合。因此,如果从处理器102接收的命令指示特定程序要被并行化到该程序不能在单个SIMD单元138上同时执行的程度,则该程序被划分成在两个或多个SIMD单元138上并行化或在同一SIMD单元138上串行化(或根据需要并行化和串行化)的波前。调度器136执行涉及调度不同计算单元132和SIMD单元138上的各种波前的操作。
由计算单元132提供的并行性适合图形相关操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,接受来自处理器102的图形处理命令的图形流水线134将计算任务提供给计算单元132以供并行执行。
计算单元132还用于执行不涉及图形或不作为图形流水线134的″正常″操作(例如,所执行的用以补充针对图形流水线134的操作执行的处理的自定义操作)的一部分而执行的计算任务。在处理器102上执行的应用程序126或其他软件将定义此类计算任务的程序发送到APD 116以供执行。
APD 116被配置为通过执行下面更详细描述的多个功能来实现本公开的特征。例如,APD 116被配置为:接收包括一个或多个三维(3D)对象的图像;将图像划分成多个图块;执行图像的图元的可见性通道;将图像划分成图块;执行图像的图块的粗略层级平铺;将图块划分成精细图块;以及执行图像的精细层级平铺。可选地,被确定为位于图块中的第一图块中的图元的前端几何处理可以与可见性通道同时执行。
图3是示出了图2所示的图形处理流水线134的附加细节的框图。图形处理流水线134包括各自执行特定功能的阶段。这些阶段表示图形处理流水线134的功能的细分。每个阶段可以部分或全部实现为在可编程处理单元202中执行的着色器程序,或者部分或全部实现为处于可编程处理单元202外部且功能固定的不可编程硬件。然而,可以利用其它实现方式。
阶段302到313表示图形处理流水线134的前端几何处理部分。阶段314到318表示图形处理流水线134的后端像素处理部分。
输入汇编器阶段302从用户填写型缓存(例如,在处理器102所执行的软件(诸如应用程序126)的请求下所填写的缓存)中读取图元数据,并且将该数据汇编成图元以供流水线的其余部分使用。基于包括在用户填写型缓存中的图元数据,输入汇编器阶段302可以生成不同类型的图元。输入汇编器阶段302格式化所汇编的图元以供流水线的其余部分使用。
顶点着色器阶段304处理由输入汇编器阶段302汇编的图元的顶点。顶点着色器阶段304执行各种逐顶点操作,诸如变换、去皮、变形和逐顶点光照。变换操作包括变换顶点坐标的各种操作。这些操作包括建模变换、视图变换、投影变换、透视分割和视口变换中的一项或多项。在本文中,此类变换被视为修改对其执行变换的顶点的坐标或″位置″。顶点着色器阶段304的其他操作修改了除坐标以外的其他属性。
顶点着色器阶段304部分或完全实现为将在一个或多个计算单元132上执行的顶点着色器程序。顶点着色器程序由处理器102提供并且基于计算机程序员所预写的程序。驱动器122编译此类计算机程序以生成顶点着色器程序,该顶点着色器程序具有适合于在计算单元132内执行的格式。
外壳着色器阶段306、曲面细分器阶段308和域着色器阶段310一起工作以实现曲面细分,其通过细分图元而将简单图元转换成更复杂图元。基于输入图元,外壳着色器阶段306生成修补程式以供曲面细分。曲面细分器阶段308为修补程式生成一组样本。域着色器阶段310计算与修补程式的样本对应的顶点的顶点位置。外壳着色器阶段306和域着色器阶段310可实现为将在可编程处理单元202上执行的着色器程序。
几何着色器阶段312逐个图元执行顶点操作。可以由几何着色器阶段312执行各种不同类型的操作,包括诸如以下操作:点sprint扩展、动态粒子系统操作、毛皮-鳍生成、阴影体积生成、单通道渲染到立方图、逐图元材料交换和逐图元材料设置。在一些实例中,在可编程处理单元202上执行的着色器程序执行了几何着色器阶段312的操作。
分箱器(平铺器)阶段313是前端处理的最后阶段。分箱器阶段执行粗略光栅化,以确定帧(或图像)的图块(或箱)是否与图元重叠。例如,分箱器阶段包括可见性检查(即,可见性通道)和针对被确定为处于每个图块中的图元的图块行走。在该实施方案中,通过固定功能硬件来执行分箱器阶段313。
如上所述,阶段314到318表示图形处理流水线134的后端处理。光栅器阶段314接受上游生成的简单图元并将其光栅化。光栅化包括确定哪些屏幕像素(或子像素样本)被特定图元覆盖。例如,光栅器阶段314将图元(例如,三角形)转换为屏幕空间像素,从而测试哪个像素被图元覆盖。在该实施方案中,光栅化由固定功能硬件来执行。
基于上游生成的图元和光栅化的结果,像素着色器阶段316计算屏幕像素的输出值。像素着色器阶段316可应用来自纹理存储器中的纹理。像素着色器阶段316的操作由在可编程处理单元202上执行的着色器程序来执行。
输出合并器阶段318接受来自像素着色器阶段316的输出并且合并这些输出,从而执行诸如z测试和α混合等操作,以确定屏幕像素的最终颜色。
定义了纹理的纹理数据由纹理单元320进行存储和/或访问。纹理是在图形处理流水线134中的各个点处所用的位图图像。例如,在一些实例中,像素着色器阶段316将纹理应用于像素,以提高表观渲染复杂性(例如,以提供更″逼真″的外观)而不增加待渲染的顶点的数目。
在一些实例中,顶点着色器阶段304使用来自纹理单元320的纹理数据来修改图元,以通过(例如)创建或修改顶点来增加复杂性从而提高美观性。在一个实例中,顶点着色器阶段304使用存储在纹理单元320中的高度图来修改顶点的位移。此类型的技术可用于:例如,通过修改用于渲染水的顶点的位置和数目,生成与仅将纹理用于像素着色器阶段316相比,看起来更逼真的水。在一些实例中,几何着色器阶段312访问纹理单元320中的纹理数据。
图4是示出根据本公开的特征的渲染图像以供显示的示例性方法的流程图。用于示出图4中的方法的图5是示出根据本公开的特征的渲染图像500以供显示的示例的示意图。
如框402所示,方法400包括接收包括一个或多个3D对象的图像。例如,图像由APD116接收。图像可以包括要被变换以在2D显示屏上渲染的任何数目的对象。
如框404所示,方法400包括将图像划分成多个图块。为了简化说明,图5中示出的示例包括被分割成四个相等的图块(即,左上象限、右上象限、左下象限和右下象限)的图像(或帧)500。然而,图像(或帧)可被分割成任何数目的图块(例如,32个图块),以用于粗略层级平铺。图块的数目与屏幕分辨率无关。
如框406所示,方法400包括执行图像的第一图块(箱)的粗略层级平铺(分箱)。在实施方案400中,经由固定功能硬件执行粗略层级平铺。即,使用每个图块的可见性信息(即,来自针对帧执行的可见性通道)经由固定功能硬件针对第一图块(图块0)执行渲染指令(例如,来自存储在命令缓冲器中的应用程序或程序的指令)。在图块0的渲染期间生成粗略层级平铺可见性信息。在像素粒度上处理图块,在光栅化期间确定(例如,通过加速处理器,诸如GPU)对应于图元的像素是否位于图块中。例如,针对图块0生成的粗略层级图块可见性信息指示三角形(Tri 1)位于图块0中。
如框408所示,在对下一图块(即,图5中的图块1)执行粗略层级平铺之前,对图块0执行精细层级平铺。即,如图5中所示,将图块0划分成多个精细(较小)图块。可使用任何数目的精细图块来实现本申请的特征。在实施方案400中经由用于执行粗略层级平铺(如下文关于图6更详细描述)的相同固定功能硬件执行精细层级平铺(例如,图元批平铺),该固定功能硬件利用本地存储器(例如,片上高速缓存)来累积一批图元(例如,三角形)并且一次一个精细图块地渲染图元。
如框410所示,确定图像(帧)是否包括下一图块。当确定图像包括下一个图块时,方法400返回到框406,以对下一个图块执行粗略层级平铺,然后对下一个图块执行精细层级平铺。例如,使用图5中所示的示例,当确定图像500包括下一个图块(图块1)时,在框406处对图块1执行粗略层级平铺,然后对图块1执行精细层级平铺。然后,该方法继续对图像中的每个剩余图块执行粗略层级平铺和精细层级平铺。例如,使用图5中所示的示例,方法400继续针对图块2执行粗略层级平铺和精细层级平铺,接着针对图块3执行粗略层级平铺和精细层级平铺。
当在框410处确定图像不包括下一图块时,方法进行到框412,以处理下一图像(帧)。例如,使用图5中所示的示例,当在框410处确定图像500不包括下一图块时(即,在针对图块3执行粗略层级平铺和精细层级平铺之后),方法400进行到框412,以渲染下一图像(帧)。
图6是示出根据本公开的特征的渲染图像的第一图块以供显示的示例流程的示例设备的部件的框图。图6举例说明执行图5中所示的图像500的第一图块(图块0)的粗略层级平铺和精细层级平铺。
如图6中所示,由处理器604(例如,GPU)经由命令流602接收指令,以执行图像的图块的渲染。指令例如被存储在命令缓冲器(未示出)中。处理器604向几何引擎(GE)606提供待渲染的图元(例如,三角形)的属性。
GE 606例如从索引缓冲器608接收索引信息,并将由处理器604提供的属性信息传送到着色器(非固定功能硬件)以供处理。例如,本地存储三角形的顶点(例如,在顶点缓冲器中)。对于每个三角形,索引信息指示来自存储在顶点缓冲器中的顶点的3个点中的哪一个是三角形的顶点。即,索引信息描述了顶点的连接性。例如,不共享边的2个三角形由6个顶点组成,而共享边的2个三角形由4个顶点组成。对于由6个顶点组成的2个三角形,2个三角形的索引可以是(0,1,2)(3,4,5),并且对于由4个顶点组成的2个三角形,2个三角形的索引可以是(0,1,2)(1,2,3)。可以在硬件(例如,固定功能硬件)、软件或硬件与软件的组合中实现GE。
着色器610接收作为3D对象的图元并将图元变换为2D对象,以渲染到2D屏幕上。例如,着色器610确定帧中的三角形的顶点的位置。将位置信息提供给图元汇编器612。附加信息(例如,颜色和纹理信息)也被提供给本地存储器的图元高速缓存部分616。
图元汇编器612使用由着色器610确定的位置信息来组合顶点,并且从每个三角形的顶点的位置确定每个三角形在帧中的位置。然后,将位置信息提供给图元平铺器和光栅器614(也称为图元分箱器和光栅器)以及图元高速缓存部分616。
在该示例性实施方案中,图元平铺器和光栅器614表示执行两个不同功能的固定功能硬件块。即,使用相同的固定功能硬件来执行粗略层级平铺和精细层级平铺两者。图元平铺器和光栅器614将图像(帧)划分成粗略图块,并且将粗略图块划分成精细图块。图元平铺器和光栅器614执行粗略层级平铺(即,粗略层级光栅化),以确定每个图元(例如,三角形)位于哪个粗略图块中。即,图元平铺器和光栅器614针对每个粗略图块确定粗略图块中每个三角形的可见性。例如,使用图5中所示的示例,图元平铺器和光栅器614确定三角形TRI 1位于图块0中。位置信息被存储在本地存储器(例如,高速缓存存储器)中,作为可见性信息618。图元平铺器和光栅器614还执行精细层级平铺,该图元平铺器和光栅器利用本地存储器(例如,片上高速缓存)来累积一批图元(例如,三角形),并且一次一个精细图块地渲染图元。
图元平铺器和光栅器614确定要被投影到2D屏幕上的每个图元的屏幕上位置。例如,在光栅化期间,加速处理设备(例如,GPU)针对每个图元确定哪些像素(或子像素样本)对应于要渲染到2D屏幕上的每个图元。在像素着色器阶段期间,针对对应于图元的像素计算值(例如,亮度和色彩),并且将这些值提供到像素管道620。
图7是示出根据本公开的特征的渲染图像的其他图块(即,除了第一图块之外的剩余图块)中的每个图块以供显示的示例性方法的流程图。图7举例说明执行图5中所示的图像500的图块1、图块2和图块3图块的粗略层级平铺和精细层级平铺。
当渲染剩余图块中的每个图块时,处理器404执行与用于图块0的指令相同的指令,但如图6中所示,利用存储于本地存储器中的可见性信息418来减少用于剩余图块的数据(例如,图元)的处理(例如,不必要的处理)。例如,使用图5中所示的示例,确定在图块0的处理期间,确定图5中所示的三角形1(Tri 1)不位于图块1中。因此,当处理图块1时避免Tri1的处理。
如图7所示,所存储的可见性信息418被划分为两种类型的可见性信息,即,绘图调用可见性信息702和三角形可见性信息704。可见性信息418指示用于每个图块的绘图(每个绘图包括一个或多个图元,诸如三角形)。绘图调用可见性信息702指示针对正被处理的图块包括哪些绘图,并且三角形可见性信息704指示每个绘图的哪个三角形包括在正被处理的图块中。
例如,使用图5中包括2个三角形(Tri 1和Tri 2)的示例图像500,指令可以是″绘图1:Tri 1,Tri 2″。即,指令指示绘图(例如,绘图1)和绘图内的三角形(例如,绘图1包括Tri 1和Tri 2)。处理器604接收用于每个图块的相同指令。例如,假定仅存在1个绘图指令,当处理第一图块(图块0)时,将图块0的可见性信息618确定为Tri 1在图块0中可见,但Tri2在图块0中不可见。当处理第二图块(图块1)时,绘图调用可见性信息702指示绘图1包括1个三角形,并且将图块1的三角形可见性信息704确定为Tri 2,因为在图块0的处理期间确定Tri 1不在图块1中。
当处理图块2时,绘图调用可见性信息702再次指示绘图1仅包括1个三角形,并且将图块2的三角形可见性信息704确定为Tri 1。当处理图块3时,绘图调用可见性信息702再次指示绘图1仅包括1个三角形,并且将图块3的三角形可见性信息704确定为Tri 2。因此,避免了不必要的处理(例如,图块2、图块2和图块3中的第二三角形)。图7中的剩余框610-620然后执行与以上关于图6所描述的相同的功能。
在现有的TLPBB流中,在图元剔除和设置之后但在任何深度处理之前,分箱器硬件光栅化图元并收集可见性信息。一些图元或绘图将被早期深度测试杀死,但是在常规流程中,它们将仍然被标记为可见的并且在渲染阶段中被再次处理。
因此,如下所述,推迟可见性收集,直到早期深度测试之后。上述图元和绘图可以被标记为不可见的并且在渲染阶段期间跳过。另外,可以利用在可见性阶段中进行早期深度测试来建立深度缓冲器,该深度缓冲器可用于渲染阶段中以减少过度绘图。
图8是示出根据具有两级分箱的深度后可见性收集的特征的渲染图像的图块以供显示的示例性方法的流程图。图8包括命令流802、命令处理器804、几何引擎806、索引缓冲器808、着色器810、图元汇编器812、基于图元批的箱渲染/缩放光栅器(PBB/SC)814(类似于图元分箱器和光栅器614)、图元高速缓存816、分箱器817、深度后端821和着色器822。
图8中所示的部件在很大程度上执行与图6和图7中其对应物相同的功能。深度后端821和着色器822是例如图6和7的像素管道620中的部件。然而,如图6所示,例如,可见性信息618是在图元汇编器612之后由图元平铺器和光栅器614收集的。
在图8中,在由深度后端821进行深度确定之后,由分箱器817收集可见性信息818。因此,可被确定为被阻挡的三角形或存在于其它对象后面并且因此将不会被看到的像素不包括在用于处理的可见性信息818中。
因此,根据上文,在渲染期间利用较少资源来处理不可见图元。即,在可见性阶段中,对所有图元进行光栅化并测试深度,以更新深度缓冲器。仅将通过深度测试的图元发送到分箱器,以用于可见性生成。在分箱渲染阶段中使用来自可见性通道的深度测试的深度缓冲器结果。
因此,描述了使用深度后测试信息来计算图元可见性的两级分箱方法。上述方法的实现方式可以在现有的两级分箱的顶部实现。另外,上述方法可以消除对粗略光栅器的需要,并且在流水线中使用由精细光栅器生成的信息。在生成可见性的同时构建用于整个帧的深度缓冲器,当在粗略分箱渲染阶段中使用时,深度缓冲器可减少更多过度绘图。
通过稍后重新定位分箱器(例如,在深度后端之后),仅针对通过深度测试的三角形(或图块)生成可见性信息。也就是说,剔除可能落在/渲染在另一个对象后面的对象。因此,分箱器不记录该三角形的可见性信息。
上述可以节省对可见性流之外的流量和数据的处理。此外,在进行再处理的第二阶段期间,可以跳过该三角形以进行处理。由于该三角形将不可见,因此不对其进行处理,从而节省了处理时间。
应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
图中和/或本文所述的各种功能单元(包括但不限于处理器102、输入驱动器112、输入设备108、输出驱动器114、输出设备110、APD 116、调度器136、图形处理流水线134、计算单元132、SIMD单元138)可被实现为通用计算机、处理器或处理器核心,或者实现为存储在非暂态计算机可读介质或另一介质中的可由通用计算机、处理器或处理器核心执行的程序、软件或固件。所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程而制造此类处理器。这种处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现本公开的特征的处理器。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(例如内部硬盘和可移动磁盘)、磁光介质和光学介质(例如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
Claims (25)
1.一种用于在计算机系统中显示的图像的图块渲染的方法,包括:
在所述计算机系统的图形流水线中接收所述图像,所述图像包括一个或多个三维(3D)对象;以及
基于深度测试,将所述图像的图元分箱为一个或多个图块。
2.根据权利要求1所述的方法,其中所述深度测试确定所述一个或多个图块中的一个或多个图元的可见性。
3.根据权利要求2所述的方法,其中基于所述深度测试确定第一图元是可见图元来对驻留在第一图块中的所述第一图元的可见性信息进行分箱。
4.根据权利要求3所述的方法,其中丢弃驻留在所述第一图块中的被确定为在所述深度测试中不可见的第二图元的可见性信息。
5.根据权利要求4所述的方法,其中丢弃驻留在第二图块中的被确定为在所述深度测试中不可见的第三图元的可见性信息。
6.根据权利要求4所述的方法,其中被确定为被另一对象阻挡的图元被识别为不是可见图元的所述图元。
7.根据权利要求2所述的方法,其中渲染被确定为可见的一个或多个图元以供显示。
8.一种用于在计算机系统中显示的图像的图块渲染的处理装置,包括:
存储器;和
处理器,所述处理器以通信方式耦合到所述存储器,所述处理器被配置为:
在图形流水线中接收图像,所述图像包括一个或多个三维(3D)对象;以及
基于深度测试,将所述图像的图元分箱为一个或多个图块。
9.根据权利要求8所述的处理装置,其中所述深度测试中的所述处理器确定所述一个或多个图块中的一个或多个图元的可见性。
10.根据权利要求9所述的处理装置,其中在所述深度测试确定第一图元是可见图元时,所述处理器对驻留在第一图块中的所述第一图元的可见性信息进行分箱。
11.根据权利要求10所述的处理装置,其中所述处理器丢弃驻留在所述第一图块中的被确定为在所述深度测试中不可见的第二图元的可见性信息。
12.根据权利要求11所述的处理装置,其中所述处理器丢弃驻留在第二图块中的被确定为在所述深度测试中不可见的第三图元的可见性信息。
13.根据权利要求11所述的处理装置,其中所述处理器将被确定为被另一对象阻挡的图元识别为不是可见图元的所述图元。
14.根据权利要求9所述的处理装置,还包括所述处理器渲染被确定为可见的一个或多个图元以用于显示。
15.一种用于在计算机系统中显示的图像的图块渲染的非暂态计算机可读介质,所述非暂态计算机可读介质具有记录在其上的指令,所述指令在由处理器执行时使所述处理器执行操作,所述操作包括:
在所述计算机系统的图形流水线中接收所述图像,所述图像包括一个或多个三维(3D)对象;以及
基于深度测试,将所述图像的图元分箱为一个或多个图块。
16.根据权利要求15所述的非暂态计算机可读介质,其中所述深度测试确定所述一个或多个图块中的一个或多个图元的可见性。
17.根据权利要求16所述的非暂态计算机可读介质,其中基于所述深度测试确定第一图元是可见图元,来对驻留在第一图块中的所述第一图元的可见性信息进行分箱。
18.根据权利要求17所述的非暂态计算机可读介质,其中丢弃驻留在所述第一图块中的被确定为在所述深度测试中不可见的第二图元的可见性信息。
19.根据权利要求18所述的非暂态计算机可读介质,其中丢弃驻留在第二图块中的被确定为在所述深度测试中不可见的第三图元的可见性信息。
20.根据权利要求18所述的非瞬态计算机可读介质,其中被确定为被另一对象阻挡的图元被识别为不是可见图元的所述图元。
21.一种用于在计算机系统中显示的图像的图块渲染的非暂态计算机可读介质,所述非暂态计算机可读介质具有记录于其上的指令,所述指令适于创建处理器,所述处理器适于执行功能,所述功能包括:
在所述计算机系统的图形流水线中接收所述图像,所述图像包括一个或多个三维(3D)对象;以及
基于深度测试,将所述图像的图元分箱为一个或多个图块。
22.根据权利要求21所述的非暂态计算机可读介质,其中所述深度测试确定所述一个或多个图块中的一个或多个图元的可见性。
23.根据权利要求22所述的非暂态计算机可读介质,其中基于所述深度测试确定第一图元是可见图元,来对驻留在第一图块中的所述第一图元的可见性信息进行分箱。
24.根据权利要求23所述的非暂态计算机可读介质,其中丢弃驻留在所述第一图块中的被确定为在所述深度测试中不可见的第二图元的可见性信息。
25.根据权利要求24所述的非暂态计算机可读介质,其中丢弃驻留在第二图块中的被确定为在所述深度测试中不可见的第三图元的可见性信息。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163168875P | 2021-03-31 | 2021-03-31 | |
US63/168,875 | 2021-03-31 | ||
US17/562,872 US20220319091A1 (en) | 2021-03-31 | 2021-12-27 | Post-depth visibility collection with two level binning |
US17/562,872 | 2021-12-27 | ||
PCT/US2022/018795 WO2022211966A1 (en) | 2021-03-31 | 2022-03-03 | Post-depth visibility collection with two level binning |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117083637A true CN117083637A (zh) | 2023-11-17 |
Family
ID=83448168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280023626.7A Pending CN117083637A (zh) | 2021-03-31 | 2022-03-03 | 具有两级分箱的深度后可见性收集 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220319091A1 (zh) |
EP (1) | EP4315258A1 (zh) |
JP (1) | JP2024511763A (zh) |
KR (1) | KR20230162006A (zh) |
CN (1) | CN117083637A (zh) |
WO (1) | WO2022211966A1 (zh) |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5579455A (en) * | 1993-07-30 | 1996-11-26 | Apple Computer, Inc. | Rendering of 3D scenes on a display using hierarchical z-buffer visibility |
US5600763A (en) * | 1994-07-21 | 1997-02-04 | Apple Computer, Inc. | Error-bounded antialiased rendering of complex scenes |
US6480205B1 (en) * | 1998-07-22 | 2002-11-12 | Nvidia Corporation | Method and apparatus for occlusion culling in graphics systems |
US7068272B1 (en) * | 2000-05-31 | 2006-06-27 | Nvidia Corporation | System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline |
US6359623B1 (en) * | 1998-11-12 | 2002-03-19 | Hewlett-Packard Company | Method and apparatus for performing scan conversion in a computer graphics display system |
US6525726B1 (en) * | 1999-11-02 | 2003-02-25 | Intel Corporation | Method and apparatus for adaptive hierarchical visibility in a tiled three-dimensional graphics architecture |
US20020196252A1 (en) * | 2001-06-20 | 2002-12-26 | Min-Hao Liao | Method and apparatus for rendering three-dimensional images with tile-based visibility preprocessing |
US7091971B2 (en) * | 2001-10-29 | 2006-08-15 | Ati Technologies, Inc. | System, method, and apparatus for multi-level hierarchical Z buffering |
US20050195186A1 (en) * | 2004-03-02 | 2005-09-08 | Ati Technologies Inc. | Method and apparatus for object based visibility culling |
WO2009093956A1 (en) * | 2008-01-23 | 2009-07-30 | Swiftfoot Graphics Ab | Method, apparatus, and computer program product for improved graphics performance |
KR102116708B1 (ko) * | 2013-05-24 | 2020-05-29 | 삼성전자 주식회사 | 그래픽스 프로세싱 유닛 |
US9280845B2 (en) * | 2013-12-27 | 2016-03-08 | Qualcomm Incorporated | Optimized multi-pass rendering on tiled base architectures |
US9779533B2 (en) * | 2014-01-27 | 2017-10-03 | Nvidia Corporation | Hierarchical tiled caching |
KR20160063081A (ko) * | 2014-11-26 | 2016-06-03 | 삼성전자주식회사 | 선택적 테셀레이션 방법 및 장치 |
US10049426B2 (en) * | 2017-01-03 | 2018-08-14 | Qualcomm Incorporated | Draw call visibility stream |
US11195326B2 (en) * | 2018-09-21 | 2021-12-07 | Advanced Micro Devices, Inc. | Method and system for depth pre-processing and geometry sorting using binning hardware |
US11080928B2 (en) * | 2019-04-01 | 2021-08-03 | Qualcomm Incorporated | Methods and apparatus for visibility stream management |
US11055904B2 (en) * | 2019-08-27 | 2021-07-06 | Arm Limited | Optimizing depth testing in graphics processing systems that perform early and late depth testing |
-
2021
- 2021-12-27 US US17/562,872 patent/US20220319091A1/en active Pending
-
2022
- 2022-03-03 KR KR1020237034856A patent/KR20230162006A/ko unknown
- 2022-03-03 WO PCT/US2022/018795 patent/WO2022211966A1/en active Application Filing
- 2022-03-03 JP JP2023557705A patent/JP2024511763A/ja active Pending
- 2022-03-03 CN CN202280023626.7A patent/CN117083637A/zh active Pending
- 2022-03-03 EP EP22781828.3A patent/EP4315258A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20230162006A (ko) | 2023-11-28 |
JP2024511763A (ja) | 2024-03-15 |
EP4315258A1 (en) | 2024-02-07 |
US20220319091A1 (en) | 2022-10-06 |
WO2022211966A1 (en) | 2022-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11657560B2 (en) | VRS rate feedback | |
CN111066066B (zh) | 可变比率着色 | |
JP2019533240A (ja) | プリミティブシェーダ | |
JP2022512082A (ja) | 可変レートシェーディングとスーパーサンプリングシェーディングの統合 | |
EP3422709A1 (en) | Stereo rendering | |
WO2018140223A1 (en) | Stereo rendering | |
US11972518B2 (en) | Hybrid binning | |
US11741653B2 (en) | Overlapping visibility and render passes for same frame | |
US20230186523A1 (en) | Method and system for integrating compression | |
US20220414939A1 (en) | Render target compression scheme compatible with variable rate shading | |
US20220319091A1 (en) | Post-depth visibility collection with two level binning | |
US11880924B2 (en) | Synchronization free cross pass binning through subpass interleaving | |
US11900499B2 (en) | Iterative indirect command buffers | |
US20210398349A1 (en) | Fine grained replay control in binning hardware | |
US20230298261A1 (en) | Distributed visibility stream generation for coarse grain binning | |
US20240087078A1 (en) | Two-level primitive batch binning with hardware state compression | |
US20240169641A1 (en) | Vertex index routing through culling shader for two level primitive batch binning |
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 |