图形处理系统的制作方法

文档序号:13006754阅读:196来源:国知局
图形处理系统的制作方法与工艺

本发明涉及图形处理,具体涉及在执行凹形渲染(foveatedrendering)时基于块的图形处理系统的操作。



背景技术:

凹形渲染是这样一种渲染技术:被显示的帧(图像)(“中心凹(foveal)视图”)的一部分以较高的分辨率渲染以显示,而该帧的其他部分以较低的分辨率来渲染。这基于以下事实:用户直接看着的帧的部分为了视觉上的可接受性可能需要被渲染为较高的分辨率,而用户未直接看着的帧的周边区域可以在仍然看起来视觉上可接受的同时以较低的分辨率来渲染。这然后可以通过以较低的分辨率渲染帧的较多的周边区域而不是以最高的所需的“中心凹”分辨率渲染所显示的整个帧来减轻对图形处理单元(gpu)的渲染负担。

凹形渲染通常通过识别一个或更多个“固定点”来进行,在固定点处将渲染帧的较高分辨率版本,距离固定点越远的区域以越低的分辨率来渲染。由此,各固定点指示帧的最高分辨率区域,并且通常旨在对应于眼睛视网膜的中心,即中心凹。

当执行凹形渲染时,可以以任意合适且期望的方式确定帧的最高分辨率区域的位置(固定点)。例如,某一形式的头部追踪或眼睛追踪系统可以用于尝试识别用户在看着图像的哪里,以识别应以最高分辨率渲染的帧的区域。

凹形渲染的特定用途是在渲染用于虚拟现实显示器(例如,虚拟现实头部安装的显示器(vrhmd))的图像时。高分辨率头部安装虚拟现实显示器通常使用以严重桶形失真为特征的透镜。这一点的效果是放大(对于各眼睛)朝向显示器中心的被渲染图像,而在大小上完全压缩(缩小)周边区域。那么这一点的效果是在没有用户的总视觉效果的任何显著损失的情况下可以以比中心被放大区域更低的质量来渲染周边区域。



技术实现要素:

申请人相信在执行凹形渲染时(特别是在基于块的图形处理器和图形处理系统的情况下)还存在针对图形处理器和图形处理系统的操作的改进的范围。

根据本发明的第一方面,提供了一种操作基于块的图形处理器的方法,该方法包括以下步骤:

当所述图形处理器要渲染表示场景的相同视图中的一些或全部但处于不同分辨率的一组多个图像时:

以第一分辨率准备对于所述图像的相应子区域将处理的图形几何结构的列表,对于要渲染的场景将渲染所述图像的所述子区域;以及

通过使用以所述第一分辨率对于要渲染的所述场景已经准备的、对于图像子区域要处理的几何结构的所述列表来渲染各图像的相应渲染块,来渲染对所述场景的不同分辨率视图进行表示的相应图像。

根据本发明的第二方面,提供了一种基于块的图形处理器,该图形处理器包括:

几何结构列表准备电路,该几何结构列表准备电路用于准备对于要渲染的图像的相应子区域要处理的图形几何结构的列表;和

渲染电路,该渲染电路用于使用由所述几何结构列表准备电路准备的、对于图像子区域要处理的几何结构的列表,渲染要被渲染的图像的块;

其中,

所述几何结构列表准备电路还能够操作以:当所述图形处理器要渲染表示场景的相同视图中的一些或全部但处于不同分辨率的一组多个图像时,以第一分辨率准备对于所述图像的相应子区域将处理的图形几何结构的列表,对于要渲染的场景将渲染所述图像的所述子区域;以及

所述渲染电路还能够操作以:当所述图形处理器要渲染表示场景的所述相同视图中的一些或全部但处于不同分辨率的一组多个图像时,通过使用以所述第一分辨率对于要渲染的所述场景已经准备的、对于图像子区域要处理的几何结构的所述列表来渲染各图像的相应渲染块,来渲染对所述场景的不同分辨率视图进行表示的相应图像。

本发明涉及在渲染用于显示的相同视图的多个不同分辨率版本时(即,在执行凹形渲染时)的基于块的图形处理器的操作。

在基于块的渲染中,二维渲染输出或目标(即,渲染处理的输出,诸如要显示的输出帧)被渲染为多个较小面积的子区域,该子区域通常被称为“块”。块各被单独渲染。然后重新组合经渲染的块以提供完整的渲染输出(例如,用于显示的帧)。在这种设置中,渲染目标(输出)通常(按面积)划分为规则大小和形状的渲染块(它们通常为正方形或矩形),但这不是必须的。

常用于“成块”和“基于块的”渲染的其他术语包括“组块”(渲染块被称为“大块”)和“斗”渲染。为方便起见,下文中将使用术语“块”和“成块”,但应理解,这些术语旨在包含所有另选和等同术语和技术。

这种基于块的渲染的优点是对于该块,不用处理不出现在给定块中的图元,因此在处理块时可以忽略这些图元。这允许减小对于给定渲染输出需要的总图形处理量。

在基于块的渲染系统中,因此通常期望能够识别并了解实际上存在于给定渲染块中的、要被处理的几何结构(例如,图形图元),从而例如避免不必要地渲染实际上不存在于块中的几何结构(例如,图元)。为了促进这一点,对于渲染输出的各子区域,准备要被渲染的几何结构(例如,图元)的列表。这种“几何结构列表”(“图元列表”)然后用于识别对于独立渲染块要渲染的几何结构(例如,图元)。

由此,基于块的图形处理的一个重要方面是对于要被渲染的图像被划分成的子区域,准备用于渲染的几何结构(例如,图元)的合适列表。

在本发明中,对于要渲染的场景以给定的第一分辨率生成用于图像的子区域的这种几何结构(图元)列表,但然后当渲染对于渲染处理需要的视图的各分辨率版本时,使用以第一分辨率准备的这些几何结构列表(例如,图元列表)(并且具体地将在渲染具有与准备几何结构列表的第一分辨率不同的分辨率的视图的版本时使用,而且用于具有与准备几何结构列表的第一分辨率相同的分辨率的视图)。

申请人已经在这一点上认识到,可以相对简单的是适当缩放对于场景以给定分辨率准备的几何结构列表以提供用于渲染(相同)视图的其他(和所有)分辨率版本的适当几何结构列表。那么这避免了例如在执行凹形渲染时准备多组几何结构列表的需要,其中一组几何结构列表用于要生成的一个不同分辨率图像,并且因此可以减轻在执行凹形渲染时图形处理器的处理负担。

对应于被渲染的、被渲染场景的相同视图的不同分辨率版本的一组多个图像可以为可以用于凹形渲染的任意合适的一组图像(即,包括来自同一视点的场景的视图但处于不同分辨率的一组图像(这些视图具有(来自)同一观察位置且具有(沿)相同观察方向))。

在该组多个图像中将存在视图的最高分辨率图像,该多个图像因此将包括要在固定位置处显示的“中心凹”视图,最高分辨率的视图要在该固定位置处显示。那么将存在视图的一个或更多个较低分辨率版本,它们可以且优选地远离固定点(例如,朝向被显示的输出帧的外周)使用并显示。

可以仅存在两个不同分辨率视图(最高分辨率视图和更低分辨率视图)。另选地,可以准备用于视图的三个或更多个不同分辨率图像(包括最高分辨率视图和视图的两个或更多个较低分辨率图像)。在优选实施方式中,准备视图的三个不同分辨率图像(最高分辨率图像、“中”分辨率图像以及“最低”分辨率图像)。

不同分辨率图像优选由给定、具体且优选选择的缩放因子来彼此相关。在存在多于两个分辨率图像的情况下,那么各对“相邻”分辨率图像中的图像可以(并且在一个实施方式中是)由同一缩放因子(即,使用不同分辨率图像之间的恒定缩放因子)彼此相关。在一些情况(诸如虚拟现实头部安装的显示器)下,最低分辨率视图可以比其他视图在分辨率上更多地隔开(即,使得一些紧接的级别视图例如实际上可以存在)。

缩放因子优选地为二次幂,但可以使用其他结构(如果期望)。在一个优选实施方式中,更高分辨率图像是紧接其之前的较低分辨率图像(在分辨率层次结构中)的分辨率的两倍(即,各图像的分辨率由因子2(或因此由因子二分之一)与其在分辨率层次结构中的相邻图像相关)。

被分类为被渲染的图像的各子区域中且被包括在对于要被渲染的图像的子区域处理的图形几何结构的列表中的图形几何结构可以为可以被定义为渲染场景的任意合适且期望的图形几何结构。在优选实施方式中,图形几何结构包括图形图元,诸如且优选地为简单的多边形(诸如三角形、四边形、线和/或点)。

由此,在特别优选的实施方式中,对于要被渲染的场景的最高分辨率视图准备要对于要被渲染的图像的各子区域处理的图形几何结构的列表,然后通过使用为要被渲染的场景准备的、要对于图像子区域处理的几何图元的列表渲染各图像的各渲染块,来渲染表示场景的不同分辨率视图的各图像(并因此配置图形处理器的几何结构列表准备电路和渲染电路)。

然而,几何结构列表可以包括除图形图元之外或代替图形图元的、可以被定义的其他图形几何结构(如果期望)。

本发明中渲染输出(图像)为了渲染目的而被划分成的渲染块可以为任意合适且期望的这种块。渲染块的大小和形状例如可以且优选地确实依赖于图形处理器被构造成使用并处理的块构造。

