CN105809728A - 在图形处理单元中渲染场景的视图 - Google Patents
在图形处理单元中渲染场景的视图 Download PDFInfo
- Publication number
- CN105809728A CN105809728A CN201610031864.9A CN201610031864A CN105809728A CN 105809728 A CN105809728 A CN 105809728A CN 201610031864 A CN201610031864 A CN 201610031864A CN 105809728 A CN105809728 A CN 105809728A
- Authority
- CN
- China
- Prior art keywords
- view
- segment
- scene
- rendering
- primitive
- 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.)
- Granted
Links
Classifications
-
- 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
- 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
- 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/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/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
本申请的各实施例涉及在图形处理单元中渲染场景的视图。图形处理***可以按照基于图块的方式渲染场景的多个视图(例如,帧的序列)。视图的组可以被渲染在一起以使得来自视图的组的图块按照散布的顺序被渲染以使得来自该组中的视图中的每个视图的至少一个图块在该组中的场景的视图中的任何视图被完全渲染之前被渲染。按照这种方式,来自组内的不同视图的相似图块可以顺序地被渲染。如果特定经渲染的图块与要被渲染的下一图块相似,则存储在高速缓存中的用于渲染该特定图块的数据很有可能对渲染下一图块有用。因此,当渲染下一图块时,较少的数据需要从***存储器被提取,这能够显著改善图形处理***的效率。
Description
技术领域
本申请的各实施例涉及在图形处理单元中渲染场景的视图。
背景技术
图形处理***被用于在计算机***中渲染场景的图像。诸如游戏应用的应用将描述场景中的对象的数据发送到图形处理***,并且图形处理***能够操作以渲染来自特定视角的场景的图像。场景可以是三维(3D)场景,并且场景内的对象可以由基元描述,基元具有3D场景中的位置并且基元能够被纹理化和/或阴影化以由此将诸如色彩和灯光效果的外观特征应用到经渲染的图像中的基元。
图1示出了可以被用于渲染3D场景的图像的图形处理***100的一些元件。图形处理***100包括图形处理单元(GPU)102和存储器的两个部分1041和1042。要指出,存储器的两个部分1041和1042可以是或可以不是相同物理存储器的部分,并且两个存储器1041和1042常常位于“片外”,即,不在与GPU102相同的芯片上,并且因此可以被称为“***存储器”。在存储器(1041和1042)与GPU102之间的通信可以通过***100中的传统通信总线进行,如本领域中已知的。
在图1中示出的示例中,图形处理***100是基于图块的延迟的渲染***。***100在以下意义上是“基于图块”的:***100的渲染空间被划分成多个图块,该多个图块能够分离地由渲染单元108处理。***100在以下意义上是“延迟的渲染***”:在对基元片段执行纹理化和/或阴影化之前对基元片段执行隐藏面消除以便渲染场景。然而,要指出,在其他示例中,图形处理***可以是非基于图块的和/或不是延迟的渲染***。GPU102包括图块化单元106和渲染单元108,其中渲染单元108包括隐藏面消除(HSR)模块110、纹理化/阴影化模块112和像素处理逻辑113。图像处理***100被布置以使得在图块化单元106处接收针对由应用提供的图像的基元的序列。图块化单元106可以执行诸如剪裁和剔除的功能以消除未落入可见视图中的基元。图块化单元106还可以将基元转换到针对场景的图像的渲染空间中。
图块单元106确定针对场景的图像的图块的显示列表,其中针对图块的显示列表指示基元中的哪些基元与渲染图块相关。例如,针对图块的显示列表指示哪些基元存在于图形处理***100的渲染空间的该图块内。显示列表和基元数据(例如,已经被转换到图像的渲染空间中的经转换的基元数据)从图块单元106被输出并且被存储在存储器1041中。渲染单元108提取针对图块的显示列表,并且之后从存储器1041提取与该图块相关的基元数据,如由针对该图块的显示列表指示的。HSR模块112执行隐藏面消除以由此消除在该场景中隐藏的基元的片段。剩余的片段被传递到纹理化/阴影化模块114,纹理化/阴影化模块114执行对该片段的纹理化和/或阴影化以确定经渲染的图像的像素值。像素处理逻辑113可以处理像素值,例如,以在将像素值传递到存储器1042以用于存储在帧缓冲区114中之前对它们应用压缩或过滤。纹理化/阴影化模块112能够从存储器1042提取纹理数据以便对片段应用纹理化。渲染单元108被配置为处理图像的图块中的每个图块并且当整幅图像已经被渲染并被存储在存储器1042的帧缓冲区114中时,图像能够从图形处理***100被输出并且例如可以被显示在显示器上。渲染单元108可以之后渲染另一图像的图块。
发明内容
提供本发明内容以按照简化的形式介绍下面在具体实施方式中进一步描述的概念的选择。本发明内容并非旨在确定要求保护的主体的关键特征或必要特征,也不旨在用于限制要求保护的主体的范围。
在前面的图形处理***(诸如在以上参考图1描述的图形处理***)中,第一图像的图块中的全部图块在第二图像的图块中的任何图块被渲染之前被渲染。发明人已经认识到,通过将场景的多个视图作为组一起渲染将获得一定效率,其中组的视图的图块按照散布的顺序被渲染以使得来自所述组中的所述场景的所述视图中的每个视图的至少一个图块在所述组中的所述场景的所述视图中的任何视图被完全渲染之前被渲染。所述场景的多个视图可以表示在不同时刻(即,来自在时间上不同的视角)和/或来自在空间上不同的视角的场景。例如,在所述场景的所述视图是表示所述场景的在时刻的序列处的图像的帧的情况下,两个相继的帧可以按照组被渲染以使得两个帧的图块按照散布的顺序(例如,按照交错的顺序)被渲染,以使得在第一帧的第一图块位置处的图块被渲染接着在第二帧的第一图块位置处的图块被渲染,接着在第一帧的第二图块位置处的图块被渲染接着在第二帧的第二图块位置处的图块被渲染,等等。在本文中描述的示例中,很有可能相似的图块(即,很有可能具有相似内容的图块)顺序地(即,一个接着另一个)被渲染。诸如基元数据和纹理数据的数据可以从***存储器被提取并且被存储在高速缓存中以用于在渲染特定图块中使用。如果被渲染的下一图块与所述特定图块相似,则存储在所述高速缓存中的所述数据很有可能对渲染所述下一图块有用。因此,当渲染所述下一图块时,较少的数据需要从***存储器被提取(因为可在所述高速缓存中获得一些有用数据)。渲染场景的视图的在功率、时间和/或对处理资源的使用方面的成本的重大部分通过在图形处理单元与***存储器之间移动数据而被引起,因此如果需要在图形处理单元与***存储器之间被传递的数据量能够被显著减少,则图形处理***的效率能够被显著改善。
提供了一种在图形处理单元中渲染场景的视图的方法,所述图形处理单元被配置为使用渲染空间,所述渲染空间被细分成多个图块,所述方法包括:按照散布的顺序渲染所述场景的所述视图的图块,使得针对所述场景的视图的多个组中的每个组,来自所述组中的所述场景的所述视图中的每个视图的至少一个图块在所述组中的所述场景的所述视图中的任何视图被完全渲染之前被渲染。
所述方法还可以包括:针对所述场景的所述视图中的每个视图,处理所述场景的所述视图的基元以针对所述场景的所述视图的所述图块中的每个图块,确定所述基元中的哪些基元与渲染所述图块相关;其中所述基元中的哪些基元与渲染所述场景的视图的图块相关的确定可以被用于所述的渲染所述场景的所述视图的图块。例如,针对所述场景的所述视图中的每个视图,所述的处理基元可以包括对所述场景的所述视图的所述基元执行图块化以确定针对所述场景的所述视图的图块的显示列表,其中针对图块的所述显示列表指示所述基元中的哪些基元与渲染所述图块相关;其中确定的显示列表可以被用于所述渲染所述场景的所述视图的图块。所述场景的所述视图中的至少一些视图可以是表示所述场景的在时刻的序列处的图像的帧。
提供了一种被配置为渲染场景的视图的图形处理单元,其中,所述图形处理单元被配置为使用渲染空间,所述渲染空间被细分成多个图块,所述图形处理单元包括:渲染单元,所述渲染单元被配置为按照散布的顺序渲染所述场景的所述视图的图块,以使得针对所述场景的视图的多个组中的每个组,来自所述组中的所述场景的所述视图中的每个视图的至少一个图块在所述组中的所述场景的所述视图中的任何视图被完全渲染之前被渲染。
可以提供适于当代码在计算机上运行时执行本文中描述的方法中的任何的步骤的计算机可读代码。另外,可以提供用于生成根据本文中描述的示例中的任何的图形处理单元的计算机可读代码。所述计算机可读代码可以被编码在计算机可读存储介质上。
如对于技术人员将显而易见的,上述特征可以在合适的情况下被组合,并且可以与本文中描述的示例的方面中的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1是现有技术中的图形处理***的示意图;
图2是根据本文中描述的示例的图形处理***的示意图;
图3示出了示例中的要被渲染的四个帧的序列;
图4是根据本文中描述的示例的、在图形处理***中渲染场景的视图的方法的流程图;
图5示出了示例中的要被渲染的场景的两个相似的视图;
图6示出了图示了示例中的帧被渲染的时序的时序图;
图7示出了实施图形处理单元的设备的示意图;
图8示出了实施图形处理单元的服务器和包括显示器的设备的示意图;以及
图9示出了用于生成体现图形处理***的集成电路的集成电路制造***。
附图图示了各种示例。技术人员将认识到,附图中的图示的元件边界(例如,框、框的组或者其他形状)表示边界的一个示例。可能的是,在一些示例中,一个元件可以被设计为多个元件或者该多个元件可以被设计为一个元件。在合适的情况下,贯穿附图中使用共同的附图标记来指示相似的特征。
具体实施方式
现在将仅通过示例的方式来描述实施例。
图2示出了可以被用于渲染3D场景的图像的图形处理***200的一些元件。图形处理***200包括图形处理单元(GPU)202和存储器的两个部分2041和2042。要指出,存储器的两个部分2041和2042可以是或可以不是相同物理存储器的部分,并且例如两个存储器2041和2042可以位于“片外”,即,不在与GPU202相同的芯片上,并且因此可以被称为“***存储器”。在存储器(2041和2042)与GPU202之间的通信可以通过***200中的传统通信总线进行,如本领域中已知的。存储器2042包括用于存储场景的相应的视图的经渲染的像素值的两个缓冲区2041和2042。在其他示例中,多于两个缓冲区214可以被包含在存储器2042中,如下面更详细地描述的。
在图2中示出的示例中,图形处理***200是基于图块的延迟的渲染***。然而,在其他示例中,图形处理***可以是非基于图块的和/或不是延迟的渲染***。GPU202包括图块化单元206和渲染单元208,其中渲染单元208包括隐藏面消除(HSR)模块210、纹理化/阴影化模块212(即,用于执行对基元片段的纹理化和阴影化中的至少一项的处理模块)和像素处理逻辑213。渲染单元208还包括控制逻辑216、基元高速缓存218和纹理高速缓存220。要指出,两个高速缓存218和220可以是或可以不是相同物理存储器的部分,并且位于“片上”,即,它们被实施为GPU202的部分。
在操作时,图形处理***200接收场景的视图的基元并渲染场景的视图以由此确定能够被显示在显示器上的像素值以表示场景的视图。针对场景的每个视图,图块化单元206处理场景的视图的基元以针对场景的视图的图块中的每个图块确定基元中的哪些基元与渲染图块相关。特别地,针对场景的每个视图,图块化单元206确定针对场景的视图的图块的每图块显示列表以指示哪些基元与渲染相应的图块相关。渲染单元208之后渲染视图的图块并将经渲染的像素值输出到帧缓冲区2141和2142。
场景的视图可以是场景的要被渲染的图像。例如,场景的视图可以是表示场景的在时刻的序列处的图像的帧。在其他示例中,场景的视图中的至少两个视图可以是场景的来自相应的不同视角的图像。例如,场景的来自不同用户的视角的视图可以被渲染,例如,如果两个用户正在玩相同游戏,则游戏内的场景的来自用户中的每个用户的视角的相应的视图被渲染。作为另一示例,场景的两个视图可以与场景的来自右眼的视角的视图和场景的来自左眼的视角的视图相对应。这可以对创建3D图像特别有用,在3D图像中,来自左眼和右眼的视图稍微不同以便创建场景的3D图像的感知。这能够对虚拟现实应用有用。
图3示出了被标记为帧A到D的四个帧302、304、306和308的序列。在图3中示出的简单示例中,每个帧使用按照4x4网格布置的十六个图块来渲染。帧A302以被标记为A1到A16的图块被渲染;帧B304以被标记为B1到B16的图块被渲染;帧C306以被标记为C1到C16的图块被渲染;并且帧D308以被标记为D1到D16的图块被渲染。帧302到308表示在不同时刻的序列处的图像。例如,帧A可以旨在于被显示在时间tA秒,帧B可以意图被显示在时间秒,帧C可以意图被显示在时间秒,并且帧D可以意图被显示在时间秒,其中,帧率为kHz。为了给出一些示例,k可以为25、30、50、60或100,但是其他帧率可以被使用,如对本领域技术人员将显而易见的。基元310存在于帧A到D中的每个帧中,并且如图3中示出的,基元310在各帧之间稍微移动,但是来自序列中的一个帧和下一帧的对应的图块是相似的。图3是简化得多的示例,并且在其他示例中将有可能有许多基元存在于帧中的每个帧中。
图4示出了用于在图形处理***200中渲染场景的视图的方法的流程图。在步骤S402中,图形处理***200接收场景的视图的基元(例如,帧302到帧308的基元)。基元被传递到图块化单元206。图块化单元206可以执行诸如剪裁和剔除的功能以消除未落入可见视图中的基元。
在步骤S404中,图块化单元206将场景的视图的基元转换到针对场景的视图的渲染空间中,从而使得图块化单元206能够确定哪些基元存在于针对场景的视图的渲染空间的图块中的每个图块内,即哪些基元与渲染图块中的每个图块相关。用于执行对基元到场景的视图的渲染空间中的转换的方法是本领域中已知的,并且为简洁起见,这样的转换方法的细节不在本文中进行描述。
在步骤S406中,图块单元206确定针对场景的视图的图块的显示列表,其中针对图块的显示列表指示基元中的哪些基元对渲染图块相关。也就是说,图块化单元206确定每图块显示列表,该每图块显示列表指示哪些基元存在于渲染空间的图块中的每个图块内。例如,针对图块的显示列表指示哪些基元存在于图形处理***200的渲染空间的该图块内。针对图块的显示列表可以包括用于指示经转换的基元中的哪些基元与渲染图块相关的基元标识符。备选地,针对图块的显示列表可以包括用于指示未经转换的基元中的哪些基元与渲染图块相关的基元标识符。
在本文中描述的示例中,存在对针对每个图块的显示列表的引用,其中针对图块的显示列表包括存在于图块内的基元的指示(即,基元ID)。在一些示例中,每个图块可以具有被存储为分离的数据结构的分离的显示列表。然而,要指出,在一些其他示例中,不一定存在用作针对每个分离的图块的分离的显示列表的分离的数据结构。然而,甚至在这些情况下,针对每个图块,存在指示哪些基元存在于图块内的显示列表,并且在这样的意义上存在针对每个图块的显示列表。也就是说,相同的数据结构可以包括针对具有关于每个基元ID与哪个图块相关的指示的多于一个图块的基元,从而使得数据结构能够用作针对多于一个图块的显示列表。换言之,概念上有意义的是设想针对每个图块存在分离的显示列表,而在现实中在一些示例中针对多个图块的显示列表可以被组合成具有关于数据结构中的每个基元ID与哪个图块相关的指示的单个数据结构。贯穿本申请,存在对针对图块的显示列表的引用,并且这样的引用意图涵盖其中分离的显示列表被实施为分离的数据结构的示例以及还有其中针对多个图块的显示列表可以被组合成具有关于数据结构中的每个基元ID与哪个图块相关的指示的示例。
在步骤S408中,图块化单元206使针对场景的视图的图块的显示列表被存储在存储器2041中。显示列表因此从图块化单元206被发送到存储器2041以用于存储在其中。如果显示列表包括经转换的基元的标识符,则针对经转换的基元的基元数据还可以从图块化单元206被发送到存储器2041以用于存储在其中(如图2中指示的)。渲染单元208能够取回针对图块的显示列表并从存储器2041提取描述与渲染图块相关的经转换的基元的基元数据,如由针对图块的显示列表指示的。以这种方式,渲染单元208不需要执行转换以确定经转换的基元。然而,在其他示例中,显示列表包括未经转换的基元的标识符。在这种情况下,并且与图2中的指示相反,经转换的基元数据不需要从图块化单元206被发送到存储器2041。相反,未未经转换的基元被存储在存储器2041中以及被提供到图块化单元206。渲染单元208能够取回针对图块的显示列表,并且从存储器2041提取描述与渲染该图块相关的未经转换的基元的基元数据,如由针对该图块的显示列表指示的。渲染单元208能够之后执行转换以确定能够之后被用于渲染图块的经转换的基元。因此,在这些示例中,图块化单元206和渲染单元208两者都执行转换以确定针对图块的经转换的基元,因此一些额外的处理被执行,但是在存储器2041中使用的存储量被减少,因为经转换的基元不需要被存储在那里,并且可能更重要的是,在存储器2041与GPU202之间传递的数据量被减少,因为经转换的基元数据不需要从图块化单元206被传递到存储器2041。减少在存储器2041与GPU202之间传递的数据量可以显著改善图形处理***200的效率。另外,未经转换的基元数据很有可能对视图的序列中(例如,帧的序列中)的对应的图块有用,因此在本文中描述的示例中,未经转换的基元数据可以仅仅需要从存储器2041被提取一次并且被存储在高速缓存218中以用于在渲染多于一个图块中使用。未经转换的图块可以对视图的序列是相同的,然而,对应的经转换的基元可能对视图的序列不是相同的,例如,当在视图的序列上基元已经移动,或者当视图被渲染的视角改变的情况下。
渲染单元208渲染场景的视图的图块。渲染单元208可能一次渲染一个图块或者其可能具有“联机的多个图块”,其意味着多于一个图块可以在渲染单元208内在给定时间被部分地处理。在现有技术中,基于图块的图形处理***,场景的一个视图的图块中的全部图块被渲染,从而使得视图被完全渲染,并且之后来自场景的另一视图的图块被渲染。对比之下,在本文中描述的示例中,视图的组一起被渲染。视图的组包括场景的多于一个视图。组内的视图优选彼此相似,即,它们优选地包括相似的内容,从而使得它们可以共享诸如基元数据和纹理数据的数据。这意味着存储在基元高速缓存218和纹理高速缓存220中的用于渲染图块的数据很可能对渲染下一图块有用,从而使得高速缓存218和220的高速缓存命中率增大,由此减少需要从存储器2041提取的数据量(例如,基元数据和纹理数据)。减少在存储器2041与GPU202之间被传递的数据量能够显著改善图形处理***200的(例如,在速度和功耗方面的)效率。组内的视图的图块按照散布的顺序被渲染以使得来自其的图块被渲染的视图可以在来自组的不同视图之间来回切换。以这种方式,来自组中的场景的视图中的每个视图的至少一个图块在组中的场景的视图中的任何视图被渲染之前被渲染。作为示例,来自组的不同视图的图块按照交错的顺序被渲染以使得来自特定图块位置的图块针对组中的视图中的每个视图被渲染并且之后来自下一图块位置的图块针对组中的视图中的每个视图被渲染,等等。在其他示例中,控制逻辑216可以确定其中来自组的视图的图块以使得相似的图块由渲染单元208顺序地(即,相继地,也就是说,一个接着另一个)渲染的方式而被渲染的顺序。如以上提到的,本文中描述的示例具有以下益处:与其中一个帧被处理以在返回到针对下一帧的特定图块位置之前完成的***相比较,GPU102中的高速缓存和存储器可以更有可能保持相关数据完整。下面参考步骤S410到步骤S422更详细地描述渲染单元208的操作。
在步骤S410中,标识出要一起被渲染的视图的组。例如,可以成对地渲染场景的视图,从而使得在组中存在场景的两个视图。例如,参考图3中示出的示例,许多相继的帧可以被包含在相同的组中,例如,帧A302和帧B304可以一起作为第一组被渲染,并且帧C306和帧D308可以一起作为第二组被渲染。包含在组中的要一起被渲染的场景的视图的数目可以大于两个,并且可以由控制逻辑216控制。增大包含在组中的视图的数目可以增大能够实现的效率节省,因为有更多的机会来共享不同视图的图块之间的数据。对于包含在组中的每个额外的视图,渲染视图的图块变得越来越廉价(在功率和速度方面),因为高速缓存命中率增大。然而,增大包含在组中的视图的数目有可能增大在开始渲染组的视图的图块与完成渲染视图的图块中的全部图块之间的时间量。因此,存在可以由控制逻辑216在确定将多少视图包含在组中时考虑的权衡。例如,如果被渲染的场景的视图被实时输出(例如,以用于实时显示给用户),则在提交场景的视图以用于渲染与接收场景的得到的经渲染的图像之间的延迟优选保持足够低以使延迟不惹恼用户;因此,在这种情形下,包含在组中的场景的视图的数目可以被设置为相对低,例如,为两个。然而,如果被渲染的场景的视图不被实时输出(例如,图像在它们被显示给用户之前被“离线”渲染),则在提交场景的视图以用于渲染与接收场景的得到的经渲染的图像之间的延迟不是如此重要,因此,为了改善渲染的效率,在这种情形下,包含在组中的视图的数目可以被设定为相对高,例如,为五个或更多个。不存在对包含在组中的视图的数目的硬性上限,并且有时其可以比五高得多。例如,在电影渲染应用中,能够有益的是组包含在可以花费若干秒的场景突变之间跨度的帧(例如,在每秒24帧的电影的五秒将为120帧),并且可以有益的是这些帧中的全部帧被包含在组中。可以存在用于将场景的视图分配成要被渲染的组的其他适当的方式,其可以适于要要按照其渲染视图的方式。存储器2042中的缓冲区214的数目大于或等于组中的视图的数目,从而使得针对组中的每个视图,在存储器2042中存在相应的缓冲区214。
在步骤S412中,渲染单元208从存储器2041取回针对来自视图的标识到的组的视图的图块的显示列表。渲染单元208之后提取在针对图块的显示列表中标识的基元数据。基元数据被存储在基元高速缓存218中。如本领域中已知的,基元数据描述存在于被渲染的图块中的基元的特征。由基元数据描述的基元的特征可以包括(例如,由基元的顶点的x、y和z坐标给出的)基元的位置、要被应用到基元的纹理的指示、指示基元应当如何在渲染单元208中被处理的类型(例如,不透明或半透明)和基元的其他特征。如以上描述的,被提取的基元数据可以在不同示例中与经转换的基元或者未经转换的基元相关。如果所提取的基元数据是未经转换的基元数据,则转换操作可以被应用在渲染单元208中以便将基元转换到图块正针对其被渲染的视图的渲染空间中。
在步骤S414中,渲染单元208渲染图块。对图块的渲染包括HSR模块210对存在于图块中的基元执行隐藏面消除(HSR)以由此消除基元的从视图隐藏的片段,例如,在从视图正被渲染的视角它们位于其他不透明基元片段后面的情况下。如本领域中已知的,HSR可以涉及使用深度缓冲区(或者“Z缓冲区”)对基元片段执行深度测试。未被HSR模块210移除的基元片段(例如,在HSR模块210中通过其深度测试的片段)被传递到纹理化/阴影化模块212。纹理化/阴影化模块212是被配置为对片段执行纹理化和阴影化中的至少一项以确定经渲染的图像的像素值的处理模块。纹理化/阴影化模块212能够从存储器2041提取纹理数据以便对片段应用纹理化。从存储器2041提取的纹理数据被存储在纹理高速缓存220中。要指出,纹理数据常常形成出于渲染场景的视图的目的从存储器2041被传递到GPU202的数据的最大部分。像素处理逻辑213可以处理像素值,例如,以对其应用压缩和/或过滤。
在步骤S416中,渲染图块的结果(即,在以上描述的示例中的经渲染的图像的像素值)被传递到存储器2042以用于存储在缓冲区214中的合适的一个缓冲区214中。如以上描述的,针对一起被渲染的组内的视图中的每个视图,在存储器2042中存在相应的缓冲区214。能够认识到,图2示出了仅仅两个缓冲区214,但是在其中多于两个视图可以被包含在组中的其他示例中,在存储器2042中将相应地存在多于两个缓冲区214。
在步骤S418中,控制逻辑216确定是否存在要渲染的来自视图的当前组的另一图块。如果存在要渲染的来自视图的当前组的另一图块,则方法回传到步骤S412并且从存储器2041取回针对要被渲染的来自视图的当前组的下一图块的显示列表,并且步骤S412到S418被执行以渲染下一图块。在一些示例中,要被渲染的下一图块遵循序列,从而使得没有关于接下来要渲染哪个图块的主动决策必须被执行。例如,图块可以按照交错的顺序而被渲染,在交错的顺序中,来自组中的场景的视图中的每个视图的在第一图块位置处的图块被渲染,并且随后来自组中的场景的视图中的每个视图的在第二图块位置处的图块被渲染,等等。例如,参考图3,如果帧A和帧B在要一起被渲染的组中,则图块可以按照下面的顺序而被渲染:A1、B1、A2、B2、A3、B3、…。在这一示例中,来自其的下一图块被渲染的视图在渲染来自特定视图的一个图块之后被改变,然而,在其他更一般的示例中,来自其的下一图块被渲染的视图在渲染来自特定视图的一个或多个图块的集合之后被改变,其中集合不包括场景的特定视图的图块中的全部图块。例如,参考图3,如果帧A和B是在要一起被渲染的组中,则图块可以按照下面的顺序而被渲染:A1、B1、B2、A2、A3、B3、B4、A4、A5、B5、B6、A6…。这一顺序具有与以上给出的交错的顺序相同的优点,因为在来自不同视图的相同图块位置处的图块相继地(即顺序地)被渲染,而且当来自其的图块被渲染的图块位置改变时,来自其的图块被渲染的视图不改变。这可以增大在相继渲染的图块之间的相似度,其如以上描述的可以例如通过改善基元高速缓存218和纹理高速缓存220的高速缓存命中率来改善图形处理***200的效率。作为示例,在图块B1与图块B2之间的相似度可以很可能比在图块B1与图块A2之间的相似度高,因此在渲染图块B1之后可以有利的是接下来渲染图块B2而非图块A2。
在另一示例中,帧A和帧B的图块可以被渲染以使得来自帧A的图块的集合被渲染,接着来自帧B的图块的对应的集合被渲染。例如,如果在集合中存在四个图块,则图块可以按照下面的顺序而被渲染:A1、A2、A3、A4、B1、B2、B3、B4、A5、A6、A7、A8、B5、B6、B7、B8、等等。集合中的图块的数目可以取决于存储在高速缓存218和高速缓存220中的数据量而被选择,从而使得针对集合中的图块中的至少全部图块(例如,针对以上给出的示例中的至少四个图块)的数据能够在给定时间被存储在高速缓存218和高速缓存220中,以由此实现本文中描述的由于改善的高速缓存命中率得到的效率增益。
尽管图块被渲染的顺序可以遵循如以上描述的散布的序列,但是在其他示例中,控制逻辑216可以控制其中图块被渲染的顺序。也就是说,控制逻辑216可以确定哪个图块要在特定图块已经被渲染之后渲染。控制逻辑216可以实施用于预测来自场景的不同视图的哪些图块与彼此相对应的机制。这样的机制可以在不同示例中是不同的,如下面更详细地描述的。控制逻辑216可以确定来自视图的当前组的很可能与特定图块相似的图块已经刚刚被渲染并可以使得该图块接下来被渲染。以这种方式,在渲染特定图块的最后存储在高速缓存218和高速缓存220中的数据与渲染下一图块相关的可能性被增大,由此增大高速缓存命中率。下面参考图5描述控制逻辑216如何确定图块被渲染的顺序的一些示例。
如果在步骤S418中确定不再存在要渲染的来自视图的当前组的图块,则当前组中的场景的视图已经被完全渲染以使得缓冲区214中的像素值表示场景的经完全渲染的视图。方法接下来传递到步骤
S420,在步骤S420中,缓冲区214中的像素值被输出以例如用于显示给用户、用于存储在存储器中、或者用于发送到另一设备。这使得缓冲区214可用于存储渲染场景的另外的视图的另外的图块的结果。
在步骤S422中,控制逻辑416确定是否存在要渲染的视图的另一组。如果不再存在要渲染的视图的组,则方法在步骤S424中结束。然而,如果存在针对其图块化已经被执行但是其还没有被渲染的视图的更多组,则方法传回到步骤S410,在步骤S410中视图的另一组被标识,其中标识的组的图块要按照散布的顺序一起被渲染。之后针对视图的标识的组重复步骤S412到步骤S422以由此渲染来自标识的组的视图。
图5示出了场景的两个视图的示例:视图A502和视图B504,其要一起作为视图的相同组的部分被渲染。场景的两个视图示出了基元506,基元506位于不同视图502和视图504中的渲染空间的明显不同的部分中。例如,视图A和视图B可以是相继的帧,从而使得它们表示场景的在不同时刻的视图,并且基元506可以已经在帧A的时间与帧B的时间之间移动。能够在图5中看到,视图A502的一些图块与视图B504的图块相似但是处在渲染空间内的不同位置处。例如,(利用附图标记508A1指示的)图块A1与(利用附图标记508B6指示的)图块B6相似。视图之间的运动的指示可以由运动向量描述。运动向量可以被提供有从用于通过图形处理***200渲染的应用提供的基元数据,其中运动向量指示在特定视图(例如,视图A502)的图块与不同视图(例如,视图B504)的区域之间的运动。例如,运动向量可以指示从与视图A中的图块508A1相对应的区域到大致与视图B中的图块508B6相对应的区域存在运动。渲染单元208能够获得运动向量并且能够基于所获得的运动向量来选择要在特定图块(例如,图块508A1)已经被渲染之后被渲染的图块(例如,图块508B6)。
在另一示例中,视图502和视图504可以是场景的来自不同视角的两个视图。这能够在(例如,针对虚拟现实应用)场景的3D图像要被渲染的情况下有用,其中两个视图502和504可以分别与场景的来自右眼和左眼的视角的视图相对应。两个视图502和504可以大致在相同时刻,但是由于不同视角,与在视图B504的渲染空间中相比,基元506可以位于在视图A502的渲染空间中的不同位置处,例如,如图5中示出的。在这种情况下,将不存在用于指示哪些图块有可能在不同视图中相似的运动向量。然而,针对其中两个视图表示右眼视角和左眼视角的情况,可以存在两个不同的视图中的基元的位置之间的已知关系。这样的关系能够由渲染单元208使用以便选择要在特定图块(例如,图块508A1)之后被渲染的图块(例如,图块508B6),从而使得来自不同视图的相似的图块顺序地被渲染。
在其中视图502和视图504可以是场景的来自不同视角的两个视图的另一示例中,视图可以针对在场景中(例如,在其中不同的用户能够独立地与场景交互)的多玩家游戏中交互的不同的用户(用户A和用户B)。两个视图502和504可以大致是在相同时刻,但是由于不同视角,与基元506位于视图B504的渲染空间中相比,基元506可以位于视图A502的渲染空间中的不同位置处,例如,如图5中示出的。在这种情况下,可能不存在在两个不同视图中的基元的位置之间的已知关系。然而,在这种情况下,当决定哪个图块要在特定图块已经被渲染之后渲染时,控制逻辑216可以分析场景的至少一个先前视图以确定在特定图块的图块位置处的图块与在其他图块位置处的图块之间的相似度的相应的度量,并且之后控制逻辑216可以基于相似度度量来选择要在特定图块之后被渲染的图块。例如,对场景的在较早时刻的先前视图的分析可以指示来自用户A的视角的图块508A1与在相同时刻的图块508B6相似,并且因此控制逻辑216可以选择要在图块508A1之后被渲染的图块508B6。
可以存在指示有可能与组中的场景的视图中的不同图块相似的图块的至少一个转换。例如,参考图5,转换可以指示视图502中的在列x和行y处的图块有可能与视图504中的在列x+1和行y+1处的图块相似。这样的转换将指示视图A502中的图块508A1有可能与视图B504中的图块508B6相似。
在一些示例中,控制逻辑216能够例如基于对平均高速缓存命中率的分析来动态地调整组内的图块被渲染的顺序和/或动态地调整被包含在组中的视图,以由此试图增大高速缓存命中率。
在以上描述的示例中,场景的视图被渲染以提供包括经渲染的像素值的图像。然而,在其他示例中,场景的视图中的至少一些视图表示用于在渲染场景的另一视图中使用的子渲染,其中场景的该另一视图可以是图像。换言之,子渲染的结果不是帧,但是反而用于在渲染帧中使用。子渲染通常(但是不一定)针对与对使用该子渲染的场景的渲染相同的时刻而被执行。换言之,子渲染和针对其子渲染被执行的场景的另一视图与相同时刻相关。例如,子渲染可以是用于在渲染场景的另一视图中使用的阴影图、环境图或纹理。为了渲染针对场景的阴影图,从相应的至少一个光源的至少一个视角渲染场景。针对每个光源视角,并且针对场景的每个基元片段,基元片段是否从光源的视角可见的指示被存储。这些指示能够之后被用于将阴影效果应用到从用户视角渲染的图像。作为另一示例,子渲染可以是环境图,该环境图能够被用于提供来自除了用户视角以外的视角的视图,该环境图能够对诸如反射的效果有用。例如,如果反射对象存在于要被渲染的场景中,则场景能够从反射对象的表面的视角被渲染,其中该渲染的结果是针对反射对象的环境图。环境图能够在场景从用户视角被渲染以确定反射对象的表面如何显现在经渲染的图像中(例如,通过按照与在渲染期间纹理被应用到对象的表面的方式相似的方式将环境图应用到反射对象的表面)时被使用。更一般地,作为另一示例,子渲染可以是用于在渲染场景的另一视图中使用的纹理。也就是说,渲染视图的结果可以被存储为要被应用到场景的另一视图中的一个或多个基元的纹理。诸如这样的“渲染到纹理”技术可以作为如以上描述的环境图以包括图像中的反射。例如,为了将纹理应用到诸如镜子的反射表面,场景的来自表面中的反射的视角的视图可以被渲染并被存储为场景的来自用户视角的能够之后在图像被渲染时被应用到表面的纹理。由于子渲染倾向于从与从其场景的随后视图使用子渲染被渲染的用户视角不同的视角被渲染,所以尤其有用的是使用一个或多个转换来指示有可能在子渲染中与随后渲染中相似的图块。这是因为不同的图块可以表示场景的在子渲染和随后渲染中的由于不同的视角的相同区域。如以上描述的,图块从子渲染和随后渲染被渲染的散布的顺序可以基于一个或多个转换,从而使得来自组中的场景的视图的相似的图块顺序地被渲染。
图6示出了图示了在示例中帧被利用其渲染的时序的时序图,并且特别地示出了如何通过实施本文中描述的原理来增大帧率。图6示出了具有指示的时间t0到时间t5的时间轴,时间t0到时间t5是帧从显示器被输出的时间。例如,针对kHz显示器,所指示的时间中的相继的时间之间的时间差为秒,其中k可以例如为60。在其他示例中,k可以具有其他适当的值。通过GPU对帧的渲染是复杂的任务并且其可以例如花费大约秒来渲染帧。因此如果第一帧F1被提交用于在时间t0处进行渲染,则其可以准备好在稍后大约秒被显示在显示器上,但是在显示器的帧率为60Hz的示例中,帧F1未准备好在时间t1处被输出,并且相反在时间t2处被输出。在根据现有技术的***中,其中一个帧的图块在下一帧的图块被渲染之前被全部渲染(被称为图6中的“逐帧渲染”),下一帧(帧F2)能够被提交用于在第一帧(帧F1)已经被渲染之后进行渲染。因此,帧F2能够被提交用于在时间t2处渲染并且能够准备好用于在时间t4处显示。
如以上描述的,渲染帧花费的时间的重大部分被花费于在GPU(例如,GPU202)与***存储器(例如,存储器2041和2042)之间传递数据。因此,通过使用本文中描述的示例的其中帧的组的图块能够按照散布的顺序来渲染以由此改善高速缓存命中率的散布的渲染技术,能够被显示的帧率能够被增大。例如,帧F1和F1’可以被提交用于在时间t0处一起渲染。尽管每个单个帧花费大约秒来渲染,但是如以上描述的图形处理***200能够比按照逐帧的方式渲染两个分离的帧更高效地渲染组中的两个帧。因此,本文中描述的示例中的渲染两个帧F1和F1’花费的时间少于秒,并且特别可以少于秒。如果是这样的情况,则如图6中示出的,当散布的渲染根据本文中描述的示例而被实施时,帧F1和F1’中的两个可以在时间t2之前被完全渲染。因此,如图6中示出的,帧F1能够在时间t2处被显示并且帧F1’能够在时间t3处被显示。类似地,帧F2和F2’能够被提交以用于作为组一起在时间t2渲染,从而使得两个帧F2和F2’可以在时间t4之前被渲染,从而使得帧F2能够在时间t4处被显示并且帧F2’能够在时间t5处被显示。
图6中示出的示例图示了通过使用散布的渲染技术来一起渲染帧的组,所显示的帧率能够被增大(在图6中示出的示例中,所显示的帧率被加倍)。即,利用实施逐帧渲染的先前***,帧F1和F2在时间t2和时间t4处被显示,但是帧F1’和F2’未被显示,然而,利用本文中描述的散布的渲染技术,帧F1、F1’、F2和F2’能够分别在时间t2、t3、t4和t5处被显示。
图7示出了实施如本文中描述的图形处理***的设备700的示意图。设备700可以例如为智能电话、平板计算机或者笔记本计算机或者任何其他适当的计算设备。设备700实施图形处理单元202。设备700还包括CPU702、存储器704和其他设备706,例如,显示器708、扬声器710和相机712。存储器704可以包括以上描述的存储器2041和2042。根据本文中描述的示例,显示器708可以被配置为显示由GPU202提供的场景的经渲染的视图中的至少一个。设备700的部件能够经由通信总线714与彼此通信。GPU202的功能可以被实施在硬件、运行在硬件上的软件或者其组合中。
图8示出了实施如本文中描述的图形处理***的服务器800的示意图。图8还示出了设备802,其可以为任何适当的计算设备,例如智能电话、平板计算机或笔记本计算机。服务器800实施图形处理单元202。服务器800还包括存储器804和发射器806。存储器804可以包括以上描述的存储器2041和2042。设备802包括接收器808、CPU810、显示器812和存储器814。GPU202渲染如以上描述的场景的视图并且发射器806可以被配置为将(可能按照压缩形式的)场景的经渲染的视图发送到设备802的接收器808。设备802能够将场景的经渲染的视图显示在显示器812上。场景的经渲染的视图从服务器800到设备802的传输可以按照任何适当的方式(例如,无线地、通过互联网、通过电信***、通过有线连接或者如本领域中将已知的任何其他适当的传输方法)而被完成。GPU202的功能可以被实施在硬件、运行在硬件上的软件或者其组合中。在一些示例中,GPU202可以渲染场景的针对不同用户的视图,并且不同的经渲染的视图可以被传输到不同的设备以用于显示在其上。这可以尤其在例如处于不同地点中的两个用户正在玩游戏并且对视图的渲染被执行在服务器800中的情况下特别有用。
在以上描述的示例中,按照散布的顺序对图块的渲染涉及用于确定哪些基元与渲染不同的图块(例如,确定显示列表)相关并且之后涉及基于被确定为与渲染该图块相关的基元来渲染图块的渲染步骤。在其他示例中,可能不一定实施分离的图块化阶段。例如,基元能够被提交到渲染阶段,该渲染阶段具有丢弃在给定图块区域外的基元的视口。帧能够通过提交针对帧的基元多次并且在每次提交时将视口四处移动到新的图块区域直到整个帧已经被渲染而被构建,或者多个渲染单元可以并行地每个以其自己的视角(即图块区域)操作以使得它们能够一起操作以渲染图像的不同部分。在这些示例中,仍然是这样的情况,通过按照散布的顺序渲染来自场景的不同视图的图块,能够改善高速缓存命中率。
在以上描述的示例中,图形处理***200是延迟的渲染***。在其他示例中,图形处理***能够是非延迟的渲染***,在非延迟的渲染***中纹理化和/或阴影化在隐藏面消除之前被应用到片段。在这样的非延迟的渲染***中,从***存储器传递到GPU的数据量可以被增大,因为一些纹理数据可以从存储器被提取以用于对片段进行纹理化,片段之后通过隐藏面消除而被消除,因为它们被从视图隐藏。因此,非延迟的渲染***可能不如延迟的渲染***最佳,但是本文中描述的示例能够仍然被应用到非延迟的渲染***。
一般地,以上描述的功能、方法、技术或部件中的任何能够被实施在使用软件、固件、硬件(例如,固定逻辑电路)或者这些实施方式中的任何组合的模块中。术语“模块”、“功能”、“部件”、“块”、“单元”和“逻辑”在本文中被用于总体上表示软件、固件、硬件或其任何组合。
在软件实施方式的情况下,模块、功能、块、单元、部件或逻辑表示当运行在处理器(例如,一个或多个CPU)上时执行指定任务的程序代码。在一个示例中,描述的方法可以通过被配置有以机器可读形式存储在计算机可读介质上的计算机程序产品的软件的计算机而被执行。计算机可读介质的一个这样的配置是信号承载介质并且因此被配置为将指令(例如,作为载波)例如经由网络传输到计算设备。计算机可读介质还可以被配置为计算机可读存储介质并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器和可以使用磁技术、光技术和其他技术来存储指令或其他数据并且能够由机器访问的其他存储器设备。
软件可以按照包括用于将计算机配置为执行描述的方法的构成部分的计算机程序代码的计算机程序的形式或者按照包括适于在程序在计算机上运行时执行本文中描述的方法中的任何的全部步骤的计算机程序代码模块的计算机程序的形式,并且其中计算机程序可以被实现在计算机可读介质上。程序代码能够被存储在一个或多个计算机可读介质中。本文中描述的技术的特征是平台无关的,这意味着该技术可以被实施在具有各种处理器的各种计算平台上。
本领域技术人员还将意识到,功能、技术或方法中的全部或部分可以由专用电路、专用集成电路、可编程逻辑阵列、现场可编程门阵列等等来实现。例如,模块、功能、部件、单元、块或逻辑可以包括以电路的形式的硬件。这样的电路可以包括在制造工艺中可用的晶体管和/或其他硬件元件。这样的晶体管和/或其他元件可以被用于形成实施和/或包含通过举例的方式诸如寄存器、触发器或锁存器的存储器、诸如布尔运算的逻辑运算符、诸如加法器、乘法器或移位器的数学运算符以及互连件的电路或结构。这样的元件可以被提供为经典电路或标准单元库、宏、或者在其他级别的抽象。这样的元件可以被相互连接在特定布置中。模块、功能、部件、单元、块或逻辑可以包括为固定功能的电路和能够被编程为执行一个或多个功能的电路;这样的编程可以根据固件或软件更新或控制机制来提供。在示例中,硬件逻辑具有实施固定功能操作、状态机或过程的电路。
还意图包含“描述”或定义实施以上描述的模块、功能、部件、单元或逻辑(例如图形处理单元202的部件)的硬件的配置的软件(例如,HDL(硬件描述语言)软件),如被用于设计集成电路或者用于将可编程芯片配置为实现期望功能。也就是说,可以提供一种计算机可读存储介质,其具有编码在其上的按照集成电路定义数据集的形式的计算机可读程序代码,集成电路定义数据集当在集成电路制造***中被处理时将***配置为制造被配置为执行本文中描述的方法中的任何的图形处理***或者制造包括本文中描述的任何装置的图形处理***。IC定义数据集可以按照例如以诸如寄存器传输级(RTL)代码的适当的HDL编写的计算机代码的形式。在集成电路制造***处处理集成电路定义数据集从而将***配置为制造图形处理***的示例现在将参考图9进行描述。
图9示出了包括布局处理***904和集成电路生成***906的集成电路(IC)制造***902的示例。IC制造***902被配置为接收IC定义数据集(例如,定义如在本文中的示例中的任何中描述的图形处理单元)、处理IC定义数据集并且根据IC定义数据集来生成IC(例如,其实现如在本文中的示例中的任何中描述的图形处理***)。对IC定义数据集的处理将IC制造***902配置为制造实现如在本文中的示例中的任何中描述的图形处理单元的集成电路。更具体地,布局处理***904被配置为接收并处理ID定义数据集以确定电路布局。根据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中示出的示例中,IC生成***还可以由集成电路定义数据集配置为在制造集成电路时将根据在集成电路定义数据集处定义的程序代码的固件加载到该集成电路上或者按照其他方式向集成电路提供程序代码以用于与集成电路一起使用。
术语“处理器”和“计算机”在本文中用于指代具有使得其能够运行指令的处理能力的任何设备或其部分或者能够执行功能或方法中的全部或部分的专用电路、或者其任何组合。
尽管本主题已经按照特定于结构特征和/或方法动作的语言进行了描述,但是要理解,权利要求中限定的主题不一定限于以上描述的具体特征或动作。相反,以上描述的具体特征和动作被公开为实施权利要求的示例形式。将理解,以上描述的益处和优点可以涉及一个示例或可以涉及若干示例。
如将对技术人员显而易见的,可以在不丧失寻求的效果的情况下扩展或更改本文中给出的任何范围或值。本文中描述的方法步骤可以按照任何适当的顺序或者在合适的情况下同时地被执行。在不丧失寻求的效果的情况下,以上描述的示例中的任何的方面可以与描述的其他示例中的任何的方面进行组合以形成另外的示例。
Claims (22)
1.一种在图形处理单元中渲染场景的视图的方法,所述图形处理单元被配置为使用渲染空间,所述渲染空间被细分成多个图块,所述方法包括:
按照散布的顺序渲染所述场景的所述视图的图块,以使得针对所述场景的视图的多个组中的每个组,来自所述组中的所述场景的所述视图中的每个视图的至少一个图块在所述组中的所述场景的所述视图中的任何视图被完全渲染之前被渲染。
2.一种被配置为渲染场景的视图的图形处理单元,其中所述图形处理单元被配置为使用渲染空间,所述渲染空间被细分成多个图块,所述图形处理单元包括:
渲染单元,所述渲染单元被配置为按照散布的顺序渲染所述场景的所述视图的图块,以使得针对所述场景的视图的多个组中的每个组,来自所述组中的所述场景的所述视图中的每个视图的至少一个图块在所述组中的所述场景的所述视图中的任何视图被完全渲染之前被渲染。
3.根据权利要求2所述的图形处理单元,还包括:
图块化单元,所述图块化单元被配置为针对所述场景的所述视图中的每个视图,处理所述场景的所述视图的基元以针对所述场景的所述视图的所述图块中的每个图块,确定所述基元中的哪些基元与渲染所述图块相关;
其中所述渲染单元被配置为使用所述基元中的哪些基元与渲染所述场景的视图的图块相关的确定以用于渲染所述场景的所述视图的图块。
4.根据权利要求3所述的图形处理单元,其中所述图块化单元被配置为针对所述场景的所述视图中的每个视图,对所述场景的所述视图的所述基元执行图块化以确定针对所述场景的所述视图的图块的显示列表,其中针对图块的所述显示列表指示所述基元中的哪些基元与渲染所述图块相关;
其中所述渲染单元被配置为使用确定的所述显示列表以用于所述渲染所述场景的所述视图的图块。
5.根据权利要求2至4中的任一项所述的图形处理单元,其中所述组中的所述场景的所述视图中的至少一些视图是表示所述场景的在时刻的序列处的图像的帧。
6.根据权利要求2至5中的任一项所述的图形处理单元,其中所述组中的所述场景的所述视图中的至少两个视图是所述场景的来自相应的不同视角的图像。
7.根据权利要求2至6中的任一项所述的图形处理单元,其中所述组中的所述场景的所述视图中的至少一个视图表示用于在渲染所述场景的另一视图中使用的子渲染。
8.根据权利要求7所述的图形处理单元,其中所述子渲染和所述场景的所述另一视图与相同时刻相关。
9.根据权利要求7或8所述的图形处理单元,其中所述子渲染是用于在渲染所述场景的另一个视图中使用的阴影图、环境图或纹理。
10.根据权利要求2至9中的任一项所述的图形处理单元,其中所述散布的顺序使得所述渲染单元被配置为渲染在来自组中的所述场景的所述视图中的每个视图的第一图块位置处的图块,以及随后渲染在来自所述组中的所述场景的所述视图中的每个视图的第二图块位置处的图块。
11.根据权利要求2至9中的任一项所述的图形处理单元,其中所述渲染单元被配置为使用指示很有可能在组中的所述场景的所述视图中的不同视图中相似的图块的至少一个转换,其中所述散布的顺序基于所述至少一个转换,以使得所述渲染单元被配置为顺序地渲染来自所述组中的所述场景的所述视图的相似图块。
12.根据权利要求2至11中的任一项所述的图形处理单元,其中所述渲染单元被配置为使用的所述散布的顺序使得下一图块被从其渲染的视图在渲染来自特定视图的一个或多个图块的集合之后被改变,其中所述集合不包括所述场景的所述特定视图的所述图块中的全部图块。
13.根据权利要求2至12中的任一项所述的图形处理单元,其中所述渲染单元包括被配置为确定哪个图块要在特定图块已经被渲染之后被渲染的控制逻辑。
14.根据权利要求13所述的图形处理单元,其中所述控制逻辑被配置为通过以下来确定哪个图块要在特定图块已经被渲染之后被渲染:
获得指示特定视图的所述特定图块与不同视图的区域之间的运动的至少一个运动向量;以及
基于获得的所述至少一个运动向量来选择要在所述特定图块之后被渲染的图块。
15.根据权利要求14所述的图形处理单元,其中所述控制逻辑被配置为通过以下来确定哪个图块要在特定图块已经被渲染之后被渲染:
分析所述场景的至少一个先前视图以确定在所述特定图块的图块位置处的图块与在其他图块位置处的图块之间的相似度的相应的度量;以及
基于相似度度量来选择要在所述特定图块之后被渲染的图块。
16.根据权利要求2至15中的任一项所述的图形处理单元,所述图形处理单元被配置为针对组中的所述场景的所述视图中的每个视图,使用用于存储渲染所述场景的相应的视图的所述图块的结果的指示的相应的缓冲区。
17.根据权利要求2至16中的任一项所述的图形处理单元,还包括至少一个高速缓存,其中所述图形处理单元被配置为:
从存储器提取数据以用于由所述渲染单元在渲染图块中使用;以及
将提取的数据存储在所述至少一个高速缓存中。
18.根据权利要求2至17中的任一项所述的图形处理单元,其中所述渲染单元还包括:
隐藏面消除模块,所述隐藏面消除模块被配置为对针对渲染图块相关的基元的至少一些片段执行隐藏面消除;以及
处理模块,所述处理模块被配置为对针对渲染所述图块相关的基元的所述片段中的至少一些片段执行纹理化和阴影化中的至少一项。
19.根据权利要求4或者当从属于权利要求4时的权利要求5至18中的任一项所述的图形处理单元,其中所述图块化单元被配置为将针对所述场景的视图的基元转换到针对所述场景的所述视图的所述渲染空间中,以确定哪些基元针对渲染所述场景的所述视图的所述图块相关,以及使得与转换的所述基元相关的数据被存储在基元存储库中,其中针对所述场景的所述视图的图块的所述显示列表指示转换的所述基元中的哪些转换的所述基元针对渲染所述图块相关,
并且其中所述渲染单元被配置为从所述基元存储库取回与针对渲染图块相关的转换的所述基元相关的数据以用于在渲染所述图块中使用。
20.根据权利要求4或者当从属于权利要求4时的权利要求5至18中的任一项所述的图形处理单元,其中所述图块化单元被配置为将针对所述场景的视图的基元转换到针对所述场景的所述视图的所述渲染空间中,以确定哪些基元针对渲染所述场景的所述视图的所述图块相关,其中针对所述场景的所述视图的图块的所述显示列表指示所述基元中的哪些基元针对渲染所述图块相关,
并且其中所述渲染单元被配置为出于渲染所述场景的所述视图的所述图块的目的将针对所述场景的视图的基元转换到针对所述场景的所述视图的所述渲染空间中。
21.根据权利要求2至20中的任一项所述的图形处理单元,其中所述图形处理单元被实施在包括显示器的设备上,其中所述设备被配置为将所述场景的渲染的所述视图中的至少一个渲染的所述视图显示在所述显示器上。
22.根据权利要求2至20中的任一项所述的图形处理单元,其中所述图形处理单元被实施在服务器上,其中服务器被配置为将所述场景的渲染的所述视图中的至少一个渲染的所述视图传输到设备以用于显示在所述设备的显示器上。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1500855.0A GB2534225B (en) | 2015-01-19 | 2015-01-19 | Rendering views of a scene in a graphics processing unit |
GB1500855.0 | 2015-01-19 | ||
GB1518254.6 | 2015-10-15 | ||
GB1518254.6A GB2534261B (en) | 2015-01-19 | 2015-10-15 | Rendering views of a scene in a graphics processing unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105809728A true CN105809728A (zh) | 2016-07-27 |
CN105809728B CN105809728B (zh) | 2021-01-01 |
Family
ID=52630787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610031864.9A Active CN105809728B (zh) | 2015-01-19 | 2016-01-18 | 在图形处理单元中渲染场景的视图 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10964105B2 (zh) |
EP (1) | EP3048582B1 (zh) |
CN (1) | CN105809728B (zh) |
GB (2) | GB2534225B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108305318A (zh) * | 2017-01-12 | 2018-07-20 | 想象技术有限公司 | 图形处理单元和使用渲染空间的图块集合的成本指示来控制渲染复杂度的方法 |
CN108694738A (zh) * | 2017-04-01 | 2018-10-23 | 英特尔公司 | 去耦的多层渲染频率 |
CN109144240A (zh) * | 2017-06-19 | 2019-01-04 | Arm有限公司 | 图形处理*** |
CN109979000A (zh) * | 2017-12-14 | 2019-07-05 | 想象技术有限公司 | 多视图图元块 |
CN110351926A (zh) * | 2019-07-09 | 2019-10-18 | 厦门亿联网络技术股份有限公司 | 一种rgb灯效的控制方法及ip电话机销售的商业方法 |
CN110889799A (zh) * | 2018-09-11 | 2020-03-17 | 顶级公司 | 用于产生更高分辨率帧的方法、装置和处理器 |
CN111133475A (zh) * | 2017-09-29 | 2020-05-08 | 苹果公司 | 具有可配置变换参数的多空间渲染 |
CN111542872A (zh) * | 2018-01-04 | 2020-08-14 | 高通股份有限公司 | 任意块渲染和显示帧重构 |
CN112614041A (zh) * | 2020-12-29 | 2021-04-06 | 完美世界(北京)软件科技发展有限公司 | 稀疏渲染的数据驱动方法及装置、存储介质、电子装置 |
CN113327188A (zh) * | 2020-02-28 | 2021-08-31 | 畅想科技有限公司 | 关键工作负载检查 |
CN113436344A (zh) * | 2021-06-25 | 2021-09-24 | 广联达科技股份有限公司 | 一种引用视图的显示方法、***及图像显示设备 |
CN115049774A (zh) * | 2022-08-12 | 2022-09-13 | 深流微智能科技(深圳)有限公司 | 图形处理方法、处理器、存储介质及终端设备 |
US11587197B2 (en) | 2020-02-28 | 2023-02-21 | Imagination Technologies Limited | Critical workload check |
CN115719301A (zh) * | 2018-12-21 | 2023-02-28 | 想象技术有限公司 | 基于图块的调度 |
US12033236B2 (en) | 2020-02-28 | 2024-07-09 | Imagination Technologies Limited | Detecting error in safety-critical GPU by monitoring for response to an instruction |
Families Citing this family (11)
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 |
GB2546720B (en) * | 2015-11-02 | 2019-11-13 | Advanced Risc Mach Ltd | Method of and apparatus for graphics processing |
GB2561807B (en) * | 2017-01-12 | 2019-09-25 | Imagination Tech Ltd | Computing systems and methods for processing graphics data using cost indications for sets of tiles of a rendering space |
US10403032B2 (en) | 2017-08-22 | 2019-09-03 | Qualcomm Incorporated | Rendering an image from computer graphics using two rendering computing devices |
US10776997B2 (en) | 2017-08-24 | 2020-09-15 | Qualcomm Incorporated | Rendering an image from computer graphics using two rendering computing devices |
CN108339270B (zh) | 2018-02-09 | 2019-03-08 | 网易(杭州)网络有限公司 | 游戏场景中静态组件的处理方法、渲染方法及装置 |
CN112204622A (zh) | 2018-05-24 | 2021-01-08 | 首选网络株式会社 | 绘制装置、学习装置、绘制方法以及程序 |
GB2570743B (en) * | 2018-06-29 | 2021-06-23 | Imagination Tech Ltd | Tile assignment to processing cores within a graphics processing unit |
US10713753B2 (en) * | 2018-10-12 | 2020-07-14 | Apical Limited | Data processing systems |
US11055812B1 (en) | 2020-05-26 | 2021-07-06 | Apple Inc. | Opportunistic launch of idempotent geometry stage render operations |
CN112291619B (zh) * | 2020-10-24 | 2023-09-29 | 西北工业大学 | 一种基于阻塞与停顿的移动端小程序帧渲染方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192311A (zh) * | 2006-11-28 | 2008-06-04 | 国际商业机器公司 | 执行射线追踪的方法和*** |
CN102239678A (zh) * | 2008-12-06 | 2011-11-09 | 国际商业机器公司 | 用于逼真成像工作量分布的***和方法 |
CN104183005A (zh) * | 2013-05-24 | 2014-12-03 | 三星电子株式会社 | 图形处理单元和基于图块的渲染方法 |
US20140354682A1 (en) * | 2013-06-04 | 2014-12-04 | Arm Limited | Method of and apparatus for processing graphics |
US20140375663A1 (en) * | 2013-06-24 | 2014-12-25 | Alexander Pfaffe | Interleaved tiled rendering of stereoscopic scenes |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0922126D0 (en) * | 2009-12-17 | 2010-02-03 | Advanced Risc Mach Ltd | Graphics processing systems |
US9754344B2 (en) * | 2014-06-27 | 2017-09-05 | Samsung Electronics Co., Ltd. | Forward late predictive rendering in a graphics system |
KR102354992B1 (ko) * | 2015-03-02 | 2022-01-24 | 삼성전자주식회사 | 양안 시차 영상에 대한 타일 기반 렌더링 방법 및 장치 |
-
2015
- 2015-01-19 GB GB1500855.0A patent/GB2534225B/en active Active
- 2015-10-15 GB GB1518254.6A patent/GB2534261B/en active Active
-
2016
- 2016-01-05 EP EP16150253.9A patent/EP3048582B1/en active Active
- 2016-01-18 CN CN201610031864.9A patent/CN105809728B/zh active Active
- 2016-01-19 US US15/000,197 patent/US10964105B2/en active Active
-
2021
- 2021-03-10 US US17/197,502 patent/US11941757B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192311A (zh) * | 2006-11-28 | 2008-06-04 | 国际商业机器公司 | 执行射线追踪的方法和*** |
CN102239678A (zh) * | 2008-12-06 | 2011-11-09 | 国际商业机器公司 | 用于逼真成像工作量分布的***和方法 |
CN104183005A (zh) * | 2013-05-24 | 2014-12-03 | 三星电子株式会社 | 图形处理单元和基于图块的渲染方法 |
US20140354682A1 (en) * | 2013-06-04 | 2014-12-04 | Arm Limited | Method of and apparatus for processing graphics |
US20140375663A1 (en) * | 2013-06-24 | 2014-12-25 | Alexander Pfaffe | Interleaved tiled rendering of stereoscopic scenes |
Non-Patent Citations (2)
Title |
---|
JOSE-MARIA ARNAU ; JOAN-MANUEL PARCERISA ; POLYCHRONIS XEKALAKIS: "Parallel Frame Rendering: Trading Responsiveness", 《PROCEEDINGS OF THE 22ND INTERNATIONAL CONFERENCE ON PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES》 * |
刘镇; 郝冬宁; 梅向东: "基于CUDA的并行加速渲染算法", 《中国图象图形学报》 * |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108305318B (zh) * | 2017-01-12 | 2022-11-25 | 想象技术有限公司 | 图形处理单元和使用渲染空间的图块集合的成本指示来控制渲染复杂度的方法 |
US11710268B2 (en) | 2017-01-12 | 2023-07-25 | Imagination Technologies Limited | Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space |
CN108305318A (zh) * | 2017-01-12 | 2018-07-20 | 想象技术有限公司 | 图形处理单元和使用渲染空间的图块集合的成本指示来控制渲染复杂度的方法 |
CN108694738A (zh) * | 2017-04-01 | 2018-10-23 | 英特尔公司 | 去耦的多层渲染频率 |
CN108694738B (zh) * | 2017-04-01 | 2024-05-24 | 英特尔公司 | 去耦的多层渲染频率 |
CN109144240A (zh) * | 2017-06-19 | 2019-01-04 | Arm有限公司 | 图形处理*** |
CN109144240B (zh) * | 2017-06-19 | 2024-04-12 | Arm有限公司 | 图形处理***和操作图形处理***的方法、显示*** |
CN111133475A (zh) * | 2017-09-29 | 2020-05-08 | 苹果公司 | 具有可配置变换参数的多空间渲染 |
CN111133475B (zh) * | 2017-09-29 | 2023-11-07 | 苹果公司 | 用于渲染图形对象的装置和方法 |
CN109979000A (zh) * | 2017-12-14 | 2019-07-05 | 想象技术有限公司 | 多视图图元块 |
CN111542872B (zh) * | 2018-01-04 | 2021-06-22 | 高通股份有限公司 | 任意块渲染和显示帧重构 |
CN111542872A (zh) * | 2018-01-04 | 2020-08-14 | 高通股份有限公司 | 任意块渲染和显示帧重构 |
CN110889799A (zh) * | 2018-09-11 | 2020-03-17 | 顶级公司 | 用于产生更高分辨率帧的方法、装置和处理器 |
CN115719301A (zh) * | 2018-12-21 | 2023-02-28 | 想象技术有限公司 | 基于图块的调度 |
CN115719301B (zh) * | 2018-12-21 | 2024-06-11 | 想象技术有限公司 | 基于图块的调度 |
CN110351926A (zh) * | 2019-07-09 | 2019-10-18 | 厦门亿联网络技术股份有限公司 | 一种rgb灯效的控制方法及ip电话机销售的商业方法 |
US11880907B2 (en) | 2020-02-28 | 2024-01-23 | Imagination Technologies Limited | Configuration check for safety-critical GPU |
US11587198B2 (en) | 2020-02-28 | 2023-02-21 | Imagination Technologies Limited | Critical workload check |
US11587197B2 (en) | 2020-02-28 | 2023-02-21 | Imagination Technologies Limited | Critical workload check |
CN113327188A (zh) * | 2020-02-28 | 2021-08-31 | 畅想科技有限公司 | 关键工作负载检查 |
US12033236B2 (en) | 2020-02-28 | 2024-07-09 | Imagination Technologies Limited | Detecting error in safety-critical GPU by monitoring for response to an instruction |
CN112614041A (zh) * | 2020-12-29 | 2021-04-06 | 完美世界(北京)软件科技发展有限公司 | 稀疏渲染的数据驱动方法及装置、存储介质、电子装置 |
CN113436344A (zh) * | 2021-06-25 | 2021-09-24 | 广联达科技股份有限公司 | 一种引用视图的显示方法、***及图像显示设备 |
CN115049774B (zh) * | 2022-08-12 | 2022-11-01 | 深流微智能科技(深圳)有限公司 | 图形处理方法、处理器、存储介质及终端设备 |
CN115049774A (zh) * | 2022-08-12 | 2022-09-13 | 深流微智能科技(深圳)有限公司 | 图形处理方法、处理器、存储介质及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
GB2534261A (en) | 2016-07-20 |
EP3048582B1 (en) | 2019-12-18 |
US11941757B2 (en) | 2024-03-26 |
GB201518254D0 (en) | 2015-12-02 |
US20160240000A1 (en) | 2016-08-18 |
US10964105B2 (en) | 2021-03-30 |
US20210201573A1 (en) | 2021-07-01 |
CN105809728B (zh) | 2021-01-01 |
GB2534225A (en) | 2016-07-20 |
GB2534225B (en) | 2017-02-22 |
GB2534261B (en) | 2018-10-17 |
GB201500855D0 (en) | 2015-03-04 |
EP3048582A1 (en) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105809728A (zh) | 在图形处理单元中渲染场景的视图 | |
US11127191B2 (en) | Asynchronous and concurrent ray tracing and rasterization rendering processes | |
EP3185217B1 (en) | Allocation of tiles to processing engines in a graphics processing system | |
JP7421585B2 (ja) | 光線バンドルの光線に対する差分データを決定する方法及びグラフィックス処理ユニット | |
CN104103084B (zh) | 基于图块的图形***以及其中的处理方法、装置和介质 | |
KR101640904B1 (ko) | 온라인 게이밍 경험을 제공하기 위한 컴퓨터 기반 방법, 기계 판독가능 비일시적 매체 및 서버 시스템 | |
US11562533B2 (en) | Assembling primitive data into multi-view primitive blocks in a graphics processing system | |
JP7004717B2 (ja) | 入力インデックスストリームのプリミティブの識別 | |
CN117280387A (zh) | 用于光线和路径追踪的位移微网格 | |
CN107392836A (zh) | 使用图形处理管线实现的立体多投影 | |
US20240112311A1 (en) | Graphics processing systems and methods | |
CN106067187A (zh) | 在图形处理***中对基元分块 | |
US20240233270A1 (en) | Rendering views of a scene in a graphics processing unit | |
Ma et al. | Rasterization of geometric primitive in graphics based on FPGA | |
US11677927B2 (en) | Stereoscopic graphics processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |