CN113256760A - 图形处理方法和系统 - Google Patents
图形处理方法和系统 Download PDFInfo
- Publication number
- CN113256760A CN113256760A CN202110163427.3A CN202110163427A CN113256760A CN 113256760 A CN113256760 A CN 113256760A CN 202110163427 A CN202110163427 A CN 202110163427A CN 113256760 A CN113256760 A CN 113256760A
- Authority
- CN
- China
- Prior art keywords
- geometry
- region
- item
- control list
- regions
- 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
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/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
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Image Generation (AREA)
Abstract
本发明涉及图形处理方法和系统。本发明提供了使用被细分成多个第一区域的渲染空间来渲染几何形状项目的方法和图形处理系统。第一区域中的每一个被细分成多个第二区域。多个几何形状项目中的每一个通过标识几何形状项目存在于第一区域中的哪些第一区域中来处理,并且对于每个所标识的第一区域,确定几何形状项目在所标识的第一区域内的空间覆盖范围的指示,并且使用所标识的第一区域内的空间覆盖范围的所确定的指示来确定是将几何形状项目添加到所标识的第一区域的第一控制列表中还是将几何形状项目添加到所标识的第一区域内的第二区域中相应的一个或多个第二区域的一个或多个第二控制列表中。
Description
技术领域
本公开涉及图形处理系统和使用图形处理系统进行渲染的方法。
背景技术
图形处理系统通常配置成例如从在计算机系统上运行的应用程序接收图形数据,并渲染图形数据以提供渲染输出。例如,提供到图形处理系统的图形数据可描述要渲染的三维(3D)场景内的几何形状,并且渲染输出可以是场景的被渲染图像。一些图形处理系统(其可称作“基于图块的”图形处理系统)使用细分成多个图块的渲染空间。“图块”是渲染空间的区域,并且可具有任何合适的形状,但通常是矩形的(其中,术语“矩形”包含方形)。如所属领域中已知,将渲染空间细分成图块具有许多益处。例如,将渲染空间细分成图块允许以图块为单位来渲染图像,其中可以在图块的渲染期间将“图块”的图形数据临时存储在“芯片上”,从而减少在系统存储器和实现图形处理系统的图形处理单元(GPU)的芯片之间传输的数据量。
基于图块的图形处理系统通常有两个操作阶段:几何形状处理阶段和渲染阶段。在几何形状处理阶段,分析用于渲染的图形数据,以针对每个图块确定哪些图形数据项存在于该图块内。然后在渲染阶段(例如,光栅化阶段),可通过处理确定为存在于特定图块内的那些图形数据项来渲染该图块(而无需处理在几何形状处理阶段确定为不存在于特定图块内的图形数据项)。
图1示出了基于图块的图形处理系统100的示例。系统100包括存储器102、几何形状处理逻辑104,以及渲染逻辑106。如所属领域中已知,几何形状处理逻辑104和渲染逻辑106可以在GPU上实现并且可以共享一些处理资源。几何形状处理逻辑104包括几何形状获取单元108、几何形状变换逻辑110、剔除/裁剪单元112、图元块组装逻辑113,以及平铺单元114。渲染逻辑106包括参数获取单元116、隐藏表面消除(HSR)单元118,以及纹理化/着色单元120。存储器102可被实现为一个或多个物理存储器块,并且包括图形存储器122、变换后的参数存储器124、控制列表存储器126,以及帧缓冲器128。
图2示出了用于操作基于图块的渲染系统诸如图1所示的系统的方法的流程图。几何形状处理逻辑104执行几何形状处理阶段,其中几何形状获取单元108从图形存储器122获取几何形状数据(在步骤S202中),并且将所获取的数据传递至变换逻辑110。几何形状数据包括描述待渲染的几何形状的图形数据项(即,几何形状项目)。例如,几何形状项目可表示描述场景中的结构表面的几何形状。几何形状项目通常是“图元”。常见的图元形状为三角形,但图元可以是其他2D形状,也可以是线或点。可通过图元的顶点对其进行定义,并且可以提供描述顶点的顶点数据,其中顶点的组合描述图元(例如,三角形图元由三个顶点的顶点数据来定义)。对象可以由一个或多个此类图元组成。在一些示例中,对象可以由数千个、甚至数百万个此类图元组成。场景通常包含许多对象。几何形状项目也可以是网格(由多个图元组成,诸如包括共享一个边缘的两个三角形图元的四边形)。几何形状项目也可以是面片,其中面片(patch)由控制点描述,并且其中面片被细分以生成多个细分的图元。
在步骤S204中,几何形状处理逻辑104例如通过将几何形状项目变换到屏幕空间、执行顶点着色、执行几何形状着色以及/或者执行细分来对几何形状项目进行预处理,这适用于相应的几何形状项目。例如,变换逻辑110可以将几何形状项目变换到渲染空间,并且可以应用在本领域中已知的照明/属性处理。所得数据被传递至剔除/裁剪单元112,该剔除/裁剪单元剔除和/或裁剪落在视锥体之外的任何几何形状。其余的变换后的几何形状项目(例如,图元)被提供给图元块组装逻辑113,该图元块组装逻辑将几何形状项目分组为块(可以被称为“图元块”)以用于存储。例如,每个块可包括多达N个图元和多达M个顶点,其中N和M的值是一种实现设计选择。每个块都可以与块ID相关联,使得可以轻松标识和引用这些块。图元通常与其他图元共享顶点,因此将图元的顶点存储在块中允许顶点数据在块中存储一次,其中图元块中的多个图元可以引用块中相同的顶点数据。在步骤S206中,具有变换后的几何数据项的图元块被提供给存储器102以被存储在变换后的参数存储器124中。变换后的几何形状项目和有关如何将其打包到图元块中的信息也被提供给平铺单元114。在步骤S208中,平铺单元114为渲染空间的每个图块生成控制流数据,其中图块的控制流数据包括将用于渲染图块的变换后的图元的标识符的控制列表,即,至少部分地位于图块内的变换后的图元的标识符的列表。图块的控制流数据可以被称为图块的“显示列表”、“控制列表”或“对象列表”。在步骤S210中,图块的控制流数据被提供给存储器102以被存储在控制列表存储器126中。因此,在几何形状处理阶段之后(即,在步骤S210之后),将待渲染的变换后的图元存储在变换后的参数存储器124中,并且将指示每个图块中存在哪些变换后的图元的控制流数据存储在控制列表存储器126中。
在渲染阶段中,渲染逻辑106以图块为单位来渲染几何形状项目(图元)。在步骤S212中,参数获取单元116接收图块的控制流数据(即,控制列表),并且在步骤S214中,参数获取单元116从变换后的参数存储器124获取所指示的变换后的图元,如图块的控制流数据所示。在步骤S216中,渲染逻辑106通过对图元执行采样来确定表示图块内的离散采样点处的图元的图元片段,然后对图元片段执行隐藏表面消除和纹理化/着色来渲染所获取的图元。特别地,所获取的变换后的图元被提供给隐藏表面消除(HSR)单元118,该HSR单元执行采样来确定图元片段,并且消除隐藏的(例如,被其他图元片段隐藏的)图元片段。执行采样和隐藏表面消除的方法在本领域中是已知的。术语“片段”是指采样点处的图元的样本,该样本将被处理以对图像的像素进行渲染。本文中使用术语“采样”来描述确定表示离散采样点处的几何形状项目(例如,图元)的片段的过程,但是该过程有时可被称为“光栅化”或“扫描转换”。在一些示例中,可以存在片段到像素的一对一映射。然而,在其他示例中,片段可以多于像素,并且此过采样可以允许像素值的较高质量渲染,例如通过促进可以应用于多个片段以用于对每个像素值进行渲染的抗混叠和其他滤波。未被HSR单元118消除的图元被提供给纹理化/着色单元120,该纹理化/着色单元将纹理化和/或着色应用于图元片段。尽管在图1中未示出,但是纹理化/着色单元120可以接收来自存储器102的纹理数据以便将纹理化应用于图元片段,如在本领域中已知的。如所属领域中已知,纹理化/着色单元120可以对图元片段应用进一步的处理(例如,α混合和其他处理),以便确定图像的渲染像素值。对图块中的每一个图块执行渲染阶段,使得可以用确定整个图像的像素值来渲染整个图像。在步骤S218中,所渲染的像素值被提供给存储器102以被存储在帧缓冲器128中。然后可以任何合适的方式使用渲染的图像,例如显示在显示屏上或存储在存储器中或传输至另一个设备,等等。
图块控制列表允许渲染逻辑106标识并且获取用于渲染特定图块的相关图元(即,仅至少部分覆盖图块的那些图元)。然而,覆盖大部分渲染空间的大图元可出现在大量图块中。例如,当图块大小为32×32像素时,1920×1080像素的渲染具有2040个图块。因此,在该示例中(这很常见),大图元可覆盖数千个图块,因此大图元的标识符可被写入相应图块的数千个控制列表中。此外,在一些示例中,图块大小可以不同,例如图块大小可以是16×16像素,在这种情况下,由图元覆盖的图块数量是上面给出的其中图块大小为32×32像素的示例中的四倍。
将图元标识符数据写入大量的(例如,数千个)控制列表中将增加存储器写入带宽,即,从几何形状处理逻辑104传输至存储器102的数据量。从(通常在“芯片上”实现的)几何形状处理逻辑104到(通常作为系统存储器在“芯片外”实现的)存储器102的这种数据传输(与渲染几何形状数据所涉及的其他过程相比)可以是一个相对较慢的过程。此外,增加控制列表中的数据量将增加控制列表存储器126的最小存储器占用空间。
一些应用程序,诸如用户界面应用程序,往往向图形处理系统100提交少量的大图元进行渲染,并且将图元数据复制到许多控制列表可对这些应用程序造成特别严重的影响。
发明内容
提供本发明内容是为了以简化的形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
提供了一种在图形处理系统中渲染几何形状项目的方法,其中图形处理系统被配置成使用被细分成多个第一区域的渲染空间,每个第一区域被细分成渲染空间内的多个第二区域,其中该方法包括:
处理多个几何形状项目,所述多个几何形状项目包括存在于第一区域中的两个或更多个第一区域中的至少一个几何形状项目,其中通过以下方式处理所述多个几何形状项目中的每一个几何形状项目:
标识几何形状项目存在于第一区域中的哪些第一区域中;以及
针对每个所标识的第一区域:
确定几何形状项目在所标识的第一区域内的空间覆盖范围的指示;以及
使用所标识的第一区域内的空间覆盖范围的所确定的指示来确定是将几何形状项目添加到所标识的第一区域的第一控制列表中还是将几何形状项目添加到所标识的第一区域内的第二区域中相应的一个或多个第二区域的一个或多个第二控制列表中;以及
使用下列两者来渲染第二区域内的几何形状项目:(i)第二区域作为其一部分的第一区域的第一控制列表,以及(ii)第二区域的第二控制列表。
所述使用所标识的第一区域内的空间覆盖范围的所确定的指示可包括:将空间覆盖范围的所确定的指示与阈值进行比较;并且使用比较结果来确定是将几何形状项目添加到第一控制列表还是添加到一个或多个第二控制列表中。
所述确定几何形状项目在所标识的第一区域内的空间覆盖范围的指示可包括确定表示所标识的第一区域内的几何形状项目的一部分的子多边形。该方法还可以包括:确定子多边形的边界框;以及将子多边形的边界框的大小与阈值大小进行比较,其中如果边界框的大小小于阈值大小,则将几何形状项目添加到一个或多个第二控制列表中。如果子多边形的边界框的大小大于阈值大小,则该方法还可以包括将子多边形的面积与阈值面积进行比较,其中如果子多边形的面积小于阈值面积,则将几何形状项目添加到一个或多个第二控制列表中,并且其中如果子多边形的面积大于阈值面积,则将几何形状项目添加到第一控制列表中。
所述确定几何形状项目在所标识的第一区域内的空间覆盖范围的指示还可以包括:确定子多边形的面积;以及将所确定的子多边形的面积与阈值面积进行比较,其中如果子多边形的面积小于阈值面积,则将几何形状项目添加到一个或多个第二控制列表中,并且其中如果子多边形的面积大于阈值面积,则将几何形状项目添加到第一控制列表中。
可使用舍入到量化位置的子多边形的顶点的坐标来确定子多边形的面积。量化位置可以与第二区域之间的边界或第二区域的块之间的边界对齐。
所述确定几何形状项目在所标识的第一区域内的空间覆盖范围的指示可包括确定第一区域内的存在几何形状项目的第二区域的数量。在一些示例中,如果几何形状项目在第一区域内的大于阈值数量的第二区域内存在,则几何形状项目被包括在第一区域的第一控制列表中,并且如果几何形状项目在第一区域内的小于阈值数量的第二区域内存在,则几何形状项目被包括在第一区域内的存在几何形状项目的相应的一个或多个第二区域的一个或多个第二控制列表中。例如,如果几何形状项目在第一区域内的所有第二区域内存在,则几何形状项目被包括在第一区域的第一控制列表中,并且如果几何形状项目在第一区域内的少于全部的第二区域内存在,则几何形状项目被包括在第一区域内的存在几何形状项目的相应的一个或多个第二区域的一个或多个第二控制列表中。
所述使用所标识的第一区域内的空间覆盖范围的所确定的指示可包括:如果空间覆盖范围的所确定的指示表明几何形状项目完全覆盖所标识的第一区域,则将几何形状项目添加到第一控制列表,以及如果空间覆盖范围的所确定的指示表明几何形状项目不完全覆盖所标识的第一区域,则将几何形状项目添加到所标识的第一区域内的存在几何形状项目的相应的一个或多个第二区域的一个或多个第二控制列表中。所述渲染第二区域内的几何形状项目可包括选择性地处理几何形状项目以确定第二区域内的哪些采样点被几何形状项目覆盖,其中可以跳过对第一控制列表中的几何形状项目的所述处理,因为已知第一控制列表中的几何形状项目覆盖第二区域内的所有采样点。
几何形状项目可以根据几何形状项目的提交顺序存储在数据块中,其中每个数据块可以与块ID相关联,并且其中控制列表中的条目可包括带有用于标识数据块并且指示来自所标识的数据块的一个或多个几何形状项目的几何形状指示的块ID。
所述渲染第二区域内的几何形状项目可包括:从第二区域作为其一部分的第一区域的第一控制列表和第二区域的第二控制列表中选择先前未选择的最低块ID;并且根据带有所选择的块ID的所述数据块的几何形状指示,从带有所选择的块ID的数据块获取一个或多个几何形状项目。如果先前未选择的最低块ID在第二区域作为其一部分的第一区域的第一控制列表和第二区域的第二控制列表两者中,则该方法可包括基于所述第一控制列表和第二控制列表的几何形状指示来形成从带有所述最低块ID的数据块中标识几何形状项目的合并的几何形状指示。
该方法还可以包括,针对每个所标识的第一区域,如果将几何形状项目添加到所标识的第一区域的第一控制列表中:确定几何形状项目的子区域掩模以指示几何形状项目在第一区域内的多个子区域中的哪些子区域中存在;并且将几何形状项目的子区域掩模包括在第一控制列表中。子区域可以是第一区域内的第二区域,或者子区域可以是第一区域内的第二区域的组。
将几何形状项目添加到控制列表可包括将几何形状项目的指示添加到控制列表中。
渲染空间可以被细分成多个第三区域,其中第三区域中的每一个第三区域对应于渲染空间内的一组第一区域,其中所述处理几何形状项目可包括:
标识几何形状项目存在于第三区域中的哪些第三区域中;以及
针对每个所标识的第三区域:
确定几何形状项目在所标识的第三区域内的空间覆盖范围的指示;以及
使用所标识的第三区域内的空间覆盖范围的所确定的指示来确定是将几何形状项目添加到所标识的第三区域的第三控制列表,还是继续进行对几何形状项目的所述处理;以及
其中进一步使用下列两者来渲染第二区域内的几何形状项目:(iii)第一区域和第二区域作为其一部分的第三区域的第三控制列表。
如果几何形状项目在被处理时可以存在于渲染空间的区域中,则经处理的几何形状的至少一部分存在于该区域内。几何形状项目可以是图元、网格、面片或四边形。几何形状项目可处于待从视点渲染的3D场景内,并且其中所述渲染几何形状项目可生成表示从视点查看的场景图像的图像值。
提供了一种图形处理系统,该图形处理系统被配置成使用被细分成多个第一区域的渲染空间来渲染几何形状项目,第一区域中的每一个第一区域在渲染空间内被细分成多个第二区域,其中图形处理系统包括:
几何形状处理逻辑,该几何形状处理逻辑被配置成处理包括存在于第一区域中的两个或更多个第一区域中的至少一个几何形状项目中的多个几何形状项目,其中该几何形状处理逻辑被配置成通过以下方式处理所述多个几何形状项目中的每一个几何形状项目:
标识几何形状项目存在于第一区域中的哪些第一区域中;以及针对每个所标识的第一区域:
确定几何形状项目在所标识的第一区域内的空间覆盖范围的指示;以及
使用所标识的第一区域内的空间覆盖范围的所确定的指示来确定是将几何形状项目添加到所标识的第一区域的第一控制列表中还是将几何形状项目添加到所标识的第一区域内的第二区域中相应的一个或多个第二区域的一个或多个第二控制列表中;以及
渲染逻辑,该渲染逻辑被配置成使用下列两者来渲染第二区域内的几何形状项目:(i)第二区域作为其一部分的第一区域的第一控制列表,以及(ii)第二区域的第二控制列表。
可以提供一种图形处理系统,该图形处理系统被配置成执行本文所述的任何方法。
可以提供一种在图形处理系统中渲染图元的方法,该方法被配置成使用被细分成多个区域的渲染空间,该方法包括:
几何形状处理阶段,该几何形状处理阶段包括:
针对存在于区域中的多个图元中的每一个图元,确定图元是否完全覆盖该区域;以及
存储存在于该区域中的图元的数据,其中对于被确定为完全覆盖该区域的每个图元,所存储的数据包括用于指示该区域的总覆盖范围的数据;以及
用于渲染区域内的图元的渲染阶段,包括:
检索存在于区域中的图元的存储数据;
基于所检索的数据来选择性地处理存在于该区域中的图元以确定图元覆盖区域内的哪些采样点,其中如果所检索的数据包括指示特定图元的区域的总覆盖范围的数据,则跳过确定区域内的哪些采样点被特定图元覆盖的所述处理;
基于覆盖相应采样点的图元来确定区域内的采样点处的渲染值。
可以提供一种图形处理系统,该图形处理系统被配置成使用被细分成多个区域的渲染空间来渲染图元,其中该图形处理系统包括:
几何形状处理逻辑,该几何形状处理逻辑被配置成:
针对存在于区域中的多个图元中的每一个图元,确定图元是否完全覆盖该区域;以及
存储存在于该区域中的图元的数据,其中对于被确定为完全覆盖该区域的每个图元,所存储的数据包括用于指示区域的总覆盖范围的数据;以及
渲染逻辑,该渲染逻辑被配置成:
检索存在于区域中的图元的存储数据;
基于所检索的数据来选择性地处理存在于该区域中的图元,以确定图元覆盖区域内的哪些采样点,使得如果所检索的数据包括指示特定图元的区域的总覆盖范围的数据,则跳过确定区域内的哪些采样点被特定图元覆盖的处理;
基于覆盖相应采样点的图元来确定区域内的采样点处的渲染值。
所述图形处理系统可以用集成电路上的硬件来体现。可以提供一种在集成电路制造系统处制造图形处理系统的方法。可以提供一种集成电路定义数据集,该集成电路定义数据集在集成电路制造系统中被处理时配置该系统以制造图形处理系统。可以提供一种非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质上存储有图形处理系统的计算机可读描述,该计算机可读描述在集成电路制造系统中处理时,使集成电路制造系统制造体现图形处理系统的集成电路。
可以提供一种集成电路制造系统,该集成电路制造系统包括:非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质上存储有图形处理系统的计算机可读描述;布局处理系统,该布局处理系统被配置成处理计算机可读描述,以便生成体现图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置成根据电路布局描述来制造图形处理系统。
可提供用于执行本文中描述的任一方法的计算机程序代码。可提供非暂时性计算机可读存储介质,在其上存储有计算机可读指令,所述计算机可读指令在计算机系统处执行时使所述计算机系统执行本文中描述的任何方法。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1示出图形处理系统;
图2为在图形处理系统中渲染几何形状项目的方法的流程图;
图3示出被细分成多个层级的区域的渲染空间内的几何形状项目;
图4为根据本文所述示例的将几何形状项目添加到控制列表的方法的流程图;
图5a为当存在图块的多个控制列表时获取和渲染图块中的几何形状项目的方法的流程图;
图5b示出宏图块控制列表和图块控制列表的示例;
图6示出渲染空间内的区域和该区域内存在的两个图元的示例;
图7是用于渲染图元的方法的流程图,其中一些图元可以完全覆盖渲染空间内的一些区域;
图8示出其中实现图形处理系统的计算机系统;并且
图9示出用于生成体现图形处理系统的集成电路的集成电路制造系统。
附图示出了各种示例。技术人员将理解,附图中所示的元件边界(例如,框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同附图标记来指示相似特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施方案,并且对所公开的实施方案的各种修改对于所属领域的技术人员而言将是显而易见的。
现在仅通过示例的方式来描述实施方案。
本文所述的图形处理系统使用多个“层级”的平铺,使得可以选择平铺分辨率以基于几何形状项目的大小将几何形状项目添加到控制列表中。例如,在使用两个“层级”的平铺的系统中,可以将渲染空间细分成多个第一区域(如下面更详细描述的那样,可以是“宏图块”),其中第一区域中的每一个第一区域被细分成多个第二区域。第二区域可对应于渲染空间内的图块或图块组。可针对每个第一区域形成第一控制列表,并且可针对每个第二区域形成第二控制列表中。可以将存在于第二区域中的几何形状项目添加到第二区域的第二控制列表,或者第二区域作为其一部分的第一区域的第一控制列表中。可基于几何形状项目的大小,特别是基于第一区域内几何形状项目的空间覆盖范围来做出关于将几何形状项目添加到哪些控制列表的决定。对于几何形状项目所存在的第一区域中的每一个第一区域,可以独立地做出该决定。一般来讲,如果几何形状项目在被处理时存在于渲染空间的区域中,则经处理的几何形状的至少一部分存在于该区域内。(在平铺之前,在几何形状处理阶段)对几何形状项目执行的一些处理可改变几何形状项目的形状和/或位置(例如,执行顶点着色、几何形状着色或密铺)。
例如,覆盖宏图块的较大比例(或“第一区域”)的较大几何形状项目可被添加到宏图块的控制列表中,而不覆盖宏图块的较大比例的几何形状项目可被添加到宏图块内的其中存在几何形状项目的一个或多个图块(或“一个或多个第二区域”)的一个或多个控制列表中。如以下示例中详细解释的那样,可以多种不同的方式确定被认为是宏图块的“较大”比例的部分。例如,可以设定阈值面积(其中,阈值可以例如是25%、33%、50%、66%、75%甚至100%,仅举一些示例),并且可以将几何形状项目在第一区域内的空间覆盖范围与阈值进行比较以确定是否将几何形状项目添加到第一区域的第一控制列表中。
应当理解,在提及将几何形状项目添加到控制列表的情况下,这旨在涵盖将几何形状项目的标识符添加到控制列表,而不必将与几何形状项目相关联的所有数据添加到控制列表中。
将较大几何形状项目添加到第一区域的控制列表(例如,添加到宏图块的控制列表)意指不需要将几何形状项目添加到第一区域内的图块的单独的控制列表中。因此,在存储器中存储的控制列表中,较大几何形状项目的重复较少。因此,减少了从(例如,芯片上的)几何形状处理逻辑传递到(例如,芯片外的)存储器的数据量。换句话讲,与以上背景技术部分中描述的现有技术系统相比,减少了存储器写入带宽。此外,与以上背景技术部分中描述的现有技术系统相比,控制列表存储器的存储器占用空间可以大大减少。
在当前渲染的几何形状处理阶段完成之后,执行当前渲染的渲染阶段。换句话讲,直到完成当前渲染的几何形状处理阶段的所有步骤之后,当前渲染的渲染阶段才开始。渲染阶段可包括对图元执行采样以确定表示图块内的离散采样点处的图元的图元片段,这也可以被称为“光栅化”。然而,几何形状处理阶段在表示由顶点定义的区域的图元上进行操作,而不是确定离散的采样点处的图元片段。特别地,几何形状处理阶段不包括光栅化,即,在不对图元执行光栅化的情况下执行几何形状处理阶段。在针对当前渲染完成几何形状处理阶段的所有步骤之前,不对当前渲染执行光栅化。因此,几何形状处理阶段发生在光栅化之前。
图1所示的图形处理系统可用于实现本文所述的示例,并且图2所示的流程图从更高层级描述了本文所述示例中渲染几何形状项目的方式。然而,在本文所述的示例中,引入了一个或多个额外层级的平铺,其中可基于几何形状项目的空间覆盖范围来将几何形状项目的标识符添加到与不同层级的平铺相对应的控制列表中。从这个意义上讲,本文所述的示例实现了“分层平铺”。
在本文详细描述的第一示例中,仅使用了两个层级的平铺,使得系统使用:(i)宏图块的控制列表,以及(ii)图块的控制列表。如下面更详细描述的,在其他示例中,可以使用两个以上层级的平铺。
图3示出了渲染空间300的示例,该渲染空间被细分成以2×2块排列的四个宏图块(如粗体所示,并且在图3中被称为3020、3021、3022和3023)。在其他示例中,渲染空间可被划分成不同数量的宏图块,例如以4×4块排列的十六个宏图块。
在图3所示的示例中,每个宏图块被细分成排列为4×4块的图块的十六个图块的块。图3中将其中四个图块的块称为3040、3041、3042和3043。在该示例中,每个图块的块表示排列为4×4块的图块的十六个图块。为了清楚起见,在图3中未示出各个图块,但是需注意,在该简单示例中,每个宏图块包括256个图块,使得整个渲染空间包括1024个图块。图3示出了几何形状项目,该几何形状项目包括两个三角形图元306和308,以及渲染空间300中的四边形310。图元306由顶点V0、V1和V2定义;图元308由顶点V3、V4和V5定义;并且四边形310由顶点V6、V7、V8和V9定义。四边形310由两个三角形图元组成:由顶点V6、V7和V9定义的图元3100;以及由顶点V7、V8和V9定义的图元3101。两个图元3100和3101共享顶点V7和顶点V9之间边缘,使得它们形成四边形310,其中顶点V7和顶点V9之间的边缘在四边形310的内部。
在该示例中,如图2的流程图中概述的那样执行几何形状项目(例如,图元、网格(诸如四边形、面片等))的渲染。如上所述执行步骤S202、S204和S206,使得几何形状项目由几何形状获取单元108从图形存储器122中获取,由变换逻辑110变换到渲染空间,由剔除/裁剪单元112适当地剔除和/或裁剪,由图元块组装逻辑113打包成图元块,并且被存储在存储器102中的变换后的参数存储器124中。
执行平铺和形成控制列表的步骤与上面在背景部分中所述的示例的对应步骤S208不同。在本文所述的示例中,由平铺单元114执行的平铺过程包括实现如图4的流程图所示的方法(而不是执行步骤S208),以将几何形状项目添加到一个或多个第一控制列表,以及/或者添加到一个或多个第二控制列表。针对待由平铺单元114平铺的每个几何形状项目执行图4所示的方法。如上所述,几何形状项目可以例如是图元,或者在其他示例中可以是网格(例如,四边形)或面片。在该示例中,“第一区域”是宏图块3020至3023,并且“第二区域”是单独的图块(图3中未示出)。
在步骤S402中,处理几何形状项目以标识几何形状项目存在于第一区域中的哪些第一区域(例如,宏图块302中的哪些宏图块)中。这可以任何合适的方式执行。存在许多本领域中已知的用于标识几何形状项目存在于宏图块中的哪些宏图块302中的技术。例如,可以确定几何形状项目的边界框(例如,轴线对齐边界框),其中几何形状项目不存在于不与几何形状项目的边界框至少部分重叠的任何宏图块内。如果几何形状项目的边界框在X方向和Y方向上均不跨越宏图块边界,则已知几何形状项目存在于与几何形状项目的边界框重叠的所有宏图块中。例如,已知如果满足以下条件,则几何形状项目存在于与几何形状项目的边界框重叠的所有宏图块中:(i)几何形状项目的边界框完全在单个宏图块中,使其不跨越宏图块边界,(ii)几何形状项目的边界框在X方向上跨越一个或多个宏图块边界,但在Y方向上不跨越任何宏图块边界,或者(iii)几何形状项目的边界框在Y方向上跨越一个或多个宏图块边界,但在X方向上不跨越任何宏图块边界。然而,如果几何形状项目的边界框在X方向和Y方向上均跨越宏图块边界,则几何形状项目可能不存在于与几何形状项目的边界框重叠的所有宏图块中。保守的方法是确定几何形状项目在与几何形状项目的边界框重叠的宏图块中的每一个宏图块中。替代地,可使用“完美平铺”方法来确定几何形状项目存在于宏图块302中的哪些与几何形状项目的边界框重叠的宏图块中。例如,对于与几何形状项目的边界框重叠的每个宏图块,可以执行测试以确定几何形状项目是否存在于宏图块中。针对几何形状项目的每个边缘,该测试可涉及将宏图块的拐角位置与边缘的直线方程进行比较,以确定宏图块的拐角位置是在边缘的内部还是在外部。
在步骤S402之后,已标识其中存在几何形状项目的一组一个或多个宏图块302。然后可以对每个所标识的宏图块(例如,独立地)执行处理,以确定几何形状项目是否覆盖宏图块中的每一个宏图块的较大比例。如果几何形状项目覆盖宏图块的较大比例(使得几何形状项目可以被视为是相对于宏图块的“较大”几何形状项目),则将被添加到宏图块控制列表中,但是如果几何形状项目不覆盖宏图块的较大比例(使得无法将几何形状项目视为是相对于宏图块的“较大”几何形状项目),则将不被添加到宏图块控制列表中,而是可以被添加到宏图块中的图块的一个或多个图块控制列表中。可以在不同的示例中以不同的方式来确定几何形状项目相对于宏图块是否“较大”。例如,可执行步骤S406至S418以确定几何形状项目相对于宏图块是否“较大”。相同的几何形状项目相对于一个宏图块可以被视为较大的几何形状项目,但相对于另一个宏图块可以被视为较小的几何形状项目。换句话讲,例如可基于带有所讨论的特定宏图块的几何形状项目的空间覆盖范围,分别做出几何形状项目相对于每个宏图块是否较大的决定。
在步骤S404中,选择所标识的宏图块302中的一个宏图块。选择所标识的宏图块302的顺序并不重要,因为在该方法结束时,在该方法的相应迭代中将选择所有所标识的宏图块。
从下面对图4所示的方法的其余部分的描述中将显而易见的是,针对每个所标识的第一区域(例如,针对其中存在几何形状项目的每个宏图块302),确定几何形状项目在所标识的第一区域内的空间覆盖范围的指示。然后,使用该指示来确定是将几何形状项目添加到所标识的第一区域(例如,宏图块)的第一控制列表,还是将几何形状项目添加到所标识的第一区域内的第二区域(例如,一个或多个图块)中相应的一个或多个第二区域的一个或多个第二控制列表。方法步骤S406至S426仅仅是可以如何实现的一个示例。
在步骤S406中,确定所选择的宏图块302与几何形状项目的边界框之间的重叠面积。重叠面积是几何形状项目在所选择的宏图块302内的空间覆盖范围的指示。然而,在步骤S406中确定的重叠面积是几何形状项目与所选择的宏图块302之间的真实重叠的相当粗略的近似。特别地,在步骤S406中确定的重叠面积往往高估几何形状项目与所选择的宏图块之间的真实重叠,因为几何形状项目的边界框往往大于几何形状项目本身。在步骤S406中使用的边界框可以是矩形。例如,在步骤S406中使用的边界框可以是轴线对齐边界框(AABB)。需注意,确定几何形状项目的轴线对齐边界框的大小是非常简单的过程。例如,这可以通过找到几何形状项目的顶点的x方向和y方向上的坐标的最大值和最小值来完成。在x方向和y方向上的这些最大值和最小值将表示边界框在x方向和y方向上的大小。
在步骤S408中,将在步骤S406中确定的重叠面积与阈值进行比较。该阈值可以例如是宏图块302的面积的比例。例如,阈值可以是所选择的宏图块302的面积的1/4。在其他示例中,阈值可以是宏图块的面积的其他比例,或者阈值可基于除宏图块的面积的比例之外的其他值。确定边界框和宏图块的边界和大小的粒度在不同示例中可以不同。在一些示例中,以图块粒度确定边界框和宏图块的边界,使得其大小被确定为整数的图块。
如果在步骤S408中确定重叠面积不大于(例如,小于)阈值,则认为几何形状项目不覆盖所选择的宏图块302的较大比例。换句话讲,如果在步骤S408中确定重叠面积不大于阈值,则认为几何形状项目相对于所选择的宏图块不是“较大”几何形状项目。因此,不将几何形状项目添加到所选择的宏图块302的控制列表中,而是可以将几何形状项目添加到宏图块内的一个或多个图块的一个或多个图块控制列表中。因此,如果在步骤S408中确定重叠面积不大于阈值,则该方法从步骤S408前进至步骤S424,如下所述。
然而,如果在步骤S408中确定重叠面积大于阈值,则几何形状项目可覆盖所选择的宏图块302的“较大”比例。在这种情况下,该方法从步骤S408前进至确定表示所选择的宏图块302内的几何形状项目的部分的子多边形的步骤S410。“子多边形”是落入所选择的宏图块302内的几何形状项目的部分。因此,如果几何形状项目存在于两个或更多个宏图块中,则相对于其中存在几何形状项目的宏图块中的一个宏图块,子多边形小于其作为其一部分的几何形状项目。在不同的示例中,可以不同的方式确定子多边形。例如,可以确定几何形状项目的边缘与所选择的宏图块302的边界之间的相交点,并且将其用作子多边形的顶点。此外,在所选择的宏图块302内的几何形状项目的任何顶点都可以用作子多边形的顶点。此外,在几何形状项目内的所选择的宏图块302的拐角可以用作子多边形的顶点。
在步骤S412中,确定子多边形的边界框。例如,边界框可以是矩形,例如轴线对齐边界框。如上所述,确定轴线对齐边界框是简单的过程,对于子多边形,该过程涉及从子多边形的顶点的坐标中找到最大和最小的x值和y值。需注意,子多边形仅存在于单个宏图块内。此外,如果边界框是轴线对齐边界框,则子多边形的边界框也仅存在于单个宏图块中。
在步骤S414中,将子多边形的边界框的大小与阈值大小进行比较。在一些示例中,以图块粒度确定子多边形的边界框,即,边界框的边界可以与所选择的宏图块中的图块边界对齐。阈值大小可被表示为图块的数量。举例来讲,在步骤S414中使用的阈值大小可以是0.4N,其中N为所选择的宏图块中的图块的数量。在一些示例中,可以将不同数量的图块用作阈值。在其他示例中,阈值大小可被表示为不同于图块数量的值,例如可被表示为面积。
如果在步骤S414中确定子多边形的边界框的大小小于阈值大小,则认为几何形状项目不覆盖所选择的宏图块302的较大比例。因此,不将几何形状项目添加到所选择的宏图块302的宏图块控制列表中,而是可以将几何形状项目添加到宏图块内的一个或多个图块的一个或多个图块控制列表中,并且该方法前进至下文所述的步骤S424。
然而,如果在步骤S414中确定子多边形的边界框的大小大于阈值大小,则几何形状项目可覆盖所选择的宏图块302的“较大”比例。在这种情况下,该方法从步骤S414前进至确定子多边形的面积的步骤S416。技术人员将知道如何确定子多边形的面积。例如,如果子多边形是顶点坐标为(x0,y0)、(x1,y1)和(x2,y2)的三角形,则可以通过计算行列式绝对值的一半来确定三角形的面积(A)。三角形的行列式(TriDet)的值可被定义为:
TriDet=(x1*y2-x2*y1)+(x2*y0-x0*y2)+(x0*y1-x1*y0)。
在步骤S418中,将子多边形的面积与阈值面积进行比较。在不同的示例中,阈值面积可采用不同的值。例如,阈值面积可以是所选择的宏图块302的面积的比例。例如,阈值面积可以是所选择的宏图块的面积的1/4。
因此,步骤S418可涉及确定是否为其中AreaMT为宏图块的面积。在一些示例中,步骤S416和步骤S418可以被组合成单个步骤,使得子多边形的面积A未被明确确定(即,从未明确确定的值),而是该方法可直接用于确定是否为 以便确定子多边形的面积是否大于阈值面积。如果确定子多边形的面积大于阈值面积,则认为几何形状项目相对于所选择的宏图块302是较大的几何形状项目,并且该方法前进至步骤S420。然而,如果确定子多边形的面积不大于(例如,确定小于)阈值面积,则认为几何形状项目相对于所选择的宏图块302不是较大的几何项目,然后方法前进至步骤S424。
在一些示例中,代替确定TriDet的绝对值,可使用TriDet的有符号值,并且根据TriDet的符号,可使用两个条件中的一个条件来确定子多边形的面积是否大于阈值面积。特别地,这些条件是:
为了将子多边形分类为以下任意一种,子多边形的面积的计算不需要非常准确:(i)覆盖所选择的宏图块302的较大面积,或者(ii)不覆盖所选择的宏图块302的较大面积。在不同的示例中,行列式(TriDet)的计算精度可能有所不同。例如,可以样本精度或以较低精度(例如,以图块粒度)来指定用于确定行列式的坐标,例如,使得在所选择的宏图块302内以整数的图块定义坐标。换句话讲,可使用舍入到量化位置的子多边形的顶点的坐标来确定子多边形的面积,并且在一些示例中,量化位置可以与图块之间的边界或图块的块之间的边界对齐。
在一些示例中,可以将所选择的宏图块内的几何形状项目的空间覆盖范围确定为其中存在几何形状项目的所选择的宏图块内的多个第二区域(例如,图块或图块组)。在一些示例中,为了使几何形状项目相对于所选择的宏图块被视为较大的几何形状项目,几何形状项目可能需要在所选择的宏图块内的大于阈值数量的(例如,全部的)第二区域(例如,图块或图块组)内存在。在这些示例中,如果几何形状项目在所选择的宏图块内的大于阈值数量的(例如,全部的)第二区域内存在,则该几何形状项目被包括在所选择的宏图块的宏图块控制列表中,但是如果几何形状项目在所选择的宏图块内的小于阈值数量的(例如,少于全部的)第二区域内存在,则几何形状项目被包括在所选择的宏图块内的存在几何形状项目的相应的一个或多个第二区域(例如,图块或图块组)的一个或多个第二控制列表中。
步骤S408、S414和S418中的所有三个步骤均涉及将所选择的宏图块内的几何形状项目的空间覆盖范围的指示与阈值进行比较,并且使用比较结果来确定是将几何形状项目添加到第一控制列表(例如,所选择的宏图块302的控制列表)还是添加到第二区域的控制列表中的一个或多个控制列表(例如,所选择的宏图块302内的图块的图块控制列表)。
如果该方法前进至步骤S420,则这意指几何形状项目相对于所选择的宏图块302被认为是较大的几何形状项目。在步骤S420中,执行平铺以确定几何形状项目存在于所选择的宏图块302中的哪些子区域。执行平铺以确定几何形状项目存在于渲染空间的哪些区域中的方法在本领域中是已知的。可以对几何形状项目或者对表示与所选择的宏图块302重叠的几何形状项目的部分的子多边形执行平铺。在步骤S420中执行平铺的“子区域”可以是图块或图块组(例如,2×2的图块组)。由于仅针对在所选择的宏图块内被认为较大的几何形状项目执行步骤S420,因此在步骤S420中,几何形状项目通常在所选择的宏图块302内的图块的较大比例(例如,一半以上)中存在,这就是在一些示例中在步骤S420中执行平铺的子区域可以是图块组的原因之一。
在一些示例中,不执行步骤S420。这尽管可以提高系统执行步骤S420的平铺的效率,但省略该平铺步骤不导致任何渲染错误。
在一些示例中,在步骤S420中执行的平铺还包括确定用于该几何形状项目的子区域掩模,以指示该几何形状项目在所选择的宏区块302内的哪些子区域内存在。然而,在一些其他示例中,如果几何形状项目存在于宏图块内的所有子区域中,则几何形状项目将仅被包括在所选择的宏图块302的宏图块控制列表中;并且在这些示例中,无需执行平铺(即,无需执行以下操作:(i)确定几何形状项目在所选择的宏图块302中的哪些子区域中存在,或者(ii)确定子区域掩模),因为如果几何形状项目被包括在宏图块控制列表中,则已知该几何形状项目存在于宏图块内的所有子区域中。
在步骤S422中,几何形状项目被添加到第一控制列表中,即,被添加到所选择的宏图块302的控制列表中。在本文所述的示例中,将几何形状项目添加到控制列表包括将几何形状项目的指示添加到控制列表。如上所述,在步骤S206中,将包括用于多个几何形状项目的数据的图元块存储在变换后的参数存储器124中。控制列表中所包括的几何形状项目的指示可包括相关图元块的指示以及从该图元块中包括的多个几何形状项目中标识几何形状项目的索引。此外,如果在步骤S420中确定了几何形状项目的子区域掩模,则该掩模也将被包括在所选择的宏图块302的控制列表中。在本文所述的示例中,宏图块的控制列表中的条目与一个几何形状项目相关,并且包括几何形状项目的指示(例如,图元块ID和用于在图元块内定位几何形状项目的索引)和子区域掩模,以指示几何形状项目在宏图块内的哪些子区域中存在。
在上述其中不执行步骤S420的示例中,几何形状项目可以被包括在所选择的宏图块302的控制列表中,所选择的宏图块不带有子区域掩模或者带有指示几何形状项目被认为存在于宏图块内的所有子区域内的子区域掩模。在这些示例中,即使在所选择的宏图块302的所有图块中都不存在几何形状项目,也将在渲染阶段针对所选择的宏图块302的所有图块处理几何形状项目。这可导致效率降低,因为在渲染阶段可能不必要地针对一些图块处理几何形状项目,但这不会导致渲染错误,因为如果几何形状项目不存在于图块中,则在渲染阶段执行的采样将确定几何形状项目不存在于图块的任何采样点处,并且因此不会从图块中的几何形状项目生成任何片段。在步骤S422之后,该方法前进至下面描述的步骤S428。
如果该方法(从步骤S408、S414或S418中的任何一个步骤)前进至步骤S424,则这意指认为几何形状项目相对于所选择的宏图块302不是较大的几何形状项目。在步骤S424中,执行平铺来确定几何形状项目存在于所选择的宏图块302中的哪些图块。如上所述,执行平铺来确定几何形状项目存在于渲染空间的哪些图块中的方法在本领域中是已知的。可以对几何形状项目或者对表示与所选择的宏图块302重叠的几何形状项目的部分的子多边形执行平铺。由于仅针对认为在所选择的宏图块内不是较大的几何形状项目执行步骤S424,因此在步骤S424中,几何形状项目通常仅存在于所选择的宏图块302内的图块的较小比例的(例如,小于四分之一的)图块中,这就是在本文所述的示例中在步骤S424中在图块层级(而不是图块组的层级)执行平铺的原因。然而,在其他示例中,可以在图块组(例如,2×2的图块组)的层级执行在步骤S424中执行的平铺。
在步骤S426中,将几何形状项目添加到第二控制列表,即,所选择的宏图块内的存在几何形状项目的图块的一个或多个图块控制列表。在本文所述的示例中,将几何形状项目添加到控制列表包括将几何形状项目的指示添加到控制列表。
在不同的示例中,图块控制列表内的数据结构可能不同。例如,图块的图块控制列表中的条目可包括存储在变换后的参数存储器124中的图元块的指示以及用于指示图元块中的哪些几何形状项目存在于图块内的数据(例如,掩模)。因此,在这些示例中,图块的图块控制列表中的条目可指示来自图元块的多个几何形状项目存在于图块中。因此,当来自图元块的更多几何形状项目被处理时,图块控制列表中的条目可以在几何形状处理阶段被迭代地更新。
需注意,在本文所述的示例中,图块控制列表中的条目的结构与宏图块控制列表中的条目的结构不同。特别地,在本文所述的示例中,宏图块的宏图块控制列表中的条目与(可通过特定图元块中的图元索引指示的)单个几何形状项目相关,并且包括几何形状项目存在于宏图块内的哪些子区域(例如,图块组或图块)中的指示(例如,掩模);与之相反,图块的图块控制列表中的条目与图元块相关,并且包括图元块内的哪些几何形状项目存在于图块中的指示(例如,掩模)。
在步骤S426之后,该方法前进至步骤S428。在步骤S428中,确定是否存在步骤S402中标识的尚未在步骤S404中选择的另一个宏图块。如果还存在一个或多个标识的尚未被选择的宏图块,则该方法返回至步骤S404,使得可相对于几何形状项目选择和处理另一个宏图块。
如果在步骤S428中确定不存在步骤S402中标识但尚未在步骤S404中选择的另一个宏图块,则该方法前进至步骤S430。在步骤S430中,确定在当前渲染中是否还存在其他几何形状项目待处理。如果存在,则该方法返回至步骤S402,并且相对于另一个几何形状项目执行该方法。如果在步骤S430中确定不存在更多的几何形状项目待处理,则处理在步骤S432处结束。此时,当前渲染场景的所有几何形状项目均已处理并且控制列表已确定。如图2的步骤S210所示,然后可以存储控制列表,从而完成几何形状处理阶段。
现在,将通过一些示例来说明如何通过图4所示的方法处理一些几何形状项目,诸如图3所示的图元306和308以及四边形310。对于图元306,将在步骤S402中标识所有四个宏图块3020、3021、3022和3023,因为在这四个宏图块中均存在图元306。在步骤S404中将选择第一宏图块3020。在步骤S406中,将确定图元306的边界框,并且将确定该边界框与宏图块3020之间的重叠面积。从图3中可以看出,该重叠面积将很小,特别是小于在步骤S408中使用的阈值,例如小于宏图块3020的面积的1/4。因此,该方法前进至S424,图元306将被添加到第二控制列表,即,其在宏图块3020内覆盖的图块的图块控制列表,但是将不被添加到宏图块3020的宏图块控制列表。对于宏图块3021,从图3可以看出,图元306的边界框与宏图块3021之间的重叠面积将小于阈值,例如小于宏图块3021的面积的1/4,因此,图元306将被添加到其在宏图块3021内所覆盖的图块的图块控制列表中,但是将不被添加到宏图块3021的宏图块控制列表中。然而,对于宏图块3022,图元306的边界框将与几乎所有宏图块3022重叠,因此该方法前进至步骤S410,在该步骤中确定表示图元306的在宏图块3022内的部分的子多边形。该子多边形的顶点为:(i)V0,(ii)V1,(iii)顶点V1和顶点V2之间的图元306的边缘与宏图块3020和3022之间的边界之间的交点(Int1),(iv)顶点V0和顶点V2之间的图元306的边缘与宏图块3022和3023之间的边界之间的交点(Int2),以及(v)在宏图块3020、3021、3022和3023的拐角上的渲染空间300中心上的点(C)。在步骤S412中,确定子多边形的边界框,并且在步骤S414中确定该边界框的大小大于阈值。该方法前进至步骤S416,在该步骤中,确定子多边形的面积,例如通过将子多边形分解成多个三角形,并且如上所述基于使用三角形的顶点位置计算出的行列式来确定每个三角形的面积。可以将不同三角形的面积相加以得出子多边形的面积。在步骤S418中,将子多边形的面积与阈值面积(例如,宏图块的面积的1/4)进行比较,并且对于图元306,从图3可以看出,宏图块3022中的子多边形的面积覆盖宏图块3022的面积的1/4以上,因此在该示例中,该方法前进至步骤S420和步骤S422,使得图元306将被添加到宏图块3022的宏图块控制列表中,但是将不被添加到宏图块3022内的任何图块的图块控制列表中。对于宏图块3023,从图3可以看出,图元306的边界框与宏图块3023之间的重叠面积将小于阈值,例如小于宏图块3023的面积的1/4,因此,图元306将被添加到其在宏图块3023内所覆盖的图块的图块控制列表中,但是将不被添加到宏图块3023的宏图块控制列表中。
作为另一示例,对于图元308,在步骤S402中将仅标识宏图块3020,然后在步骤S404中对其进行选择。在步骤S406中,确定图元306的边界框,并且该边界框仅覆盖宏图块3020内的单个图块组304。因此,图元308的边界框与宏图块3020之间的重叠面积将较小,特别是小于在步骤S408中使用的阈值,例如小于宏图块3020的面积的1/4。因此,图元308将被添加到其在宏图块3020内覆盖的图块的图块控制列表中,但将不被添加到宏图块3020的宏图块控制列表中。由于图元308不存在于宏图块3021、3022或3023中的任何宏图块中,因此将不被添加到这些宏图块的宏图块控制列表中,也将不被添加到这些宏图块内的任何图块的任何图块控制列表中。
作为另一示例,四边形310被视为由两个三角形图元3100和3101形成的几何形状项目。对于四边形310,将在步骤S402中标识宏图块3021和3023(而不是宏图块3020或3022)。在步骤S404中将选择宏图块3021。在步骤S406中,将确定四边形310的边界框,并且将确定该边界框与宏图块3021之间的重叠面积。从图3中可以看出,该重叠面积将很小,特别是小于在步骤S408中使用的阈值,例如小于宏图块3021的面积的1/4。因此,四边形310将被添加到其在宏图块3021内覆盖的图块的图块控制列表中,但是将不被添加到宏图块3021的宏图块控制列表中。然而,对于宏图块3023,四边形310的边界框将与宏图块3023中的大多数宏图块重叠,因此该方法前进至步骤S410,在该步骤中,确定表示四边形310在宏图块3023内的部分的子多边形。在步骤S412中,确定子多边形的边界框,并且在步骤S414中确定该边界框的大小大于阈值。该方法前进至步骤S416,在该步骤中,确定子多边形的面积,例如通过将子多边形分解成多个三角形,并且如上所述基于使用三角形的顶点位置计算出的行列式来确定每个三角形的面积。可以将不同三角形的面积相加以得出子多边形的面积。在步骤S418中,将子多边形的面积与阈值面积(例如,宏图块的面积的1/4)进行比较,并且对于四边形310,从图3可以看出,宏图块3023中的子多边形的面积覆盖宏图块3023的面积的1/4以上,因此在该示例中,该方法前进至步骤S420和步骤S422,使得四边形310将被添加到宏图块3023的宏图块控制列表中,但是将不被添加到宏图块3023内的任何图块的图块控制列表中。
渲染阶段
如上所述,根据几何形状项目的提交顺序,将变换后的几何形状项目存储在图元块(在本文中一般被称为“数据块”)中。即,应用程序在几何形状项目(例如,图元)中向图形处理系统100提交用于以特定顺序(称为“提交顺序”)进行渲染,并且当几何形状项目被存储在图元块中时将保持此顺序。每个图元块与图元块ID(在本文中通常仅称为“块ID”)相关联。控制列表中的每一个条目包括:用于标识图元块的图元块ID;以及(ii)用于指示来自所标识的图元块的一个或多个图元块的图元指示。被包括在宏图块控制列表中的图元指示可例如包括图元索引,该图元索引指示条目与图元块内的哪一个图元相关。图块控制列表中所包括的图元指示可例如包括图元掩码,该图元掩码指示条目与图元块中的哪一个或哪些图元相关。
由渲染逻辑执行的渲染阶段使用图5a的流程图所示的方法。该方法遵循与上述图2的步骤S212至步骤S218所示的类似的方法。然而,现在对于每个待渲染的图块,可存在指示该图块中存在的几何形状项目的一个以上的控制列表。例如,可存在图块的图块控制列表以及图块所在的宏图块的宏图块控制列表。因此,可使用下列两者来渲染图块内的几何形状项目:(i)图块作为其一部分的宏图块的宏图块控制列表,以及(ii)图块的图块控制列表。在一些示例中,可存在两个以上的与特定图块相关的控制列表,并且在这些示例中,可使用这两个以上的控制列表来渲染图块内的几何形状项目。
因此,渲染阶段包括,在步骤S502中,获取与渲染图块相关的控制列表(例如,图块的图块控制列表和图块作为其一部分的宏图块的宏图块控制列表)。
由于存在标识待获取用于渲染图块的几何形状项目的一个以上的控制列表,因此获取几何形状项目的过程更加复杂。特别地,应当根据几何形状项目被提交给图形处理系统的提交顺序来获取这些几何形状项目。例如,图块可以与宏图块控制列表522和图块控制列表524相关联,如图5b所示。这两个控制列表被一同并行处理。针对控制列表中的每一个控制列表维护一个指针。例如,针对宏图块控制列表522维护指针526,并且针对图块控制列表524维护指针528。指针指示正在处理的控制列表的当前条目。最初,指针526和指针528均指向相应控制列表中的第一条目(如图5b所示)。该方法的步骤S504包括从两个控制列表中选择先前未被选择的最低图元块ID(即,由指针指示的条目的图元块ID)。在步骤S506中,根据带有所选择的图元块ID的图元块的图元指示,从带有所选择的图元块ID的图元块获取一个或多个几何形状项目。当已经从控制列表中选择条目时,则在步骤S508中,对该控制列表的指针进行修改(即,更新)以指向该控制列表中的下一个条目。
在步骤S510中,处理所获取的几何形状项目,从而渲染几何形状项目,例如通过对图元执行采样来确定图块内的样本位置处的图元片段,然后对这些片段执行隐藏表面消除和纹理化和/或着色来确定渲染值。如上所述,采样可以被称为“光栅化”或“扫描转换”。在步骤S512中,确定在控制列表522和控制列表524中的任一个控制列表中是否存在更多条目。这可以通过确定指针是否已到达相应控制列表的末尾来完成。如果在任一控制列表中至少还有一个条目,则方法返回至步骤S504,使得可以处理下一个条目。如果在步骤S512中确定控制列表中没有更多条目,则该方法前进至步骤S514。在步骤S514中,然后可以发送渲染值以用于存储。渲染值可表示从视点查看的场景图像。在一些示例中,渲染值可表示可被存储在纹理存储器中的纹理,例如使得渲染的纹理可被应用于随后渲染的场景内的表面。
假设在图5b所示的示例中,正在渲染的当前图块在宏图块的第一图块的块中。图块控制列表524中的第一条目将被首先选择(在步骤S504中),因为它具有最低的图元块ID。图元掩码指示将获取来自图元块1的第二图元、第四图元和第六图元。接下来,将选择宏图块控制列表522中的第一条目,并且从图元块2中获取第七图元,因为该条目中的图块的图块掩码在第一位置具有“1”,这意指宏图块控制列表522中的条目与渲染当前图块相关。宏图块控制列表522中的第二条目在图块的图块掩码的第一位置具有“0”,因此该条目与当前图块无关,所以指针526移动至宏图块控制列表522中的第三条目。接下来,将选择宏图块控制列表522中的第三条目,因为该第三条目具有比图块控制列表524中的第二条目更低的图元块ID,并且将从图元块3获取第一图元。接下来,将选择图块控制列表524中的第二条目,因为该第二条目具有比宏图块控制列表522中的第四条目更低的图元块ID,并且将获取来自图元块4的第一图元、第四图元和第八图元。
接下来,指针526将指向宏图块控制列表522中的第四条目,并且指针528将指向图块控制列表524中的第三条目。这些条目都具有相同的图元块ID。在这种情况下,宏图块控制列表条目中的图元索引与来自图块控制列表条目的图元掩码合并,以确定将从图元块获取哪些图元。换句话讲,如果先前未被选择的最低图元块ID在宏图块控制列表522和图块控制列表524两者中(即,如果指针526和指针528指向带有匹配图元块ID的条目),则形成合并的图元掩码,该图元掩码基于宏图块控制列表522的条目中的图元索引和图块控制列表524的条目中的图元掩码来标识来自带有所述最低图元块ID的图元块的图元。在该示例中,图元块5的合并图元掩码将是01000010。因此,将获取来自图元块5的第二图元和第七图元。需注意,在该示例中,图元索引从1开始,使得例如来自图元块的“第一”图元的图元索引为1,并且来自图元块的“第二”图元的图元索引为2,等等。在其他示例中,图元索引可以从零开始,使得例如来自图元块的“第一”图元的图元索引为0,并且来自图元块的“第二”图元的图元索引为1,依此类推。
然后最后在图5b所示的示例中,将选择图块控制列表524中的第四条目,并且将获取来自图元块6的第一图元、第五图元、第七图元和第八图元。
具有两个以上层级的分层平铺
在以上参考图4、图5a和图5b所述的示例中,只有两个层级的平铺,即,可以将几何形状项目添加到控制列表的两个层级:在宏图块层级或在较低层级(例如,图块层级或图块组层级)。然而,在其他示例中,可存在两个以上层级的平铺。在这些示例中,该方法将确定几何形状项目是否可以被认为在顶部层级平铺处“较大”,即,相对于正在创建控制列表的渲染空间的最大区域。如果几何形状项目相对于顶部层级区域较大,则将几何形状项目添加到该顶部层级区域的控制列表中,而不添加到顶部层级区域内的较低层级区域的控制列表中。然而,如果几何形状项目相对于顶部层级区域不大,则该方法可以降低一个层级并且确定几何形状项目相对于新层级的任何区域是否较大。可以如上所述(例如,通过将边界框或面积与阈值进行比较)确定几何形状项目相对于区域是否较大,而与该区域位于区域的层次结构中的层级无关。层次结构可具有许多层级。
例如,在存在三个层级的平铺的情况下,渲染空间可以被细分成多个顶部层级区域(例如,宏图块),每个宏图块可以被细分成多个中间层级区域(例如,表示4×4组的图块的图块组),并且每个图块组可以被细分成多个底部层级区域(例如,图块)。在该示例中,该方法可以标识几何形状项目存在于顶部层级区域中的哪些顶部层级区域中。针对每个所标识的顶部层级区域,确定所标识的顶部层级区域内几何形状项目的空间覆盖范围的指示(例如,作为所标识的顶部层级区域和几何形状项目的边界框或面积之间的重叠)。空间覆盖范围的指示用于确定是将几何形状项目添加到所标识的顶部层级区域(例如,宏图块)的顶部层级控制列表(例如,宏图块控制列表),还是继续在较低层级的平铺(例如,在中间层级)处理几何形状项目。在中间层级的平铺处,该方法标识几何形状项目存在于哪些中间层级区域(例如,图块组)内。针对每个所标识的中间层级区域,确定所标识的中间层级区域内几何形状项目的空间覆盖范围的指示(例如,作为所标识的中间层级区域和几何形状项目的边界框或面积之间的重叠)。空间覆盖范围的指示用于确定是将几何形状项目添加到所标识的中间层级区域的中间层级控制列表(例如,图块组控制列表),还是将几何形状项目添加到底部层级的一个或多个控制列表(例如,图块的图块控制列表)。在诸如其中存在三个层级的平铺的示例中:中间层级区域(例如,图块组)可以被称为“第一区域”,并且中间层级控制列表可以被称为“第一控制列表”;底部层级区域(例如,图块)可以被称为“第二区域”,并且底部层级控制列表可以被称为“第二控制列表”;并且顶部层级区域(例如,宏图块)可以被称为“第三区域”,并且顶部层级控制列表可以被称为“第三控制列表”。
在创建控制列表的层级大于两个(例如,三个)层级的示例中,在渲染阶段,当渲染特定图块时,可存在两个以上的(例如,三个)控制列表,这些控制列表与渲染特定图块相关,并且所有这些控制列表将被一起处理。针对控制列表中的每一个控制列表维护一个指针,以跟踪不同控制列表中的哪些几何形状项目已被处理,以确保按提交顺序渲染特定图块的几何形状项目,即使几何形状项目可以被包括在多个单独的控制列表中。例如,如果存在三个层级的平铺,并且在宏图块层级、图块组层级和图块层级创建了控制列表,则在渲染特定图块时,所使用的三个控制列表是特定图块的图块控制列表,特定图块作为其一部分的图块组的图块组控制列表,以及图块组、特定图块作为其一部分的宏图块的宏图块控制列表。
总覆盖范围
在一些示例中,如上所述,如果几何形状项目完全覆盖第一区域,则该几何形状项目可仅被包括在第一区域的第一控制列表(例如,宏图块的宏图块控制列表)中。因此,在这些示例中,在仅存在两个层级的平铺(例如,宏图块层级和图块层级)的情况下,确定几何形状项目相对于宏图块的空间覆盖范围的指示,并且如果空间覆盖范围的所确定的指示表明几何形状项目完全覆盖宏图块,则将几何形状项目添加到该宏图块的宏图块控制列表中,而如果空间覆盖范围的所确定的指示表明几何形状项目不完全覆盖宏图块,则将几何形状项目添加到宏图块内的存在几何形状项目的一个或多个图块的一个或多个图块控制列表中。
在这些示例中,仅当几何形状项目完全覆盖宏图块时,才将其包括在宏图块控制列表中。例如,该方法可包括:通过确定几何形状项目是否与宏图块的整个面积重叠,或者通过确定几何形状项目是否在宏图块内的每个样本位置处存在来确定几何形状项目是否完全覆盖(即,全部覆盖)宏图块。如上所述,在用于渲染特定图块的渲染阶段期间,对几何形状项目执行的步骤之一是对几何形状项目执行采样,以便确定几何形状项目存在于特定图块内的哪些样本位置处。然而,在这些示例中,如果几何形状项目完全覆盖宏图块,则该几何形状项目仅被包括在宏图块控制列表中,那么几何形状项目在宏图块控制列表中的存在意指几何形状项目存在于宏图块内的每个样本位置。因此,当对宏图块内的特定图块执行渲染时,针对被包括在相关的宏图块控制列表中的几何形状项目,可以跳过对几何形状项目执行采样来确定几何形状项目存在于特定图块内的哪些样本位置处的步骤,因为已知这些几何形状项目将存在于特定图块内的每个样本位置处。换句话讲,图块内的几何形状项目的渲染可包括(例如,通过对几何形状项目执行采样)选择性地处理几何形状项目以确定图块内的哪些采样点被几何形状项目覆盖,其中针对宏图块控制列表中的几何形状项目跳过该处理(例如,对几何形状项目进行采样),因为已知宏图块控制列表中的几何形状项目覆盖图块内的所有采样点。跳过对几何形状项目进行采样以便确定几何形状项目存在于特定图块内的哪些样本位置所涉及的处理,可以减少渲染阶段所需的处理量,这可具有技术优势,诸如降低功耗和减少延迟。
然而,在一些示例中,如上所述,即使几何形状项目不完全覆盖宏图块,但如果几何形状项目相对于相应的宏图块“较大”,则可以被包括在宏图块控制列表中。此外,在上述所有示例中,几何形状项目可以被包括在其存在的图块的图块控制列表中,而与几何形状项目是否完全覆盖图块无关。因此,在某些情况下,几何形状项目存在于区域的控制列表中的信息不足以确定该几何形状项目是否完全覆盖该区域。因此,在一些示例中,可以为几何形状项目存储一些额外的数据,例如在区域的控制列表中,以指示几何形状项目是否完全覆盖该区域。该额外数据可以是控制列表中包括的每个几何形状项目的标志(例如,一位标志),以指示几何形状项目是否完全覆盖与控制列表相关联的区域。
在几何形状处理阶段确定几何形状项目是否完全覆盖区域的概念,如果确定几何形状项目完全覆盖区域,则跳过在渲染阶段对几何形状项目执行采样(即,以便确定在特定图块中的哪些样本位置处存在几何形状项目)所涉及的处理可以在如上所述的使用多层平铺的系统中使用,但是也可以在其他系统中使用,例如不使用多层平铺的系统,即,使用单层平铺的系统。
图6示出了渲染空间的区域602和两个图元604和606的示例。区域602可以例如是图块或一组图块。在图6所示的示例中,区域602是方形,但是在其他示例中,该区域可以是其他形状,例如矩形。在图6所示的示例中,两个图元604和606是三角形,但是在其他示例中,图元可以是其他形状。
参考图7的流程图描述了一种渲染图元的方法,该方法使用跳过对完全覆盖渲染空间区域的图元进行采样处理(即,以便确定图元存在于特定图块内的哪些样本位置)的概念。类似于上述示例,图7所示的方法包括由几何形状处理逻辑(例如,几何形状处理逻辑104)执行的几何形状处理阶段,随后是由渲染逻辑(例如,渲染逻辑106)执行的渲染阶段。在几何形状处理阶段中,对几何形状项目(例如,图元)进行处理以确定哪些图元(以及其他几何形状项目)存在于渲染空间的哪些区域(例如,图块、图块组或宏图块)中。然后,在渲染阶段,可通过检索与该区域相关的所有几何形状(而不是与该区域无关的几何形状)来渲染区域,然后可以对所检索的几何形状进行处理以确定区域内的每个采样点的渲染值。如上所述,对于区域中的每一个像素可存在一个或多个采样点。
在步骤S702中,对图元进行处理(例如,通过执行“平铺”)来标识图元存在于哪些区域(例如,图块)。执行平铺的方法在本领域中是已知的,其中一些方法如上所述。
在步骤S704中,选择所标识的区域中的一个区域。
在步骤S706中,存储指示图元存在于所标识的区域内的数据。例如,可以(例如,在控制列表中)存储区域的图元指示数据以指示该区域的所确定的图元。
在步骤S708中,几何形状处理逻辑确定图元是否完全覆盖该区域。如果在步骤S708中确定图元完全覆盖该区域,则在步骤S710中存储该图元的数据以指示该区域的总覆盖范围。例如,用于图元的存储数据可包括用于指示区域的总覆盖范围的标志。然而,如果在步骤S708中确定图元不完全覆盖区域,则绕过步骤S710,即不执行该步骤,并且该方法从步骤S708转至步骤S712。在一些示例中,如果确定图元不完全覆盖该区域,则可以存储该图元的数据以指示该图元不完全覆盖该区域。所存储的数据(例如,标志)可以与图元指示数据一起存储在区域的控制列表中,该图元指示数据指示该区域中存在哪些图元。因此,区域的控制列表可包括对存在于该区域内的图元的指示,并且对于每个所指示的图元,可存在用于指示图元是否完全覆盖该区域的指示(例如,一位标志)。
在不同的示例中,执行步骤S708的方式,即确定图元是否完全覆盖区域的方式可以不同。例如,在步骤S708中,区域可以被认为是面积,使得确定图元是否完全覆盖该区域的步骤包括确定图元是否覆盖该区域的整个面积。在一些替代示例中,可以考虑区域内的采样点的位置,使得确定图元是否完全覆盖该区域的步骤包括确定图元是否覆盖该区域中的每一个采样点。
确定图元是否完全覆盖区域的步骤S708可包括通过以下方式处理图元的每个边缘:(i)确定该区域的哪些拐角最有可能在边缘之外,以及(ii)确定所确定的拐角是否在边缘内。执行这两个确定的方法在所属领域中是已知的。确定所确定的拐角是否在边缘内部可使用涉及描述边缘和所确定的拐角的位置的直线方程的计算。如果确定所有确定的拐角均在相应的边缘内部,则图元将完全覆盖该区域,但是如果对于图元的任何边缘,所确定的拐角均在边缘之外,则图元将不完全覆盖该区域。例如,参考图6,对于图元604,针对左上边缘,拐角C0是最有可能在边缘之外的区域602的拐角,并且可以看出该拐角C0在图元604的左上边缘之外。这样,确定图元604不完全覆盖区域602。
对于图元606,针对左侧边缘,将确定拐角C0最有可能在边缘之外,但是将确定拐角C0在图元606的左侧边缘内部。类似地,对于图元606的右上边缘,将确定拐角C1最有可能在边缘之外,但是将确定拐角C1在图元606的右上边缘内部。类似地,对于图元606的底部边缘,将确定拐角C3最有可能在边缘之外,但将确定拐角C3在图元606的底部边缘内部。因此,将确定图元606完全覆盖区域602。
执行用于确定拐角点是否在边缘内部的计算所涉及的处理(例如,评估直线方程)可能是重要的,例如就系统的功耗和延迟而言,特别是因为它们可针对许多(例如,数百万个)图元以及针对许多(例如,数千个)区域执行。因此,在一些示例中,在某些情况下可以避免这些计算中的至少一些计算。特别地,通过简单的测试就可以确定图元绝对不完全覆盖某个区域。当三角形图元完全覆盖区域(其中该区域为矩形(术语“矩形”包含方形))时,图元的边界框的尺寸必须大于或等于该区域的相应尺寸的大小,并且边界框的至少一个尺寸必须大于或等于该区域的相应尺寸的两倍。因此,确定图元是否完全覆盖区域的步骤可包括通过以下操作来标识图元绝对不完全覆盖区域:确定图元的边界框(例如,轴线对齐边界框,即,与矩形区域的取向对齐的矩形边界框),确定边界框在水平方向和竖直方向上的大小,然后将边界框在水平方向(BBx)上的大小与区域在水平方向(Rx)上的大小进行比较,并且将边界框在竖直方向(BBy)上的大小与区域在竖直方向(Ry)上的大小进行比较。如果满足以下任一条件,则确定图元不完全覆盖区域:(i)BBx<Rx,(ii)BBy<Ry,或者(iii)(BBx<2Rx)AND(BBy<2Ry),而无需执行涉及图元边缘的直线方程的上述计算(可被称为覆盖范围测试)。如果不满足所有这些条件,则仍然需要做出关于完全覆盖的确定性决定。在这种情况下,该方法可以继续对图元执行覆盖范围测试以做出该确定。如上所述,可通过使用边界框来减少覆盖范围测试的次数,这可使系统中的处理功率和延迟减少。需注意,在计算上,确定图元的边界框(例如,轴线对齐边界框)非常简单,并且将边界框的大小与区域的大小进行比较以便确定是否满足上文提及的三个条件。
在步骤S712中,几何形状处理逻辑确定是否存在图元的更多标识区域。如果存在,则方法返回至步骤S704,在该步骤中,为区域选择另一个标识区域,并且针对新选择的区域执行方法步骤S706至S710。如果在步骤S712中确定不存在图元的更多的标识区域,则该方法前进至步骤S714,在该步骤中,确定在几何形状处理阶段是否存在当前渲染的任何待处理的其他图元。如果在当前渲染中存在另一个尚未处理的图元,则该方法返回至步骤S702,并且对新图元执行该方法。然而,如果在当前渲染中没有其他尚未处理的图元,则当前渲染的几何形状处理阶段将完成。
然后可以开始渲染阶段。如上所述,可以通过例如以区域为单位来渲染逻辑来执行渲染阶段,例如以图块为单位来渲染。这样,可以独立地渲染各个区域。区域的控制列表标识哪些图元与渲染特定区域相关,例如哪些图元存在于特定区域。在步骤S716中,可以检索存在于区域中的图元的存储数据。该存储的数据可包括描述图元的数据(诸如位置和属性数据),并且还可以包括在几何形状处理阶段中存储的用于指示图元是否完全覆盖区域的数据。
对区域的渲染阶段的一部分是执行采样来确定区域内的图元所存在的采样点,并且确定图元所在的采样点处的图元片段。如上所述,该过程可以被称为“扫描转换”或“光栅化”。如果已知图元完全覆盖区域,则已知图元存在于该区域内的每个采样点处,而无需执行任何进一步的处理(例如,上述采样)来确定。因此,渲染阶段包括基于所检索的数据选择性地处理区域中存在的图元,以确定图元覆盖该区域内的哪些采样点,其中,如果所检索的数据指示特定图元的区域总覆盖范围,则跳过确定该区域内的哪些采样点被特定图元覆盖的处理。特别地,在步骤S718中,渲染逻辑确定图元的检索数据是否指示图元完全覆盖区域,并且如果图元完全覆盖区域,则该方法针对该图元前进至步骤S722,即跳过或绕过步骤S720。然而,在步骤S718中确定图元不完全覆盖该区域,然后该方法将从步骤S718前进至步骤S720,在该步骤中执行采样以便确定图元覆盖区域内的哪些采样点。
例如,当渲染逻辑正在渲染区域602时,图元604和图元606两者将被指示为存在于区域602内。将在图元606的几何形状处理阶段期间存储数据,以指示图元完全覆盖区域602,但图元604并不完全覆盖区域。因此,在渲染阶段期间,当处理图元604时,在步骤S720中执行采样,以便确定图元604存在于区域602的哪些采样点处。然而,在渲染阶段,当处理图元606时,可以跳过采样(即,步骤S720),并且渲染逻辑确定图元存在于区域602内的所有采样点处,而无需针对图元执行采样。
在步骤S722中,对表示区域内的采样点处的图元的图元片段进行处理以便确定采样点处的渲染值。换句话讲,基于覆盖相应采样点的图元,在区域内的采样点处确定渲染值。该渲染使用存在于区域中的每一个图元的图元数据(例如,在图元存在的每个采样点处插值的图元数据)。步骤S722涉及通过执行处理诸如隐藏表面消除、纹理化和/或着色来处理图元片段以确定渲染值。在步骤S722中执行的片段处理操作在本领域中是已知的,并且可以在不同示例中以不同方式执行。
对渲染空间内的每个区域执行渲染阶段,使得可针对整个渲染确定渲染值。渲染值可被提供给存储器,例如用于存储在帧缓冲器中。渲染值可表示从视点查看的场景图像。在一些示例中,渲染值可表示待应用于场景中的表面的纹理。可以任何适当的方式使用渲染值,例如,如果渲染值表示场景的图像,则可以将其显示在显示器上或存储在存储器中或传输至其他设备,等等。
图8示出了计算机系统,其中可以实现本文所述的图形处理系统。计算机系统包括CPU 802、GPU 804、存储器806和其他装置808,例如显示器810、扬声器812及相机814。计算机系统的部件可以通过通信总线816彼此进行通信。存储器806的至少一部分可以用作图1所示的存储器102。
图1的图形处理系统被示出为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,由图形处理系统形成的本文所述的中间值不需要由图形处理系统在任何时间点物理地生成,并且可以仅表示方便地描述由图形处理系统在其输入与输出之间执行的处理的逻辑值。
本文中所描述的图形处理单元可以在集成电路上体现为硬件。本文中所描述的图形处理单元可配置成执行本文所描述的任一种方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序代码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行代码的一个或多个处理器执行,所述代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可以由机器存取的其他存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。也就是说,可以提供一种其上编码有集成电路定义数据集形式的计算机可读程序代码的计算机可读存储介质,当在集成电路制造系统中处理(即,运行)时,该计算机可读程序代码将该系统配置成制造被配置成执行本文所述任何方法的图形处理系统,或者制造包括本文所述任何装置的图形处理系统。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统中制造如本文所述的图形处理系统的方法。此外,可以提供一种集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集使制造图形处理系统的方法得以执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制c造定义,该软件环境包括电路元件的定义和用于组合这些元件以生成由该表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参照图9描述在集成电路制造系统处处理集成电路定义数据集以便将该系统配置为制造图形处理系统的示例。
图9示出了集成电路(IC)制造系统902的示例,该集成电路制造系统被配置为制造如本文任何示例中描述的图形处理系统。特别地,IC制造系统902包括布局处理系统904和集成电路生成系统906。IC制造系统902被配置为接收IC定义数据集(例如,定义如本文任何示例中描述的图形处理系统)、处理IC定义数据集以及根据IC定义数据集来生成IC(例如,其体现如本文任何示例中所述的图形处理系统)。通过对IC定义数据集的处理,将IC制造系统902配置为制造体现如本文任何示例中描述的图形处理系统的集成电路。
布局处理系统904配置成接收并处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统904已经确定电路布局时,其可将电路布局定义输出到IC生成系统906。电路布局定义可以是例如电路布局描述。
如所属领域中已知,IC生成系统906根据电路布局定义来生成IC。举例来说,IC生成系统906可实施生成IC的半导体装置制造工艺,其可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代地,提供给IC生成系统906的电路布局定义可呈计算机可读代码的形式,IC生成系统906可使用所述计算机可读代码来形成用于生成IC的合适掩码。
由IC制造系统902执行的不同过程可全部在一个位置例如由一方来实施。替代地,IC制造系统902可以是分布式系统,使得一些过程可在不同位置执行,并且可由不同方来执行。例如,以下阶段中的一些可以在不同位置和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其他示例中,在集成电路制造系统中对集成电路定义数据集的处理可以将该系统配置成在不处理IC定义数据集以确定电路布局的情况下制造图形处理系统。举例来说,集成电路定义数据集可以定义例如FPGA的可重新配置的处理器的配置,并且对所述数据集进行的处理可以将IC制造系统配置成(例如,通过将配置数据加载到FPGA)生成具有所述定义的配置的可重新配置的处理器。
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,由集成电路制造定义数据集以上文参考图9描述的方式对集成电路制造系统进行配置,可以制造如本文所述的装置。
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图9所示的示例中,IC生成系统可以由集成电路定义数据集进一步配置为在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实现方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实现方式可以引起性能改进。性能改进可以包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实现方式的改进(诸如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个实例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
Claims (21)
1.一种在图形处理系统中渲染几何形状项目的方法,其中所述图形处理系统被配置成使用被细分成多个第一区域的渲染空间,所述第一区域中的每一个第一区域被细分成所述渲染空间内的多个第二区域,其中所述方法包括:
处理多个几何形状项目,所述多个几何形状项目包括存在于所述第一区域中的两个或更多个第一区域中的至少一个几何形状项目,其中通过以下方式处理所述多个几何形状项目中的每一个几何形状项目:
标识所述几何形状项目存在于所述第一区域中的哪些第一区域中;以及
针对每个所标识的第一区域:
确定所述几何形状项目在所标识的第一区域内的空间覆盖范围的指示;以及
使用所标识的第一区域内的所述空间覆盖范围的所确定的指示来确定是将所述几何形状项目添加到所标识的第一区域的第一控制列表中还是将所述几何形状项目添加到所标识的第一区域内的所述第二区域中相应的一个或多个第二区域的一个或多个第二控制列表中;以及
使用下列两者来渲染第二区域内的几何形状项目:(i)所述第二区域作为其一部分的所述第一区域的所述第一控制列表,以及(ii)所述第二区域的所述第二控制列表。
2.如权利要求1所述的方法,其中所述使用所标识的第一区域内的所述空间覆盖范围的所确定的指示包括:
将所述空间覆盖范围的所确定的指示与阈值进行比较;以及
使用所述比较的结果来确定是将所述几何形状项目添加到所述第一控制列表还是添加到所述一个或多个第二控制列表中。
3.如权利要求1或2所述的方法,其中所述确定所述几何形状项目在所标识的第一区域内的所述空间覆盖范围的指示包括,确定表示所标识的第一区域内的所述几何形状项目的一部分的子多边形。
4.如权利要求3所述的方法,还包括:
确定所述子多边形的边界框;以及
将所述子多边形的所述边界框的大小与阈值大小进行比较,其中如果所述边界框的所述大小小于所述阈值大小,则将所述几何形状项目添加到所述一个或多个第二控制列表中。
5.如权利要求4所述的方法,其中如果所述子多边形的边界框的大小大于所述阈值大小,则所述方法还包括将所述子多边形的面积与阈值面积进行比较,其中如果所述子多边形的所述面积小于所述阈值面积,则将所述几何形状项目添加到所述一个或多个第二控制列表,并且其中如果所述子多边形的所述面积大于所述阈值面积,则将所述几何形状项目添加到所述第一控制列表。
6.如权利要求3所述的方法,其中所述确定所述几何形状项目在所标识的第一区域内的所述空间覆盖范围的指示还包括:
确定所述子多边形的所述面积;以及
将所述子多边形的所确定的面积与阈值面积进行比较,其中如果所述子多边形的所述面积小于所述阈值面积,则将所述几何形状项目添加到所述一个或多个第二控制列表中,并且其中如果所述子多边形的所述面积大于所述阈值面积,则将所述几何形状项目添加到所述第一控制列表中。
7.如权利要求5或6所述的方法,其中使用舍入到量化位置的所述子多边形的顶点的坐标来确定所述子多边形的所述面积,
其中所述量化位置与所述第二区域之间的边界或第二区域的块之间的边界对齐。
8.如权利要求1至3中任一项所述的方法,其中所述确定所述几何形状项目在所标识的第一区域内的所述空间覆盖范围的指示包括,确定所述第一区域内的存在所述几何形状项目的第二区域的数量。
9.如权利要求8所述的方法,其中,
如果所述几何形状项目在所述第一区域内的大于阈值数量的所述第二区域内存在,则所述几何形状项目被包括在所述第一区域的所述第一控制列表中,以及
如果所述几何形状项目在所述第一区域内的小于所述阈值数量的所述第二区域内存在,则所述几何形状项目被包括在所述第一区域内的存在所述几何形状项目的相应的一个或多个第二区域的所述一个或多个第二控制列表中。
10.如权利要求8所述的方法,其中,
如果所述几何形状项目在所述第一区域内的所有第二区域内存在,则所述几何形状项目被包括在所述第一区域的所述第一控制列表中,以及
如果所述几何形状项目在所述第一区域内的少于全部的所述第二区域内存在,则所述几何形状项目被包括在所述第一区域内的存在所述几何形状项目的所述相应的一个或多个第二区域的所述一个或多个第二控制列表中。
11.如前述权利要求中任一项所述的方法,其中所述使用所标识的第一区域内的所述空间覆盖范围的所确定的指示包括:
如果所述空间覆盖范围的所确定的指示表明所述几何形状项目完全覆盖所标识的第一区域,则将所述几何形状项目添加到所述第一控制列表中,以及
如果所述空间覆盖范围的所确定的指示表明所述几何形状项目不完全覆盖所标识的第一区域,则将所述几何形状项目添加到所标识的第一区域内的存在所述几何形状项目的所述相应的一个或多个第二区域的所述一个或多个第二控制列表,
其中所述渲染第二区域内的几何形状项目包括选择性地处理几何形状项目以确定所述第二区域内的哪些采样点被所述几何形状项目覆盖,其中跳过针对所述第一控制列表中的几何形状项目的所述处理,因为已知所述第一控制列表中的几何形状项目覆盖所述第二区域内的所有采样点。
12.如前述权利要求中任一项所述的方法,其中所述几何形状项目根据所述几何形状项目的提交顺序存储在数据块中,其中每个数据块与块ID相关联,并且其中所述控制列表中的条目包括带有用于标识数据块并且指示来自所标识的数据块的一个或多个几何形状项目的几何形状指示的块ID。
13.如权利要求12所述的方法,其中所述渲染第二区域内的几何形状项目包括:
从所述第二区域作为其一部分的所述第一区域的所述第一控制列表和所述第二区域的所述第二控制列表中选择先前未选择的所述最低块ID;并且
根据带有所选择的块ID的所述数据块的所述几何形状指示,从带有所选择的块ID的所述数据块获取一个或多个几何形状项目。
14.如权利要求13所述的方法,其中如果先前未选择的所述最低块ID在所述第二区域作为其一部分的所述第一区域的所述第一控制列表和所述第二区域的所述第二控制列表两者中,则所述方法包括基于所述第一控制列表和所述第二控制列表的所述几何形状指示来形成从带有所述最低块ID的所述数据块中标识几何形状项目的合并的几何形状指示。
15.如前述权利要求中任一项所述的方法还包括,针对每个所标识的第一区域,如果将几何形状项目添加到所标识的第一区域的所述第一控制列表中:
确定所述几何形状项目的子区域掩模,以指示所述几何形状项目在所述第一区域内的多个子区域中的哪些子区域中存在;以及
在所述第一控制列表中包括所述几何形状项目的所述子区域掩模,其中:
所述子区域是所述第一区域内的第二区域,或者
所述子区域是所述第一区域内的第二区域的组。
16.如前述权利要求中任一项所述的方法,其中将几何形状项目添加到控制列表包括将所述几何形状项目的指示添加到所述控制列表。
17.如前述权利要求中任一项所述的方法,其中所述渲染空间被细分成多个第三区域,其中所述第三区域中的每一个第三区域对应于所述渲染空间内的一组第一区域,其中所述处理几何形状项目包括:
标识所述几何形状项目存在于所述第三区域中的哪些第三区域中;以及
针对每个所标识的第三区域:
确定所述几何形状项目在所标识的第三区域内的所述空间覆盖范围的指示;以及
使用所标识的第三区域内的所述空间覆盖范围的所确定的指示来确定是将所述几何形状项目添加到所标识的第三区域的第三控制列表,还是继续进行对所述几何形状项目的所述处理;以及
其中进一步使用下列两者来渲染第二区域内的所述几何形状项目:(iii)所述第一区域和所述第二区域作为其一部分的所述第三区域的所述第三控制列表。
18.如前述权利要求中任一项所述的方法,其中所述几何形状项目在待从视点渲染的3D场景内,并且其中所述渲染几何形状项目生成表示从所述视点查看的所述场景的图像的图像值。
19.一种图形处理系统,所述图形处理系统被配置成使用被细分成多个第一区域的渲染空间来渲染几何形状项目,所述第一区域中的每一个第一区域在所述渲染空间内被细分成多个第二区域,其中所述图形处理系统包括:
几何形状处理逻辑,所述几何形状处理逻辑被配置成处理包括存在于所述第一区域中的两个或更多个第一区域中的至少一个几何形状项目中的多个几何形状项目,其中所述几何形状处理逻辑被配置成通过以下方式处理所述多个几何形状项目中的每一个几何形状项目:
标识所述几何形状项目存在于所述第一区域中的哪些第一区域中;以及
针对每个所标识的第一区域:
确定所述几何形状项目在所标识的第一区域内的空间覆盖范围的指示;以及
使用所标识的第一区域内的所述空间覆盖范围的所确定的指示来确定是将所述几何形状项目添加到所标识的第一区域的第一控制列表中还是将所述几何形状项目添加到所标识的第一区域内的所述第二区域中相应的一个或多个第二区域的一个或多个第二控制列表中;以及
渲染逻辑,所述渲染逻辑被配置成使用下列两者来渲染第二区域内的几何形状项目:(i)所述第二区域作为其一部分的所述第一区域的所述第一控制列表,以及(ii)所述第二区域的所述第二控制列表。
20.一种计算机可读存储介质,其上存储有计算机可读代码,所述计算机可读代码被配置成在运行所述代码时使得根据权利要求1至18中任一项所述的方法被执行。
21.一种计算机可读存储介质,其上存储有集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中被处理时,配置所述集成电路制造系统以制造如权利要求19所述的图形处理系统。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2001716.6 | 2020-02-07 | ||
GB2001716.6A GB2591802B (en) | 2020-02-07 | 2020-02-07 | Graphics processing method and system for rendering items of geometry based on their size |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113256760A true CN113256760A (zh) | 2021-08-13 |
Family
ID=69897108
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110163454.0A Pending CN113256762A (zh) | 2020-02-07 | 2021-02-05 | 用于在图形处理系统中生成用于图块组的控制流的方法和控制流生成器 |
CN202110163427.3A Pending CN113256760A (zh) | 2020-02-07 | 2021-02-05 | 图形处理方法和系统 |
CN202110163452.1A Pending CN113256761A (zh) | 2020-02-07 | 2021-02-05 | 用于在图形处理系统中分层存储平铺信息的数据结构、方法和平铺引擎 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110163454.0A Pending CN113256762A (zh) | 2020-02-07 | 2021-02-05 | 用于在图形处理系统中生成用于图块组的控制流的方法和控制流生成器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110163452.1A Pending CN113256761A (zh) | 2020-02-07 | 2021-02-05 | 用于在图形处理系统中分层存储平铺信息的数据结构、方法和平铺引擎 |
Country Status (4)
Country | Link |
---|---|
US (7) | US11610358B2 (zh) |
EP (3) | EP3862976A1 (zh) |
CN (3) | CN113256762A (zh) |
GB (1) | GB2591802B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2526598B (en) * | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
EP3249612B1 (en) * | 2016-04-29 | 2023-02-08 | Imagination Technologies Limited | Generation of a control stream for a tile |
GB2611376B (en) | 2022-03-30 | 2023-11-01 | Imagination Tech Ltd | Multi-core draw splitting |
GB2611373A (en) * | 2022-03-30 | 2023-04-05 | Imagination Tech Ltd | Memory management for multicore 3-D graphics rendering |
GB2611377B (en) | 2022-03-30 | 2023-11-01 | Imagination Tech Ltd | Memory allocation for 3-D graphics rendering |
US11941232B2 (en) * | 2022-06-06 | 2024-03-26 | Adobe Inc. | Context-based copy-paste systems |
US20240005601A1 (en) * | 2022-06-29 | 2024-01-04 | Advanced Micro Devices, Inc. | Hierarchical depth data generation using primitive fusion |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5864342A (en) * | 1995-08-04 | 1999-01-26 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks |
US6611272B1 (en) * | 1998-07-02 | 2003-08-26 | Microsoft Corporation | Method and apparatus for rasterizing in a hierarchical tile order |
US6646639B1 (en) * | 1998-07-22 | 2003-11-11 | Nvidia Corporation | Modified method and apparatus for improved occlusion culling in graphics systems |
US7042452B1 (en) * | 2003-10-02 | 2006-05-09 | Sun Microsystems, Inc. | Triangle coverage estimation and edge-correct tessellation |
US9098943B1 (en) * | 2003-12-31 | 2015-08-04 | Ziilabs Inc., Ltd. | Multiple simultaneous bin sizes |
US8139058B2 (en) * | 2006-11-03 | 2012-03-20 | Vivante Corporation | Hierarchical tile-based rasterization algorithm |
US7692659B1 (en) | 2006-11-06 | 2010-04-06 | Nvidia Corporation | Color-compression using automatic reduction of multi-sampled pixels |
ITMI20070038A1 (it) | 2007-01-12 | 2008-07-13 | St Microelectronics Srl | Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle. |
GB2452731B (en) | 2007-09-12 | 2010-01-13 | Imagination Tech Ltd | Methods and systems for generating 3-dimensional computer images |
GB0819570D0 (en) | 2008-10-24 | 2008-12-03 | Advanced Risc Mach Ltd | Methods of and apparatus for processing computer graphics |
GB0823254D0 (en) | 2008-12-19 | 2009-01-28 | Imagination Tech Ltd | Multi level display control list in tile based 3D computer graphics system |
GB0823468D0 (en) | 2008-12-23 | 2009-01-28 | Imagination Tech Ltd | Display list control stream grouping in tile based 3D computer graphics systems |
GB0900700D0 (en) * | 2009-01-15 | 2009-03-04 | Advanced Risc Mach Ltd | Methods of and apparatus for processing graphics |
US8704836B1 (en) * | 2009-10-19 | 2014-04-22 | Nvidia Corporation | Distributing primitives to multiple rasterizers |
US9058685B2 (en) * | 2010-03-11 | 2015-06-16 | Broadcom Corporation | Method and system for controlling a 3D processor using a control list in memory |
KR101136737B1 (ko) * | 2011-10-07 | 2012-04-19 | (주)넥셀 | 그래픽 처리방법 및 그 장치 |
US9495781B2 (en) | 2012-06-21 | 2016-11-15 | Nvidia Corporation | Early sample evaluation during coarse rasterization |
GB2509369B (en) * | 2012-11-02 | 2017-05-10 | Imagination Tech Ltd | On demand geometry processing for 3-d rendering |
US9317948B2 (en) * | 2012-11-16 | 2016-04-19 | Arm Limited | Method of and apparatus for processing graphics |
KR102116708B1 (ko) * | 2013-05-24 | 2020-05-29 | 삼성전자 주식회사 | 그래픽스 프로세싱 유닛 |
KR102066659B1 (ko) * | 2013-08-13 | 2020-01-15 | 삼성전자 주식회사 | 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템 및 이의 동작 방법 |
US9311743B2 (en) | 2013-10-23 | 2016-04-12 | Qualcomm Incorporated | Selectively merging partially-covered tiles to perform hierarchical z-culling |
US9607426B1 (en) * | 2013-12-20 | 2017-03-28 | Imagination Technologies Limited | Asynchronous and concurrent ray tracing and rasterization rendering processes |
KR102188543B1 (ko) * | 2014-02-07 | 2020-12-08 | 삼성전자주식회사 | 그래픽 처리 장치 |
US10068311B2 (en) | 2014-04-05 | 2018-09-04 | Sony Interacive Entertainment LLC | Varying effective resolution by screen location by changing active color sample count within multiple render targets |
DE102014010907A1 (de) | 2014-07-23 | 2016-01-28 | Fresenius Medical Care Deutschland Gmbh | Vorrichtung zur extrakorporalen Entfernung proteingebundener Toxine |
US10217272B2 (en) | 2014-11-06 | 2019-02-26 | Intel Corporation | Zero-coverage rasterization culling |
US9619937B2 (en) * | 2015-03-05 | 2017-04-11 | Arm Limited | Methods and apparatus for processing computer graphics primitives in tile-based graphics rendering system |
GB2537661B (en) * | 2015-04-22 | 2018-09-26 | Imagination Tech Ltd | Tiling a primitive in a graphics processing system |
GB2537659B (en) * | 2015-04-22 | 2019-05-01 | Imagination Tech Ltd | Tiling a primitive in a graphics processing system |
GB2539509B (en) | 2015-06-19 | 2017-06-14 | Advanced Risc Mach Ltd | Method of and apparatus for processing graphics |
GB2542133B (en) * | 2015-09-08 | 2020-05-27 | Imagination Tech Ltd | Graphics processing method and system for processing sub-primitives |
US9905037B2 (en) | 2015-09-22 | 2018-02-27 | Nvidia Corporation | System, method, and computer program product for rejecting small primitives |
GB2547250B (en) * | 2016-02-12 | 2020-02-19 | Geomerics Ltd | Graphics processing systems |
US10096147B2 (en) * | 2016-03-10 | 2018-10-09 | Qualcomm Incorporated | Visibility information modification |
GB2551689B (en) | 2016-04-22 | 2021-05-12 | Advanced Risc Mach Ltd | Method and Apparatus for processing graphics |
EP3249612B1 (en) | 2016-04-29 | 2023-02-08 | Imagination Technologies Limited | Generation of a control stream for a tile |
GB2549789B (en) | 2016-04-29 | 2020-05-06 | Imagination Tech Ltd | Generation of a control stream for a tile |
GB2550358B (en) * | 2016-05-16 | 2020-08-26 | Advanced Risc Mach Ltd | Graphics processing systems |
US20170352182A1 (en) | 2016-06-06 | 2017-12-07 | Qualcomm Incorporated | Dynamic low-resolution z test sizes |
US10032308B2 (en) * | 2016-06-22 | 2018-07-24 | Advanced Micro Devices, Inc. | Culling objects from a 3-D graphics pipeline using hierarchical Z buffers |
US10152819B2 (en) * | 2016-08-15 | 2018-12-11 | Microsoft Technology Licensing, Llc | Variable rate shading |
GB2555797B (en) * | 2016-11-09 | 2020-04-08 | Geomerics Ltd | Graphics processing to provide shadows on specular lighting |
KR20180056316A (ko) * | 2016-11-18 | 2018-05-28 | 삼성전자주식회사 | 타일-기반 렌더링을 수행하는 방법 및 장치 |
US10417807B2 (en) * | 2017-07-13 | 2019-09-17 | Imagination Technologies Limited | Hybrid hierarchy of bounding and grid structures for ray tracing |
GB2574361B (en) | 2017-12-18 | 2021-03-24 | Advanced Risc Mach Ltd | Graphics Processing |
US10726610B2 (en) | 2018-08-29 | 2020-07-28 | Arm Limited | Efficient graphics processing using metadata |
GB2577062B (en) * | 2018-09-11 | 2021-04-28 | Advanced Risc Mach Ltd | Methods, apparatus and processor for producing a higher resolution frame |
WO2020070196A1 (en) * | 2018-10-02 | 2020-04-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Encoding and decoding pictures based on tile group id |
GB2578320B (en) * | 2018-10-23 | 2023-07-05 | Advanced Risc Mach Ltd | Graphics processing |
GB2587224B (en) * | 2019-09-19 | 2021-09-15 | Imagination Tech Ltd | Methods and tiling engines for hierarchially tiling primitives in a graphics processing system |
US11151683B2 (en) | 2019-09-26 | 2021-10-19 | Intel Corporation | Use of inner coverage information by a conservative rasterization pipeline to enable EarlyZ for conservative rasterization |
US11030783B1 (en) | 2020-01-21 | 2021-06-08 | Arm Limited | Hidden surface removal in graphics processing systems |
GB2591803B (en) | 2020-02-07 | 2022-02-23 | Imagination Tech Ltd | Graphics processing method and system for rendering items of geometry based on their size |
-
2020
- 2020-02-07 GB GB2001716.6A patent/GB2591802B/en active Active
- 2020-06-17 EP EP20386033.3A patent/EP3862976A1/en active Pending
- 2020-06-17 EP EP20386032.5A patent/EP3862975A1/en active Pending
-
2021
- 2021-02-03 EP EP21154952.2A patent/EP3862978A3/en active Pending
- 2021-02-05 CN CN202110163454.0A patent/CN113256762A/zh active Pending
- 2021-02-05 CN CN202110163427.3A patent/CN113256760A/zh active Pending
- 2021-02-05 CN CN202110163452.1A patent/CN113256761A/zh active Pending
- 2021-02-06 US US17/169,417 patent/US11610358B2/en active Active
- 2021-02-08 US US17/169,828 patent/US11481951B2/en active Active
- 2021-02-08 US US17/170,590 patent/US11600034B2/en active Active
-
2022
- 2022-09-15 US US17/945,310 patent/US11741656B2/en active Active
-
2023
- 2023-03-07 US US18/118,262 patent/US20230252711A1/en active Pending
- 2023-03-15 US US18/122,042 patent/US11922555B2/en active Active
- 2023-08-29 US US18/239,402 patent/US20230401780A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11922555B2 (en) | 2024-03-05 |
GB202001716D0 (en) | 2020-03-25 |
US11610358B2 (en) | 2023-03-21 |
CN113256762A (zh) | 2021-08-13 |
US20210279954A1 (en) | 2021-09-09 |
US20210256746A1 (en) | 2021-08-19 |
US11481951B2 (en) | 2022-10-25 |
EP3862978A2 (en) | 2021-08-11 |
GB2591802B (en) | 2022-03-23 |
US20230252711A1 (en) | 2023-08-10 |
US11741656B2 (en) | 2023-08-29 |
US20230009092A1 (en) | 2023-01-12 |
EP3862978A3 (en) | 2021-08-18 |
US20230215095A1 (en) | 2023-07-06 |
CN113256761A (zh) | 2021-08-13 |
EP3862975A1 (en) | 2021-08-11 |
US11600034B2 (en) | 2023-03-07 |
US20210248805A1 (en) | 2021-08-12 |
EP3862976A1 (en) | 2021-08-11 |
US20230401780A1 (en) | 2023-12-14 |
GB2591802A (en) | 2021-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113256760A (zh) | 图形处理方法和系统 | |
EP3862977A1 (en) | Graphics processing method and system for rendering items of geometry based on their size | |
US11954803B2 (en) | Generation of a control stream for a tile | |
US11527039B2 (en) | Primitive block generator for graphics processing systems | |
CN114443307A (zh) | 图形处理系统、存储介质和处理基元片段的方法 | |
CN111429556B (zh) | 图形处理系统中的基于基元块的光栅化 | |
US11551401B2 (en) | Data structures, methods and primitive block generators for storing primitives in a graphics processing system | |
GB2549789A (en) | Generation of a control stream for a tile | |
CN114723598A (zh) | 图形处理系统和方法 | |
GB2549787A (en) | Generation of a control stream for a tile | |
GB2592045A (en) | Data structures, methods and primitive block generators for storing primitives in a graphics processing system | |
GB2592046A (en) | Methods and tiling engines for tiling primitives in a graphics processing system | |
GB2580168A (en) | Primitive block generator for graphics processing systems | |
GB2549788A (en) | Generation of a control stream for a tile |
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 |