渲染块优选地全部具有相同的大小和形状(即,优选地使用规则大小和形状的块),但这不是必须的。块优选地为正方形或矩形。块的大小和数量可以根据期望来选择。在优选结构中,各块在大小上为16*16或32*32个采样位置(然而,渲染目标(被渲染的图像)然后如对于使用的渲染输出大小和形状而需要的被划分成许多这种块)。

准备几何结构(例如,图元)的子区域可以为被渲染的图像的任意合适且期望的子区域。

在一个实施方式中,可以准备几何结构的图像子区域都包括整数数量的渲染块。例如,各子区域可以被定尺为使得它对应于单个渲染块,或另选地,子区域可以被定尺为使得它对应于(即,包含)多于一个渲染块。在一个优选实施方式中,各子区域对应于单个渲染块。

然而,在另一个实施方式中,渲染目标子区域可以被定尺为使得它们对应于渲染块的部分。例如,子区域可以被定尺为使得它们对应于(即,包含)块的一半、或块的四分之一或一个半块等。

在一个实施方式中,图像被划分成单组子区域(唯一的)。

在另一个实施方式中,可以为至少两个不同组的子区域准备几何结构(例如,图元)列表。

在这种情况下,可以准备图元列表的多组渲染目标子区域优选地被设置为使得渲染目标被多层多组子区域(各层为一组子区域)有效地重叠。各层应且优选地确实具有与其他层不同的、可以准备图元列表的定尺子区域。多层(多组子区域)最优选地具有逐渐降低的分辨率级(即,它们的子区域包含越来越多数量的渲染块)。

这些结构可以允许例如由多个不同分辨率层的子区域的层次结构有效覆盖渲染目标,各这种“层”由一组多个子区域组成,在该组多个子区域中,各子区域例如且优选地包含相同数量的渲染块,并且不同“层”中的子区域包含不同数量的渲染块。

这种结构有效地允许对于图像(渲染目标)的逐渐降低的分辨率级别(即,到子区域的划分)准备几何结构列表。这允许改变并控制准备几何结构列表的分辨率。

在优选实施方式中,准备几何结构(例如,图元)列表的子区域的结构基于且优选地根据将以最高分辨率需要的视图(场景)的区域来配置。

在特别优选的实施方式中,图像子区域配置(模式)被设置为使得它围绕将需要的场景的最高分辨率区域(凹形区域)对称(例如,而不是简单地在场景的左顶角(输出帧)处开始)。例如,如果最高分辨率区域例如是a*a个采样位置,那么图像子区域配置可以且优选地被设置为使得区域被单个a*a采样位置子区域准确覆盖(更小的子区域在然后因此配置的更大子区域内)。

要对于被渲染的图像的给定子区域处理几何结构中的哪一个的识别(并且由此该几何结构包括在用于图像的给定子区域的几何结构列表中)可以以任意合适且期望的方式(例如,使用任意合适且已知的“成块”(分箱)技术)来执行。由此,例如,准确的分箱和/或边界框捆绑可以用于该处理。

对于要被渲染的场景准备图形几何结构的列表(例如,图元列表)的“第一”分辨率可以为任意合适且期望的分辨率。第一分辨率优选地为要被渲染的场景的视图中的一个的分辨率,但这不是必须的。

在特别优选的实施方式中,第一分辨率为将需要的场景的最高分辨率视图的(即,“凹形”视图的)分辨率。由此,在优选实施方式中,以要被渲染的场景的最高分辨率视图的分辨率准备图形几何结构的列表,该图形几何结构要对于要被渲染的场景的图像的各子区域处理。

因此,在优选实施方式中,使用并以要渲染场景的视图的最高分辨率(即,以该组多个图像中最高分辨率图像的分辨率)生成用于图像的子区域的几何结构(图元)列表,但然后也在渲染对于例如凹形渲染处理需要的视图的较低分辨率版本(较低分辨率图像)时使用这些几何结构列表(例如,图元的列表)。

然而,可以使用诸如准备处于除了要被渲染的场景的最高分辨率视图的分辨率之外的更低分辨率的几何结构列表的其他结构(如果期望)。

要对于要被渲染的图像的各子区域处理的图形几何结构的列表应且优选地对于要被渲染的整个场景来准备(即,以覆盖要被渲染的该组多个图像中的图像将(可以)覆盖的最大面积)。换言之,要对于要被渲染的图像的各子区域处理的图形几何结构的列表被准备为犹如整个场景以关注的分辨率(例如,以该组多个图像的最高分辨率)渲染。

因此且对应地,在例如最高分辨率图像可能对于整个场景实际上不渲染(例如,可能具有更小的视场)且几何结构列表以该最高分辨率准备的情况下,那么即使以最高分辨率渲染的实际视场可能不(且通常将不)包括整个场景(将仅包括场景的较小部分),也仍然要对于场景的完整范围准备要被处理的图形几何结构的列表。

几何结构分类(列出)处理应且优选地确实在用于要被渲染的几何结构(例如,图元)的顶点的适当变换的(顶点着色的)位置上操作(使用这些位置)。

因此,在优选实施方式中,在生成用于图像的子区域的几何结构列表之前,要对于一组图像处理的一组几何结构优选地经历适当的顶点着色操作,以提供适当的一组顶点着色的顶点位置,以然后由几何结构分类(列出)处理使用。该顶点着色优选地以将执行几何结构分类(列出)处理的分辨率来执行,然后该顶点着色的结果用于准备子区域几何结构列表。

再次,在优选实施方式中,顶点着色以所需的最高分辨率图像的分辨率来执行。再次,优选地以该最高分辨率对于所有场景处理顶点。

由此,在特别优选的实施方式中,顶点位置处理(着色)和几何结构列表(图元列表)生成处理这两者仅以第一分辨率(例如,以对于输出图像需要的最高分辨率)执行一次。

在特别优选的实施方式中,几何结构列表准备操作被构造成将(基于)在整个输出帧(该输出帧包括一组多个图像的组合)中哪里将需要被渲染视图的更低和更高分辨率图像考虑在内。

由此,在优选实施方式中,几何结构列表准备处理将将要在输出帧的子区域中显示的图像的分辨率,并且因此被构造成准备几何结构列表考虑在内。

例如且优选地,几何结构列表准备操作可以被构造成对于已知将仅显示较低分辨率图像的、输出帧的那些区域准备用于更大子区域的几何结构列表。例如,几何结构列表准备操作在输出帧边缘处可以使用64*64采样位置子区域,但在要显示最高分辨率图像的中心凹点(固定点)处和周围使用16*16采样位置子区域。由此,在优选实施方式中,基于将在子区域有关(覆盖)的图像区域(面积)中显示的图像的分辨率来选择(控制并配置)准备几何结构列表的子区域的大小。

对应地,其他操作(诸如采样知道的成块,在该操作中,识别并丢弃任意几何结构(诸如小至可能或肯定完全错过所有采样位置的图元))可以被使得能够和/或适当地构造成将可能或将显示关注的子区域的分辨率考虑在内。

类似地,可以在较低分辨率图像区域中有力地剔除图元等。

对应地,在顶点位置被对齐到预定义网格的情况下,顶点位置被对齐到的网格的分辨率基于将对于子区域(在各子区域中)显示图像的分辨率对于不同图像子区域而不同地配置。

该操作可以且优选地通过向几何结构列表准备操作(几何结构列表处理电路)提供关于对于被生成的整个输出帧的各部分显示的分辨率的适当信息来促进。该分辨率信息可以被提供为例如适当的元数据和/或状态信息,该元数据和/或状态信息作为用于关注的图形处理任务的元数据和/或状态信息(例如,作为由例如成块器任务(工作)参考的描述符中的状态)的部分提供给图形处理器。

一旦已经对于各图像子区域准备要被处理的几何结构(例如,图元)的列表,则优选地存储几何结构列表,以例如且优选地用于允许渲染处理识别在渲染图像时对于各渲染块需要考虑(即,渲染)哪些几何结构(例如,图元)。

一旦已经以第一分辨率(例如,以对于一组图像中的输出图像将需要的最高分辨率)准备用于子区域的几何结构列表,则这样准备的几何结构列表然后应且优选地用于渲染以各不同分辨率示出视图的一组多个图像。

为此,图形处理器将使用用于子区域的几何结构列表来渲染用于所需的各适当级别的分辨率图像的块。(在这一点上应注意的是,即使在准备要被处理的几何结构的列表时使用的子区域可能不准确对应于独立渲染块,图像的渲染也将在每渲染块的基础上(即,对于输出图像已经为了渲染目的而划分成的各渲染块)执行。)

为了渲染图像的给定块,图像处理器将从(至少部分)包括关注的渲染块的子区域的几何结构列表确定(识别)要对于该渲染块处理的几何结构(例如,图元),然后因此(例如且优选地,通过将几何结构(例如,图元)栅格化为图形片段且然后渲染图形片段以提供用于块的输出渲染图形片段数据)处理该几何结构。

由此,使用已经针对要以第一(例如,最高)分辨率渲染的场景准备的、要对于图像子区域处理的几何结构的列表渲染各图像的各渲染块应且优选地确实包括使用已经针对要以第一(例如,最高)分辨率渲染的场景准备的、要对于图像子区域处理的几何结构的列表来确定(识别)要对于被渲染的图像的各渲染块(和要被渲染的各图像)处理的几何结构。

由此,本发明优选地包括使用所准备的几何结构列表来渲染一个或更多个图元,以生成表示图像的一组输出值,该图像表示处于所需的分辨率中的一个的场景的视图。优选地对于所需的各(不同)视图进行这一点。

渲染处理可以以任意期望且合适的方式(例如,依赖于关注的图形处理器的性质)来执行。

在优选实施方式中,渲染表示场景的不同分辨率的各图像的步骤优选地包括从以用于渲染块的第一(例如,最高)分辨率准备的几何结构列表识别要对于渲染块处理的几何结构(例如,图元),执行对于处理所识别几何结构必须的任意几何结构设置操作(例如,图元设置操作),将所识别的几何结构栅格化为用于渲染的图形片段,然后渲染(着色)图形片段,以提供用于块的几何结构的输出渲染图形片段数据。渲染处理可以且优选地确实还包括图形处理器或图形处理流水线在渲染用于输出(例如,用于显示)的几何结构时可以执行的任意其他处理,诸如执行隐式表面可去除操作、深度测试、模板测试、混合、纹理映射等。

对应地,图形处理器的渲染电路优选地能够操作以且优选地包括处理电路,该处理电路被构造成从以用于渲染块的第一(例如,最高)分辨率准备的几何结构列表识别要对于渲染块处理的几何结构(例如,图元),执行对于处理所识别几何结构必须的任意几何结构设置操作(例如,图元设置操作),将所识别的几何结构栅格化为用于渲染的图形片段,然后渲染(着色)图形片段,以提供用于块的几何结构的输出渲染图形片段数据。再次,图形处理器的渲染电路优选地能够操作以且优选地包括处理电路,该处理电路被构造成执行图形处理器或图形处理流水线在渲染用于输出(例如,用于显示)的几何结构时可以执行的任意其他处理,诸如执行隐式表面可去除操作、深度测试、模板测试、混合、纹理映射等。

渲染处理可以涉及仅使用单个子区域几何结构列表来确定要对于块处理的几何结构,或者在块至少部分包括在两个或更多个子区域几何结构列表中的情况下,使用多个子区域几何结构列表来确定对于块需要处理的几何结构。

当使用所准备的几何结构列表来渲染具有准备几何结构列表的分辨率的图像(例如,最高(全)分辨率图像)时,这可以且优选地简单地照原样使用所准备的几何结构列表来进行(因为几何结构列表已经表示处于要生成的分辨率的几何结构)。

所准备的第一(例如,“最高”(“全”))分辨率几何结构列表可以在以任意合适且期望的方式渲染关注的视图的一组多个图像中的其他(例如,更低)分辨率图像时使用。

在特别优选的实施方式中,要对于不同分辨率图像处理的几何结构通过将“第一”分辨率几何结构列表中的几何结构缩放适当的缩放因子(例如且优选地,适当的二次幂缩放因子,诸如因子2)来从“第一”分辨率几何结构列表导出,该缩放因子使被渲染的图像的分辨率与准备几何结构列表的“第一”分辨率相关。这种缩放优选地作为顶点位置加载操作的一部分来进行,但其他结构将是可能的(如果期望)。

由此,在要渲染具有比准备几何结构列表的第一分辨率更低的分辨率的图像的情况下,在特别优选的实施方式中,要对于较低分辨率图像处理的几何结构优选地通过将“第一”分辨率几何结构列表中的几何结构缩小适当的缩放因子(例如且优选地,适当的二次幂缩放因子,诸如因子2)来从“第一”分辨率几何结构列表导出,该缩放因子使被渲染的图像的分辨率与准备几何结构列表的“第一”分辨率相关。

对应地,在要渲染具有比准备几何结构列表的第一分辨率更高的分辨率的图像的情况下,在特别优选的实施方式中,要对于更高分辨率图像处理的几何结构优选地通过将“第一”分辨率几何结构列表中的几何结构放大适当的缩放因子(例如且优选地,适当的二次幂缩放因子,诸如因子2)来从“第一”分辨率几何结构列表导出,该缩放因子使被渲染的图像的分辨率与准备几何结构列表的“第一”分辨率相关。

虽然将可以对于输出帧的所有处理块(即,作为一个整体)简单地生成各不同分辨率图像(并且在一个优选实施方式中就是这样进行的),但在特别优选的实施方式中,优选地仅对于整个输出帧的给定、具体且优选选择的渲染块生成不同分辨率图像。换言之,表示场景的不同分辨率视图的各图像的渲染优选地包括用于场景的完整视图的一些但不是所有的那些各图像中的至少一个的渲染。对于被渲染的一组多个图像中的各图像最优选地,仅渲染该图像的一些但不是所有。

例如且优选地,优选地至少(且优选地仅)对于可能需要显示最高(全)分辨率图像的、输出帧的部分的被渲染块生成该最高分辨率图像(即,用于渲染被定心在固定点周围(例如处于输出帧中心处)的块)。由此,优选地仅对于要显示的(整个)输出帧的一些但不是所有生成最高分辨率图像。

对应地,优选地至少对于离固定点(例如,离画面的中心)更远的那些渲染块生成较低分辨率图像,但可以不且在优选实施方式中不对于在固定点处或附近(例如,在输出帧中心处或附近)的那些渲染块生成较低分辨率图像。

申请人已经在这一点上认识到,对于要使用最高(全)分辨率图像(即,中心凹视图)的、输出帧的那些区域,可能从不在那些块中显示较低分辨率图像。由此,在特别优选的实施方式中,不对于已知较低分辨率图像将不用于的块(即,实际上用于固定点处或附近的块)生成较低分辨率图像。

较低分辨率图像中不需要渲染的块的这种区域可以根据期望(例如,从与用于凹形渲染的固定点相关的信息和/或最高分辨率图像与较低分辨率图像之间的缩放因子)来识别。

由此,在特别优选的实施方式中,对于包括整个输出帧的渲染块中的一些但非全部区域渲染最高分辨率图像,并且不对于已经渲染最高分辨率图像的渲染块中的至少一些渲染较低分辨率图像。对应地,在优选实施方式中,不对于已经渲染较低分辨率图像的渲染块中的至少一些渲染最高分辨率图像。

类似地,在特别优选的实施方式中,仅渲染全分辨率图像的中心部分(即,不渲染全分辨率图像边缘处的渲染块)。对应地,在优选实施方式中,对于且优选地对于各较低分辨率图像,不渲染图像中心处的一个或更多个渲染块(但优选地渲染图像边缘处的渲染块)。

在优选实施方式中,向渲染处理指示不需要被渲染的图像中的任何渲染块,以允许渲染处理避免(省略)关注的图像的那些块的渲染。

该信息可以以任意合适且期望的方式指示到渲染处理。例如,用于图形处理器的驱动器可以将渲染任务构造成不包括不要在图像中(例如,在较低分辨率图像中)渲染的块。例如,用于图像的渲染处理可以被划分成不包括不必要块的多个渲染任务。在驱动器例如为渲染任务提供要渲染的块的列表的情况下,那么驱动器可以被简单地构造成省略要从用于图像的渲染处理省略的块。还可以或相反地可以指示例如识别不应对于图像渲染块的面积(例如,矩形)的“渲染排除区域”。

在特别优选的实施方式中,输出帧的各渲染块关联有应对于该块位置产生分辨率图像中的哪一个的指示。该信息可以且在优选实施方式中是连同用于子区域的几何结构列表一起提供。其他结构当然会是可能的。

然后,对于各渲染块(和各块位置),生成对应指示的分辨率图像(细节的级别)。

当然可以使用使得渲染处理省略不同分辨率图像内的所选块的渲染的其他结构(如果期望)。

将理解,在上述实施方式中,对于给定输出帧,输出帧的块中的一些将仅以单个分辨率(细节级别)来渲染,而输出帧的其他块可以以两个(或更多个)分辨率级别(细节级别)来渲染,例如且优选地,这依赖于块关于要被渲染的凹形图像的固定点落在哪里。

例如,当以三个细节级别渲染4k*4k输出图像且假定固定点(中心凹视图)处于场景中心时,在优选实施方式中,渲染处理将操作为生成:用于输出帧中心(固定点周围)的一个1k*1k全分辨率图像,该全分辨率图像覆盖1k*1k个采样位置;一个1k*1k半分辨率图像,该半分辨率图像覆盖2k*2k个采样位置(潜在且优选地,在将仅显示全分辨率图像的中心(固定点周围)(如上面讨论的)中具有孔);以及一个1k*1k四分之一分辨率图像,该四分之一分辨率图像覆盖4k*4k个采样位置(再次可能且优选地,在仅将显示全分辨率和/或半分辨率图像的输出帧中心(固定点周围)中具有孔)。

各不同分辨率图像优选地被生成为单独的输出面,然后适当组合不同分辨率图像,以提供然后显示的最终(“凹形”)输出帧。

下面将更详细地讨论组合不同分辨率图像以提供最终输出面的处理。

由此,在优选实施方式中,被渲染的一组多个图像中的各图像被生成为单独的图像且例如且优选地作为各输出帧(帧缓冲器)存储在图形处理器是其一部分的整个图形处理系统的主存储器中。一旦已经渲染各不同分辨率图像,那么优选地适当组合不同分辨率图像,以提供要显示的整体“凹形”输出图像。

虽然在这一点上一个接一个地单独生成各不同分辨率图像将是可能的,但在特别优选的实施方式中,交织用于不同分辨率图像的块的渲染。例如,在对于给定块要生成两个不同分辨率图像的情况下,在优选实施方式中,块例如以第一分辨率而生成,然后例如以第二分辨率生成,之后才继续生成下一块(该下一块然后可以再次例如以第一分辨率生成,然后由第二分辨率生成),以此类推。因为这可以避免例如重复再加载用于块的同一几何结构列表的需要,所以这帮助提高渲染效率。

除了适当依赖于被渲染的图像的分辨率缩放(如果需要)几何结构列表中的几何结构之外,在特别优选的实施方式中,视图的不同分辨率图像的渲染优选地根据(基于)被渲染的图像的分辨率(细节级别)来配置(改变)。

由此,在特别优选的实施方式中,基于被渲染的图像的分辨率设置用于渲染处理的一个或更多个渲染参数。

例如且优选地,反走样的级别(例如且优选地,多采样计数)可以且优选地基于被渲染的分辨率级别(细节级别)来选择(设置)。对应地,片段着色频率可以且优选地依赖于被渲染的分辨率级别来改变。另外或另选地,可以依赖于被渲染的视图的分辨率级别来启用或停用每样本着色。

由此,在特别优选的实施方式中,用于视图的不同分辨率图像的渲染处理使用最高(全)分辨率中心凹视图图像与更低分辨率非中心凹式视图图像之间的不同的多采样计数和/或片段着色频率。

这然后可以允许以不同(且适当的)质量渲染被渲染的更高和较低分辨率图像,同时进一步减轻对这样做是可以且适当的图形处理器的处理负担。

如上面讨论的,在优选实施方式中,至少本发明的操作将产生相同视图的一组多个图像,各图像表示给定分辨率的视图中的一些或所有。为了提供将被显示的整体输出帧,然后应且优选地是适当地组合(合成)多个不同分辨率图像,以提供最终的整体输出图像。不同图像的这种组合应且优选地确实包括显示在中心凹固定点处的最高分辨率视图,但显示远离固定点(例如,朝向输出帧的外周)的较低分辨率图像。

对于整体输出帧中的任意给定位置要显示哪个分辨率图像的选择可以根据期望(例如且优选地以在执行凹形渲染时用于关注的图形处理器和图形处理系统的方式)来执行并指示。

例如,适当的头部追踪或眼睛追踪信息可以用于识别应显示哪个分辨率图像,在该分辨率图像中,在输出帧中和/或在虚拟现实头部安装的显示器的情况下,输出帧的中心可以被识别并指示为应显示最高分辨率图像的区域,然后以较低的分辨率显示朝向输出图像的外周的区域。

在这一点上将可以简单地选择在被显示的输出帧中的任意给定位置处显示的图像中的一个(例如,最高分辨率图像或较低分辨率图像)。然而,在特别优选的实施方式中,适当组合各种不同的图像,以提供整体输出图像。优选地,这通过适当插值(过滤)存在从一个分辨率图像到另一个分辨率图像的过渡的、输出帧的区域中的不同分辨率图像来进行。

优选地,图形处理器的滤波电路(硬件)用于采样并组合不同分辨率图像,以提供被显示的输出帧。

最优选地,双线性过滤用于在单个分辨率图像内采样,并且三线性过滤用于在需要时在两个不同分辨率图像之间采样并过滤。

适当组合不同分辨率图像以提供输出帧可以以任意合适且期望的方式来执行。在特别优选的实施方式中,这使用图形处理器的纹理映射电路来进行,并且最优选地使用图形处理器的纹理映射插值电路来进行。

由此,在特别优选的实施方式中,被渲染的一组多个图像中的不同分辨率图像被当作要输入到图形处理器的各纹理贴图,并且图形处理器然后执行它使用这些纹理贴图来提供例如要显示的整体最终的“凹形”输出图像的渲染通过。

在特别优选的实施方式中,不同分辨率图像被当作犹如它们各为一组mip贴图(mipmap)的各mip贴图级别(作为纹理mip贴图),然后通过从一组mip贴图适当采样(例如且优选地通过使用适当的过滤处理)来生成输出帧。

为了促进该操作,在采样mip贴图纹理时设置并使用的细节级别优选地依赖于被采样的整体输出帧内的位置(例如且优选地,基于输出帧中相对于用于凹形图像的固定点的位置)来改变。

在特别优选的实施方式中,用于采样包含不同分辨率mip贴图的细节级别选择依赖于输出帧中的位置来选择(设置),以确保存在被采样的分辨率级别的可用于关注的位置的实际(定义、渲染)数据。

最优选地,在采样包含视图的不同分辨率图像的mip贴图时使用的采样细节级别被配置且设置为使得具有用于输出帧中给定位置的定义内容(即,渲染数据)的最详细分辨率图像(mip贴图级别)将总是对于该位置采样,(和/或(且优选地))使得采样操作为从一个mip贴图级别(分辨率级别)到另一个“平滑”过渡。

在特别优选的实施方式中,所用的细节级别被设置为采样用于固定点处或附近的最高分辨率图像(mip贴图级别),但对于输出帧内远离固定点的位置,细节级别优选地被偏置为优选地从较低分辨率图像选择,和/或(且优选地)偏置为引起到更高分辨率图像边缘周围的较低分辨率图像的更平滑过渡。

在特别优选的实施方式中,不同分辨率图像被设置为mip贴图纹理,使得各mip贴图级别具有相同的物理维数,但被且将被解释为犹如物理存储数据为用于更大“虚拟”级中心的数据。采样mip贴图时的细节级别然后将因此被设置为确保对于输出帧中的给定位置总是采样“真实”(定义(渲染))数据。

优选地,各不同分辨率图像被构造成具有相同的物理大小(即,被构造成占用相同数量的采样位置),但依赖于图像的分辨率,然后认为数据为较大虚拟mip贴图级别的中心,较大虚拟mip贴图级别的大小依赖于关注的图像的分辨率。

例如,对于具有三个分辨率(细节)级别(各级别在它们之间具有缩放因子2)的4k*4k输出帧,在该结构中,最高mip贴图级别(级别0)优选地被存储为包含最高分辨率的视图的中心的1k*1k纹理,但被当作实际所存储的1k*1k部分为中心的4k*4k级别(忽略剩余级别)。对应地,下一更低的mip贴图级别(级别1)再次优选地被存储为1k*1k纹理,但该级别包含半分辨率的输出帧的中心(并且该级别将对应地被当作实际存在的1k*1k数据在中心的2k*2k级别,忽略级别的结果)。第三mip贴图级别(级别2)再次优选地被存储为1k*1k纹理,但该级别包含四分之一分辨率的场景的中心且被当作全1k*1k级别。

在这些结构中,可以留下大于2的mip贴图纹理级别未定义且未使用,或者可以用于存储视图的另外较低分辨率版本,例如作为规则纹理。

虽然上面已经具体参照表示要被显示的场景的给定视图的不同分辨率图像的生成描述了本发明,但如本领域技术人员将理解的,该处理优选地对于要被显示的多个视图(例如且优选地对于使用凹形渲染的要被显示的连续输出帧的序列)重复。

对应地,在被显示的图像用于虚拟现实显示器且由此包括从多个不同视点渲染场景的多个不同视图,诸如用于立体渲染的“左眼”视图和“右眼”视图的情况下(其中,生成场景的两个图像,一个对应于如从左眼看到的场景,并且一个对应于如从右眼看到的场景,并且然后适当显示这两个图像,以在观察图像时提供三维效果),各要被渲染的不同视图(例如且优选地为左眼图像和右眼图像这两者)优选地以本发明的方式使用凹形渲染来渲染。

如将从上述理解的,本发明涉及在执行凹形渲染时图形处理器的操作。由此,在优选实施方式中,首先识别图形处理器要执行凹形渲染(图形处理器要渲染处于不同分辨率的、表示场景的相同视图中的一些或全部的一组多个图像),然后因此触发以本发明的方式进行的操作。

可以识别(确定)图形处理器要以任意合适且期望的方式来执行凹形渲染(要渲染表示场景的相同视图中的一些或全部但处于不同分辨率的一组多个图像)。

在优选实施方式中,这可以且优选地从与要由图形处理器执行(例如且优选地,由需要图形处理的应用提供的、例如且优选地指示需要凹形渲染的)的图形处理任务关联的信息(诸如状态信息和/或元数据)来确定。例如,需要由图形处理器进行的图形处理的应用可以在它请求图形处理操作时提供执行凹形渲染的指示。

在特别优选的实施方式中,要执行渲染表示场景的相同视图中的一些或全部但处于不同分辨率的一组多个图像的凹形渲染的事实借助于需要图形处理的应用可以用于指示需要这种渲染的应用的函数调用来指示。例如,在openglapi的情况下,这将通过使用适当的函数调用(例如,类似于用于指示多视图渲染的ovr_multiview函数调用的函数调用)来认识,例如作为opengl/opengles的扩展。该函数调用(例如,api扩展)的使用可以例如且优选地由图形处理器的驱动器来认识,以指示需要凹形渲染(驱动器然后触发图形处理器以本发明的方式执行一组多个图形的渲染,该组多个图形表示场景的相同视图中的一些或全部但处于不同分辨率)。对应的结构可以用于其他图形api(应用编程接口)。

优选地,应用例如可以经由函数调用指示几何结构连同与不同分辨率视图关联的期望缩放因子一起被渲染为多个视图(表面)。应用(例如,函数调用)还可以能够且在优选实施方式中还可以指示每视图几何结构列出和/或渲染参数,诸如多样本/每样本着色配置和/或在哪一个分辨率应渲染哪一个块。

其他结构当然会是可能的。例如,可以认识到,关注的图形处理任务将产生多个帧缓冲器,和/或要执行的着色器程序使用具体变量。

当识别出图形处理器要渲染各表示场景的相同视图中的一些或全部但处于不同分辨率的一组多个图像时,图形处理器以本发明的方式进行的操作可以以任意合适且期望的方式来触发(图形处理器可以被构造成以任意合适且期望的方式以本发明的方式来操作)。

在优选实施方式中,用于图形处理器的驱动器向图形处理器指示(向图形处理器发布命令)以不同分辨率图像之间的适当缩放因子以本发明的方式渲染一组多个图像。

对应地,优选地适当配置任意着色程序,诸如在渲染一组图像是由图形处理器执行的顶点着色和/或片段着色程序。这优选地由图形处理器的编译器(由图形处理系统的编译器处理电路)(对于图形处理器的任意着色器)来进行。

(编译器例如可以在图形处理系统的主处理器上执行(并且在优选实施方式中确实在图形处理系统的主处理器上执行),例如且优选的,请求图形处理的应用在用于图形处理流水线的驱动器上执行,例如且优选地作为该驱动器的一部分,图形处理流水线在主处理器上执行。其他结构会是可能的(如果期望)。)

从上述将理解的是,在本发明中,几何结构列表准备操作对于被渲染的一组图像执行一次,但用于渲染视图的其他操作(诸如栅格化和渲染(片段着色)操作)仍然应且优选地(通过适当使用从已经执行的单个几何结构列表准备任务准备的几何结构列表)对于各视图单独执行。

由此,在优选实施方式中,在要渲染一组n个图像的情况下,优选地定义并执行单个几何结构列表准备(成块)任务(以用于全部视图),但优选地定义并执行n个渲染(片段着色)工作(任务)(一个工作用于一个视图)。几何结构列表准备任务将产生第一分辨率的几何结构列表。各渲染任务将产生用于视图中的一个的经渲染输出(图像)。用于图形处理器的驱动器优选地以该方式配置用于图形处理器的任务(工作)。

各渲染任务优选地还指示对于该渲染任务应栅格化所准备的几何结构列表的分辨率。如上面讨论的,渲染任务可以且优选地确实还指示应渲染关注的图像的哪些渲染块。

优选地,用于图形处理器的驱动器(例如,该驱动器在整体图形处理系统的主处理器上执行)在需要凹形渲染时对于图形处理器设置这种任务。

其他结构当然会是可能的。

如从将从上述理解的,图形处理器优选地为整体图形处理系统的一部分,该图形处理系统包括执行应用的主处理器,该应用可以需要由图形处理器进行的图形处理。

主处理器将向图形处理器发送适当的命令和数据,以控制图形处理器(包括以本发明的方式)执行图形处理操作并产生在主处理器上执行的应用所需的图形处理(渲染)输出。

为了促进这一点,主处理器应且与优选地确实还执行用于图形处理器的驱动器和用于编译着色器程序的编译器,该着色器程序要由图形处理器的可编程着色级来执行(该编译器可以且在优选实施方式中是驱动器的一部分)。

由此,在优选实施方式中,图形处理器与执行用于图形处理器和/或用于图形处理器的编译器的主微处理器通信(该主微处理器为整体图形处理系统的一部分)。图形处理器和/或主微处理器优选地还与显示器通信,该显示器用于显示由图形处理器生成的图像(由此,在优选实施方式中,图形处理系统还包括用于显示由图形处理器生成的图像的显示器)。

由此,根据本发明的另外方面,提供了一种图形处理系统,该图形处理系统包括:

主处理器;以及

基于块的图形处理器;

所述图形处理器包括:

几何结构列表准备电路,该几何结构列表准备电路用于准备对于要渲染的图像的相应子区域要处理的图形几何结构的列表;和

渲染电路,该渲染电路用于使用由所述几何结构列表准备电路准备的、对于图像子区域要处理的几何结构的列表,渲染要被渲染的图像的块;

所述图形处理系统还包括:

处理电路,该处理电路被构造成:

识别所述图形处理器何时要渲染表示场景的相同视图中的一些或全部但处于不同分辨率的一组多个图像;并且

当识别出所述图形处理器要渲染表示场景的所述相同视图中的一些或全部但处于不同分辨率的一组多个图像时:

使得所述图形处理器的所述几何结构列表准备电路以第一分辨率准备对于所述图像的相应子区域将处理的图形几何结构的列表,对于要渲染的场景将渲染所述图像的所述子区域;以及

使得所述图形处理器的所述渲染电路通过使用以所述第一分辨率对于要渲染的所述场景已经准备的、对于图像子区域要处理的几何结构的所述列表来渲染各图像的相应渲染块,来渲染对所述场景的不同分辨率进行表示的相应图像。

根据本发明的另外方面,提供了一种操作图形处理系统的方法,所述图形处理系统包括:

主处理器;以及

基于块的图形处理器;

所述图形处理器包括:

几何结构列表准备电路,该几何结构列表准备电路用于准备对于要渲染的图像的相应子区域要处理的图形几何结构的列表;和

渲染电路,该渲染电路用于使用由所述几何结构列表准备电路准备的、对于图像子区域要处理的几何结构的列表,渲染要被渲染的图像的块;

所述方法包括以下步骤:

所述图形处理系统的所述主处理器:

识别在所述主处理器上执行的应用需要所述图形处理器来渲染表示场景的相同视图中的一些或全部但处于不同分辨率的一组多个图像;以及

当识别出所述图形处理器要渲染表示场景的所述相同视图中的一些或全部但处于不同分辨率的一组多个图像时:

指示所述图形处理器以:

以第一分辨率准备对于所述图像的相应子区域将处理的图形几何结构的列表,对于要渲染的场景将渲染所述图像的所述子区域;以及

通过使用以所述第一分辨率对于要渲染的所述场景已经准备的、对于图像子区域要处理的几何结构的所述列表来渲染各图像的相应渲染块,来渲染对所述场景的不同分辨率进行表示的相应图像;以及

响应于由所述主处理器指示,所述图形处理器:

由所述图形处理器的所述几何结构列表准备电路以第一分辨率准备对于所述图像的相应子区域将处理的图形几何结构的列表,对于要渲染的场景将渲染所述图像的所述子区域;以及

由所述图形处理器的所述渲染电路通过使用以所述第一分辨率对于要渲染的所述场景已经准备的、对于图像子区域要处理的几何结构的所述列表来渲染各图像的相应渲染块,来渲染对所述场景的不同分辨率视图进行表示的相应图像。

如本领域技术人员将理解的,本发明的这些方面和实施方式可以酌情(且优选地确实)包括这里描述的本发明的优选和可选特征中的任一个或更多个或所有。由此,例如,优选的是主处理器上的驱动器(优选地以上面讨论的方式中的一个)识别在主处理器上执行的应用何时需要凹形渲染,然后使得(“指示”)图形处理器因此操作。

类似地,图形处理系统优选地具有用于显示由图形处理器生成的图像的显示器和/或与该显示器通信,和/或具有存储器或与该存储器通信,由图形处理器生成的图像可以存储在该存储器中,例如以便随后处理(例如,显示)。类似地,主处理器上优选地存在以下应用:该应用指示用于执行凹形渲染的要求,该要求然后由例如在主处理器上执行的驱动器识别,例如主处理器上的该驱动器然后操作,以因此指示图形处理器渲染用于凹形渲染的多个图像。

除了上面描述的元件和级之外,图形处理器可以另外包括(且优选地确实包括)图形处理器通常可以包括的其他处理级中的任一个后或更多个(且优选地为所有)。由此,例如,图形处理器优选地包括图元设置级、栅格化器以及渲染器。在优选实施方式中,渲染器为可编程片段着色器的形式或包括可编程片段着色器。

图形处理器优选地还包括块缓冲器,该块缓冲器用于存储样本值;和/或写输出单元,该写输出单元(例如,一旦块缓冲器中的数据完整),将块缓冲器中的数据写输出到外部(主)存储器(例如,到帧缓冲器)。

图形处理器优选地包括一个或更多个可编程着色级,诸如顶点着色级、外壳着色器、镶嵌级(例如,其中,通过执行着色器程序来执行镶嵌)、域(评估)着色级(着色器)、几何结构着色级(着色器)以及片段着色器中的一个或更多个(且优选地为所有)。

图形处理器还可以包含图形处理器可以包含的任意其他合适且期望的处理级,诸如深度(或深度与模板)测试器、混合器、写输出单元等。

图形处理流水线的任意可编程着色级(诸如顶点着色器、片段着色器等)可以根据期望且以任意合适的方式来实现,并且可以分别且酌情执行任意期望且合适的着色(例如,顶点着色、片段着色等)功能。

各可编程处理级(着色器)可以包括任意合适的可编程硬件元件,诸如可编程处理电路。各可编程处理级(着色器)可以作为单独的电路元件被提供给处理流水线的其他可编程级(着色器),或者可编程处理级可以共享它们的可编程处理电路中的一些或所有(该可编程处理电路然后被不同地编程为充当期望的可编程处理级(着色器))。

在优选实施方式中,图形处理器包括一个或更多个存储器和/或存储装置和/或与该存储器和/或存储装置通信,该存储器和/或存储装置存储这里描述的数据,和/或存储用于这行这里描述的处理的软件。

在特别优选实施方式中,本发明的各种功能在图形处理平台上执行,图形处理平台生成并输出例如写到用于显示装置的帧缓冲器的、渲染后的片段数据。

本发明可以在任意合适的系统中实现,诸如基于合适构造的微处理器的系统。在一些实施方式中,本发明实现在计算机和/或基于微处理器的系统中。

本发明优选地实现在便携式装置(诸如且优选地为移动电话或平板电脑)中。

相信本发明将特别适用于将需要凹形渲染的装置,诸如虚拟现实显示装置(诸如虚拟现实体验机)。

由此,根据本发明的另一个方面,提供了一种虚拟现实显示装置,该虚拟现实显示装置包括本发明的方面和实施方式中的任一个或更多个的图形处理器或图形处理系统。对应地,根据本发明的另一个方面,提供了一种操作虚拟现实显示装置的方法,该方法包括以下步骤:以本发明的方面和实施方式中的任一个或更多个的方式操作虚拟现实显示装置。

本发明的各种功能可以以任意期望且合适的方式执行。例如,本发明的功能可以实现在硬件或软件中(根据期望)。由此,例如,本发明的各种功能元件、级以及“装置”可以包括合适的处理器、控制器、功能单元、电路、处理逻辑、微处理器结构等,它们可操作以进行各种功能等,诸如适当专用硬件元件(处理电路)和/或可以被编程以以期望方式操作的的可编程硬件元件(处理电路)。

这里还应当注意的是,如本领域技术人员将理解的,本发明的各种功能等可以在给定处理器上重复和/或并行执行。等同地,各种处理级可以共享处理电路等(如果期望)。

如本领域技术人员还将理解的,本发明的所有描述的实施方式可以酌情包括这里描述的优选可选特征中的任一个或更多个或所有。

根据本发明的方法至少部分地可以使用软件(例如,计算机程序)实现。由此将看到当从另外的实施方式看时,本发明提供计算机软件,该计算机软件当安装在数据处理装置上时专门适用于执行这里描述的方法;计算机程序元件,该计算机程序元件包括计算机软件代码部,用于在程序元件在数据处理装置上运行时执行这里描述的方法;和计算机程序,该计算机程序包括代码装置,该代码装置当程序在数据处理系统上运行时适用于执行这里描述的方法的所有步骤。数据处理系统可以是微处理器、可编程fpga(现场可编程门阵列)等。

本发明还扩展到计算机软件载体,该计算机软件载体包括这种软件,这种软件当用于操作图形处理器、渲染器或包括数据处理器的其他系统时与所述数据处理装置结合使所述处理器或系统执行本发明的方法的步骤。这种计算机软件载体可以是物理存储介质,诸如rom芯片、cdrom、ram、闪存或盘,或可以是信号,诸如电线上的电信号、光信号或无线电信号,诸如卫星等。

还将进一步理解的是,不是本发明的方法的所有步骤都需要由计算机软件执行,并且由此根据更宽实施方式,本发明提供了计算机软件并且这种软件安装在计算机软件载体上,用于执行这里阐述的方法的步骤中的至少一个。

本发明可以因此适当地具体实施为用于与计算机系统一起使用的计算机程序产品。这种实现可以包括一系列计算机可读指令,该一系列计算机可读指令固定在有形、永久介质上,诸如计算机可读介质,例如,磁盘、cd-rom、rom、ram、闪存或硬盘。还应当包括一系列计算机可读指令,在有形介质(包括但不限于,光学或模拟通信线)上,或无形地使用无线技术(包括但不限于,微波、红外或其他传输技术),这些指令经由调制解调器或其他界面装置可发送到计算机系统。该系列计算机可读指令具体实施这里之前描述的功能的所有或一部分。

本领域技术人员将理解这种计算机可读指令可以以多种编程语言来写,用于与许多计算机架构或操作系统一起使用。进一步地,这种指令可以使用任意存储技术来存储(存储技术现在或将来包括但不限于半导体、磁或光),或使用任意通信技术来发送(通信技术现在或将来包括但不限于光学、红外或微波)。预期的是,这种计算机程序产品可以作为可去除介质来分发,附有已打印的文档或电子文档,例如,现成软件;例如在系统rom或固定盘上预加载有计算机系统;或在网络(例如,因特网或万维网)上从服务器或电子公告栏分发。

附图说明

现在将仅以示例的方式并参照附图来描述本发明的多个优选实施方式,附图中:

图1示出了示例性计算机图形处理系统;

图2示意性示出了可以以本发明的方式操作的图形处理流水线;

图3例示了凹形渲染;

图4示出了可以被组合以提供用于显示的凹形图像的相同视图的示例性一组多个不同分辨率图像;

图5示意性示出了提供凹形图像的图像合成;

图6示意性示出了本发明的实施方式中用于凹形渲染的一组不同分辨率图像的渲染;

图7示意性示出了本发明的实施方式中用于凹形渲染的一组不同分辨率图像的渲染;以及

图8、图9以及图10示意性示出了本发明的实施方式中提供输出凹形图像的不同分辨率视图的合成。

类似的附图标记在附图中适当的情况下用于类似的部件。

具体实施方式

现在将在用于显示的计算机图形的处理的背景下描述本发明的多个优选实施方式。

图1示出了典型的计算机图形处理系统。

在主处理器1上执行的应用2(诸如游戏)将需要要由所关联图形处理单元(图形处理单元)3执行的图形处理操作。为此,该应用将生成api(应用编程接口)调用,其由在主处理器1上运行的用于图形处理器3的驱动器4解释以生成针对图形处理器3的用于生成应用2所需的图形输出的适当命令。为了促进该过程,将响应于来自运行在主系统1上的应用2的用于图形输出(例如,生成要显示的帧)的命令,而向图形处理器3提供一组“命令”。

图2更详细地示出了本实施方式的图形处理器3。

图2中所示的图形处理器3为基于块的渲染器,并且由此将产生渲染输出数据阵列的块,诸如要生成的输出帧。

在基于块的渲染中,不是将整个渲染输出(例如,帧)如同在立即模式渲染中一举有效处理,渲染输出(例如,要显示的帧)被划分为多个较小的子区域(通常称为“块”)。各块(子区域)被单独渲染(通常一个接一个),然后,重新组合所渲染的块(子区域),以提供完成的渲染输出(例如,显示的帧)。在这种布置中,渲染输出通常划分为规则大小和形状的子区域(块)(子区域通常为例如方形或矩形),但这不是必须的。

渲染输出数据阵列如本技术领域中已知的通常为用来在显示装置(诸如画面或打印机)显示的输出帧,但还可以例如包括用于稍后渲染途径(也称为“渲染至纹理”输出)的中间数据等。

当计算机图形图像要被显示时,其首先被定义为一组几何结构,通常为一系列图元(多边形),该图元然后依次被划分(光栅化)为用于图形渲染的图形片段。在正常图形渲染操作期间,渲染器将修改(例如)与各片段关联的颜色(红色、绿色以及蓝色(rgb)和透明度(阿尔法,α)数据),使得可以正确显示片段。在这些片段完全穿过渲染器,那么它们的关联数据值被存储在存储器中,准备输出,例如以显示。

图2示出了与本实施方式的操作相关的图形处理器3的主要元件和流水线级。如本领域技术人员将理解的,可以存在图2中未例示的、图形处理处理器的其它元件和级。这里还应注意,图2仅是示意性的,并且例如,在实践中,即使所示的功能单元和流水线级在图2中被示意性地示出为独立的级,但它们也可以共享大量的硬件电路。还将理解的是,如图2所示的图形处理流水线的级、元件以及单元等中的每个可以按需实现,因此将包括例如用于执行需要操作和功能的适当电路和/或处理逻辑等。

如图2所示,图形处理器3执行的图形处理流水线包括多个级,包括顶点着色器20、外壳着色器21、镶嵌器22、域着色器23、几何着色器24、成块器25、栅格化级26、早期z(深度)和模板测试级27、片段着色级形式的渲染器28、后期z(深度)和模板测试级29、混合级30、块缓冲器31以及降采样和写输出(多样本分解)级32。

顶点着色器20取得与针对要生成的输出定义的顶点等关联的输入数据值,并且处理这些数据值,以产生用于图形处理流水线3的随后级的一组对应“顶点着色的”输出数据值。

要处理的各图元通常由一组顶点来定义且表示为一组顶点。用于图元的各顶点通常关联有一组“属性”,即,用于顶点的一组数据值。这些属性通常将包括位置数据和非位置数据(变化),例如定义用于关注的顶点的颜色、光、法线、纹理坐标等。

对于要由图形处理器生成的给定输出,通常将存在对于关注的输出定义的一组顶点。要对于输出处理的图元然后将被指示为包括用于被生成的图形处理输出的一组顶点中的给定顶点。

顶点着色操作操作以将用于各顶点的属性变换为用于随后图形处理操作的期望形式。这例如可以包括将顶点位置属性从其初始定义的世界或用户空间变换到其中要显示图形处理系统的输出的画面空间;修改输入数据,以将要被渲染的图像中的发光的影响等考虑在内。

