视网膜凹式渲染的制作方法

文档序号:12612578阅读:252来源:国知局
视网膜凹式渲染的制作方法与工艺

本发明的各实施例总体上涉及图形渲染领域,具体地涉及视网膜凹式渲染。



背景技术:

图形处理系统通常被配置为例如从运行在计算机系统上的应用接收图形数据,并且被配置为渲染图形数据以提供渲染输出。例如,被提供到图形处理系统的图形数据可以描述要被渲染的三维(3D)场景内的几何结构,并且渲染输出可以是场景的渲染的图像。图形数据可以包括表示几何形状的“基元(primitive)”,其描述场景中的结构的表面。常见的基元形状是三角形,但是基元可以是其他形状并且可以是线或点。对象能够由一个或多个(例如,数百个、数千个或数百万个)这样的基元构成。作为示例,图形处理系统可以实现用于渲染图形的栅格化技术,其中针对基元中的每个,确定基元影响图像中的哪些像素并且之后相应地修改那些像素。实现栅格化技术的图形处理系统是本领域中公知的,并且存在可以实现渲染的各种不同的方式,例如基于图块的渲染或非基于图块的渲染、即时模式渲染和延迟渲染。

在一些系统中,图像序列(或“帧”)被实时渲染和显示。图像序列的帧率将通常取决于针对其渲染图像的应用。例如,游戏应用可以以每秒25帧的帧率发送用于渲染的图像,但是在其他示例中可以使用其他帧率。一般地,增大要被渲染的图像序列的帧率将增大对图形处理系统的处理负载。

另外,例如通过设置图像中的像素的数量来以不同的分辨率渲染不同的图像,并且还能够设置要被渲染的图像数据的几何细节水平(LOD)。几何LOD可以对将在渲染系统中被渲染的最小对象设置限制。一般地,增大图像中的像素或几何LOD的数量将提供图形中的更大的细节,其可以增大图像的感知质量,但是这将还倾向于增大对图形处理系统的处理负载。

可能期望以高帧率实时地以具有高几何LOD的高分辨率渲染图像,但是用于实现这一点的处理要求在可能具有有限处理资源和功率供应的一些设备(例如,诸如智能电话、平板计算机或头戴式显示器的移动设备)上可能是不现实的。为了解决这一点,可以使用如下面所描述的视网膜凹式渲染的构思。

人类视敏度在视觉场上显著地变化,其中大多数细节在视网膜的小中心凹区域中可见。已知,中心凹区域大约为视场的5°,其可以例如为大约图像被显示在其上的总显示面积的1%。例如,图1示出了要被显示在显示器上的图像102,并且中心凹区域被标示为104。图1不是按比例绘制的,但是能够看到,中心凹区域104能够比整个图像102小得多。

视线跟踪(或“眼睛跟踪”)可以被用于确定用户正在注视哪里以便确定中心凹区域104相对于图像102在哪里。中心凹区域104能够以高分辨率和高几何LOD来渲染,然而,图像102的剩余部分能够以较低的分辨率和较低的几何LOD来渲染。经渲染的中心凹区域104能够之后与图像102的剩余部分的渲染一起被融合以形成经渲染的图像。因此,在图像102的外围,未感知到的细节能够被省略,使得较少的基元可以以较低的像素密度被渲染。由于中心凹区域104一般为图像102的面积的一小部分(例如,~1%),所以实质的渲染计算节省能够通过减小外围相较于中心凹区域的渲染的分辨率和几何LOD来实现。另外,由于人类视敏度远离中心凹区域快速地下降,所以针对如由将他们的视线指向中心凹区域104的中心的用户感知到的图像维持高图像质量。



技术实现要素:

提供本发明内容从而以简化的形式介绍下面在具体实施方式中进一步描述的一系列概念。本发明内容不旨在确定要求保护的主题的关键特征或必要特征,也不旨在用于限制要求保护的主题的范围。

在一些示例中,描述了用于渲染图像的视网膜凹式渲染,其中光线跟踪技术被用于渲染图像的感兴趣区域,并且栅格化技术被用于渲染图像的其他区域。图像的经渲染的感兴趣区域之后与图像的经渲染的其他区域被组合(例如,融合)以形成经渲染的图像。感兴趣区域可以对应于图像的中心凹区域。光线跟踪自然提供高细节和逼真的渲染,人眼视觉尤其在中心凹区域中对其敏感;然而,栅格化技术适于以简单的方式提供时间平滑和反混叠,并且因此适于在用户将在他们的视觉的外围中看到的图像的区域中使用。

在本文中描述的示例中,能够同时地(或互换地)使用栅格化和光线跟踪两者,其中两种技术都可以贡献于最终图像。关于用户的视线位置的输入被提供并被用于影响如何使用栅格化和光线跟踪技术来形成最终图像。以这种方式,能够减少用户的不完整的渲染或渲染伪影的感知,和/或能够减少渲染功率。

提供了一种处理系统,其被配置为渲染一幅或多幅图像,该处理系统包括:光线跟踪逻辑,其被配置为使用光线跟踪技术来处理针对图像的一个或多个感兴趣区域的图形数据;以及栅格化逻辑,其被配置为使用栅格化技术来处理针对图像的一个或多个栅格化区域的图形数据,其中处理系统被配置为使用针对使用光线跟踪技术处理的图像的一个或多个感兴趣区域的经处理的图形数据和针对使用栅格化技术处理的图像的一个或多个栅格化区域的经处理的图形数据来形成经渲染的图像。感兴趣区域可以对应于图像的中心凹区域。例如,一个或多个栅格化区域可以包括图像的不是一个或多个感兴趣区域的一个或多个区域。处理系统还可以包括视线跟踪逻辑,其被配置为确定针对要被渲染的图像的视线位置,其中图像的感兴趣区域基于所确定的视线位置,例如感兴趣区域可以包围所确定的视线位置使得其表示中心凹区域。

提供了一种渲染一幅或多幅图像的方法,该方法包括:使用光线跟踪技术来处理针对图像的一个或多个感兴趣区域的图形数据;使用栅格化技术来处理针对图像的一个或多个栅格化区域的图形数据;以及使用针对使用光线跟踪技术处理的图像的一个或多个感兴趣区域的经处理的图形数据和针对使用栅格化技术处理的图像的一个或多个栅格化区域的经处理的图形数据来形成经渲染的图像。

提供了一种处理系统,其被配置为渲染一幅或多幅图像,该处理系统包括:第一渲染逻辑,其被配置为使用第一渲染技术来处理针对图像的一个或多个第一区域的图形数据;以及第二渲染逻辑,其被配置为使用第二渲染技术来处理针对图像的一个或多个第二区域的图形数据,所述第一渲染技术与所述第二渲染技术不同,其中处理系统被配置为使用针对使用第一渲染技术处理的图像的一个或多个第一区域的经处理的图形数据和针对使用第二渲染技术处理的图像的一个或多个第二区域的经处理的图形数据来形成经渲染的图像。例如,一个或多个第二区域可以包括图像的不是一个或多个第一区域的一个或多个区域。

提供了一种非瞬态计算机可读存储介质,其具有存储在其上的集成电路的计算机可读描述,该计算机可读描述当由集成电路制造系统处理时使系统制造包括以下的处理系统:光线跟踪逻辑,其被配置为使用光线跟踪技术来处理针对图像的一个或多个感兴趣区域的图形数据;以及栅格化逻辑,其被配置为使用栅格化技术来处理针对图像的一个或多个栅格化区域的图形数据,其中处理系统被配置为使用针对使用光线跟踪技术处理的图像的一个或多个感兴趣区域的经处理的图形数据和针对使用栅格化技术处理的图像的一个或多个栅格化区域的经处理的图形数据来形成经渲染的图像。

提供了一种处理系统,其被配置为渲染一幅或多幅图像,该处理系统包括:渲染逻辑,其被配置为处理图形数据以生成初始图像;区域识别逻辑,其被配置为识别初始图像的一个或多个区域;光线跟踪逻辑,其被配置为执行光线跟踪以确定针对初始图像的所识别的一个或多个区域的光线跟踪数据;以及更新逻辑,其被配置为使用针对初始图像的所识别的一个或多个区域的所确定的光线跟踪数据来更新初始图像,以由此确定要被输出用于显示的经更新的图像。

提供了一种在处理系统处渲染一幅或多幅图像的方法,该方法包括:处理图形数据以生成初始图像;识别初始图像的一个或多个区域;执行光线跟踪以确定针对初始图像的所识别的一个或多个区域的光线跟踪数据;以及使用针对初始图像的所识别的一个或多个区域的所确定的光线跟踪数据来更新初始图像,以由此确定要被输出用于显示的经更新的图像。

还提供了一种集成电路制造系统,其包括:非瞬态计算机可读存储介质,其其上存储有集成电路的计算机可读描述,该计算机可读描述处理系统:布局处理系统,其被配置为处理集成电路描述以便生出体现处理系统的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造处理系统。其中处理系统包括:光线跟踪逻辑,其被配置为使用光线跟踪技术来处理针对图像的一个或多个感兴趣区域的图形数据;以及栅格化逻辑,其被配置为使用栅格化技术来处理针对图像的一个或多个栅格化区域的图形数据,其中处理系统被配置为使用针对使用光线跟踪技术处理的图像的一个或多个感兴趣区域的经处理的图形数据和针对使用栅格化技术处理的图像的一个或多个栅格化区域的经处理的图形数据来形成经渲染的图像。

技术人员容易理解,以上特征可以在适当的情况下被组合,并且可以与本文中描述的示例的方面中的任何进行组合。

附图说明

现在将参考附图详细描述示例,在附图中:

图1示出了图像内的中心凹区域的示例;

图2示出了包括根据本文中描述的实施例的处理系统的系统;

图3是示出了渲染处理系统中的一幅或多幅图像的方法的流程图;

图4a示出了图像内的中心凹区域和融合区域的示例;

图4b是图示了要在融合区域中被使用的融合因子的图形;

图5图示了根据本文中描述的实施例的处理系统被实现在其中的环境;

图6a示出了用于在虚拟现实系统中使用的头戴式耳机;

图6b图示了根据本文中描述的实施例的处理系统被实现在其中的虚拟现实系统;

