CN107025681B - 图形处理系统和图形处理方法 - Google Patents
图形处理系统和图形处理方法 Download PDFInfo
- Publication number
- CN107025681B CN107025681B CN201710101958.3A CN201710101958A CN107025681B CN 107025681 B CN107025681 B CN 107025681B CN 201710101958 A CN201710101958 A CN 201710101958A CN 107025681 B CN107025681 B CN 107025681B
- Authority
- CN
- China
- Prior art keywords
- tiles
- tile
- rendering
- memory
- graphics processing
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 105
- 238000003672 processing method Methods 0.000 title claims abstract description 7
- 238000009877 rendering Methods 0.000 claims abstract description 119
- 230000004044 response Effects 0.000 claims description 6
- 238000000034 method Methods 0.000 description 72
- 230000008569 process Effects 0.000 description 35
- 238000004519 manufacturing process Methods 0.000 description 33
- 238000005266 casting Methods 0.000 description 6
- 238000003860 storage Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012993 chemical processing Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005389 semiconductor device fabrication Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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/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/50—Lighting effects
- G06T15/60—Shadow generation
-
- 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
- G06T2215/00—Indexing scheme for image rendering
- G06T2215/12—Shadow map, environment map
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
图形处理系统和图形处理方法。一种图形处理系统,该系统包括:图块化单元,其被配置为将场景的第一视图图块化为多个图块并且生成与每个图块相关联的图元的列表;处理单元,其被配置为根据所述列表识别分别与至少预定数量的图元相关联的所述图块的第一子集;以及渲染单元,其被配置为将所识别的图块中的每个渲染为渲染目标。
Description
技术领域
本发明涉及用于图形处理的系统和方法。
背景技术
在3D图形处理系统中,场景的对象由图元组表示,图元组通常在场景的渲染(rendering)期间被投影、扫描转换、纹理化和阴影化。图元具有由一个或多个顶点(例如,在图元是三角形的情况下的三个顶点)的位置定义的简单几何形状(通常为三角形),纹理可以应用于该简单几何形状。3D场景的渲染处理图元以形成包括图像像素阵列的图像。
在渲染场景期间,图形处理单元(GPU)获取存储在存储器中的纹理数据,以将纹理应用于场景中的对象。GPU和存储器之间的该数据传输利用相当大的存储器带宽并消耗电力。此外,大纹理要求分配给它们大量存储器,这可能导致其它应用程序所使用的存储器的短缺。
大纹理的示例是阴影图(shadow map),其用于向场景添加阴影。阴影映射的基本原理是渲染从用于场景的光源(诸如太阳)的视点看的场景,并且存储可见的每个表面(即,被光源照亮的每个表面)的深度。接下来,渲染常规场景(从相机的视点看),并且将绘制的每个点的深度与存储的深度进行比较,以从光源的视点确定绘制点在存储的深度前面还是后面。如果点的深度在被照亮的表面后面,那么该点在阴影中。否则,它被照亮。深度信息被存储为纹理(即,作为阴影图),这要求大量存储器,尤其是对于高分辨率阴影图。生成和存储高分辨率阴影图要求相当大的处理能力、大量存储器和高存储器带宽。由于在存储器和GPU之间的数据传输是电力消耗的重要原因,所以在该领域中进行的减少将允许GPU以低功率操作。此外,存储器带宽使用中的任何减少和与其相关的硬件优化可以提升应用程序性能。
因此,需要减少图形处理系统中的存储器和处理开销。
发明内容
根据本发明的第一方面,提供了一种图形处理系统,该图形处理系统包括:图块化单元,其被配置为将场景的第一视图图块化(tiling)为多个图块(tile)并且生成与每个图块相关联的图元的列表;处理单元,其被配置为根据所述列表识别分别与至少预定数量的图元相关联的所述图块的第一子集;以及渲染单元,其被配置为将所识别的图块中的每个渲染为渲染目标。
该系统还可以包括存储器和存储器管理单元,存储器管理单元被配置为将存储器的一部分分配给每个所识别的图块。
渲染单元可以被配置为将从每个所识别的图块的渲染得到的数据存储在针对该图块分配的存储器的所述一部分处。
存储器管理单元还可以被配置为不为多个图块中未被处理单元识别的每个图块分配存储器的一部分。
渲染单元还可以被配置为为了后续渲染,访问与未被识别的图块相关联的存储器位置,并且存储器管理单元还被配置为响应于所述访问返回预定义值。
渲染单元还可以被配置为不渲染未被处理单元识别的图块。
在第一子集中识别的图块的数量可以小于场景被图块化为的图块的数量。
图块化单元可以被配置为通过确定哪些图元至少部分地位于该图块内而生成与每个图块相关联的图元的列表。
处理单元可以被配置为识别与场景在第二视图中可见的部分相关联的图块的第二子集。渲染单元可以被配置为渲染在第一子集和第二子集二者中识别的每个图块。
处理单元可以被配置为识别与场景在第二视图中可见的部分相关联的图块的第二子集。存储器管理单元可以被配置为将存储器的一部分分配给在第一子集和第二子集二者中识别的所述图块中的每个。
根据本发明的第二方面,提供了一种图形处理系统,该图形处理系统包括:用于存储数据的存储器;图块化单元,其被配置为将场景的第一视图图块化为多个图块;渲染单元,其被配置为渲染与至少预定数量的图元相关联的每个图块,并且输出从该图块的渲染得到的渲染数据;以及存储器管理单元,其被配置为检测针对每个渲染后的图块输出的渲染数据,并且为该渲染后的图块分配存储器的一部分;以及将针对每个渲染后的图块的渲染数据存储在为该图块分配的存储器的所述一部分处。
存储器管理单元还可以被配置为不为所述多个图块中不与至少预定数量的图元相关联的每个图块分配存储器的一部分。
渲染单元还可以被配置为为了后续渲染,访问存储器以读取与不与至少预定数量的图元相关联的图块相关联的数据,并且存储器管理单元还被配置为响应于所述访问返回预定义值。
渲染单元还可以被配置为不输出针对不与至少预定数量的图元相关联的图块的数据。
该系统还可以包括处理单元,其被配置为识别与场景在第二视图中可见的部分相关联的图块的子集,其中,渲染单元可以被配置为渲染在所述子集中被识别并且与至少所述预定数量的图元相关联的每个图块。
渲染目标可以是纹理。渲染数据可以是用于纹理的数据。渲染单元可以被配置为在场景的后续渲染中将纹理应用于场景。纹理可以应用于场景的第二视图或该第二视图,第二视图不同于第一视图。纹理可以是阴影图。
所述预定数量可以等于或大于1。
根据本发明的第三方面,提供了一种图形处理方法,该图形处理方法包括:将场景的第一视图图块化为多个图块;生成与每个图块相关联的图元的列表;根据所述列表识别分别与至少预定数量的图元相关联的所述图块的第一子集;以及将所识别的图块中的每个渲染为渲染目标。
该方法还可以包括:将存储器的一部分分配给每个所识别的图块。
该方法还可以包括:将从每个所识别的图块的渲染得到的数据存储在针对该图块分配的存储器的所述一部分处。
该方法还可以包括:不为多个图块中未被识别的每个图块分配存储器的一部分。
该方法还可以包括:为了后续渲染,访问与未被识别的图块相关联的存储器位置,并且响应于所述访问返回预定义值。
该方法还可以包括:不渲染未被识别的图块。
在第一子集中识别的图块的数量可以小于场景被图块化为的图块的数量。
生成与每个图块相关联的图元的列表可以包括:确定哪些图元至少部分地位于该图块内。
该方法还可以包括:识别与场景在第二视图中可见的部分相关联的图块的第二子集;以及渲染在第一子集和第二子集二者中识别的每个图块。
该方法还可以包括:识别与场景在第二视图中可见的部分相关联的图块的第二子集;以及将存储器的一部分分配给在第一子集和第二子集二者中识别的每个图块。
根据本发明的第四方面,提供了一种图形处理方法,该方法包括:将场景的第一视图图块化为多个图块;渲染与至少预定数量的图元相关联的每个图块;以及输出从该图块的渲染得到的渲染数据;检测针对每个渲染后的图块输出的渲染数据;以及为该渲染后的图块分配存储器的一部分;以及将针对每个渲染后的图块的渲染数据存储在为该图块分配的存储器的所述一部分处。
该方法还可以包括:不为所述多个图块中不与至少预定数量的图元相关联的每个图块分配存储器的一部分。
该方法还可以包括:为了后续渲染,访问存储器以读取与不与至少预定数量的图元相关联的图块相关联的数据,并且响应于所述访问返回预定义值。
该方法还可以包括:不输出针对不与至少预定数量的图元相关联的图块的渲染数据。
该方法还可以包括:识别与场景在第二视图中可见的部分相关联的图块的子集,其中,渲染步骤可以包括:渲染在所述子集中被识别并且与至少所述预定数量的图元相关联的每个图块。
渲染目标可以是纹理。渲染数据可以是用于纹理的数据。渲染单元可以被配置为在场景的后续渲染中将纹理应用于场景。纹理可以被应用于场景的不同于第一视图的第二视图。纹理可以是阴影图。
所述预定数量可以等于或大于1。
根据本发明的第五方面,提供了一种被配置为执行上述方法的图形处理系统。
上述图形处理系统可以在集成电路上的硬件中具体实现。
根据本发明的第六方面,提供了一种在集成电路制造系统中制造上述图形处理系统的方法。
根据本发明的第七方面,提供了一种集成电路定义数据集,当在集成电路制造系统中被处理时,所述集成电路定义数据集配置制造系统以制造上述图形处理系统。
根据本发明的第八方面,提供了一种非暂时性计算机可读储存介质,其上存储有集成电路定义数据集,当在集成电路制造系统中被处理时,所述集成电路定义数据集配置制造系统以制造上述图形处理系统。
根据本发明的第九方面,提供了一种集成电路制造系统,该系统包括:非暂时性计算机可读储存介质,其上存储有描述图形处理系统的计算机可读集成电路描述;布局处理系统,其被配置为处理集成电路描述以便生成具体实现图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据所述电路布局描述来制造所述图形处理系统,其中,所述图形处理系统包括:图块化单元,其被配置为将场景的第一视图图块化为多个图块,并且生成与每个图块相关联的图元的列表;处理单元,其被配置为根据所述列表识别分别与至少预定数量的图元相关联的所述图块的第一子集;以及渲染单元,其被配置为将所识别的图块中的每个渲染为渲染目标。
根据本发明的第十方面,提供了用于执行上述任何方法的计算机程序代码。
根据本发明的第十一方面,提供了一种其上存储有计算机可读指令的非暂时性计算机可读储存介质,当在计算机系统上执行时,所述计算机可读指令使得计算机系统执行上述任何方法。
附图说明
现在将参考附图通过举例来描述本发明。在附图中:
图1示出了基于图块的图形系统;
图2a表示基于图块的图形系统中的场景中的对象;
图2b示出了场景的自顶向下视图;
图2c示出了从光源的视点看的场景;
图2d示出了具有从相机视点应用的阴影的场景;
图3是用于将阴影应用于场景的方法的流程图;
图4a示出了另一场景的自顶向下表示;
图4b示出了从光源的视点看的场景;
图4c示出从光源的视点看到的相机截锥体(frustum);以及
图5是集成电路制造系统的示意图。
具体实施方式
以下说明通过举例来呈现以使得本领域技术人员能够实现和使用本发明。本发明不限于本文所描述的实施方式,对所公开的实施方式的各种修改对于本领域技术人员将是显而易见的。
以下示例描述用于生成阴影图并使用阴影图将阴影应用于场景的系统和方法。然而,所述系统和方法可以在将场景渲染成纹理的任何情况下使用。
如上所述,诸如阴影图的大纹理的生成要求大量存储器用于存储纹理和高存储器带宽用于将纹理数据传送到存储器。当GPU获取存储的纹理数据以将其应用于场景时,也要求高存储器带宽。以下描述能够减少这些处理、存储器和存储器带宽要求的基于图块的图形系统。广泛地,实现该目的的一种方式是通过将场景细分为多个图块并且识别在其中具有多个图元的图块的特定子集,并且仅将那些图块渲染成纹理。忽略并且不渲染未被识别的图块。通过仅渲染图块的特定子集,与渲染构成整个场景的所有图块相比,可以减少存储器和处理开销。这对于具有大存储器要求但通常仅覆盖场景的相对小区域的纹理(例如阴影图)特别有效。
图1是示出基于图块的图形系统100的示意图。该系统100可以在诸如智能电话、平板电脑、膝上型计算机、个人计算机(PC)、电视或要处理图形数据的任何其它适当设备的设备上实现。基于图块的图形系统100被配置为例如从应用程序接收数据,处理数据并提供已处理数据的输出。该系统100包括被配置为处理数据的图形处理器102。图形处理器102可以以硬件或软件或其组合来实现。例如,图形处理器102可以在固定功能硬件中实现,固定功能硬件包括被配置为如本文所述相应地处理数据的电路。例如,处理器102可以是图形处理单元(GPU),或者可以被实现为在诸如GPU或中央处理单元(CPU)的可编程器件上运行的计算机程序。
图形处理器102包括用于处理数据的多个功能块,其中,图1中示出了图形处理器102的一些(但是为了清楚起见不是全部)功能块。具体来说,图形处理器102包括图块化单元106和渲染单元108。渲染单元108可以包括图像处理器114和纹理处理器116。
该系统100还包括被配置为处理数据的处理单元104。处理单元104可以以硬件或软件或其组合来实现。例如,处理单元104可以在固定功能硬件中实现,固定功能硬件包括被配置为如本文所述相应地处理数据的电路。例如,处理器104可以是通用中央处理单元(CPU),或者可以被实现为在诸如GPU或中央处理单元(CPU)的可编程器件上运行的计算机程序。
该系统100包括被布置为与图形处理器102和处理单元104通信的存储器112。存储器112可以包括用于存储数据的多个存储器块(未示出)。该系统100还可以包括被配置为管理存储器112的存储器资源的存储器管理单元(MMU)110。MMU 110可以执行虚拟存储器管理并将虚拟存储器地址转换为物理地址。MMU 110可以被实现为处理单元104的一部分或单独硬件部件或计算机程序。图形处理器102可以包括高速缓存(未示出),其可以用于从存储器112获取并暂时存储数据。
在操作中,图形处理器102被布置为接收图形数据,例如从当前运行在实现该系统的设备上的应用程序。图形数据包括限定用于显示的对象的几何数据。图块化单元106包括用于在图形处理器102中实现多个功能的逻辑。例如,图块化单元106接收几何数据并从几何数据导出多个图元。图块化单元106还通过将图元分类到每图块列表中来将图元图块化为多个图块。在图块化单元106接收几何数据之前,对几何数据的一些处理可以或可以不由图形处理器102(在图1中未示出的功能块中)执行。图元表示几何对象或其它几何形状。描述图元的参数被存储在存储器112中。所存储的参数描述可位于多个图块中的多个图元。图元通常是多边形,诸如三角形,但是可以具有其它形式,诸如线、点或斑块(patch)。所存储的参数表示图元的位置(例如,在屏幕空间坐标中形成图元的顶点的位置)。该参数还可以指示对象或几何形状的其它特征。
图块化单元106通过将表示场景的图元分类到每图块列表中,将场景的视图图块化为多个屏幕空间图块。图块化单元106确定哪些图元存在于屏幕空间的每个图块内,并且为每个图块创建指示哪些图元存在于每个图块内的列表。图元可以存在于多个图块中,并且使得将在用于那些多个图块的图块列表中指示图元。存在于单个图块中的图元将仅在用于该图块的列表中列出。
将屏幕空间划分为多个图块。图块可以是矩形(包括正方形),但是它们可以是其它形状,诸如三角形或六边形。图块可以是各种尺寸,例如图块可以是32×32个像素。在超高清屏幕分辨率图像的一个示例中,存在3840×2160个像素。因此,作为示例,可以将超高屏幕分辨率图像图块化为8100个图块(每个包括32×32个像素)。屏幕空间可以对应于用于在屏幕上显示的图像或其它渲染目标,诸如将存储在存储器中的纹理数据。
图2a是包括以5×5阵列布置的二十五个图块的基于图块的图形系统的屏幕空间202的简化表示。在所示的屏幕空间202内存在两个对象:矩形壁204和球体206。壁204和球体206由多个图元(为了清楚起见未示出)组成。可以看出,壁204与屏幕空间202的六个图块重叠:具有网格标记B3、B4、C3、C4、D3和D4的图块。在没有明确说明的情况下,本文使用的术语“重叠”应理解为表示“至少部分地重叠”。构成壁204的图元与屏幕空间202的六个图块重叠。可以看出,球体206仅与屏幕空间202的一个图块(网格标记C2)重叠。因此,组成球体的图元仅与屏幕空间的一个图块(C2)重叠。在场景中通常将存在其它对象,但是为了清楚起见,这些在图2a至图2d中未示出。
对于屏幕空间202的每个图块,图块化单元106确定每个图元是否至少部分地位于该图块内。也就是说,图块化单元106确定图元的至少一部分是否位于图块的可观看区域内。这可以使用多种公知技术来完成。以这种方式,图块化单元106为每个图块(图块A1至E5)导出显示列表,其指示部分地或完全地位于图块内的图元。针对图块的显示列表可以是用于与图块至少部分重叠的图元的参数的存储器位置的参考标记的列表。当图元在多于一个图块中时,这可以节省复制(duplication)。在图元在多于一个图块中的情况下,针对图块的显示列表也可以复制图元参数,使得每图块列表是参数列表,而不是参考标记的列表。还可以组合这些方法,存储对一些参数的参考标记并复制其它参数。在图2a的示例中,可以看出,显示列表将指示对于图块C2,构成球体206的所有图元将位于该图块中。对于图块B3、B4、C3、C4、D3和D4中的每个,显示列表还指示构成壁并且至少部分地位于每个相应图块中的图元。剩余图块(即,图块A1至A5、B1、B2、B5、C1、C2、C5、D1、D2、D5和E1到E5)将不具有针对它们列出的图元。
将显示列表从图块化单元106提供到存储器112以存储在其中。当渲染单元108渲染图块时,渲染单元从存储器112检索针对该图块的显示列表,并且使用显示列表来确定哪些图元与该图块至少部分地重叠。
渲染单元108可以包括图像处理器114,图像处理器可以处理图块以例如确定要求哪些图元或图元的哪些部分由后续处理块(诸如纹理处理器116)进一步处理。例如,当渲染要显示的图像时,在纹理处理器116处理图块之前,图像处理器114可以确定哪些图元部分是可见的,并且去除不影响渲染图像的图元部分。为了使图像处理器114能够处理图块内的图元,从存储器112读取包括在图块的显示列表中的图元(或者用于那些图元的参数)以用于处理图块,例如确定图元是否可见。
纹理处理器116处理图块以将纹理化应用于在图块内可见的对象。来自图像处理器114的输出被提供给纹理处理器116,该输出指示纹理处理器116将需要哪些图元或图元的哪些部分来处理图块。为了使纹理处理器116能够处理图块内的图元,在来自图像处理器114的输出中指示的针对图元的参数可以直接从图像处理器114获得或从存储器112获取。纹理处理器116用来处理图块的一些或所有参数可以不同于图像处理器114用来处理相同图块的那些参数。例如,由图像处理器114使用的参数可以涉及图元的位置,而由纹理处理器116使用的参数可以另外地或另选地涉及要应用于图元的纹理数据。纹理处理器116从存储器112读取参数以用于处理图块时使用,例如,用于实现纹理化。参数可以包括将由纹理处理器116应用于对象的纹理(或来自纹理的特定纹理像素)的指示。
例如在从图形处理器102被输出到用于在实现系统100的设备的屏幕上显示的显示缓存或诸如存储器中的纹理数据的另一渲染目标之前,来自纹理处理器110的输出可以被传送到图形处理器102内的另外处理块(图1中未示出)。
图1的系统可以用于向场景(诸如图2a中的场景)添加某些效果,诸如阴影、反射等。这可以涉及以某种方式处理场景内的数据以生成那些效果。将阴影添加到场景的一种方法是例如通过生成阴影图并使用该阴影图来确定场景的哪些区域应当处于阴影中。下面的步骤1和2总体地描述阴影图如何被生成并用于将阴影应用于场景。图2a中具有单个光源的场景在所描述的步骤中被用作示例。
步骤1:渲染从光源的视点看的场景以生成阴影图。
对诸如显示缓存的渲染目标的常规渲染将输出像素值是颜色的图像。然而,该渲染输出像素值是深度并被输出到纹理的“图像”。该渲染输出是阴影图。常规渲染通常在继续输出针对每个像素的颜色之前,使用Z(或深度)缓存来处理深度值,以便执行隐藏表面去除。渲染阴影图的处理可以在产生Z缓存之后停止,并且输出其作为代替。在渲染结束时,Z缓存包含被发现最接近相机(或光源)的对象的深度(在此情况下是距离相机或者光源的距离)。
当图元重叠时(例如,当球体206与壁204的一些重叠时),图元的一部分而不是全部是可见的。图元的部分通常被称为“片段”。片段可以在每个样本点(例如,在每个像素处)被生成,并且因此可以具有(X,Y)位置和深度。在图像处理器114中求解可见性的系统中,每个片段对应于对象的可见部分。阴影图可以根据这些可见片段的位置和深度被写入为纹理。
图2b示出了图2a中的场景的自顶向下视图。如图所示,光源位于垂直于壁204的平面并穿过壁204的中心的线207上。球体206的中心位于线207上,并且位于光源和壁204之间。光源可以是将平行光线投射到场景上的定向光源。图2c示出了从来自光源的视点的点看的场景。在该场景中可见的片段指示具有入射在其上的光的片段。因此,组成壁204的正面的可见的部分(即,不是直接在球体206后面的壁的部分)和球体206的前半部分的片段具有入射在其上的光。针对屏幕空间的每个位置(例如,针对每个像素)的深度值被保存为存储器112中的阴影图。不包含任何对象的像素位置的深度值可以被保存为具有对应于“很远”的背景或默认深度。
步骤2:渲染从相机的视点看的场景以产生要显示的图像。
在渲染图像的阶段(例如,在阴影化期间),检查在步骤1中产生的阴影图以确定像素是否在阴影中。
在渲染中的某个阶段,可以向每个像素分配颜色。例如,在考虑像素是否在阴影中之前,可以将像素确定为亮红色(255,0,0)(根据RGB颜色模型)。这可以是常规纹理化操作的结果。像素在屏幕上的位置是已知的,因为是来自Z缓存的在场景中的其深度:(x,y,d)。将像素位置(x,y,d)从屏幕空间变换到“光空间”,以找到在步骤(1)中用于渲染的坐标系中的相同点的位置:(X,Y,D)。变换可以是基于相机和灯的已知相对位置和方向的几何计算(矩阵运算)。光空间坐标(X,Y,D)指示在从灯的视点渲染的图像中,像素位于何处以及离灯的距离有多远。读取坐标(X,Y)处的阴影图以检索(retrieve)先前保存的深度值(S)。如果深度S小于深度D,则这指示存在更接近灯的某物,其将在像素上投射阴影。否则,该像素被灯照亮。如果像素在阴影中,则可以相应地修改分配给该像素的颜色。例如,颜色(255,0,0)可以变成(25,0,0)。可以执行对阴影中的像素的其它修改,例如,阴影化的像素可以简单地分配为黑色(0,0,0)。
在所示示例中,在图2a中示出了从相机的视点看的场景。图2b提供了相机位置的视图。在图2a中,针对从光源的视点看直接在球体206后面的部分的壁204的像素将处于阴影中。此外,针对从光源的视点看球体206在场景中可见并且在球体206的被照亮像素后面的像素也将处于阴影中。
场景可以具有多个光源,每个光源投射不同阴影。在这种情况下,从每个光源渲染场景(例如,如步骤1中所述)以产生多个阴影图。当渲染要显示的场景时,可以在单个步骤2)中求解阴影。将像素变换到每个光空间(对于每个光源),并且读取每个阴影图以确定该像素是否被该特定灯照亮。然后通过对象的颜色与来自照亮它的每个源的光的颜色的适当混合来确定像素的颜色。
图3示出了用于生成阴影图(步骤300至步骤308)并在系统100处使用所生成的阴影图将阴影应用于场景(步骤310)的处理。在步骤300到步骤308处描述的处理不限于将场景渲染为用于阴影映射的纹理并且可以用于将场景渲染为用于其它目的的任何合适渲染目标。
在步骤300,从光源的视点(如上面步骤1所述)看的场景由图块化单元106图块化为多个图块。在所示示例中,图2c示出了从光源的视点看的场景被图块化为二十五个图块。
在步骤302,如上所述,在图块化期间生成针对每个图块的显示列表并将显示列表保存在存储器112中。在所示示例中,图块W2到W4、X2到X4和Y2到Y4将具有针对它们列出的图元,并且图块V1到W1、W5、X1、X5、Y1和Y5到Z5将不具有针对它们列出的图元。
图块化处理提供了在渲染每个图块之前检查显示列表的内容的机会。显示列表指示哪些图块在其中不具有图元,即没有阴影投射对象。因此,可以在不执行渲染的情况下,识别出对于那些图块,阴影图将为空(或包含表示“非常远”的值)。
在步骤304,分析显示列表以识别具有与其相关联的至少预定数量的图元的图块,使得仅那些图块被渲染以生成阴影图。在一个示例中,预定数量可以是1。在该示例中,识别不具有与其相关联的任何图元的图块(即,没有针对其列出的图元的图块),以便在生成阴影图的后续渲染中忽略所述图块。这具有多个优点,诸如:i)减少需要分配用于阴影图的存储器的量(如下面进一步描述的);ii)减少需要渲染的图块的数量,并且从而增加生成阴影图的速度。在另一示例中,可以分析图块列表以确定哪些图块包含重要阴影投射图元。如果阴影投射图元仅覆盖图块中的单个样本点,或者如果它们仅覆盖图块中的少量样本点,或者如果图块的覆盖区域的纵横比高于阈值(例如,使得非常薄的对象可以被认为是不重要的),则可以将阴影投射图元确定为不重要的。这样的图元可以例如表示非常小的对象,或者在图块的边缘处,可以表示主要存在于其它图块中的对象的边缘。可以忽略不包含任何重要阴影投射对象的图块。虽然忽略潜在阴影投射对象可以被视为将误差引入到阴影图中,但是必须记住阴影图分辨率通常是有限的,并且仅占据阴影图的小区域的对象可能将定义不明确或视觉上不准确的阴影投射到所渲染的场景中。因此可能的情况是,从阴影图渲染中省略这些对象改善了所渲染的场景的视觉质量,以及具有上述优点,提高了阴影图渲染的效率。类似地,省略表示对象边缘的图元的部分去除了已经易于出现不准确以及可能已经在使用隐藏这些不准确性的措施的区域(即,在阴影边缘)中的阴影图数据。由图元或图元组覆盖的样本点的数量可以通过在图块化单元106之前的几何处理步骤来计算或估计,或者可能已经作为图块化单元106中的图块化处理的一部分被执行。
在另一示例中,预定数量可以大于1(例如3)。在该示例中,包含相对小和不重要的阴影投射对象的图块可以在用于生成阴影图的后续渲染中被忽略。这可以进一步减少需要被分配的存储器的量和需要被渲染以生成阴影图的图块的数量。
在另一示例中,大于1的预定数量的图元可以与由那些图元覆盖的样本点的数量的分析结合,使得从图元的数量和每个图元覆盖的图块的量二者确定阴影投射对象在图块中的重要性。这可以减少需要被分配的存储器的量和需要被渲染以生成阴影图的图块的数量,同时还在少量图元覆盖图块的相当大比例的区域中保持阴影图准确性。
图块列表可以由图形处理器102或处理单元104或可访问存储器112的任何其它处理器来分析。
在图2c所示的示例中,图块W2到W4、X2到X4和Y2到Y4将根据显示列表中被识别为与至少一个图元相关联。剩余图块不具有针对它们列出的图元,因此它们将不被识别用于进一步渲染,因此它们可以被忽略。
在步骤306,由MMU 110为每个所识别的图块分配存储器。可以为每个图块分配存储器的一部分或一块。例如,可以在页面中分配存储器,其中,MMU 110控制页面的分配和映射。
在概念上,阴影图可以被认为是存储器的实心块,例如每图块或图块组一个页面。例如,4KB存储器页面可以对应于一个32×32像素图块,对于每个像素具有32位深度值。如果使用不同图块大小,例如,16×16像素图块,则存储器的4KB页面可以被分配给2×2组中的四个相邻图块。
常规地,阴影图的渲染将为整个阴影图分配存储器,并且然后渲染为该阴影图(这在基于图块的图形系统中将是一次一个图块)。通常在从光源的视点图块化场景之前分配存储器。预先为整个阴影图分配存储器意味着为阴影图的所有区域分配存储器,甚至是不包含任何(或不重要的)阴影投射对象的区域。在当前公开的处理和系统中,MMU 110可以被配置为在从光源的视点图块化场景之后分配存储器。这允许在为阴影图分配存储器之前分析显示列表。分析显示列表以识别具有至少例如与它们相关联的一个图元的图块。仅被识别的图块由MMU 110分配存储器,不具有与它们相关联的任何图元的图块(即,未识别的图块)可以不被分配任何存储器。因此,可以减少为阴影图分配的存储器的量。
例如,在图2c中所示的场景通常将为所有二十五个图块V1至Z5分配存储器。在本系统中,MMU 110仅为在步骤304中识别的图块分配存储器。因此,将仅为九个图块(图块W2到W4、X2到X4和Y2到Y4)而不是二十五个图块分配存储器。未被识别的图块(图块V1至W1、W5、X1、X5、Y1和Y5至Z5)可以被忽略,因此不为它们分配任何存储器。因此,仅给所识别的图块子集分配存储器,这可以使得阴影图所要求的存储器的量减少。
图形处理器102所看到的存储器可以是虚拟存储器,其中,图形处理器102工作的地址由MMU 110映射到存储器112的实际物理地址。映射可以是逐页面的。可以根据不必须是连续的或者为相同顺序的不同位置处的物理存储器页面将虚拟存储器的明显连续块拼接在一起。物理存储器分配可以发生在不同阶段。例如,可以将虚拟存储器的块分配给整个阴影图,但是物理存储器备份(backing)仅由MMU110在需要的情况下或在需要时被提供给所识别的图块。在所示示例中,MMU 110可以生成页面表,页面表具有用于图块V1至Z5中的每个的虚拟地址,但是仅将用于图块W2至W4、X2至X4和Y2至Y4的虚拟地址映射到物理地址。用于图块V1到W1、W5、X1、X5、Y1和Y5到Z5的虚拟地址可以不映射或映射到具有默认值或“背景”值的单个物理地址。
在步骤308,渲染在步骤304中识别的图块。可以一次一个图块地渲染图块。将从每个图块的渲染(例如,像素深度值)得到的数据写入分配给该图块的存储器地址。如果存储器地址是虚拟地址,则MMU 110将该地址转换为存储器112中的物理地址。
在该示例中,仅渲染在步骤304中识别的图块。因此,不渲染未被识别的图块(图块V1到W1、W5、X1、X5、Y1和Y5到Z5),这节省了用于渲染那些图块的处理开销。对于为空的图块,一些图形处理器可以产生默认值或背景值,其仍可以被写入存储器。然而,通过不渲染那些图块,没有与那些图块相关联的数据被写出到存储器,从而节省存储器以用于其它用途。
对于包括多于一个光源的场景,可以为每个光源重复步骤300至308。
在步骤310,渲染从相机的视点看的场景(即,如上所述的步骤2)。从相机的视点看的场景可以由图块化单元106图块化并且由渲染单元108一次一个图块地渲染。在该渲染期间,渲染单元108询问在坐标(X,Y)处的阴影图(或多个贴图)以检索对于那些坐标的深度值(S),以便确定像素是否处于阴影中,如上所述。将相应地修改确定为处于阴影中的像素。例如,纹理处理器116可以根据其它光源、阴影颜色、模糊值等修改像素。
如果在对应于空图块(即,未识别和未分配的图块)的坐标(X,Y)处询问阴影图,则对于对那些页面的任何尝试访问,MMU 110可以被配置为返回对应于“非常远”的默认值或背景深度值S。因此,对应于该坐标的像素将被光源照亮,这是因为其将具有小于S的深度值。默认深度值可以被存储在单个存储器位置处,MMU 110将所有未识别的图块映射到该单个存储器位置。
然后可以将每个渲染的图块输出到显示缓存(其可以经由图1中未示出的另外处理块)。图2d示出要与应用(在208和210)于场景的阴影一起显示的最终场景。
图3的处理通过仅将存储器分配给其中具有阴影投射对象的图块来提供用于阴影图的存储器和存储器带宽节省。这通过分析通过由图块化生成的显示列表以识别哪些图块中具有图元并且仅为那些被识别的图块分配存储器来实现。然后渲染图块以生成阴影图。在一个另选实施方式中,可以在图块的渲染之后为阴影图分配存储器。在该实施方式中,图块化单元106将从光源的视点看的场景图块化成多个图块,如上所述。然后由渲染单元108依次渲染每个图块。当渲染单元108渲染包含对象的图块时,渲染单元确定对应于对象的深度值,并且尝试将那些值写入存储器。在此阶段,尚未为该图块分配存储器。MMU 110可以检测对存储器的尝试访问,捕获访问,并在该点处分配物理存储器。MMU 110然后可以释放该访问,使得渲染单元108可以将用于图块的值写入所分配的存储器。当渲染单元108渲染不包含任何对象的图块时,渲染单元108可以不为那些图块输出任何深度值。因此,对于不包含任何对象的图块,MMU 110将不检测渲染单元108对存储器112的任何尝试访问。因此,将不给那些图块分配存储器,仅其中具有对象的图块将被分配存储器。因此,在该另选实施方式中,给阴影图分配的存储器的量被减少,无需分析任何显示列表。
图4a至图4c示出了用于识别当生成阴影图时可以被省略或忽略的图块的另一种技术。该技术可以除了或者独立于上述技术被应用。
阴影图的图块可以包含图元,即阴影投射对象,但是如果在步骤2中渲染的相机视图的截锥体(如上所述)没有任何部分在该图块中是可见的,则那些对象将永远不会将其阴影投射到相机所见到的任何物体上。因此,当生成阴影图时,可以忽略这些图块,因为那些图块中的任何对象都不会影响由相机观看的场景。
图4a示出了场景的平面图。用于场景的灯位置和相机位置分别在401和402处指示。诸如球体403、金字塔404和立方体405的对象是可能投射阴影的对象。在406处示出了相机的视锥体(view frustum)。可以将视锥体406认为是3D建模世界中可能出现在屏幕上并被认为是相机的视场的空间区域。
灯401和相机截锥体406之间的对象可能将阴影投射到相机截锥体406中的其它对象(为了简单起见未示出)。图4b示出了从灯401的视点看的场景的视图。相机截锥体406的一部分也可从灯401观察到。可观察的相机截锥体406的范围由虚线指示。如图所示,金字塔404和立方体405是如从灯401看到的位于相机截锥体406的范围内的对象。因此,从这个视点来看,金字塔404和立方体405是可能投射可以影响由相机402看到的场景的阴影的对象。球体403不能将阴影投射到由相机402看到的场景中,这是因为通过该对象的区域的光线将不能与相机的视锥体406相互作用。因此,可以识别灯的视图中可以影响由相机402看到的场景的区域。
图4c指示可以影响由相机402看到的场景的区域406。该区域可以被认为是从灯401的视点可见的相机截锥体406。在该区域406之外的区域中的任何对象不影响由相机402看到的场景。在407处指示包括该区域的图块集合。因此,当生成阴影图时,可以忽略对在区域406之外的对象的渲染,这是因为那些对象不会影响要显示的场景。这可以以类似于上述节省的方式在生成和存储阴影图时提供处理和存储器节省。
在一个示例性实施方式中,可以通过确定相机截锥体406的范围的位置并将那些位置变换到“光空间”中以从灯的视点定位那些相同位置来识别区域406。因此,可以确定从灯401的点看相机截锥体406的位置。图块化单元106可以图块化从灯的视点看的场景,如先前所描述的。从所确定的截锥体406的位置,处理单元104(或图形处理器102)可以确定哪些图块包含截锥体406。这些图块由图4c中的图块407的块指示。只有那些确定的图块407可以被选择用于由渲染单元108渲染。类似于上文,MMU 110可以仅为那些图块407分配存储器。
在另一示例性实施方式中,相机截锥体406的模型(如其将被定位在场景的3D世界中)可以被生成,并且被用于确定从光源的视点看的场景的哪些部分可能影响相机场景。可以对相机截锥体406进行建模,以形成具有与相机截锥体406相同的几何形状和相同定位的截锥体模型对象(由图元构成)。因此,该对象表示相机截锥体406。处理单元104可以为被提供给图形处理器102的对象生成图形数据。图块化单元106可以接收针对截锥体模型对象的图形数据并且图块化从灯401的视点看的场景。这将导致看起来像图4c的图块化场景。在406处示出了从灯的视点看的相机截锥体的模型。如图4c所示,一些图块是空的,而其它图块包含截锥体406。空图块中的阴影投射对象可以不将阴影投射到由相机看到的场景中,这是因为通过该图块的光线不与相机的视锥体406相互作用。因此,空图块不能影响场景,而不管它们是否将包含任何阴影投射对象。识别包含截锥体406的图块。在407处总体指示这些图块,其是可以影响场景的图块集合。图块化单元106可以生成将截锥体模型406的图元分类成每图块列表(例如,以上文所描述的方式)的图块列表。然后,处理单元104可以分析该列表(例如,如上所述)以识别包含截锥体406的图块407。接下来,可以图块化从灯的视点看的正常场景(包含球体403、金字塔404和立方体405)以用于生成阴影图。当生成阴影图时,仅渲染对应于包含截锥体406的所识别图块407的图块,因为只有那些图块包含阴影图的可能影响要显示的最终场景的部分。可以忽略其它图块。类似于上文,仅需要给继续被渲染的图块分配存储器,可以不给不被渲染的图块分配任何存储器。
该技术可以在单个步骤中执行,例如,通过使用截锥体模型406来建立模板缓存(未示出)。模板缓存可以形成图形处理器流水线的一部分。模板缓存可以拒绝不在模板区域内的任何对象,因此仅对模板区域内的图块(即,对应于截锥体406的图块)进行渲染和/或分配存储器。
另选地,图形处理器可以提供指定剪切(也称为剔除)平面的装置。然后可以通过设置与截锥体模型406的几何形状对应的剪切平面来执行该技术。剪切通常在流水线中在图块化单元106之前的点处操作,使得截锥体区域外的对象将被拒绝并且不被添加到图块列表。因此,仅对在截锥体区域407内的图块进行渲染和/或分配存储器。
确定阴影图将影响要显示的场景的部分的技术可以与仅对包含阴影投射对象的图块进行渲染(和/或分配其存储器)的上述技术组合。因此,如果截锥体406在图块中可见并且在图块中存在阴影投射对象,则可以仅渲染图块和/或为该阴影图分配存储器。例如,可以通过比较在图块化截锥体的模型时生成的图块列表与在图块化该场景时生成的图块列表来识别这样的图块。在此示例中,仅识别包含金字塔404和立方体405的图块以用于渲染/存储器分配。
在进一步优化处理中,可以识别从灯观察到的包括相机截锥体406的背面的一个或多个平面408。超出该平面的对象(诸如立方体405)可以在生成阴影图的处理中提早被剪切掉,因为这样的对象不会影响相机402看到的场景。例如,处理单元104可以确定相机截锥体406的平面408的位置。处理单元104或图块化单元106然后可以剪切从灯的视点看位于离平面408位置较远处的任何对象。因此,通过这种优化处理,如图所示,将剪切超出截锥体406的立方体405。因此,当图块化从灯401的视点看的场景时,立方体405将不存在,因此将仅对包含金字塔404的图块进行渲染和/或分配存储器。这样的剪切可以在上述任何阴影映射处理中的早期阶段执行。
识别空图块列表允许避免针对相机截锥体区域406外的图块的所有渲染(可能存在大量潜在阴影投射几何形状)。图块化单元106可以被配置为早期丢弃对象和/或避免为在相机截锥体区域406外的图块构建图块列表,以提供进一步图形处理节省。
图形处理器102可以在硬件中实现。当以这种方式实现时,由图块化单元106编译显示列表执行起来很便宜。显示列表指示从光源的视点看的场景中的哪些图块在其中具有阴影投射对象,因此其提供了确定场景中的哪些区域将被渲染并且被分配用于阴影图的存储器的便宜且有效的方法。
图1的系统被示出为包括多个功能块。这仅是示意性的,并非旨在限定在这种实体的不同逻辑元件之间的严格划分。每个功能块可以以任何合适的方式提供。
本文描述的图形处理系统可以在集成电路上的硬件中具体实现。本文所述的图形处理系统可以被配置为执行本文中所述的方法中的任一种方法。通常,上述功能、方法、技术或部件中的任一个可以在软件、固件、硬件(例如,固定逻辑电路)或其任何组合中实现。术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”在此用于通常表示软件、固件、硬件或其任何组合。在软件实现的情况下,模块、功能、部件、元件、单元、块或逻辑表示当在处理器上执行时执行指定任务的程序代码。本文描述的算法和方法可以由执行使得处理器执行算法/方法的代码的一个或多个处理器执行。计算机可读储存介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器和可以使用磁、光和其它技术存储指令或其它数据并且可由机器访问的其它存储器设备。
如本文使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何类型的可执行代码,包括以机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网表)、以及以诸如C、Java或OpenCL的编程语言代码表示的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,其在在虚拟机或其它软件环境下被适当地执行、处理、解释、编译、执行时,使得支持可执行代码的计算机系统的处理器执行由代码指定的任务。
处理器、计算机或计算机系统可以是具有处理能力以使得其能够执行指令的任何种类的设备、机器或专用电路或其集合或其部分。处理器可以是任何类型的通用或专用处理器,诸如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
还旨在涵盖定义如本文所述的硬件的配置的软件,诸如用于设计集成电路或用于配置可编程芯片以执行所期望功能的HDL(硬件描述语言)软件。也就是说,可以提供一种其上编码有集成电路定义数据集形式的计算机可读程序代码的计算机可读储存介质,所述代码当在集成电路制造系统中被处理时,配置该系统制造用于执行本文所述的任何方法的图形处理系统,或制造包括本文所述的任何装置的图形处理系统。集成电路定义数据集可以是例如集成电路描述。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为在任何级别定义集成电路的硬件描述语言,包括作为寄存器传送级(RTL)代码,作为高级电路表示,诸如Verilog或VHDL,以及作为低级电路表示,诸如OASIS和GDSII。逻辑上定义集成电路(例如RTL)的较高级别表示可以在被配置用于在包括电路元件的定义和用于组合那些元件的规则的软件环境的背景下生成集成电路的制造定义的计算机系统被处理以便生成如此由表示定义的集成电路的制造定义。如在通常在计算机系统处执行以定义机器的软件的情况下,可能要求一个或多个中间用户步骤(例如,提供命令、变量等),以便用于被配置用于生成集成电路的制造定义的计算机系统执行定义集成电路的代码以生成该集成电路的制造定义。
现在将相关于图5描述在集成电路制造系统处处理集成电路定义数据集以便配置该系统来制造图形处理系统的示例。
图5示出了包括布局处理系统1004和集成电路生成系统1006的集成电路(IC)制造系统1002的示例。IC制造系统1002被配置为接收IC定义数据集(例如,定义如本文中的任何示例中所述的图形处理系统),处理IC定义数据集,并且根据IC定义数据集来生成IC(例如,其具体实现如本文的任何示例中所述的图形处理系统)。IC定义数据集的处理配置IC制造系统1002以制造具体实现如本文中的任何示例所述的图形处理系统的集成电路。
布局处理系统1004被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法是本领域已知的,并且例如可能涉及合成RTL代码以确定要生成的电路的门级表示,例如在逻辑部件方面(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)。可以通过确定针对逻辑部件的位置信息从电路的门级表示来确定电路布局。这可以自动地或者在用户参与的情况下完成,以便优化电路布局。当布局处理系统1004已经确定了电路布局时,它可以向IC生成系统1006输出电路布局定义。电路布局定义可以是例如电路布局描述。
IC生成系统1006根据电路布局定义生成IC,如本领域中已知的。例如,IC生成系统1006可以实现半导体器件制造处理以生成IC,其可以涉及光刻和化学处理步骤的多步骤序列,在这些步骤期间,在由半导体材料制成的晶圆上逐渐产生电子电路。电路布局定义可以是掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。另选地,提供给IC生成系统1006的电路布局定义可以是计算机可读代码的形式,IC生成系统1006可以使用该代码来形成用于生成IC的合适掩模。
由IC制造系统1002执行的不同处理可以全部在一个位置(例如,由一方)实现。另选地,IC制造系统1002可以是分布式系统,使得一些处理可以在不同位置执行,并且可以由不同方执行。例如,以下阶段中的一些阶段:(i)合成表示IC定义数据集的RTL代码以形成要生成的电路的门级表示,(ii)基于门级表示生成电路布局,(iii)根据电路布局形成掩模,以及(iv)使用掩模制造集成电路,可以在不同位置和/或由不同方执行。
在其它示例中,在集成电路制造系统处的集成电路定义数据集的处理可以配置该系统以制造图形处理系统,而不必对IC定义数据集进行处理以便确定电路布局。例如,集成电路定义数据集可以定义可重构处理器(诸如FPGA)的配置,并且该数据集的处理可以配置IC制造系统生成具有所定义配置的可重构处理器(例如通过将配置数据加载到FPGA)。
在一些实施方式中,当集成电路制造定义数据集在集成电路制造系统中被处理时,可以使得集成电路制造系统生成如本文所述的设备。例如,通过集成电路制造定义数据集以上面关于图5所述的方式配置集成电路制造系统可以导致如本文所述的设备被制造。
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件或者与在数据集处定义的硬件相结合的软件。在图5所示的示例中,IC生成系统还可以由集成电路定义数据集配置,以在制造集成电路时,根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上或另外给集成电路提供程序代码以便与集成电路一起使用。
申请人在此单独地公开了本文所述的每个单独特征以及两个或更多个这样的特征的任何组合,达到使得这些特征或组合能够根据本领域技术人员的公知常识作为整体基于本说明书来实现的程度,而不管这些特征或特征的组合是否解决了本文公开的任何问题。鉴于前面的说明,对本领域技术人员显而易见的是,可以在本发明的范围内进行各种修改。
Claims (22)
1.一种图形处理系统,所述图形处理系统包括:
图块化单元,所述图块化单元被配置为将场景的第一视图图块化为多个图块并且生成与每个图块相关联的图元的列表;
处理单元,所述处理单元被配置为根据所述列表识别分别与至少预定数量的图元相关联的所述图块的第一子集;
渲染单元,所述渲染单元被配置为将所识别的图块中的每个渲染为渲染目标,并且不渲染未被所述处理单元识别的图块;以及
存储器和存储器管理单元,所述存储器管理单元被配置为将所述存储器的一部分分配给每个所识别的图块,并且不为所述多个图块中的每个未被所述处理单元识别的图块分配所述存储器的一部分。
2.根据权利要求1所述的图形处理系统,其中,所述渲染单元被配置为将从每个所识别的图块的渲染得到的数据存储在针对该图块分配的存储器的所述一部分处。
3.根据权利要求1所述的图形处理系统,其中,所述渲染单元还被配置为为了后续渲染,访问与未被识别的图块相关联的存储器位置,并且所述存储器管理单元还被配置为响应于所述访问返回预定义值。
4.根据权利要求1至3中任一项所述的图形处理系统,其中,在所述第一子集中识别的图块的数量小于所述场景被图块化为的图块的数量。
5.根据权利要求1至3中任一项所述的图形处理系统,其中,所述图块化单元被配置为通过如下方式生成与每个图块相关联的图元的列表:确定哪些图元至少部分地位于该图块内。
6.根据权利要求1至3中任一项所述的图形处理系统,其中:
所述处理单元被配置为识别与所述场景在第二视图中可见的部分相关联的所述图块的第二子集;以及
所述渲染单元被配置为渲染在所述第一子集和所述第二子集二者中识别的所述图块中的每个。
7.根据权利要求1至3中任一项所述的图形处理系统,其中:
所述处理单元被配置为识别与所述场景在第二视图中可见的部分相关联的所述图块的第二子集;以及
所述存储器管理单元被配置为将所述存储器的一部分分配给在所述第一子集和所述第二子集二者中识别的所述图块中的每个。
8.根据权利要求7所述的图形处理系统,其中,所述渲染目标是纹理。
9.根据权利要求8所述的图形处理系统,其中,所述渲染单元被配置为在所述场景的后续渲染中将所述纹理应用于所述场景。
10.根据权利要求9所述的图形处理系统,其中,所述纹理被应用于所述场景的第二视图或所述第二视图,所述第二视图不同于所述第一视图。
11.根据权利要求8所述的图形处理系统,其中,所述纹理是阴影图。
12.根据权利要求8所述的图形处理系统,其中,所述预定数量等于或大于1。
13.一种图形处理系统,所述图形处理系统包括:
用于存储数据的存储器;
图块化单元,所述图块化单元被配置为将场景的第一视图图块化为多个图块;
渲染单元,所述渲染单元被配置为渲染与至少预定数量的图元相关联的每个图块,并且输出从该图块的渲染得到的渲染数据;以及
存储器管理单元,所述存储器管理单元被配置为:
检测针对每个渲染后的图块输出的渲染数据,并且为该渲染后的图块分配存储器的一部分;以及
将针对每个渲染后的图块的所述渲染数据存储在为该图块分配的存储器的所述一部分处,并且不为所述多个图块中不与至少所述预定数量的图元相关联的每个图块分配存储器的一部分。
14.根据权利要求13所述的图形处理系统,其中,所述渲染单元还被配置为为了后续渲染,访问所述存储器以读取与不与至少所述预定数量的图元相关联的图块相关联的数据,并且所述存储器管理单元还被配置为响应于所述访问返回预定义值。
15.根据权利要求13所述的图形处理系统,其中,所述渲染单元还被配置为不输出针对不与至少预定数量的图元相关联的图块的数据。
16.根据权利要求13所述的图形处理系统,所述图形处理系统还包括处理单元,所述处理单元被配置为识别与所述场景在第二视图中可见的部分相关联的所述图块的子集,其中,所述渲染单元被配置为渲染在所述子集中被识别并且与至少所述预定数量的图元相关联的所述图块中的每个。
17.根据权利要求13至16中任一项所述的图形处理系统,其中,所述渲染数据是用于纹理的数据。
18.根据权利要求17所述的图形处理系统,其中,所述渲染单元被配置为在所述场景的后续渲染中将所述纹理应用于所述场景。
19.根据权利要求18所述的图形处理系统,其中,所述纹理被应用于所述场景的第二视图或所述第二视图,所述第二视图不同于所述第一视图。
20.根据权利要求17所述的图形处理系统,其中,所述纹理是阴影图。
21.根据权利要求13至16中任一项所述的图形处理系统,其中,所述预定数量等于或大于1。
22.一种图形处理方法,所述图形处理方法包括:
将场景的第一视图图块化为多个图块;
生成与每个图块相关联的图元的列表;
根据所述列表识别分别与至少预定数量的图元相关联的所述图块的第一子集;以及
将所识别的图块中的每个渲染为渲染目标,并且不渲染未被识别的图块,
其中,存储器的一部分被分配给每个所识别的图块,并且不被分配给所述多个图块中的每个未被识别的图块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310610126.XA CN116630504A (zh) | 2016-02-01 | 2017-01-26 | 图形处理方法、制造图形处理系统的方法和存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1601766.7A GB2546810B (en) | 2016-02-01 | 2016-02-01 | Sparse rendering |
GB1601766.7 | 2016-02-01 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310610126.XA Division CN116630504A (zh) | 2016-02-01 | 2017-01-26 | 图形处理方法、制造图形处理系统的方法和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107025681A CN107025681A (zh) | 2017-08-08 |
CN107025681B true CN107025681B (zh) | 2023-06-13 |
Family
ID=55590482
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310610126.XA Pending CN116630504A (zh) | 2016-02-01 | 2017-01-26 | 图形处理方法、制造图形处理系统的方法和存储介质 |
CN201710101958.3A Active CN107025681B (zh) | 2016-02-01 | 2017-01-26 | 图形处理系统和图形处理方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310610126.XA Pending CN116630504A (zh) | 2016-02-01 | 2017-01-26 | 图形处理方法、制造图形处理系统的方法和存储介质 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11532068B2 (zh) |
EP (1) | EP3200158A3 (zh) |
CN (2) | CN116630504A (zh) |
GB (1) | GB2546810B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108479067B (zh) | 2018-04-12 | 2019-09-20 | 网易(杭州)网络有限公司 | 游戏画面的渲染方法和装置 |
GB2580179B (en) * | 2018-12-21 | 2021-08-18 | Imagination Tech Ltd | Tile-based scheduling |
US11004254B2 (en) * | 2019-07-25 | 2021-05-11 | Nvidia Corporation | Performance of ray-traced shadow creation within a scene |
GB2592437B (en) * | 2020-02-28 | 2022-03-02 | Imagination Tech Ltd | Critical workload check |
GB2592436B (en) | 2020-02-28 | 2022-02-23 | Imagination Tech Ltd | Critical workload check |
CN112614041B (zh) * | 2020-12-29 | 2022-10-25 | 完美世界(北京)软件科技发展有限公司 | 稀疏渲染的数据驱动方法及装置、存储介质、电子装置 |
EP4033450B1 (en) * | 2021-01-26 | 2023-12-06 | Imagination Technologies Limited | Method and system for safety critical rendering of a frame |
US11798221B2 (en) * | 2021-10-27 | 2023-10-24 | Arm Limited | Graphics processing |
GB2621118A (en) * | 2022-07-29 | 2024-02-07 | Advanced Risc Mach Ltd | Graphics processing |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650821A (zh) * | 2008-07-16 | 2010-02-17 | Arm有限公司 | 监视图形处理 |
CN101794456A (zh) * | 2009-01-15 | 2010-08-04 | Arm有限公司 | 用于处理图形的方法和装置 |
CN103679627A (zh) * | 2012-09-12 | 2014-03-26 | 想象技术有限公司 | 基于图块的计算机图形 |
CN104183005A (zh) * | 2013-05-24 | 2014-12-03 | 三星电子株式会社 | 图形处理单元和基于图块的渲染方法 |
CN104424621A (zh) * | 2013-08-30 | 2015-03-18 | Arm有限公司 | 图形处理系统 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6552723B1 (en) * | 1998-08-20 | 2003-04-22 | Apple Computer, Inc. | System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline |
GB2343603B (en) * | 1998-11-06 | 2003-04-02 | Videologic Ltd | Shading 3-dimensional computer generated images |
US6630933B1 (en) * | 2000-09-01 | 2003-10-07 | Ati Technologies Inc. | Method and apparatus for compression and decompression of Z data |
US7242400B2 (en) * | 2002-11-13 | 2007-07-10 | Ati Technologies Ulc | Compression and decompression of data using plane equations |
GB2404316B (en) * | 2003-07-25 | 2005-11-30 | Imagination Tech Ltd | Three-Dimensional computer graphics system |
GB0524804D0 (en) * | 2005-12-05 | 2006-01-11 | Falanx Microsystems As | Method of and apparatus for processing graphics |
US9965886B2 (en) * | 2006-12-04 | 2018-05-08 | Arm Norway As | Method of and apparatus for processing graphics |
GB0723536D0 (en) * | 2007-11-30 | 2008-01-09 | Imagination Tech Ltd | Multi-core geometry processing in a tile based rendering system |
GB0810205D0 (en) * | 2008-06-04 | 2008-07-09 | Advanced Risc Mach Ltd | Graphics processing systems |
GB0823254D0 (en) * | 2008-12-19 | 2009-01-28 | Imagination Tech Ltd | Multi level display control list in tile based 3D computer graphics system |
GB2478909B (en) * | 2010-03-19 | 2013-11-06 | Imagination Tech Ltd | Demand based texture rendering in a tile based rendering system |
US8339409B2 (en) * | 2011-02-16 | 2012-12-25 | Arm Limited | Tile-based graphics system and method of operation of such a system |
GB2494903B (en) * | 2011-09-22 | 2017-12-27 | Advanced Risc Mach Ltd | Graphics processing systems |
US20140092087A1 (en) * | 2012-09-28 | 2014-04-03 | Takayuki Kazama | Adaptive load balancing in software emulation of gpu hardware |
US8941676B2 (en) * | 2012-10-26 | 2015-01-27 | Nvidia Corporation | On-chip anti-alias resolve in a cache tiling architecture |
US10032243B2 (en) * | 2012-10-26 | 2018-07-24 | Nvidia Corporation | Distributed tiled caching |
US9317948B2 (en) * | 2012-11-16 | 2016-04-19 | Arm Limited | Method of and apparatus for processing graphics |
US9087410B2 (en) * | 2013-01-17 | 2015-07-21 | Qualcomm Incorporated | Rendering graphics data using visibility information |
GB2506706B (en) * | 2013-04-02 | 2014-09-03 | Imagination Tech Ltd | Tile-based graphics |
US10204391B2 (en) * | 2013-06-04 | 2019-02-12 | Arm Limited | Method of and apparatus for processing graphics |
US9659393B2 (en) * | 2013-10-07 | 2017-05-23 | Intel Corporation | Selective rasterization |
GB2525636B (en) * | 2014-04-30 | 2020-08-19 | Geomerics Ltd | Graphics processing systems |
GB2524121B (en) * | 2014-06-17 | 2016-03-02 | Imagination Tech Ltd | Assigning primitives to tiles in a graphics processing system |
GB2524120B (en) * | 2014-06-17 | 2016-03-02 | Imagination Tech Ltd | Assigning primitives to tiles in a graphics processing system |
-
2016
- 2016-02-01 GB GB1601766.7A patent/GB2546810B/en active Active
-
2017
- 2017-01-26 CN CN202310610126.XA patent/CN116630504A/zh active Pending
- 2017-01-26 CN CN201710101958.3A patent/CN107025681B/zh active Active
- 2017-01-31 EP EP17154081.8A patent/EP3200158A3/en active Pending
- 2017-02-01 US US15/421,579 patent/US11532068B2/en active Active
-
2022
- 2022-11-18 US US17/990,587 patent/US11887212B2/en active Active
-
2024
- 2024-01-29 US US18/425,402 patent/US20240169473A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650821A (zh) * | 2008-07-16 | 2010-02-17 | Arm有限公司 | 监视图形处理 |
CN101794456A (zh) * | 2009-01-15 | 2010-08-04 | Arm有限公司 | 用于处理图形的方法和装置 |
CN103679627A (zh) * | 2012-09-12 | 2014-03-26 | 想象技术有限公司 | 基于图块的计算机图形 |
CN104183005A (zh) * | 2013-05-24 | 2014-12-03 | 三星电子株式会社 | 图形处理单元和基于图块的渲染方法 |
CN104424621A (zh) * | 2013-08-30 | 2015-03-18 | Arm有限公司 | 图形处理系统 |
Also Published As
Publication number | Publication date |
---|---|
US20240169473A1 (en) | 2024-05-23 |
US20170221177A1 (en) | 2017-08-03 |
GB2546810A (en) | 2017-08-02 |
US11532068B2 (en) | 2022-12-20 |
GB2546810B (en) | 2019-10-16 |
US11887212B2 (en) | 2024-01-30 |
CN107025681A (zh) | 2017-08-08 |
CN116630504A (zh) | 2023-08-22 |
US20230082144A1 (en) | 2023-03-16 |
EP3200158A3 (en) | 2017-08-16 |
GB201601766D0 (en) | 2016-03-16 |
EP3200158A2 (en) | 2017-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107025681B (zh) | 图形处理系统和图形处理方法 | |
CN107038744B (zh) | 图形处理系统、图形处理方法、非暂时性计算机可读存储介质 | |
CN112529032B (zh) | 图形处理系统中分层级平铺基元的方法和平铺引擎 | |
CN112116520B (zh) | 用于处理基元片段的系统和方法 | |
CN111353928A (zh) | 用于图形处理系统的经过变换的几何结构数据高速缓存 | |
CN111429556B (zh) | 图形处理系统中的基于基元块的光栅化 | |
KR101824665B1 (ko) | 안티-앨리어싱된 샘플들의 분할 저장 | |
US20240112311A1 (en) | Graphics processing systems and methods | |
GB2577396A (en) | Sparse Rendering | |
GB2579155A (en) | Frustum rendering | |
US20240193718A1 (en) | Graphics processor |
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 |