外壳着色器21对补缀面(patch)控制点组进行操作,并且生成已知为补缀面常数的附加数据。镶嵌级22细分几何结构以创建外壳的较高阶代表,并且域着色器23经由镶嵌级对顶点输出进行操作(类似于顶点着色器)。几何着色器24处理所有图元,诸如三角形、点或线。

这些级与顶点着色器20一起有效地进行所有需要的片段前端操作(诸如变换和发光操作),和图元设置,以响应于提供给图形处理器3的命令和顶点数据来设置要被渲染的图元。

一旦已经适当设置了要被渲染的所有图元,则成块器25然后对于为了处理目的而将渲染输出已经划分成的各块,确定需要对哪些图元进行处理。为了这样做,成块器25将要被处理的各图元的位置与块位置进行比较,并且将图元添加到用于它确定图元可以(潜在地)落在内的各块的相应图元列表。用于将图元分类且分箱到列表中的任意合适且期望的技术可以用于成块处理,诸如准确分箱或边界框分箱或它们之间的任何技术。

一旦已经以该方式对于各渲染块准备了要被渲染的图元的列表(图元列表),则存储该图元列表,以用于例如允许系统识别在渲染关注的块时需要考虑(并渲染)哪些图元。

一旦成块器已经完成块列表(要对于各块处理的图元的列表)的准备,那么各块可以被渲染。

为了这样做,各块由成块器25之后的图2中所示的图形处理流水线级来处理。

由此,当在处理给定块时,要对于该块处理的各图元(在用于该块的列表中列出)被传递到栅格化器26。

图形处理流水线3的栅格化级26操作为将图元栅格化为独立的图形片段以处理。为了这样做,栅格化器26将图元栅格化为采样点并且生成具有用于渲染图元的适当位置(代表合适的采样位置)的图形片段。

由栅格化器生成的片段然后向前发送到流水线的剩余部分以处理。

早期z/模板级27对其从栅格化器26接收的片段进行z(深度)测试,以检查是否可以在该级丢弃(剔除)任何片段。为了这样做,早期z/模板级27将从栅格化器26发布的片段的深度值(与片段关联的深度值)与已经渲染的片段的深度值进行比较(这些深度值存储在作为块缓冲器31的一部分的深度(z)缓冲器中),以确定新片段是否将由已经被渲染的片段遮蔽。同时,执行早期模板测试。

通过了片段早期z和模板测试级27的片段然后被发送到片段着色级28。片段着色级28对通过了早期z和模板测试的片段进行适当的片段处理操作,以处理片段以生成适当渲染的片段数据。

该片段处理可以包括任何合适且期望的片段着色处理,诸如对片段执行片段着色器程序、向片段应用纹理、向片段应用雾化或其他操作等,以生成合适的片段数据。在本实施方式中,片段着色级28具有着色器流水线(可编程片段着色器)的形式。

然后,存在“后期”片段z和模板测试级29,该级尤其对经着色的片段进行流水线末端深度测试,以确定所渲染的片段是否将实际在最后图像中看到。该深度测试使用针对在块缓冲器31中的z缓冲器中存储的片段位置的z缓冲器值,通过将从片段着色级28发布的片段(关联的)深度值与已经被渲染的片段的深度值(如存储在深度缓冲器中的)进行比较,来确定用于新片段的片段数据是否应当代替已经被渲染的片段的片段数据。该后期片段深度和模板测试级29还对片段执行任何需要的“后期”阿尔法和/或模板测试。

通过了后期片段测试级29的片段然后经历(如果需要)任何必须的与已经存储在混合器30中的块缓冲器31中的片段的混合操作。对片段需要进行的任何其他剩余操作(诸如,递色等(未示出))也在该级执行。

最后,(混合后的)输出片段数据(值)被写到块缓冲器31,从该块缓冲器31,它们可以例如被输出到帧缓冲器33以显示。用于输出片段的深度值还适当写到块缓冲器31内的z缓冲器。(块缓冲器存储颜色并且深度缓冲器分别存储用于缓冲器代表的各个采样点(实质上用于正被处理的块的各个采样点)的合适颜色等或z值)。这些缓冲器存储代表整个渲染输出(例如要被显示的图像)的一部分(块)的片段数据的阵列,缓冲器中的各组采样值对应于整个渲染输出的相应像素(例如各2x2组采样值可以对应于输出像素,其中,使用4x多采样)。

块缓冲器作为位于(本地于)图形处理流水线(芯片)上的ram的一部分来提供。

来自块缓冲器31的数据被输入到降采样(多采样分解)写输出单元32,并且因此输出(写回)到外部存储输出缓冲器,诸如显示装置(未示出)的帧缓冲器33。(显示装置可以包括例如包括像素阵列的显示器,诸如计算机监视器或打印机)。

在降采样和写输出单元32对块缓冲器31中存储的片段数据降采样到用于输出缓冲器(装置)的适当分辨率(即,使得生成与输出装置的像素对应的像素数据的阵列),以生成用于输出到输出缓冲器的输出值(像素)。

一旦渲染输出的块已经被处理并且其数据被输出到主存储器(例如,到主存储器中的帧缓冲器33)以存储,那么处理下一块,以此类推,直到充足的块已经被处理以生成整个渲染输出(例如,要显示的帧(图像))为止。然后,对于下一渲染输出(例如,帧)重复该处理,以此类推。

如可以从图2看到的,图形处理流水线3包括多个可编程处理或“着色器”级,即,顶点着色器20、外壳着色器21、域着色器23、几何着色器24和片段着色器28。这些可编程着色器级执行具有一个或更多个输入变量的相应着色器程序,并且生成输出变量组。通常,将对于要处理的各工作项(例如,在顶点着色器的情况下为顶点)执行关注的着色器程序。通常将对于要处理的各工作项发布执行线程,并且线程然后将执行着色器程序中的指令,以产生期望的“经着色的”输出数据。