图7图示了其中来自低细节和低帧率渲染的图像信息与来自以较快帧率的光线跟踪的图像信息被组合以产生对视线的变化做出响应的高帧率图像的系统。

图8图示了实现混合渲染系统的图形处理单元的示例;

图9示出了图像内的感兴趣中心区域的示例;

图10图示了其中来自低细节光线跟踪的图像信息与来自高细节光线跟踪的图像信息被组合以产生对视线的变化做出响应的高细节图像的系统。

图11示出了用于生成实现处理系统的集成电路的集成电路制造系统。

附图图示了各种示例。技术人员将认识到附图中的图示的元件边界(例如,框、框的组或者其他形状)表示边界的一个示例。可能的是,在一些示例中,一个元件可以被设计为多个元件或者多个元件可以被设计为一个元件。在合适的情况下,在整个附图中使用共同的附图标记来指示相似的特征。

具体实施方式

现在将仅通过举例的方式来描述实施例。

在先前的视网膜凹式渲染系统中,在其中图像的中心凹区域和外围被渲染的方式之间的差异涉及图像的区域以其被渲染的分辨率或细节的水平。对比之下,在本文中描述的示例中,不同的渲染方法,例如不同的渲染技术被用于渲染图像的中心凹区域和其他区域。不同的渲染技术可以适于渲染图像的不同区域,使得不同渲染技术的不同质量与由人类视觉系统处理视场的不同区域的方式相匹配。总体上,针对图像的第一区域(例如,中心凹区域)的图形数据使用第一渲染技术(例如,光线跟踪)来处理,并且针对图像的第二区域(例如,外围区域)的图形数据使用第二渲染技术(例如,栅格化)来处理。第一渲染技术与第二渲染技术不同。第二区域(例如,外围区域)可以包括图像中的不是第一区域(例如,中心凹区域)的部分的一个或多个区域。能够使用针对使用第一渲染技术(例如,光线跟踪)处理的图像的第一区域(例如,中心凹区域)的经处理的图形数据和针对使用第二渲染技术(例如,栅格化)处理的图像的第二区域(例如,外围区域)的经处理的图形数据来形成经渲染的图像。针对区域的图形数据可以包括要在该区域内被渲染的基元。术语“第一”和“第二”在此被用作标识符并且不透露任何顺序意义。另外,对“第一区域”和“第二区域”的引用不暗示必须存在仅仅两个区域。另外,词语“区域”不暗示连续性。在本文档中,区域被用于意指像素的任何子集、缓冲或图像内的子像素或样本。

在一些示例中,不同的渲染技术可以基于图像内的感兴趣区域的位置(例如,中心凹区域或高细节区域)跨图像的不同部分以不同的方法来使用。例如,可以使用第一渲染技术(例如,栅格化)来生成完全低细节图像,并且可以使用第二渲染技术(例如,光线跟踪)来将细节添加到低细节图像的特定区域。例如,使用光线跟踪技术来将高分辨率的逼真的效果添加到低细节图像的中心凹区域,和/或光线跟踪技术可以将高分辨率细节添加到尤其是在外围中易于混叠的区域中。区域可能在它们具有高频细节时(例如,在该“频率”处于空间域中的情况下)易于混叠。

可以用于渲染图像的区域的不同的渲染技术的示例为栅格化、光线跟踪以及光线投射。这使术语光线跟踪的普遍用于描述他人可能称为光线投射的内容。作者使用光线跟踪的意图是整体上包含光线投射的宽泛术语。栅格化、光线跟踪和光线投射全部用于确定哪些对象对最终图像中的哪些像素可见(与是直接地还是通过如反射的间接效果无关)的目的。在可见性确定之后,可以执行着色(shade)运算以计算从所识别的对象到合适的像素的颜色或光贡献。通常这能够利用着色器(shader)程序来完成。在不同渲染技术之间使用的着色器程序能够被共享,但是它们也能够是专门被编写以适应渲染技术的不同的着色器程序。

栅格化涉及定义针对包含要从场景绘制的几何结构和像素阵列的3-D场景的视角。在大多数栅格化方法中,几何结构被精简为三角形基元,并且那些基元被变换成具有一深度值的2-D坐标。确定哪个基元在每个像素(或像素的一部分)处可见,并且该基元的可见表面被着色。栅格化能够容易地使计算并行化,因为每个像素是独立的,并且几何结构能够为通过用于处理的栅格化流水线的流传输的几何结构。栅格化因此很好地适于时间敏感渲染应用,例如视频游戏。然而,使用栅格化来产生复杂的渲染输出是困难且耗时的。

光线跟踪方法是本领域中已知的并且旨在模拟自然光线。例如,一个或多个光线可以被认为是从视角被“发射”通过要被渲染的图像的每个像素,并且光线被跟踪到具有场景中的基元的相交。一般地,确定从场景中的几何结构“弹回”的光线的数量,并且能够对诸如折射和表面粗糙度的效果进行建模。光线跟踪尤其很好地适于渲染图像的中心凹区域,因为光线跟踪倾向于比其他渲染技术产生更真实的结果。由于人类视觉系统具有中心凹区域中的高敏锐度,所以中心凹区域的感知到的图像质量倾向于在使用光线跟踪技术时相较于在使用其他渲染技术时(在诸如像素密度的其他特征相同时)更高。然而,光线跟踪是复杂的过程(常常涉及确定在场景中的光线与基元之间的数百万或数十亿相交的效果以渲染单幅图像),使得渲染整幅图像并且实时显示该图像需要的处理资源可能在图形处理系统被实现在其上的许多设备上不可用,例如在诸如智能电话、平板计算机和虚拟现实头戴式耳机的移动设备上不可用。因此,在本文中描述的一些示例中,光线跟踪被用于仅仅渲染图像的中心凹区域,其倾向于大约为总图像面积的1%。因此,将光线跟踪用于中心凹区域需要的处理资源和功率消耗相较于对图像的整体进行光线跟踪在这些方法能够被实现在否则将不能够以高帧率(例如,以高于每秒10帧的帧率)通过光线跟踪实时地渲染图像的许多设备上的程度上被大大减少。另外,在图像的中心凹区域中实现光线跟踪超越其他渲染技术的主要优点(例如,较高的图像质量和较大的摄影逼真度/视觉保真度),中心凹区域是在人类视觉系统中尤其是敏感的地方。

一些视网膜凹式渲染系统可以仅仅对图像的整体使用光线跟踪,但是可以增大中心凹区域中的光线密度和/或帧率。然而,这些视网膜凹式渲染系统将在图像的外围中具有问题。具体地,图像的外围将遭受时间和空间混叠。尽管人类视觉系统的外围在处理精细细节时较差,但是外围对混叠敏感,并且尤其对时间混叠(例如,闪烁)敏感。难以使用纯光线跟踪方法解决外围中的混叠问题而不增大外围的处理要求。然而,如在下面的一些示例中所描述的,纯光线跟踪方法或纯光线投射方法能够被使用,例如,其中样本密度(即,光线密度)跨图像的不同部分而变化。

然而,栅格化技术较好地适于解决混叠(空间混叠和时间混叠两者)而无需复杂的处理。具体地,在栅格化渲染器中用于解决混叠的处理要求和功率消耗低于在光线跟踪渲染器中用于解决混叠的处理要求和功率消耗。远离中心凹区域,人类视觉系统对细节较不敏感,但是对混叠敏感(空间和时间两者)。相较于光线跟踪,栅格化可以提供较低细节图像但是较好地适于解决空间和时间混叠。因此,栅格化比光线跟踪更适于渲染图像的外围。然而,为了重申以上描述的内容,在中心凹区域,人类视觉系统对细节更敏感;并且相较于栅格化,光线跟踪倾向于提供具有较大视觉保真度的较高细节图像,因此光线跟踪比栅格化更好地适于渲染图像的中心凹区域。在本文中描述的一些示例中,光线跟踪被用于渲染图像的中心凹区域,并且栅格化被用于渲染图像的其他区域。以这种方式,用于渲染图像的特定区域的渲染技术与人类视觉系统的特性相匹配。

在一些示例中,光线跟踪能够被用于渲染图像的多个区域,即可以存在多个感兴趣区域。例如,可以存在渲染系统的多个用户,并且感兴趣区域可以对应于用户中的每个的中心凹区域。在另一示例中,一些非中心凹区域可以在那些区域可以受益于详细的渲染的意义上被认为是“感兴趣区域”,使得存在使用光线跟踪来渲染那些区域的益处。换言之,在中心凹区域之外的高细节渲染可以被认为是有用的。具体地,一些研究表明在一些外围区域中的人类感知能够识别高频边缘和转变的区域,即使其不能够在与中心凹区域中一样的程度上感知那些区域中的细节。例如,边缘意识滤波器(例如,Sobel滤波器)可以在完全栅格化的图像上被实现,并且之后光线跟踪技术可以处理在其中检测到一些高频率(图像空间中的高频率或者时间域中的高频率)的区域(即,感兴趣区域)中的光线以将细节添加到图像的那些区域。由光线跟踪过程添加的额外的细节可以提供改进的准确性,因此其可以减少对经渲染的图像中的非中心凹区域中的混叠的感知。

图2示出了包括处理系统202、一个或多个相机204和显示器206的系统200。处理系统202可以被实现为片上系统(SOC)。处理系统202包括经由通信总线耦合的图形处理单元(GPU)208、相机流水线210、中央处理单元(CPU)212以及存储器214。(一个或多个)相机204和显示器206还可以被耦合到处理系统202的通信总线,使得它们能够与GPU 208、相机流水线210、CPU 212以及存储器214进行通信。GPU 208包括视线跟踪逻辑216、组合逻辑218、光线跟踪逻辑220、栅格化逻辑222和控制逻辑224。GPU 208的不同逻辑块可以以硬件、软件或其任何组合来实现。另外,GPU 208的不同逻辑块在图2中被表示为单独的块,但是在一些实施方式中,它们可以共享GPU 208的一些资源,例如计算单元和本地存储器、等等。

图3是示出了渲染处理系统202中的一幅或多幅图像的示例方法的流程图。图像当它们被渲染时被实时显示在显示器206上以供用户查看。相机204被布置为捕获用户注视图像被渲染在其上的显示器206的图像。

在步骤S302中,相机流水线210从相机204接收图像数据。在步骤S304中,相机流水线210处理图像数据以生成捕获的图像。相机流水线210可以使用已知的技术来处理图像数据并且可以包括许多不同的过程,例如以下中的一个或多个:滤波、锐化、黑度校正、白平衡、缺陷像素修复、去马赛克、横向色差校正、去噪、色域(gamut)映射、色调映射、彩色增强、等等。相机流水线210可以以硬件、软件或其任何组合来实现。

所捕获的图像从相机流水线210被提供到GPU 208的视线跟踪逻辑216,要么经由存储器214要么直接在处理系统202中的通信总线上而不经由存储器214进行。由于相机流水线210和视线跟踪逻辑216被实现在相同的处理系统202(其可以被实现为SOC)上,所以在相机204捕获针对图像的图像数据与图像被提供到视线跟踪逻辑216之间的延时能够是很低的。具体地,延时可以比在相机流水线210和视线跟踪逻辑216被实现在不同的芯片上或被实现在不同的设备上时更低。

在步骤S306中,视线跟踪逻辑216分析所捕获的图像以确定视线位置。视线位置针对要被渲染的图像被确定并被显示在显示器206上,并且为用户正在注视的图像内的位置。具体地,视线跟踪逻辑216(例如,在配置步骤中)被提供具有关于显示器206的位置的信息,并且视线跟踪逻辑216识别所捕获的图像中的用户的眼睛的位置。利用这些信息片,视线跟踪逻辑216能够确定视线位置。用于执行视线跟踪的方法是本领域中已知的,并且因此,在本文中不详细描述由视线跟踪逻辑216执行的视线跟踪的细节。

在特定时间确定视线位置并且之后将该视线位置提供到控制逻辑意味着将存在在确定视线位置与使用所确定的视线位置之间的有限延时。因此,在一些示例中,视线跟踪逻辑216可以被补充有可以被用于预期视线移动的预测模型,使得其可以能够减少或甚至完全移除在确定视线位置与使用视线位置之间的延时。预测模型能够利用包括以下的信息的额外的来源:移动对象的屏幕空间位置、与用户相关的信息的位置,例如可见文本,先前视线位置,在先前视线位置处可见的场景对象(例如,以在头部移动期间预测跟踪对象的眼睛)、用于眼睛移动的基于动量的模型、等等。预测模型能够利用一组规则或启发式法来实现,和/或其能够利用神经网络来实现。使用预测模型,可以能够对感兴趣区域排列优先级,并且之后当处理时间允许时在必须提供用于显示的帧数据之前在进行中的基础上渲染那些区域中的细节。这能够尤其当在虚拟现实系统中使用处理系统时是有益的,这是因为视线确定中的延时被已知为关于虚拟现实系统的具体问题。

图3中示出的示例的步骤S302到步骤S306使用相机来确定视线位置。然而,在其他示例中,眼睛跟踪系统可以确定视线位置而不实现相机或相机流水线本身。即,眼睛跟踪系统不一定必须包括将通常被称为“相机”的图像传感器。

在步骤S308中,控制逻辑224基于视线位置来确定一个或多个感兴趣区域。在参考图3的流程图描述的示出的示例中,存在单个感兴趣区域和单个栅格化区域,但是在一些其他示例中可以存在多个感兴趣区域和/或多个栅格化区域。(一个或多个)感兴趣区域指示将使用光线跟踪技术渲染的图像的(一个或多个)区域。例如,感兴趣区域可以对应于图像的中心凹区域。因此,在这种情况下,感兴趣区域能够被确定为包围所确定的视线位置的区域。图像的感兴趣区域可以以所确定的视线位置为中心。感兴趣区域的大小和形状可以在如下面更详细地描述的不同的实现方式中是不同的。

作为示例,感兴趣区域的大小可以对应于从用户的视角的5°视场。以这种方式,感兴趣区域将对应于用户的视角的典型中心凹区域。为了将感兴趣区域的大小设置为对应于5°视场,控制逻辑224能够使用关于经渲染的图像将被显示在其上的显示器206的大小的信息和从用户的视角到显示器206的距离。关于显示器206的大小的信息能够被提供到控制逻辑224并被存储在控制逻辑224本地的存储器中。从用户的视角到显示器206的典型距离的指示也可以被存储在控制逻辑224的本地存储器中,并且将取决于系统的设置,例如,用户可能在具有距大约50cm远的显示器206的桌子,或者显示器可以被集成在虚拟现实头戴式耳机中,使得显示器距用户的眼睛大约3cm远。在一些示例中,所捕获的图像可以(例如,由视线跟踪逻辑216)分析以估计在用户的视角与显示器206之间的距离。

在步骤S310中,在GPU 208处接收描述针对场景中的其图像要被渲染的几何结构的图形数据(例如,基元数据)。例如,应用(例如,游戏应用)可以运行在CPU 212上并且可以将基元数据发送到GPU 208以对图像进行渲染并将其输出到显示器206以进行实时显示。可以在GPU 208处接收针对图像序列(“帧”)的图像数据以顺序地进行渲染和显示。如本文中所描述的,GPU 208根据视网膜凹式渲染过程来渲染(一幅或多幅)图像。

步骤S312和步骤S314可以在GPU 208中针对图像被同时地或顺序地执行。在步骤S312中,光线跟踪逻辑220使用光线跟踪技术来渲染图形的感兴趣区域。步骤S312中的渲染例如通过针对与穿过(一个或多个)感兴趣区域的光线相交的基元的基元数据根据光线跟踪技术来处理针对(一个或多个)感兴趣区域的图形数据。在步骤S314中,栅格化逻辑使用栅格化技术来渲染图像的栅格化区域。步骤S314中的渲染例如通过针对存在于(一个或多个)栅格化区域内的基元的基元数据根据栅格化技术来处理针对(一个或多个)栅格化区域的图形数据。栅格化区域包括图像的不是感兴趣区域的部分的一个或多个区域。例如,参考图1,感兴趣区域可以是中心凹区域104。栅格化区域可以包括图像102中不是感兴趣区域104的一部分的全部。另外,栅格化区域可以包括感兴趣区域104的一些。在这种情况下,栅格化区域包括与感兴趣区域的至少一些交叠的交叠区域。例如,栅格化区域可以覆盖图像102的整体。在其他示例中,栅格化区域可以覆盖除了感兴趣区域内的子区域(例如,在感兴趣区域的中心处的子区域)的图像的整体。

执行光线跟踪的方法和执行栅格化的方法是本领域中已知的,并且因此在本文中不提供光线跟踪逻辑220和栅格化逻辑222的操作的详细描述。然而,应当理解,光线跟踪逻辑220和栅格化逻辑222可以均包括计算单元、本地存储器(例如,缓存和寄存器)以及控制逻辑,例如,用于执行在不同的渲染技术中涉及的各种操作的序列化逻辑和提取逻辑。在一些示例中,光线跟踪逻辑和栅格化逻辑222可以被单独地实现在GPU 208上。然而,在其他示例中,如下面参考图8更详细地描述的,光线跟踪逻辑220和栅格化逻辑222可以共享GPU 208上的处理资源,并且GPU 208可以被认为是“混合”GPU。在这样的混合系统中,相同的着色器程序可以被运行在基元碎片上,与可见碎片是否已经通过栅格化或通过光线跟踪技术来识别无关。

在图3中示出的示例中,光线跟踪逻辑220和栅格化逻辑222均确定在被渲染的图像的样本位置处的图像值。可以在图像的样本位置与像素之间存在一对一关系,使得图像值是像素值。在其他示例中,可以针对图像的每个像素位置存在多个样本位置,使得多个图像值可以被组合以确定图像的最终像素值。在另外的示例中,样本位置可以比其中像素值能够在邻域样本之间被插值的情况下的像素更稀疏。在一些其他示例中,如下面参考图7所描述的,不是从抓取确定像素值,光线跟踪逻辑可以确定要对由栅格化逻辑确定的像素值做出的更新。

在步骤S316中,组合逻辑218将使用光线跟踪技术渲染的图像的经渲染的感兴趣区域和使用栅格化技术渲染的图像的经渲染的栅格化区域组合以形成经渲染的图像。

在非常简单的示例中,经渲染的感兴趣区域能够被叠加在经渲染的栅格化区域顶部上以形成经渲染的图像。换言之,在感兴趣区域内,光线跟踪的结果被用于经渲染的图像,并且在感兴趣区域之外,栅格化的结果被用于经渲染的图像。该组合非常易于执行,但是其可以导致在经渲染的图像中的感兴趣区域的边缘附近的引人注目的线。在感兴趣区域的边缘附近的经渲染的图像的区段可以(例如,利用高斯滤波器)被滤波以由此平滑掉在感兴趣区域与图像的其他区域之间的转变。

在其他示例中,在感兴趣区域和栅格化区域在交叠区域中交叠的情况下,组合逻辑218可以在交叠区域内的融合区域中将由光线跟踪逻辑220确定的图像值和由栅格化逻辑222确定的图像值融合。

图4a示出了包括中心凹区域104的图像102的示例。要注意,中心凹区域104在该示例中不是处于图像102的中心。这可能是因为用户的视线没有指向图像102的中心。存在融合区域402,其是在栅格化区域与中心凹区域104之间的交叠区域的一部分。在这种情况下,栅格化区域可以覆盖图像102的整体或者在另一示例中可以覆盖除了未包括在融合区域402中的中心凹区域104的一部分的图像102的整体。在该示例中,在融合区域402之外并且在中心凹区域104之外,经渲染的图像的图像值是由栅格化逻辑222确定的图像值;在不为融合区域402的部分的中心凹区域104中,经渲染的图像的图像值是由光线跟踪逻辑220确定的图像值;并且在融合区域402内,经渲染的图像的图像值是由栅格化逻辑222确定的图像值和由光线跟踪逻辑220确定的图像值的融合。

例如,在融合区域402内的多个样本位置中的每个处,融合是在由光线跟踪逻辑确定的样本位置处的图像值和在由栅格化逻辑确定的样本位置处的图像值的加权和。针对样本位置的加权和的权重可以取决于样本位置通过融合区域402的距离。例如,在通过混合区域402的一定距离x处的经渲染的图像的图像值Ir(x)可以根据以下公式来确定:

Ir(x)=α(x)IRast(x)+(1-α(x))IRT(x)

其中,IRast(x)是由栅格化逻辑222在通过混合区域402的一定距离x处渲染的图像值,IRT(x)是由光线跟踪逻辑220在通过混合区域402的一定距离x处渲染的图像值,并且α(x)是在通过混合区域402的一定距离x处的融合因子。x的值朝向中心凹区域104的中心减小。

图4b是图示了要在融合区域402的区段中被使用的融合因子α(x)的值的图形。在图4a和图4b中示出的示例中的融合区域的左边,即在中心凹区域104之外,融合因子α(x)具有如在404处标示的值1,使得Ir(x)=IRast(x)。备选地,融合因子α(x)可以在该区域中未定义,并且经渲染的图像值被简单地当作由栅格化逻辑222确定的图像值。在图4a和图4b中示出的示例中的融合区域的右边,即在融合区域402之外并且在中心凹区域104内,融合因子α(x)具有如在406处标示的值0,使得Ir(x)=IRT(x)。备选地,融合因子α(x)可以在该区域中未定义,并且经渲染的图像值被简单地当作由光线跟踪逻辑220确定的图像值。在融合区域内,融合因子α(x)在范围0≤α(x)≤1中。融合因子α(x)优选地关于在404和406处的值连续并且优选地在融合区域上平滑地变化以由此减少在经渲染的图像中的融合区域中发生的伪影的外观。存在将满足这些准则的融合因子的许多示例。例如,融合因子可以跨如由虚线408表示的融合区域线性地变化。这是简单的示例并且能够利用很小的处理复杂度来实现。作为另一示例,融合因子α(x)的一阶导数可以被控制为在融合区域的边缘处连续,以进一步减少在融合区域的边界处的可感知到的伪影。图4b中的线410示出了满足这些准则的融合因子α(x)的示例,并且可以例如被表示为跨融合区域的三次函数。

在图4a中示出的示例中,融合区域仅仅覆盖中心凹区域104的部分,但是在一些其他示例中,融合区域可以覆盖中心凹区域的整体。另外,在一些示例中,α值可以在被渲染的图像中的任何位置处不下降到零。

在以上描述的示例中,感兴趣区域104覆盖图像102的一小部分。然而,在其他示例中,感兴趣区域可以覆盖整幅图像,并且栅格化区域还可以覆幅图像。在该示例中,融合区域可以覆盖整幅图像,并且融合因子可以在图像上变化。例如,融合因子可以在图像上变化,使得在中心凹区域中,对由光线跟踪逻辑IRT(x)渲染的图像值更强地加权最终经渲染的图像,同时远离中心凹区域,对由栅格化逻辑IRast(x)渲染的图像值更强地加权最终经渲染的图像。

在步骤S318中,处理系统将经渲染的图像发送到显示器206并且图像在其上被显示。可以针对要被实时渲染的图像序列中的每幅图像执行图3中示出的方法。在一些其他示例中,不针对每幅图像执行步骤S302到步骤S308并且在步骤S310至步骤S318中不对其进行显示。

在图3中示出的方法中,栅格化逻辑渲染栅格化区域,光线跟踪逻辑渲染感兴趣区域,并且组合逻辑将两个经渲染的区域组合以形成经渲染的图像。然而,在其他示例中,可能不存在单独的组合步骤或单独的组合逻辑。例如,光线跟踪和栅格化可以一起作用于相同的区域上。作为示例,栅格化逻辑能够在整个帧上运行,并且之后光线跟踪能够利用额外的细节增强经栅格化的区域。以这种方式,光线跟踪阶段的结果可以是最终经渲染的图像而无需单独的融合阶段。光线跟踪和栅格化可以同时地运行,或者在一些情况下,光线能够由来自栅格化处理的输出触发。组合步骤能够涉及一组明确的滤波器的使用(例如,在与以上参考图3中示出的流程图描述的示例中的组合逻辑中),或者栅格化和光线跟踪的组合可能仅仅从光线跟踪过程的实现方式得到,使得将不存在用于“组合”的明确的步骤或流水线阶段。

融合技术不需要是同步的。例如,整幅图像的低细节渲染能够使用光线跟踪或栅格化来执行,并且之后后续渲染操作能够以更高级的细节来增强图像的区域。高细节渲染可以在低细节图像需要被重新渲染之前进行多次并且跨多个显示的帧继续增强图像。

图5示出了处理系统202被实现在其中的环境。图5示出了具有被定位在显示器206附近的相机204使得其能够捕获注视显示器206的用户的图像的显示器206。在图5中示出了用户502的视角。处理系统202被耦合到相机204,并且被耦合到显示器206。中心凹区域104被表示在显示器206上,并且中心凹区域104的视场的角度θ被表示为在中心凹区域104的中心与中心凹区域104的边缘之间的角度。如以上所描述的,角度θ可以被设置为大约5°,使得区域104准确地表示中心凹区域。

图6a和图6b图示了处理系统如何能够被包括在虚拟现实系统600中。具体地,图6a示出了用于在虚拟现实系统中使用的头戴式耳机602。头戴式耳机包括两个显示器604L和显示器604R。头戴式耳机被布置为由用户佩戴,使得显示器604L在用户的左眼前方,并且显示器604R在在用户的右眼前方。如本文中所描述的,头戴式耳机还可以包括相机和处理系统。在理想情况下,虚拟现实系统将显示具有高分辨率、高帧率并且没有缺失的帧的帧。本文中描述的视网膜凹式渲染示例允许光线跟踪被用于渲染图形的中心凹区域以用于在虚拟现实系统中使用。

图6b是虚拟现实系统600的示意图,虚拟现实系统600包括左显示器604L和右显示器604R、两个相机606L和相机606R和处理系统612。相机606L被布置为捕获用户的左眼的图像,并且相机606R被布置为捕获用户的右眼的图像。

处理系统612与以上描述的处理系统202相似并且包括GPU 608、相机流水线610、CPU 212和存储器214。GPU 608包括视线跟踪逻辑616、组合逻辑618、光线跟踪逻辑620、栅格化逻辑622和控制逻辑624。处理系统612的元件与以上描述的处理系统202的元件相似,但是它们由于两个相机(相机606L和相机606R)和两个显示器(显示器604L和显示器604R)的存在而稍微不同。具体地,相机流水线610将从相机606L和相机606R两者接收图像数据并且将生成两个捕获的图像,其被传递到视线跟踪逻辑616。视线跟踪逻辑616分析所捕获的图像以确定两个视线位置:一个针对右边图像,并且一个针对左边图像。光线跟踪逻辑620和栅格化逻辑622将如以上所描述的渲染它们各自的图像的区域,但是在虚拟现实系统600中,两幅图像被渲染:要被显示在显示器604L上的左边图像和要被显示在显示器604R上的右边图像。针对两幅图像的视线位置可以稍微不同。另外,要被渲染的图像可以对于右眼和左眼稍微不同,例如以给出3D效果。在虚拟现实系统中,图像被规整以用于显示在显示器604L和显示器604R上以说明头戴式显示器(HMD)镜头失真。在一些示例中,规整过程被并入为光线跟踪逻辑620中的光线跟踪渲染的自然部分,由此避免将规整应用到中心凹区域中的已经渲染的图像值的额外的步骤。

虚拟现实具有极高的性能要求,因此本文中描述的视网膜凹式渲染方法能够实质上改进用户体验,从而允许通过利用光线跟踪技术来渲染该区域的中心凹区域中的质量改进,同时还通过利用栅格化技术来渲染该区域来增大视觉外围中的时间和空间混叠的质量,其对闪烁是高度敏感的。另外,这在没有将处理复杂度或功率消耗增加与纯光线跟踪的渲染系统一样多的情况下来实现。

图7图示了其中来自低细节和低帧率渲染的图像信息与来自以较快帧率的光线跟踪的图像信息被组合以产生对视线的变化做出响应的高帧率图像的系统700。图7示出了场景数据库702,其存储场景几何结构(例如,描述要被渲染的场景中的对象的基元)。系统还包括渲染逻辑704、加速结构构建逻辑706、区域识别逻辑708、光线跟踪逻辑710、更新逻辑712和显示器716。在一些示例中,系统700还可以包括时间规整逻辑714。逻辑块704至逻辑块714可以以硬件、软件或其任何组合来实现。

在操作时,描述要被渲染的场景的图形数据(例如,构成描述场景中的对象的基元的场景几何结构)从数据库702被提供到渲染逻辑704并且被提供到加速结构构建逻辑706。渲染逻辑704处理图形数据以生成初始图像,其能够被提供到区域识别逻辑708并且被提供到更新逻辑1012。在图7中示出的示例中,初始图像是低细节图像,即其是比将被输出用于显示的最终图像更低细节的图像。渲染逻辑704可以例如使用栅格化技术来生成初始图像。然而,在其他示例中,渲染逻辑704可以使用光线跟踪技术来生成初始图像。如果渲染逻辑704使用光线跟踪技术来生成初始图像,则其可以从加速结构构建逻辑706接收加速结构。如下面参考图10更详细地解释的,可以存在多于一个加速结构,例如低细节加速结构和高细节加速结构。其可以是渲染逻辑704接收低细节加速结构而光线跟踪逻辑710接收高细节加速结构的情况。

区域识别逻辑708被配置为识别初始图像的一个或多个区域。所识别的区域是针对其要计算光线跟踪数据的区域(即,更多的光线要被光线跟踪逻辑710处理的区域)或针对其要跟踪更多光线的区域(即,要在其中增大光线密度的区域)。换言之,区域识别逻辑708检测在图像中哪里需要或期望细节。具体地,区域识别逻辑708从诸如216或616的视线跟踪逻辑接收视线信息,例如视线位置的指示。区域识别逻辑708可以识别视线位置附近的区域,或者预期的未来视线位置附近的区域,由此表示图像的中心凹区域。另外,区域识别逻辑708可以分析初始图像以便生成初始图像内的一个或多个区域。例如,高频细节的区域可以被识别。在这个意义上,频率是空间频率。例如,区域识别逻辑708可以对最终图像进行滤波以识别图像亮度的屏幕空间频率以触发更多光线到较高频率区域。高频细节的区域易于混叠,因此其能够对将特定光线跟踪的图像数据添加到这些区域中有用,即使它们不在中心凹区域中。这是因为,如以上所提到的,人类对混叠敏感,甚至在它们的视野的外围中。区域识别逻辑708可以识别针对其光线跟踪的图像数据要出于其他原因而被添加的区域。例如,图像的中心可以甚至在它不是中心凹区域中并且不在高细节区域中的情况下被识别。在一些示例中,来自由渲染逻辑704执行的渲染的信息可以被用于识别区域。例如,网格边缘或深度的大变化可以被识别并且被用于识别图像中的能够在其中使用光线跟踪来提供反混叠的区域。作为另一示例,图像中的对应于具有特定深度的对象的区域可以被识别,使得场效应的深度能够由光线跟踪数据添加。作为另一示例,场景中的对应于特定对象(例如,游戏中的角色)的区域可以被识别,使得光线跟踪数据被添加到特定对象,即使特定对象未处于中心凹区域中或高细节中。应当理解,能够存在用于使区域识别逻辑708识别区域的其他原因。所识别的区域的指示从区域识别逻辑708被传递到光线跟踪逻辑710并且被传递到更新逻辑712。

加速结构构建逻辑706被配置为确定表示要被渲染的图像的场景的几何结构的图形数据的加速结构。加速结构可以是分层的,并且可以被称为“分层结构”。根据针对要被渲染的场景的几何结构数据来构建加速结构的方法是本领域中已知的。加速结构构建逻辑706可以针对每幅图像独立地构建加速结构。备选地,在被渲染的图像表示帧序列中的帧的情况下,加速结构构建逻辑706可以通过更新针对先前帧的加速结构来确定针对当前帧的加速结构。帧序列中的连续帧有可能具有被渲染的场景中的相似的几何结构,因此其对于更新针对先前帧的加速结构比从抓取构建加速结构能够是实质上计算较少的。光线跟踪逻辑710具有对由加速结构构建逻辑706针对当前图像确定的加速结构的访问。

光线跟踪逻辑710被配置为执行光线跟踪以确定针对初始图像的所识别的一个或多个区域的光线跟踪数据。在一些示例中,光线跟踪逻辑710可以执行针对图像的整体的光线跟踪但是被处理的光线的密度可以在所识别的区域中被增大。用于执行光线跟踪的方法是本领域中已知的,并且通常包括执行针对如由加速结构表示的场景中的几何结构的光线的求交测试,并且之后在相交命中上运行着色器程序。着色器程序的运行可以得到二次光线,其能够之后被求交测试,并且可以导致另一着色器程序实例被运行。着色器程序可以被用于确定场景中的诸如反射、阴影、全局光照、等等的视觉效果。如由着色器程序确定的入射光照的特性可以贡献于感兴趣区域的确定。光线跟踪可以以比由渲染逻辑704确定的低细节图像的分辨率更高的分辨率来执行。光线跟踪的结果被传递到更新逻辑712。

更新逻辑712从渲染逻辑704接收初始图像。更新逻辑712还从区域识别逻辑708接收针对器光线跟踪的图像数据要被添加到初始图像的所识别的区域的指示。更新逻辑712还从光线跟踪逻辑710接收要被添加到初始图像的光线跟踪的图像数据。更新逻辑712被配置为使用针对初始图像的所识别的一个或多个区域的所确定的光线跟踪数据来更新初始图像,以由此确定经更新的图像。经更新的图像具有在由光线跟踪的图像数据提供的所识别的区域中的详细的光照效果。然而,在所识别的区域之外,经更新的图像不包括详细的光照效果,因此产生经更新的图像的处理负担低于在整幅图像上的具有详细的光照效果的图像。这使得图像能够在具有对处理资源和大小的紧约束的诸如移动设备(例如,智能电话、平板计算机、笔记本计算机、等等)的设备上被实时地生成。从更新逻辑712输出的经更新的图像适合用于显示。

在一些实施例中,时间规整逻辑714未被包括并且经更新的图像被传递到显示器716以用于在其上显示。

渲染逻辑704和光线跟踪逻辑710可以被配置为异步地进行操作。例如,光线跟踪逻辑710可以以比渲染逻辑704更快的速率进行操作。例如,渲染逻辑704可以以60Hz进行操作,并且光线跟踪逻辑可以以240Hz进行操作。以这种方式,针对帧序列,渲染逻辑704在先前初始图像被生成之后秒生成初始图像。然而,光线跟踪逻辑能够确定要被用于以每秒240次的速率更新初始图像的光线跟踪数据。因此,在该示例中,特定初始图像能够在序列中的下一初始图像被生成之前通过不同的光线跟踪的图像数据来更新四次。这允许处理系统700给出比渲染逻辑704操作的帧率更快的帧率(例如,240Hz而非60Hz)的印象。这在处理系统700要被用于虚拟现实系统中时尤其有用。为了使用户具有连续运动的印象,帧率需要在虚拟现实系统中比当注视屏幕上的显示器(例如,电视)时需要的更高。例如,60Hz的帧率在电视上足够给出图像的连续流的印象,而没有在各帧之间的引人注目的断续,然而,这在虚拟现实系统中将不是足够的。然而,240Hz的帧率足够给出虚拟现实系统中的图像的连续流的印象。这利用系统700来实现而无需增大渲染逻辑704的帧率。

应当理解,以上给出的数目仅仅是通过举例的方式,并且在其他示例中,渲染逻辑704和光线跟踪逻辑710可以以与以上指出的速率不同的速率来操作,并且在不同速率之间的比率可以在不同示例中是不同的。

作为示例,光线跟踪逻辑710、区域识别逻辑708和更新逻辑712被配置为以第一速率进行操作,然而渲染逻辑704被配置为以第二速率进行操作,其中第一速率(例如,240Hz)比第二速率(例如,60Hz)更快。这允许区域被识别,光线跟踪数据被确定,并且初始图像以更快的速率进行更新。以这种方式,初始图像可以保持并且光线跟踪数据能够在更新逻辑712中被重复地添加到其。在以上给出的示例中,(例如,实现栅格化技术的)渲染逻辑704能够以60Hz进行操作,但是图像的中心凹区域的视线跟踪和识别、初始图像的光线跟踪和更小能够以240Hz运行。加速结构构建逻辑706可以以与图7中示出的组件不同的速率(即,异步地)进行操作。例如,加速结构构建逻辑706能够以30Hz或60Hz的相对低的频率进行操作,而确定与加速结构的相交的光线跟踪逻辑710能够以240Hz进行操作。另外,时间规整逻辑714和显示器716还可以与图7中示出的组件异步地进行操作。

在区域识别逻辑708通过分析初始图像来识别区域的情况下,该识别可以以渲染逻辑704的操作速率进行,因为初始图像将不会比这改变得更快。备选地,甚至在这种情况下,区域的识别可以以光线跟踪逻辑710的更快的速率进行,因为在一些示例中光线可以指示哪里需要更多光线。

在一些示例中,时间规整逻辑714被包括并且经更新的图像从更新逻辑712被传递到时间规整逻辑714。时间规整逻辑被配置为在其被发送以在显示器716上显示之前将图像规整过程应用到经更新的图像。由于初始图像可以以比帧被显示在显示器716上的帧率更慢的帧率来生成,所以图像规整过程能够对图像进行规整以考虑在初始图像的视角与图像将从其被显示的视角之间的移动,以便在初始图像被生成的时间之间的时刻显示帧。时间规整尤其对补偿视角中的旋转有效,但是当考虑视角位置的变化时相当较不正确。这样的图像规整过程是本领域中已知的,例如在William Mark、Leonard McMillan和Gary Bishop于1997年在罗德岛普罗维登斯市的交互式3D图形研讨会的会议记录(1997年4月27-30,第7-16页)中的文章“Post-Rendering 3D Warping”中描述的。

本文中描述的示例中的一些用于在虚拟现实系统中使用。在一些其他示例中,处理系统能够用于在增强现实系统中使用。关于真实世界的信息可以被用于确定在虚拟世界中哪里需要光线。例如,区域识别逻辑708能够使用真实世界信息来识别要在其中执行光线跟踪或者要在其中增大光线跟踪的光线密度的区域。在此情形中,捕获真实世界的相机能够检测对在虚拟世界中进行渲染具有效果的改变。例如,真实对象可以移动并更改在虚拟对象上的阴影投射,或者真实对象可以移动通过由虚拟对象创建的暗影。

在先前US专利申请号13/953,754(被公布为US 2014/0063016 A1)中详细描述了混合渲染系统。混合渲染系统允许光线跟踪逻辑和栅格化逻辑共享GPU上的一些处理资源。图8图示了实现混合渲染系统的GPU 802的示例,其能够被包括在诸如处理系统202和612的处理系统中。GPU 802与GPU 202相似,但是栅格化逻辑和光线跟踪逻辑共享GPU 802上的处理资源。具体地,GPU 802包括视线跟踪逻辑214、控制逻辑822、栅格化表面识别逻辑804、光线跟踪表面识别逻辑806、标准化器808、一个或多个运行核芯810以及组合逻辑816。组合逻辑816包括融合逻辑812和图像缓冲器814。

GPU 802可以提供用于针对由光线跟踪并且由栅格化技术两者识别的表面同时执行着色作业的统一计算资源。例如,统一计算资源基于输入的经标准化的集合来运行着色器,并且给出的表面由相关联的着色器模块着色,与该表面是否要响应于光线相交或在栅格化期间而被着色无关。在另一示例中,不同的着色器代码模块可以存在用于对光线跟踪相交着色并且用于栅格化。在该示例中,用于栅格化的表面着色器可以发出要被求交测试的光线,并且根据对该光线进行求交测试的结果来执行着色。

与3-D渲染是使用栅格化技术还是光线跟踪(还是两者)执行的无关,要被执行的活动的两个主要类别是:(1)识别可能需要在2-D图像的渲染期间被着色的或否则被处理的3-D场景几何结构的表面;以及(2)确定该表面将在被渲染的图像上具有什么效果。这些组成操作可以具有用于栅格化的和用于光线跟踪的不同的处理、数据访问和数据流暗示。