应用2提供使用高级别着色器编程语言(诸如glsl、hlsl、opencl等)执行的着色器程序。这些着色器程序然后由着色器语言编译器来翻译成用于目标图形处理流水线3的二进制代码。这可以包括创建编译器内的程序的一个或更多个内部(中间)表示。(编译器可以例如是驱动器4的一部分,存在特殊api调用来使编译器运行。编译器执行可以由此被看作响应于由应用生成的api调用由驱动器进行的绘制调用准备的一部分。

用于图形处理器3的其他结构当然是可能的。

本发明涉及以下情形:图2的图形处理器3用于通过渲染表示场景的相同视图但处于不同分辨率的一组多个图像来执行凹形渲染,然后将这些不同分辨率视图组合,以提供分辨率在图像上变化的输出凹形图像。

图3示出了示例凹形图像,在该凹形图像中,固定点(最高分辨率的区域)40朝向图像的左手侧。可以看到,图像远离固定点的区域41以较低的分辨率来显示。

在本实施方式中,当执行凹形渲染时,图形处理器3被控制以渲染场景的相同视图的多个(例如,三个)不同分辨率版本,然后适当地组合(合成)视图的这些不同分辨率图像,以提供输出“凹形”图像(输出帧),其例如被显示。

图4示出了场景的相同视图的示例性一组三个不同分辨率图像,其可以被组合以提供用于显示的凹形图像。如图4所示,将生成视图的三个不同分辨率版本:视图的最高分辨率版本50、“中”分辨率视图51以及视图的最低分辨率版本52。然后可以组合(合成)这些不同图像,以提供用于显示的最终输出“凹形”图像。(在图4中,为比较目的,不同分辨率图像示出为全部被缩放为相同大小。)

图5示意性示出了合成对应于图4中所示的图像的不同分辨率图像64、65、66以提供最终凹形输出图像(视图)60。如图5所示,最终输出的凹形视图(图像)60由不同分辨率图像64、65以及66组成,并且不同分辨率图像64、65以及66中的每个图像示出被渲染的整体场景的不同视场(部分)。

具体地,最高分辨率视图64的适当区域被显示在输出凹形视图的区域61(例如确定用户在看着的)中,较低分辨率视图65、66的适当区域然后逐渐显示在输出图像60的远离最高分辨率区域61的区域62、63中。

图6示意性示出了在本发明的实施方式中的渲染三个不同分辨率图像64、65、66以显示输出最终凹形视图60。

需要凹形渲染的事实在本实施方式中通过以下方式来指示:需要该渲染的应用2向用于图形处理器3的驱动器4指示用于场景的几何结构要被渲染成多个视图(表面),连同与中心凹视图(和可以期望的任何其他渲染等配置)关联的缩放因子。响应于来自应用2的这种命令,该驱动器然后配置适当成块和渲染任务,该任务被发送到图形处理器3以按照现在将描述的方式来执行凹形渲染。

如图6所示,在该实施方式中并且根据本发明,用于场景的几何结构被处理并且成块(被分类到用于被渲染的图像的相应渲染块的列表中)仅一次(步骤70),以提供单组块几何结构列表71,该列表然后在渲染各相应分辨率图像(用于渲染各相应分辨率图像的片段处理)时被共同使用(共享)(步骤72、73、74)。

具体地,图形处理器3被控制以对于输出图像所需的最高分辨率对被渲染的场景执行顶点位置处理(着色)和几何结构列表(图元列表)这两者仅执行一次。

这些处理可以根据期望来执行,诸如且优选地根据图形处理器3的用于这些处理的正常操作来执行,但这些处理将使用要被渲染以产生最终凹形视图的处于最高分辨率场景的的几何结构来进行。

如图6所示,一旦已经以该方式准备了几何结构列表(块列表),那么在渲染示出视图(中的一些或全部)的各相应不同分辨率图像时使用该单组几何结构列表(块列表)。

在该处理中,对于最高分辨率视图64,所准备的几何结构列表可以照原样简单地使用,以识别在渲染该最高分辨率图像64时对于各渲染块需要处理的几何结构。

对于其他较低分辨率图像65、66,已经以最高分辨率准备的几何结构列表(和这些列表中的几何结构)被使用,以通过将“全”分辨率几何结构列表中的几何结构缩小适当的缩放因子(该缩放因子使关注的较低分辨率图像的分辨率与已经准备几何结构列表的最高分辨率关联)(例如,使用线性缩放)来识别并定义对于较低分辨率图像要被渲染的几何结构(图元)。这种缩小作为顶点位置加载操作的一部分来进行,但其他设置(arrangement)将是可能的(如果期望)。

如图6所示,用于不同分辨率图像64、65、66的渲染处理在本实施方式中还被构造成使得“完整”图像的仅一些但不是所有图像以不同相应分辨率来渲染。具体地,不用于最终合成的图像的区域不被渲染。

图7进一步例示了这一点,并且示出了例如,对于最高分辨率图像,仅渲染将用于产生最终凹形视图(如可以从图5看到的)的最高分辨率图像的部分61。对应地,对于“中”分辨率图像65,省略了其中将显示最高分辨率图像64的区域61,并且对于最低分辨率图像66,省略了(不渲染)其中将显示最高和“中”分辨率图像的区域62。

在本实施方式中,通过对于输出图像(帧)的各渲染块指示应对于该块位置产生哪个分辨率图像,实现这种仅对各不同分辨率图像的所选部分进行渲染。该信息连同用于渲染块的几何结构列表一起提供。相反可以使用其他设置(如果期望),诸如用于图形处理器的驱动器被构造成在向图形处理器提供渲染任务时提供要被渲染的块的适当列表,和/或指示“渲染排除区域”,其识别对于图像不应渲染块的区域。

一旦已经由图形处理器3渲染不同分辨率图像64、65、66(各不同分辨率图像的适当部分),则这些图像在本实施方式中存储于图形处理系统的存储器中的适当帧缓冲器中。然后适当组合(合成)这些图像,以提供将显示的最终、输出、凹形视图(如图5例示)。

在本实施方式中,合成视图的不同分辨率图像以提供最终凹形输出视图通过以下方式来执行:图形处理器将各不同分辨率视图作为图形纹理,然后使用纹理映射操作(纹理映射电路)(其将被实现为片段着色器28的一部分)来在要被显示的最终输出凹形视图上适当采样并组合不同分辨率图像。

具体地,在本实施方式中,各不同分辨率图像被存储为mip贴图纹理中的mip贴图级别,然后通过适当设置在mip贴图纹理进行采样时使用的细节级别,来适当采样不同图像,以生成输出凹形视图。具体地,对于输出图像上的各相应位置设置用于mip贴图采样处理的细节级别,使得纹理采样操作将总是采样在该位置处具有定义内容(即,具有实际渲染的片段数据)的最细节的mip贴图级别(即,最细节的分辨率图像),并且使得将存在从一个mip贴图级别(即,从一个级别的分辨率图像)到另一个的较平滑的过渡。

图8、图9以及图10例示了该操作。

图8示出了使用圆形过渡掩膜80、81来组合不同分辨率图像。图9示出了纹理采样操作90被构造成使用双线性插值,其中对于最终输出凹形图像60,对单个图像(mip贴图级别)进行采样。图10示出了细节级别被设置为使得两个不同mip贴图级别(图像)之间的三线性插值将用于区域100中的纹理采样操作91,在区域100中在输出凹形视图60中的两个不同分辨率图像(两个不同mip贴图级别)之间存在过渡。

可以从这些附图中看到,当执行这种凹形渲染时,最高分辨率图像不是必须处于被显示的最终输出图像的中心,而是可以依赖于固定点的位置而偏离在视图中的任何地方(其例如可以通过使用视线追踪传感器来识别观看者实际上看着的位置来确定)。

要用于输出帧中(在最终输出的凹形图像60中)的哪些区域的图像和细节级别例如可以通过例如由驱动器将在对图像进行采样时使用的细节级别的确定构造成依赖于被采样的(s,t)纹理坐标,例如,使得最高分辨率纹理在固定点附近被采样。固定点可以被指示给驱动器,例如由请求图形处理的应用进行,例如通过指示期望最高分辨率的矩形。驱动器然后将细节级别确定的系数构造成使得对该矩形的中心(该矩形中心处的纹理坐标)的采样将从最高分辨率纹理采样,而朝向该矩形边缘的采样将开始以采样并在最高与次高分辨率图像之间插值,等等。

对上述实施方式的多个变型例、修改例等将是可能的(如果期望)。例如,当准备几何结构列表(执行成块操作)时,基于对于最终输出凹形视图的图像的不同区域要显示的分辨率级别,而对于被渲染的图像的不同区域改变该处理。例如,对于将以较低分辨率显示的最终输出图像的那些区域,对于较大的图像子区域准备可以准备几何结构列表。

类似地,渲染配置可以依赖于被渲染的图像的分辨率来调整,渲染配置诸如多采样计数和/或启用还是停用采样测试。

还将有可能的是移动图像子区域图案(成块图案),使得该模式围绕要被显示的场景的最高分辨率(凹形)区域的中心对称,而不是例如简单地在输出帧的左顶部开始。如果较高分辨率区域例如为512*512个采样位置(例如,像素),那么用于准备几何结构列表的图像子区域模式可以被设置为使得高分辨率图像被单个512*512采样位置图像子区域精确覆盖。那么这将避免例如多个512*512采样位置图像子区域覆盖最高分辨率图像,这些区域之间的边缘穿过位于潜在非中心位置处的最高分辨率区域。

由此,在本发明特别优选的实施方式中,用于要被渲染的几何结构(图元)的顶点被渲染到对于图像的最高分辨率部分需要的精度(即,顶点被渲染为似乎全部场景都要以最高分辨率渲染),并且对应地,几何结构(图元)列表被准备为似乎要以将需要的最高分辨率渲染整个场景,但然后为了使得场景的较低分辨率部分的处理更高效,调整几何结构列表准备操作(成块操作)和/或栅格化操作。

具体地,当对于仅以较低分辨率显示的场景的部分准备几何结构列表(执行成块操作)时,在优选实施方式中,最小几何结构列表子区域级别不被使用,使得例如,对于渲染将沿两个方向以半分辨率发生的区域,对于32*32采样位置(例如,像素)子区域而不是对于16*16采样位置子区域来准备几何结构列表,即使图元将嵌合在16*16采样位置图像子区域中。

还将有可能的是在较低分辨率区域中更有力地剔除几何结构(例如,图元)(例如,将作为最高分辨率的一个采样位置结束的图元在较低分辨率下可能不可见)。

接着,当渲染图像的较低分辨率区域的块时,例如沿两个方向以半分辨率,几何结构列表子区域优选地被当作比它们实际上小了一阶。例如,32*32采样位置图像子区域可以被当作似乎它是16*16采样位置子区域。如上面讨论的,在该区域中进行渲染时,(在实际栅格化之前)顶点坐标还将被缩放。

在需要两个不同分辨率的图像的区域中,几何结构列表和顶点将保持相同,但当读取并栅格化渲染块时将应用适当的缩放。

在渲染输出帧时的这种设置的示例将如下,如果不进行凹形渲染则该输出帧大小将为4096*4096个采样位置。

对于凹形渲染将产生三个不同分辨率图像:全分辨率的1024*1024个采样位置的第一图像;半分辨率的1024*1024个采样位置的第二图像,其覆盖全分辨率图像的2048*2048个采样位置,在固定点处(例如,在中心)存在“孔”;四分之一分辨率的1024*1024个采样位置的第三图像,其覆盖全分辨率图像的4096*4096个采样位置,再次,在固定点周围(例如,在中心)存在“孔”。

当产生这些图像时,将以4096*4096分辨率执行顶点着色和几何结构列表准备(成块操作),但在整体图像的不同区域中使用对于图像子区域的调整。

全分辨率图像将照常渲染。

当渲染半分辨率图像时,32*32采样位置图像子区域将在渲染的同时被快速(onthefly)缩小为16*16采样位置块。(对于图像与全分辨率图像交叠的小区域,实际上将使用8*8采样位置图像子区域几何结构列表“箱”)。

当渲染四分之一分辨率图像时,64*64采样位置图像子区域将在渲染的同时被快速缩小为16*16采样位置块。再次对于四分之一分辨率图像与半分辨率图像交叠的小区域,处理实际上将使用8*8采样位置几何结构列表“箱”。

从上述可以看到,本发明至少在其优选实施方式中可以提供用于使用基于块的图形处理器和图形处理系统来执行凹形渲染的更高效的处理和系统。这至少在本发明的优选实施方式中通过以下方式来实现:对于被渲染以生成输出凹形图像的一组图像仅执行一次几何结构分类(成块)处理,然后在渲染对于产生最终输出凹形图像所需要的各不同分辨率图像时,使用该单组几何结构列表。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1