栅格化表面识别逻辑804执行用于识别可能需要在图像的栅格化区域的栅格化渲染期间被着色或否则被处理的3-D场景几何结构的表面的处理。这可能涉及执行在与样本位置交叠的基元上的每个样本位置处的深度测试以确定哪个基元在每个样本深度位置处可见。在每个样本位置处的所识别的表面的指示被提供到标准化器808。

光线跟踪表面识别逻辑806执行用于识别可能需要在图像的感兴趣区域的光线跟踪期间被着色或否则被处理的3-D场景几何结构的表面的处理。这可以涉及跟踪通过场景的每个样本位置的光线并且执行在场景中的基元上的求交测试以确定在每个样本深度位置处哪个基元相交。在每个样本位置处的所识别的表面的指示被提供到标准化器808。

在标准化器808接收到的数据的格式可以取决于数据是从栅格化表面识别逻辑804还是光线跟踪表面识别逻辑806接收的而不同。标准化器处理数据以形成着色器输入的经标准化的集合,其具有通用格式,与表面是响应于光线相交还是在栅格化期间被着色的无关。着色器输入的经标准化的集合被传递到运行核芯810。着色器被运行在运行核芯810上以确定所识别的表面应当在被渲染的图像上具有什么效果。着色器的运行可以引起要由表面识别逻辑804和/或806执行的另外的测试。另外,着色器的运行可以使一个或多个光线被发出(例如,以对反射进行建模),并且这些光线被传递回到光线跟踪表面识别逻辑806以确定所发出的光线与哪些表面相交。作为另一示例,使用栅格化技术处理的特定几何结构可以具有透明的或“穿通的”对象类型。概念上,穿通对象包括在它们中具有孔的基元。在这种情况下,在运行核芯810处运行着色器的结果可以得到通过栅格化表面识别逻辑804的另一轮以确定图像值与透明基元融合或在对应于穿通基元的孔的样本位置中被渲染。

为了渲染一些样本位置,栅格化过程可以通过识别在样本位置处(在栅格化表面识别逻辑804处)可见的表面来开始,之后在(一个或多个)运行核芯810处对着色器的运行可以发出能够之后使用光线跟踪技术来处理的光线。因此,光线跟踪和栅格化两者都可以用于在特定样本位置处渲染特定图像值。在这种情况下,图像值可以被认为是已经使用栅格化技术或光线跟踪技术来渲染,使得其可以为图像的栅格化区域或图像的感兴趣区域的部分。

控制逻辑822能够控制栅格化表面识别逻辑804、光线跟踪表面识别逻辑806、(一个或多个)运行核芯810和组合逻辑816的操作,使得图像的感兴趣区域通过光线跟踪技术来渲染,并且图像的栅格化区域通过栅格化技术来渲染。组合逻辑814的图像缓冲器814能够存储针对图像的每个样本位置(或每个像素位置)的图像值。例如,图像的栅格化区域(其可以包括图像的整体)能够通过栅格化来渲染并且经渲染的图像值能够被存储在图像缓冲器814中。经栅格化的图像值能够被用作针对感兴趣区域中的光线跟踪的图像值的背景。即,光线跟踪技术能够之后被用于确定针对感兴趣区域的图像值。在混合区域中,混合逻辑812能够将通过光线跟踪确定的图像值与被存储在图像缓冲器814中的经栅格化的图像值进行混合。如果存在未包括在混合区域中的感兴趣区域的部分,则通过光线跟踪确定的针对感兴趣区域的该部分的图像值能够被写入到图像缓冲器814中,其可以重写或可以不重写先前存储在图像缓冲器814中的针对感兴趣区域的该部分的图像值。如以上所描述的,当经渲染的图像的图像值中的全部已经被存储在图像缓冲器814中时,图像值可以被输出到显示器以被显示给用户。

在混合GPU 802中,栅格化表面识别逻辑804可以被认为是“栅格化逻辑”,并且光线跟踪表面识别逻辑806以被认为是“光线跟踪逻辑”。标准化器808意味着能够针对着色的基元碎片运行相同的着色器程序而与栅格化还是光线跟踪已经被用于将基元碎片识别为可见无关。换言之,光线跟踪逻辑被配置为识别要被着色的基元碎片,栅格化逻辑被配置为识别要被着色的基元碎片,并且一个或多个运行核芯被配置为对所识别的基元碎片应用着色,而与基元碎片是由光线跟踪逻辑还是由栅格化逻辑识别的无关。使用通用的着色器程序可以有益于避免包括在图像的不同区域中的效果(例如,滤波、彩色化或混合效果、等等)中的引入注目的差异,即在(一个或多个)感兴趣区域内与在(一个或多个)感兴趣区域之外相比较。这可以是有益的,因为当感兴趣区域在图像上移动时使用的效果的变化可能是引人注目的并且使用户分散注意力。

在一些示例中,整幅图像能够根据栅格化技术来处理,并且之后在(一个或多个)感兴趣区域内,可以发出光线以用于由光线跟踪逻辑806处理以将细节添加到图像中的(一个或多个)感兴趣区域。每个样本位置发出的光线的数量可以变化。例如,这可以在融合区域上变化,使得感兴趣区域的中心附近,由光线跟踪逻辑处理比进一步远离感兴趣区域的中心处理的更多的光线。另外,如以上所提到的,在一些极端示例中,感兴趣区域可以跨整幅图像延伸,但是由光线跟踪逻辑处理的光线的密度可以相较于进一步远离感兴趣区域的中心或进一步远离视线位置的对应光线密度,越靠近感兴趣区域的中心或越靠近视线位置,即越靠近中心凹区域,越高。

在一些示例中,能够确定焦点深度,并且之后能够设置针对经渲染的图像的场的深度。例如,视线位置能够被用于识别用户指向的一个或多个对象。在视线位置处的一个或多个所识别的对象的深度能够被确定例如作为栅格化过程的部分。(一个或多个)所确定的深度能够被用于设置焦点深度。如果多于一个对象被识别,则焦点深度能够被确定为平均值(例如,均值、中间值或众数)。场的深度能够之后基于焦点深度来设置。在栅格化阶段之后,图像中的对象的深度被确定,并且针对图像的不同区域处理的光线的数量可以根据那些区域中的对象的深度而变化。例如,较高的光线密度可以相较于被用于处理含有具有落入场的深度外的深度的可见对象的区域的光线密度被用于处理含有具有落入场的深度内的深度的可见对象的区域。以这种方式,针对包含具有落入场的深度内的深度的可见对象的经渲染的图像的区域相较于包含具有落入场的深度外的深度的可见对象的经渲染的图像的区域细节,水平(一般与光线密度相对应)更大。

视线跟踪逻辑将视线位置的指示提供到控制逻辑。感兴趣区域的大小可以由控制逻辑设置。感兴趣区域的大小可以是固定的或可变的。例如,如果感兴趣区域的大小是可变的,则控制逻辑可以基于以下中的一个或多个来设置感兴趣区域(即,使用光线跟踪渲染的区域)的大小:(i)视线跟踪过程的延时,(ii)视线位置的移动的速度,(iii)要被渲染的图像的内容,(iv)在处理系统上的当前处理负载,以及(v)用户偏好。

视线跟踪过程的延时能够被定义为在捕获要根据其确定视线位置的用户的图像与在显示器上显示对应的经渲染的图像之间经过的时间。较短的延时将意味着感兴趣区域与在图像被显示给用户的时间的中心凹区域更好地匹配。例如,10ms的延时一般是可接受的,然而25ms的延时用户可能能够感知到经渲染的感兴趣区域与当图像被显示时用户的视线的当前中心凹区域不匹配。因此,关于较长的延迟,感兴趣区域的大小可以被增大以允许在视线跟踪与图像的渲染之间的时间中的更多的眼动。

在本文中描述的生理中,由被包括在与GPU 208相同的SOC上的视线跟踪逻辑214执行视线跟踪需要的视觉处理。因此,视线跟踪(例如,视线位置)的结果能够被直接流水线传输到GPU 208中而非被存储在存储器中并且之后从存储器中被读出。这有助于减少延时,其转而意味着感兴趣区域的大小能够被减小,由此甚至在进一步在减少功率消耗并提高渲染的速度方面改进性能。以这种方式,能够存在在眼睛跟踪传感器流水线(例如,相机流水线和视线跟踪逻辑)与渲染逻辑(例如,栅格化逻辑和光线跟踪逻辑)之间的紧密整合,从而最小化从用户的眼睛移动到虑新的视线位置帧被呈现给用户的延时。例如,SOC上的不同的处理模块可以共享同步信号,使得在不同处理模块(例如,相机流水线、视线跟踪逻辑、栅格化逻辑和光线跟踪逻辑)上的操作的计时能够被同步。不同的处理模块以非同步的方式来运行,延迟能够随着数据从一个模块移动到另一模块而累积。

在以上描述的示例中,视线跟踪逻辑214被实现在GPU 208上。然而,在其他示例中,视线跟踪逻辑214能够被实现在相机流水线210中,并且视线跟踪的结果(例如,所确定的视线位置)从相机流水线210被传递到GPU 208。另外,如以上所提到的,视线跟踪逻辑214可以不使用相机,并且可以使用其他视线跟踪技术来识别视线位置。许多眼睛跟踪器(或者“视线跟踪器”)使用某种类型的光传感器,但是它们不可以被认为是传统意义上的“相机”,因为它们可能不是用于以大多数相机的方式使用在一个或多个透镜后面的光敏元件的矩阵记录图像的设备。例如,一些眼睛跟踪器使用瞳孔位置,其他使用角膜形状,并且一些能够使用视网膜来确定视线位置。在一个示例中,视线跟踪逻辑能够在眼睛处照射低功率红外聚集灯并且在头戴式显示器腔内具有能够基于在每个传感器处的反射的光强度来推出眼睛位置的单个(未聚集的)光传感器。

如果用户移动他们的视线位置的深度增大,则感兴趣区域的大小可以被增大。这能够减少用户对经渲染的感兴趣区域的边界的感知,但是其可能意味着可能需要更多的处理功率和时间来渲染图像,因为图像中的更多将通过比栅格化技术更复杂的光线跟踪技术来渲染。用户移动他们的视线位置的深度能够由视线跟踪逻辑通过分析所捕获的图像的序列来确定。

如果被渲染的图像的内容是非常详细的,则感兴趣区域的大小可以被减小。这是因为更详细的图像对于通过光线跟踪来渲染是更复杂的,因为为了减少用于渲染图像的渲染复杂度,图像的较小部分可以通过光线跟踪来渲染。

如果在处理系统上的当前处理负载增加,则感兴趣区域的大小可以被减小。通过光线跟踪来渲染图像的较小部分将减小用于渲染图像的渲染复杂度。

用户可能偏好通过光线跟踪来渲染图像的较小或较大区域,因此用户可能能够设置用于设置感兴趣区域的大小的用户偏好。例如,用户可以找到分散注意力的感兴趣区域的边界,并且因此可以增大感兴趣区域的大小,使得边界被进一步推入到用户的视场的外围中。

一些示例可以使用仅仅预测的“中心凹”的形式,其中图像的区域按给出首先渲染图像的高细节区域的高可能性的顺序被渲染并被显示。这将允许整幅图像以高细节被渲染,其中详细的图像区域首先被渲染并被显示,使得这些区域具有低延时。图像的较不详细的区域可以具有较长的延时,但是这可能不会显著降低用户对被渲染和显示的图像的感知。例如,如果整个场景能够在33ms(即,以30Hz)以高细节来渲染,并且如果时间规整被使用并且图像的部分逐渐地以高得多的速率(例如,240Hz)来混合,之后可能根本需要眼睛跟踪。

在以上描述的示例中,仅仅存在一个用户。然而,在如以上提到的其他示例中,可以存在查看经渲染的图像的多于一个用户。在这种情况下,视线跟踪逻辑可以确定针对用户中的每个的视线位置并且可以针对视线位置中的每个确定例如包围各自的视线位置的各自的感兴趣区域。多个感兴趣区域能够之后使用光线跟踪来渲染,同时(至少)图像的剩余部分使用栅格化来渲染。

关于术语,(一个或多个)“感兴趣”区域可能不是“感兴趣”的。感兴趣区域是要以比其他区域更大的细节被渲染的区域,例如中心凹区域或中心凹区域植物的在那里在人类视觉中强烈地感知到细节水平的其他特定区域。因此有益的是使用光线跟踪技术来渲染(一个或多个)感兴趣区域,因为光线跟踪能够提供非常详细的图像。

在以上描述的示例中,感兴趣区域被控制为包围检测到的视线位置。在较简单的示例中,在处理系统中不需要视线跟踪逻辑和相机流水线,并且相反感兴趣区域是图像的固定的(例如,中心的)区域。这可以是与用户的视线无关的情况。图9示出了具有中心感兴趣区域904的图像902的示例。感兴趣区域904将如在以上描述的示例中通过光线跟踪来渲染,并且图像902的剩余部分将通过栅格化来渲染,并且两个渲染可以被一起融合在融合区域中。由于感兴趣区域904不移动以跟踪用户的视线,所以区域904被设置为比在先前示例中更大。例如,在这种情况下,感兴趣区域904覆盖图像902的面积的大约一半。因此,在该示例中相较于以上描述的包括视线跟踪技术的示例没有那么大的处理节省,其中感兴趣区域的大小能够被减小为图像的面积的大约1%。应当理解,在以上描述的示例中,栅格化区域是连续的,并且在图8中示出的示例中,栅格化可能不是完全连续的(尽管其在该示例中也可以是连续的)。

在其他示例中,感兴趣区域可以由图像中的内容确定。例如,如果场景中的对象期望为关注的焦点,则图像的包含该对象的区域可以被确定为感兴趣区域,使得其使用光线跟踪来渲染。这可能是与用户的视线无关并且与图像中的对象的位置无关的情况,即对象不需要被定位在中心。作为另一示例,包含移动对象的图像的区域可以被确定为感兴趣区域,使得其使用光线跟踪技术来处理。作为另一示例,视线跟踪逻辑能够使用用户的眼睛被确定为被频繁地吸引到其的“热点”(例如,都捕获用户的注意力的图像的两个比特,其中视线在它们之间被弹跳),并且这些热点能够被确定为感兴趣区域,使得使用光线跟踪技术来处理它们。作为另一示例,来自过去的中心凹聚集区域(作为子集或先前的简化)能够被确定为感兴趣区域,使得使用光线跟踪技术来处理它们。作为另一示例,未来的中心凹目的能够基于眼睛的运动的模型和/或扫视机制来预测,并且那些预测的未来的中心凹目的能够被确定为感兴趣区域,使得使用光线跟踪技术来处理它们。作为另一示例,高图像复杂度的区域能够根据复杂度度量(例如,区域中的基元的数量或区域中的边缘的数量,等等)来识别,并且那些所识别的区域能够被确定为感兴趣区域,使得使用光线跟踪技术来处理它们。复杂度度量可以基于已知的信息内容和/或图像内的增强,例如标牌可以以高细节被渲染,这是因为很可能用户将凝视那里。

在包括多个感兴趣区域的其他示例中,感兴趣区域可以出于不同的原因被确定为感性区域。例如,第一感兴趣区域可以对应于基于检测到的视线位置确定的中心凹区域,并且第二感兴趣区域可以被固定在图像的中心处。

光线跟踪逻辑和栅格化逻辑可以被配置为以相同的帧率渲染图像。然而,在其他示例中,光线跟踪逻辑可以以第一帧率渲染图像的感兴趣区域,并且栅格化逻辑可以以第二帧率渲染图像的栅格化区域,其中第一帧率与第二帧率不同。第一帧率能够高于或者低于第二帧率。

经渲染的图像的像素密度可以在感兴趣区域中比在其他区域中(例如,在外围中)更高。在本文中描述的示例中,栅格化逻辑以相同的分辨率渲染栅格化区域的整体。然而,在其他示例中,栅格化逻辑可以以各自的多个分辨率(例如,以针对栅格化区域的更多的外围部分下降的分辨率)执行图像的栅格化区域的各自的部分的多个渲染。在这种情况下,组合逻辑将使用光线跟踪技术渲染的图像的经渲染的感兴趣区域与使用栅格化技术渲染的栅格化区域的多个经渲染的部分进行组合以形成经渲染的图像。

在以上描述的示例中,不同的渲染技术(例如,栅格化和光线跟踪)被描述为用于渲染不同的区域。然而,更广泛地,不同的渲染方式可以被用于渲染图像的不同的区域。例如,相较于针对其他区域实现的光线跟踪方法,可以针对感兴趣区域实现用于光线跟踪的不同的方法。例如,低细节场景数据库和高细节场景数据库可以被生成以表示被渲染的场景中的几何结构。高细节场景数据库可以以比用于描述低细节场景数据库中的几何结构的分辨率更高的分辨率来描述几何结构(例如,包括更多的多边形并且使用数据的多个比特来表示基元的属性,例如,基元顶点的x、y和z坐标以及与基元相关联的其他基元数据)。在感兴趣区域中(例如,在(一个或多个)中心凹区域或具有高图像细节的区域中),光线跟踪逻辑能够使用高细节场景数据库来执行光线跟踪(例如,以执行针对场景几何结构的光线的求交测试,并且以响应于相交而执行着色),使得在感兴趣区域中实现高质量渲染结果。对比执行,在感兴趣区域之外(例如,远离(一个或多个)中心凹区域或具有高图像细节的区域),光线跟踪逻辑能够使用低细节场景数据库来执行光线跟踪(例如,以执行针对场景几何结构的光线的求交测试,并且以响应于相交而执行着色),使得光线跟踪逻辑的用于渲染图像的其中渲染的质量没有感兴趣区域那么重要的区域的处理要求被降低。另外,相较于远离感兴趣区域使用的那些,可以在感兴趣区域中(例如,在(一个或多个)中心凹区域或具有高图像细节的区域中)实现不同的着色器。例如,能够针对场景中的感兴趣区域计算用于实现场景中的准确的反射的复杂的着色器,同时可以实现其他着色器(例如,较不复杂的着色器)以用于对针对不为场景中的感兴趣区域的区域的反射进行建模。相同的原理可以应用到其他着色器,例如以实现诸如阴影、全局光照、间接和柔软光照以及其他现象的效果。通过控制哪些着色器程序被运行用于渲染图像的不同区域,相较于渲染不为感兴趣区域的区域,更多的处理功率能够被集中在渲染感兴趣区域上。

另外,不一定必须在什么是“感兴趣区域”与什么不是“感兴趣区域”之间进行严格划分;并且相反,渲染复杂度(例如,使用的几何结构数据库中的细节的水平,和/或被运行的着色器程序中的复杂度的水平)能够基于针对该区域确定的感兴趣的水平而被控制为复杂度的许多水平之一(例如,复杂度的三个或更多个水平)。例如,可以存在针对区域的“感兴趣”的以下两个度量:(i)该区域是否处于中心凹区域中,以及(ii)该区域是否示出图像中的高频细节。最高渲染复杂度可以被分配到图像的高细节中心凹区域;同时最低渲染复杂度可以被分配到图像的低细节非中心凹区域。针对低细节中心凹区域和高细节非中心凹区域的渲染复杂度可以在两个极值之间的某个地方。可以有益的是使某些像素融合与高细节场景相交的一些光线和/或运行具有与低细节场景相交的一些光线的高细节着色器和/或运行低细节着色器。该比例能够取决于被分配给该像素的兴趣而在不同像素之间变化。另外,复杂度改变的方式可以取决于区域被分类为感兴趣区域与否的原因。例如,图像的高细节外围区域可以使用用于渲染的高细节数据库来渲染,使得混叠效果能够被减少,但是实现复杂的着色器程序来实现诸如阴影、反射和全局光照、等等的光照效果可能不是有益的。这是因为在外围中,人类对混叠敏感但是对图像的精确外观不是那么敏感。对比之下,在中心凹区域中,人类对诸如准确的诸如阴影、反射和全局光照、等等的准确的光照效果的图像细节非常敏感,但是对混叠不是那么敏感。因此,在图像的低细节中心凹区域中,光线跟踪逻辑可以使用低细节数据库来渲染以减少光线跟踪过程的处理成本,但是复杂的着色器程序可以被运行以实现诸如阴影、反射和全局光照、等等的光照效果。

例如,图10图示了包括以下两个加速结构的处理系统1000:低细节加速结构1002L和高细节加速结构1002H。系统1000还包括低细节光线跟踪逻辑1004、区域识别逻辑1008、高细节光线跟踪逻辑1010、更新逻辑1012和显示器1016。在一些示例中,系统1000还可以包括时间规整逻辑1014。逻辑块1004至逻辑块1014可以以硬件、软件或其任何组合来实现。处理系统1000与图7中示出的处理系统700相似,但是在系统1000中,渲染逻辑被实现为低细节光线跟踪逻辑1004,其以比由高细节光线跟踪逻辑1010执行的光线跟踪更低的细节(例如,更少的光线)执行光线跟踪,并且在系统1000中,渲染逻辑块1004和逻辑块1010两者都使用加速结构。总体上,可以存在一个或多个加速结构1006(例如,逻辑块1004和逻辑块1010两者都能够使用相同的加速结构),但是在图10中示出的示例中,存在由各自的逻辑块1004和逻辑块1010表示的两个加速结构。两个加速结构1002L和1002H是表示场景几何结构的加速结构但是以不同水平的细节的变本。系统1000中的剩余部分以与以上参考图7中示出的系统700描述的相同的方式操作。因此,低细节光线跟踪逻辑1004生成被提供到区域识别逻辑1008,并且被提供到更新逻辑1012的初始图像。区域识别逻辑1008识别要使用高细节光线跟踪逻辑1010被光线跟踪的区域。所识别的区域的指示被提供到高细节光线跟踪逻辑1010。高细节光线跟踪逻辑1010以针对所识别的区域的高水平的细节来执行光线跟踪,例如使用比由低细节光线跟踪逻辑1004使用的光线密度更高的光线密度和/或使用高细节加速结构1006。来自高细节光线跟踪逻辑1010的结果被提供到更新逻辑,其利用由逻辑1010执行的高细节光线跟踪的结果来更新初始图像的所识别的区域。所更新的图像任选地由时间规整逻辑1014进行时间规整,并且之后被提供到显示器1016以用于在其上显示。与以上所描述的类似,低细节光线跟踪逻辑1004可以与高细节光线跟踪逻辑1010异步地进行操作。例如,低细节光线跟踪逻辑1004可以以60Hz操作,同时区域识别逻辑1008、高细节光线跟踪逻辑1010和更新逻辑1012可以以240Hz操作。加速结构1002L和加速结构1002H可以如以上所描述的被构建。

在一些示例中,一些决策逻辑可以被包括在处理流水线的开始处,处理流水线用于决策哪个功能(例如,栅格化或光线跟踪渲染技术或两者)用于图像的哪些部分。在以上描述的示例中,单幅图像包括要使用不同的渲染技术处理的不同的区域。然而,在一些示例中,决策逻辑可以例如基于图像的内容来决策其将最适合于针对整幅图像使用单个渲染技术(例如,栅格化或光线跟踪)。在这种情况下,单个渲染技术将基于来自决策逻辑的决策而被选择性地用于渲染整幅图像。

图2、图6b和图7的处理系统被示出为包括许多功能块。这仅仅是示意性的并且不旨在定义在这样的实体的不同逻辑元件之间的严格划分。可以以任何适当的方式来提供每个功能块。应当理解,本文中描述为由处理系统形成的中间值不需要在任何时刻由处理系统物理地生成并且可以仅仅表示方便描述由处理系统在其输入部与输出部之间执行的处理的逻辑值。

本文中描述的处理系统可以以硬件被实现在集成电路上。一般地,以上描述的功能、方法、技术或组件中的任何能够以软件、固件、硬件(例如,固定逻辑电路)或其任何组合来实现。术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”可以在本文中用于大体表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、组件、元件、单元、块或逻辑表示当运行在处理器上时执行指定任务的程序代码。本文中描述的算法和方法能够由运行使(一个或多个)处理器执行算法/方法的代码的一个或多个处理器执行。计算机可读存储介质的示例包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器和可以使用磁性技术、光学技术和其他技术来存储指令或其他数据并且能够由机器访问的其他存储器设备。

如本文中所使用的术语计算机程序代码和计算机可读指令是指针对处理器的任何种类的可执行代码,包括以机器语言、解释语言或脚本语言表示的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表)、以及以诸如C、Java或OpenCL的编程语言表示的代码。可执行代码可以例如为任何种类的软件、固件、脚本、模块或库,其当在虚拟机或其他软件环境处被适当地运行、处理、解释、编译、执行时使可执行代码被支持在其处的计算机系统的处理器执行由代码指定的任务。

处理器、计算机或计算机系统可以是具有使得其能够运行指令的处理能力的任何种类的设备、机器或专用电路、或其汇集或部分。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)、等等。计算机或计算机系统可以包括一个或多个处理器。

还旨在包含定义如本文中描述的硬件的配置的软件,例如如被用于设计集成电路或用于将可编程芯片配置为执行期望的功能的HDL(硬件描述语言)软件。即,可以提供一种计算机可读存储介质,其具有存储在其上的形式为集成电路定义数据集的计算机可读程序代码,该集成电路定义数据集当在集成电路制造系统中被处理时将系统配置为制造被配置为执行本文中描述的方法中的任何的处理系统,或者制造包括本文中描述的任何装置的处理系统。集成电路定义数据集可以例如为集成电路描述。

集成电路定义数据集可以采用计算机代码的形式,例如如网表、用于对可编程芯片进行配置的代码、如定义在任何层级处的集成电路的硬件描述语言,包括寄存器转移层级(RTL)代码,如高级电路表示,例如Verilog或VHDL,并且如低级电路表示,例如OASIS(RTM)和GDSII。逻辑上定义集成电路(例如,RTL)的高级表示可以在被配置用于在包括电路元件的定义和用于将那些元件进行组合的规则的软件环境的上下文中生成集成电路的制造定义的计算机系统处被处理以便生成如由表示定义的集成电路的制造定义。如关于在计算机系统处运行以便定义机器的软件常见的情况,可能需要一个或多个中间用户步骤(例如,提供命令、变量、等等)以便使被配置用于生成集成电路的制造定义的计算机系统运行定义集成电路的代码以便生成该集成电路的制造定义。

现在将参考图11描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置为制造处理系统的示例。

图11示出了包括布局处理系统1104和集成电路生成系统1106的集成电路(IC)制造系统1102的示例。IC制造系统1102被配置接收IC定义数据集(例如,定义如在本文中的示例中的任何中描述的处理系统)、处理IC定义数据集并且根据IC定义数据集来生成IC(例如,其体现如在本文中的示例中的任何中描述的处理系统)。对IC定义数据集的处理将IC制造系统1102配置为制造体现如在本文中的示例中的任何中描述的处理系统的集成电路。

布局处理系统1104被配置为接收并处理IC定义数据集以确定电路布局。根据IC定义数据集来确定电路布局的方法是本领域中已知的,并且例如可以涉及合成RTL代码以确定要被生成的电路的门级表示,例如在逻辑组件方面(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)。电路布局能够通过确定针对逻辑部件的位置信息根据电路的门级表示来确定。这可以自动地或者在用户参与的情况下完成以便优化电路布局。当布局处理系统1104已经确定电路布局时,其可以将电路布局定义输出到IC生成系统1106。电路布局定义可以例如为电路布局描述。

IC生成系统1106根据电路布局定义来生成IC,如本领域中已知的。例如,IC生成系统1106可以实现半导体器件制造工艺以生成IC,其可以涉及光刻和化学处理步骤的多个步骤序列,在其期间电子电路逐渐地被创建在由半导体材料制成的晶片上。电路布局定义可以以掩膜的形式,其能够被使用在光刻工艺中以用于根据电路定义来生成IC。备选地,被提供到IC生成系统1106的电路布局定义可以以计算机可读代码的形式,IC生成系统1106能够使用其来形成用于在生成IC中使用的适当的掩膜。

由IC制造系统1102执行的不同工艺可以全部实现在一个位置中,例如通过一方来实现。备选地,IC制造系统1102可以是分布式系统使得工艺中的一些可以在不同位置处被执行,并且可以通过不同方来执行。例如,以下的阶段中的一些:(i)合成表示IC定义数据集的RTL代码以形成要被生成的电路的门级表示,(ii)基于门级表示来生成电路布局,(iii)根据电路布局来形成掩膜,并且(iv)使用掩膜来制造集成电路可以在不同位置中和/或通过不同方来执行。

在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可以将系统配置为在没有处理IC定义数据集的情况下制造SIMD处理模块从而确定电路布局。例如,集成电路定义数据集可以定义可配置处理器(例如,FPGA)的配置,并且对该数据集的处理可以将IC制造系统配置为(例如,通过将配置数据加载到FPGA)生成具有该定义的配置的可配置处理器。

在一些示例中,集成电路制造定义数据集当在集成电路制造系统中被处理时可以使集成电路制造系统生成如本文中描述的设备。例如,以上参考图11描述的方法通过集成电路制造定义数据集对集成电路制造系统的配置可以使如本文中描述的设备被制造。

在一些示例中,集成电路定义数据集能够包括运行在由数据集定义的硬件上或与由数据集定义的硬件组合地运行的软件。在图11中示出的示例中,IC生成系统还可以由集成电路定义数据集配置为在制造集成电路时将根据在集成电路定义数据集处定义的程序代码的固件加载到该集成电路上或者以其他方式向集成电路提供程序代码以用于与集成电路一起使用。

申请人在此在这样的特征或组合能够整体上鉴于本领域技术人员的公知常识基于本说明书来实现的程度上孤立地公开了本文中描述的每个个体特征和两个或更多个这样的特征的任何组合,无论这样的特征或特征的组合是否解决本文中公开的任何问题。鉴于前面的描述,本领域技术人员应当理解容易理解,可以在本发明的范围内进行各种修改。

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