CN114663572A - 实时射线追踪应用中使用空间散列的光重要性高速缓存 - Google Patents

实时射线追踪应用中使用空间散列的光重要性高速缓存 Download PDF

Info

Publication number
CN114663572A
CN114663572A CN202110901023.XA CN202110901023A CN114663572A CN 114663572 A CN114663572 A CN 114663572A CN 202110901023 A CN202110901023 A CN 202110901023A CN 114663572 A CN114663572 A CN 114663572A
Authority
CN
China
Prior art keywords
light
rays
spatial regions
light sources
spatial
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110901023.XA
Other languages
English (en)
Inventor
B·B·塔斯科夫
A·埃利斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN114663572A publication Critical patent/CN114663572A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)

Abstract

本发明公开了实时射线追踪应用中使用空间散列的光重要性高速缓存。可以确定并高速缓存光贡献信息,以用于渲染场景的图像帧。在至少一个实施例中,可以使用空间散列数据结构将所述场景划分为区域,例如八面体体素。使用投射光射线,可以为每个单独的体素计算平均光贡献。然后,可以使用这些光值为每个体素构建一个累积分布函数,该函数可用于在渲染期间为给定帧选择要采样的光。对区域或体素的采样可以至少部分地基于该区域的贡献光的数量以及这些光的相对贡献。这种方法可以非常有效地提高带宽和高速缓存效率,同时提供高图像质量。

Description

实时射线追踪应用中使用空间散列的光重要性高速缓存
背景
随着显示器设备的质量以及用户期望的不断提高,需要不断提高显示内容的质量。这可以包括一些任务,例如逼真现实地照明要渲染的场景的对象。在具有许多光源(包括反射或折射表面)的复杂场景中,可能没有足够的资源容量来准确地表示场景中的所有照明,特别是对于需要高帧速率的应用而言。
图纸简要说明
参考附图描述,根据本公开的各种实施例,其中:
图1A、图1B和图1C示出了根据至少一个实施例的场景中对象的射线追踪;
图2示出了根据至少一个实施例的用于视图和阴影射线两者的射线追踪;
图3A和图3B示出了根据至少一个实施例的具有八面体体素的射线追踪;
图4示出了根据至少一个实施例的用于渲染场景的帧的示例过程;
图5示出了根据至少一个实施例的用于在渲染期间执行射线追踪的过程;
图6示出了根据至少一个实施例的包括光重要性高速缓存的示例图像生成系统;
图7示出了根据至少一个实施例的示例数据中心系统;
图8示出了根据至少一个实施例的计算机系统;
图9示出了根据至少一个实施例的计算机系统;
图10示出了根据一个或更多个实施例的图形处理器的至少一部分;以及
图11示出了根据一个或更多个实施例的图形处理器的至少一部分。
详细说明
根据各种实施例的方法可以克服现有图像生成方法中的各种缺陷。特别地,各种实施例可以为场景中的一个或更多个光源提供重要信息的确定和高速缓存。可以为场景的各个区域确定所述重要性信息,所述重要性信息可能与各个体素有关,并且可以包括方向性数据。可以至少部分地基于诸如重要光的数量和这些光所确定的重要性之类的因素,将该重要性信息用于确定针对这些不同区域要执行的采样量。相对于对所有大量光源进行采样或者近似于对所有此类光源的采样,这种方法可以显着提高带宽和高速缓存效率,同时提供高图像质量。
在各种实时和离线渲染系统中,可以使用三维场景的虚拟摄像机视图生成一系列图像或视频帧。该场景可以包括各种类型的静态或动态对象,以及用于照明这些对象的一个或更多个光源。所述对象可以包括任何类型的前景或背景对象,所述任何类型的前景或背景对象可以在图像或其他数字视图中直观表示。所述光源也可以是任何适当的光源或照明源,所述任何适当的光源或照明源可以影响这些场景对象中的一个或更多个,其中该光可以具有不同的颜色或强度。这些场景中至少一些对象也可以是反射性或折射性的,使得它们可以影响来自这些光源中的一个或更多个照明,或者在某些情况下可以用作单独的光源。
图1A示出了根据各种实施例可以为该场景生成的示例视图100。在该示例中,所述视图100是相对于虚拟三维(3D)环境的虚拟相机的视图,从而从确定的视点得到该环境的二维(2D)表示。在该特定视图或图像帧中,存在三个对象108、110、112,所述对象在本文中称为场景对象。这些场景对象可以包括能够在场景中表示的任何对象,例如可以包括背景或前景对象、游戏中的玩家化身、动态或静态对象等。这些对象可以具有不同的照明特性,如所述照明特性可以包括对象的至少一部分是不透明的、透明的、反射的、透射的或折射的,以及其他这样的选项。对象也可以具有不同的表面特性或纹理,所述特性或纹理可能会影响其照明特性。在该场景中还存在三个光源102、104、106。这些光源可以是能够产生某种类型照明的任何对象或元素,例如可以包括诸如太阳、灯、霓虹灯等的光源。为了以真实的方式渲染所述场景的该视图,来自各种光源102、104、106的光应当照亮场景对象108、110、112,类似于在现实世界设置中照亮那些场景对象的方式。这不仅包括直接照明,也包括反射和阴影创建等方面。
确定此类照明的一种方法涉及射线追踪。射线追踪是指一种渲染技术,所述渲染技术利用一种算法来追踪光源发出光的路径,然后在计算机生成的环境中模拟光线与所述射线“撞击”或相交的场景对象交互的方式。射线追踪可以提供真实的阴影和反射,以及精确的半透明和散射。射线追踪还有一个优势,即它可以在图形处理单元(GPU)上执行,例如在NVIDIA 公司生产的GeForce RTX图形卡中执行,以便在足够的时间内执行照明确定,从而针对高帧速率应用可以实时执行准确的渲染。
图1B所示,该场景的视图130示出了来自两个光源102和106的示例射线。虽然可以从每个潜在光源为场景中的每个潜在像素位置至少投射一个射线,但是这种方法可以是非常耗费资源的。因此,射线追踪方法通常为每个帧选择或“采样”一些该射线,以基于这些采样和(至少在某些情况下)来自先前帧的先前照明信息,来确定近似的经更新的照明信息。图 1B示出了来自光源102和106射线的示例选择。如图所示,来自每个该光源的射线沿着不同的对象或那些对象的部分撞击点,所述击中点至少部分地基于那些在场景中的光源和对象的相对位置。
根据各种实施例的方法可以利用该信息来允许对帧或场景的射线进行更优化的采样。例如,来自光源102的射线撞击此场景中的所有三个对象,但不撞击场景对象112的右侧。此外,场景对象112阻止来自光源102的射线撞击到场景对象112的右侧的大部分帧。来自光源102的射线主要照射场景对象108的顶部和右侧(为方便起见,在图之间保留了参考),可能是所有场景对象110以及场景对象112的顶部和左侧。然后可以确定所述场景的区域132,在所述区域132中光源102具有相对较高的重要性(更大的贡献),因为该区域包括对象的表面,所述对象的表面可以被来自光源102的射线撞击。类似地,来自光源106的射线撞击场景对象112的所述右侧,但是场景对象112阻止了这些射线撞击场景对象108和110。因此,可以定义所述场景的区域134,其中光源106具有相对重要性。可以看出,光源102对区域134中的照明贡献较小,因为来自该光源的射线大部分被区域134中的物体遮挡。类似地,光源106对区域132的贡献较小,因为来自该光源的射线也大部分被区域132中的物体阻挡。当确定要为一帧或一帧的一部分采样哪些射线时,根据各种实施例的方法可以利用这种重要性信息,因为仅对给定部分或区域更重要贡献的光源的射线进行采样可能会更有价值。
在至少一个实施例中,可以仅对那些被确定至少为具有某种重要性的光源区域的射线进行采样。在一些实施例中,这可以包括最多最大数量的重要光源。在其他实施例中,即使对于区域几乎没有确定贡献的光源,也可以每帧采样一条或更多条射线,以说明场景中的变化。例如,物体的移动可以允许射线穿过该区域,或者可以将射线反射到该区域中,等等。此外,可以使用采样来确定贡献确定,因此可以不分析每个潜在的射线,从而可以使用不完整的数据来确定所述贡献计算,并且光源实际上对区域具有某些未发现的重要性。这种方法允许确定这种照明影响,而无需将大量资源专用于对场景的区域或部分通常不重要的光源。
图1C所示的示例视图160示出了从光源104投射的采样射线。在该示例中,来自光源104的射线直接照射场景对象108和112的部分。如图所示,从场景对象108反射的射线162也撞击场景对象110。在这种情况下,所述光源104可以对场景的每个区域有贡献,并且照这样,可以对所有区域采样射线。在至少一些实施例中,为不同区域确定的贡献可以变化,但是,使得光源104的射线采样量或采样频率可以随区域而变化。
在至少一个实施例中,也可以为给定场景采样不同类型的射线。如图 2的视图200所示,在该场景中存在单个光源204和单个场景对象208。从虚拟相机202的视点渲染该三维场景的二维图像206,在至少一些实施例中,可以针对不同的帧围绕场景移动或重定向虚拟相机202。所述图像将与平面相对应,所述平面在确定位置处与该虚拟相机视图相交。为了渲染所述图像206,渲染器必须确定该场景对象208从该相机视图中的哪些部分可见,以便确定要在图像中表示的内容。此外,所述渲染器必须确定每个该部分的照明,以便相对于所述光源真实地渲染对象。如图所示,这可以包括确定至少两种类型的射线。第一类射线(本文中称为视图射线),在所述虚拟视图中对应于场景对象208上可见的点或区域,并且由光源204(直接或间接)照明。第二类射线(本文中称为阴影射线),对应于所述场景中的点或区域,例如在示例环境中的地面或地板上,诸如场景对象208之类的对象将至少部分地基于从光源204投射的光投射阴影到该地面或地板上。在这种情况下,从光源204到场景对象208的阴影射线212将被场景对象208遮挡,因此不会撞击该阴影区域。然而,可以扩展该射线,以确定相对于光源204,可以由场景对象208在该位置投射阴影。因此,不仅可以为直接照明确定光射线,还可以为阴影、反射、折射、漫射和其他此类光方面确定光射线。这些不同类型的射线可以用相似或不同的采样率或频率进行采样,并且在一些实施例中,可以至少部分地基于它们对场景或区域的相对重要性进行采样。
在三维网格中,虚拟三维环境可以由多个单独的体素组成。在各种渲染系统中,每个体素将包括与场景的特定部分关联的虚拟立方体、三角形、八面体或其他此类形状或几何对象。在射线追踪时,可以为单个体素发射射线,以确定被该射线撞击的任何对象(例如,三角形网格或更高阶图元),并且可以存储相交信息,以用于渲染。然而,在各种情况下,也可以希望捕获体素的方向性数据。例如,可以存在体素的材料属性,使得从第一方向的一个光源可能重要(贡献更多),但是从第二方向的不同光源可能也重要。在这种情况下,可以希望利用体素,所述体素能够捕获至少一些这种维度。在至少一个实施例中,八面体体素可用于场景的对象,如图3A的视图300所示。也可使用其它几何体,例如在至少一些实施例中的四面体体素。如图3A所示,来自光源302的射线可以撞击八面体体素304的至少两个不同面,所述至少两个不同面是在虚拟相机视图中可见的面。同样如图所示,存在该体素304的至少一个面,对于该面,光源302没有撞击所述体素304。这种方向性信息有助于更好地确定该光源302相对于该体素的重要性。在至少一些实施例中,因为它提供了一种简单而有效的方法来确定场景中不同位置或方向的各种光源的贡献,可以选择八面体的几何形状。
图3B的示例视图350示出了八面体体素352,所述八面体体素352具有在虚拟相机视图中可见的四个侧面或面(A、B、C、D)。这可能是代表薄壁或物体一部分的体素,例如,在一侧具有第一光源354,而在另一侧具有第二光源356。如图所示,所述第一光源354对两个所述面(A,C) 很重要,而所述第二光源356对其他两个面(B,D)很重要。在这种情况下,可以至少部分地基于方向性来确定重要性信息,其中可以确定每个所述光源是重要的,但是仅针对相应的方向范围或面数。在至少一个实施例中,渲染界面可向用户提供开启或关闭3D环境的八面体体素表示的选项。
这些体素中的每一个都可以对应于相应的空间散列。可以有不同的射线撞击该同一空间散列的不同部分。使用八面体体素来表示该散列,以提供一种相对简单的方法来确定和存储同一空间散列的定向光信息。这种方法使得阴影和视图(或接近度)射线能够从不同的光源和方向追踪或投影到这些体素,并存储该信息以用于渲染。该信息还可以帮助确定给定体素、体素集合或场景或图像区域的每个光源的相对重要性和/或贡献。然而,应当注意,具有八面体的所述空间散列(图)允许场景中的位置和方向与存储器中的位置相关联,其中所述存储器可以存储光贡献信息。然而,如前所述,对场景的所有可能射线进行采样,在许多情况下可能效率太低或资源密集,特别是对于非点光源,因此可以利用射线采样。与随机选择射线或使用伪随机采样不同,可以使用其他采样方法或算法,例如基于准蒙特卡罗方法。此类方法可提供生成可转换成光路的低差异序列。这种方法可以利用确定性的、低差异的序列来生成路径段。为了产生光路段,低偏差序列的第i个向量的分量可以被划分成至少两组,然后可以用来追踪第i 个相机和光路段。
根据至少一个实施例可以确定光路段,所述确定光路段方法首先选择原点(例如光源),然后选择用以追踪射线的方向。在与场景表面相交的第一个点,相对于路径终点以及追踪下一条射线的散射方向(如果合适),可以做出另一个决定。必要时可重复此过程。确定光路的示例方法,利用阴影射线,并确定所述阴影射线的各个路径段的所述端点是否可见。虽然阴影射线足以满足大部分漫反射表面的需要,但是阴影射线对于包含镜面反射-漫反射-镜面反射段的光路径(例如,由镜子反射到漫反射表面并由所述镜子反射回来的光)的光路可能无效。为了解决这种效率低下的问题,可以将光子轨迹通过接近度连接到相机路径段,也称为光子映射,所述光子映射有助于阴影射线的有效捕获贡献。使用这种路径空间滤波方法,可以通过追踪来自选定光源的光射线(或光子轨迹)并追踪虚拟相机的路径,来生成各种光路径的片段。如果这些路径段的端点对于阴影射线是相互可见或足够接近的(例如,有足够的接近度),则这些路径段的端点连接起来。在至少一个实施例中,可以与这些连接技术一起利用路径空间滤波。对光路的顶点xi的贡献值ci可以用平滑的贡献
Figure BDA0003199824810000061
代替,该平滑的贡献
Figure BDA0003199824810000062
从对确定区域内的顶点的平均贡献
Figure BDA0003199824810000064
得到。然后该平均贡献值
Figure BDA0003199824810000063
可以乘以朝向所述相机的所述路径段的吞吐量τi,并在所述图像平面P上累加。
为了确保一致性,所述区域的所述尺寸应随着样本数量n的增加而消失。在至少一个实施例中,这可以包括减小球形区域的半径r。然后可以使用光子映射连接路径段的端点,所述路径段端点的间距小于指定的半径。半径r(n)随着采样光路数量n的增加而减小,可以提供某种程度的一致性,因为在极限情况下实际上相当于阴影射线连接。与随机渐进光子映射类似,可以处理连续批次的光传输路径。根据所使用的低差异序列,某些块尺寸可能比其他块尺寸更可取。
这种方法至少在以下方面事实上是有益的:渐进路径空间滤波是一种快速且一致的方差减少技术,所述技术是对阴影射线和渐进光子映射的补充,使得稀疏样本集能够为高质量图像生成提供足够的信息。虽然可以使用各种方法来选择光路的各种多个顶点,但是一种选择是沿着所述相机所述路径的第一个顶点,所述相机的光学特性被认为是充分散射的。一个低差异序列可以被转换为光传输路径的连续批中的采样路径空间,其中对于每个路径,存储一个选定的元组以进行路径空间过滤。由于内存消耗与批尺寸成正比,并且在给定所述元组的所述尺寸和内存块的所述最大尺寸的情况下,可以相对直接地确定最大自然数。
在至少一个实施例中,该光数据可以被临时存储或缓存,以用于生成场景的图像。在至少一个实施例中,辐射的样本可以被高速缓存和内插,以增加在渲染器中实现的光传输模拟的效率。除了辐射内插以外,路径空间过滤还可以有效地过滤不连续点,例如详细的几何形状。这种滤波还可以克服过多的轨迹分裂,以减少所述缓存样本中的噪声,从而实现有效的路径追踪。此外,可以通过该计算而无需单独计算,来减少帧中存在的一致性相关伪影。可以在一批光传输路径内迭代所述平均过程,从而以某些模糊的照明细节为代价,进一步显著提高速度。
尽管这种方法即使不加权也可以是一致的,但是对于较大的半径,由于贡献被包含在无法在xi中收集的平均值中,因此所述所得图像可能显得过于模糊。为了减少该漏光的瞬态伪像,并受益于更大的半径以在所述平均值中包括更多的贡献,可以确定所述权重,以评估通过轨迹分割,可以在顶点xi上创建贡献csi+j的概率。可以使用模糊方法跨几何体或跨纹理地执行模糊。当跨几何体模糊时,可以由表面法线和其他表面法线的标量积来确定它们的相似性。当跨纹理模糊时,如果所述光学表面属性是由顶点包含在所述平均值中的贡献来评估的,则所述图像可能是最佳的。对于除漫射表面以外的其他表面(例如光泽表面),这些属性可以至少部分地取决于所述观察方向,然后可以将所述观察方向与所述顶点一起存储。当隐式已知方向相似时(例如,对从所述相机直接观看的查询位置xi),可以节省一些该附加内存。对于模糊阴影,给定一个点光源,从不同顶点看到的可见度可一个或更多个以相同或不同。为了避免清晰的阴影边界变得模糊,可以仅在相同的能见度时包括贡献。对于由环境映射引起的环境光遮挡和照明,可以通过比较在这些顶点处射入所述半球的每一条射线的长度 (通过限制其差异)来减少模糊。
这种路径空间过滤方法可以在任何基于采样的渲染算法之上实现,并且可以以很少的额外开销来实现。渐进算法可以有效地减少方差,并且可以保证收敛,而不会由于一致性而造成持久的伪影。这种空间滤波或空间散列方法可以用于将屏幕划分为体素,例如参考图3A和3B描述的所述八面体体素。这种方法适合于诸如实时射线追踪之类的应用,并且在至少一些实施例中可以仅在一个或更多个GPU中执行,所有这些同时解决了现有技术方法的各种缺陷。与各种射线追踪器中已经存在的方法相比,这种方法至少在一定程度上也是有利的,因为它不需要用于射线采样或跟踪的附加功能。相反,所述过程可以收集有关投影到场景射线的统计信息,以确定每个光源对于场景特定部分的重要性,并基于所述场景的可见性和材质属性等因素来确定在所述场景的该部分中执行多少采样。这种方法可能导致需要的采样数量比以前的方法(例如ReSTIR)所需的采样少得多,尤其是对于世界空间采样而不是屏幕空间采样。现有方法中对许多额外采样的所述需求通常导致近似地被执行,这会降低这些现有方法的图像质量。相反,根据各种实施例的方法可以确定并高速缓存信息,所述信息是关于确定哪个光源对于场景的各个区域是重要的信息,并且可以至少部分地基于这些光源的相对重要性来生成这些光源的实际采样。在至少一些实施例中,可以使用至少两个步骤来确定这些采样,所述采样包括确定所述光源的所述重要性,然后使用分析解决方案从场景的那些光源中选择或“拾取”采样。在至少一些实施例中,这可以使用多重重要性采样(MIS)来执行。
然而,如上所述,对于复杂或动态场景而言,确定哪个光源在场景中重要是困难的。例如,由于遮挡或定位,或者由于场景中的移动,可能只有少量来自光源的射线会影响表面。仅对场景中可能射线的子集进行采样,可以导致从光源到对象的射线在若干帧内未被采样,这可以不正确地导致该光源对于该对象或区域的计算重要性低于应确定的重要性。在一些实施例中,在场景的两个区域之间利用的采样模式可能大不相同,使得当追踪射线时,在各种体素的边界上可能存在网格状的伪影。为了定位至少该类伪影,可以通过抖动采样数据的位置来模糊体素之间的边界。这种抖动或基于偏移的采样可以有效地将这些类似体素的伪影转化为噪声,这有助于提高整体图像质量。在这种方法中,用于光选择的概率分布函数(PDF) 可以在帧与帧之间保持一致,从而导致噪声模式随着光源在场景中的移动而逐渐变化。在至少一个实施例中,由于类似的原因,法线方向也可以抖动。
如前所述,可以在所述体素水平上确定至少一些实施例中的重要性值。这些体素的尺寸可能不规则,因为场景的八面体体素可以替代地排列为可能变化尺寸的体素,例如随着与场景的虚拟相机的距离而增大尺寸的体素。在各种实施例中,可以针对每个体素收集已经在场景中投射的所有射线的所述光信息,并且为每个体素计算平均光贡献。在至少一个实施例中,该贡献数据可对应于来自撞击该体素的每个光源的辐射数据或方向功率量方向功率量。在至少一个实施例中,尽管在各种实施例的范围内也可以使用其他光源抽象,至少对于重要性确定而言,诸如球形光源之类的光源可以被视为单个光源,而与构成该光源的三角形或其他几何成分的数量无关。在至少一些实施例中,在场景中发光的任何对象都可以被视为光源。
然后,这些平均值可以用于生成用于光选择或拾取的累积分布函数 (CDF)。可以为每一帧或每n帧生成离散化的CDF,其中可以基于诸如性能和资源可用性之类的因素,将n选择为诸如2、4、8或10之类的值。这种方法有助于分摊建立所述CDF的成本。可以使用平均贡献来构建 CDF,以确定这些光源的相对重要性,所述平均贡献是每个体素的每个光源的平均贡献,所述这些光源是相对这些光源的每帧或n帧的光源。实值随机变量X的CDF可以由下式给出:
FX(x)=P(X≤x)
其中,该公式的所述右侧表示所述随机变量X的值小于或等于x的概率。在不同的实施例中,用于构建这些函数的运算(例如,确定前缀和与归约和)可以串行地或并行地执行,因为这些运算可以涉及高性能计算原语,所述高性能计算原语可以在不同的GPU上并行执行。还可以利用各种其他性能增强,例如在所述体素和光上并行地构建这些体素的CDF,或者为体素组而不是单个体素构建CDF。
在各种实施例中,用于CDF的数据可以采取介于0和1之间的浮点数的数组的形式,其中每个下一个连续数都大于或等于所述前一个数。然后可以使用该数组执行二进制搜索。每次要采样光源时,所述过程都可以访问该体素的所述CDF,并执行二进制搜索,例如,使用随机数执行所述二进制搜索。然后可以利用该数组中与该二进制搜索相对应的索引。所述重要性信息还可用于指导自适应采样。例如,可以将更多数量或部分的采样或阴影射线的投射专用于具有多个重要光源的区域,以便更准确地捕获重要光信息,而不必花费过多的精力在可能只有一个或两个重要光源的区域上,并且投射大量阴影射线或捕获尽可能多的采样并不重要。因此,这种方法使得将少量阴影射线投射到可能只有一个或两个重要光的区域中成为可能,而可以将更多数量的阴影射线应用于似乎存在更多重要光的场景区域。为了提高潜在的性能,可以将所述CDF压缩为标准格式。与使用32 位的浮点运算不同,可以使用较低的精度,这样不会使所述结果产生偏差。不存储浮点形式的CDF值,而是将该值存储为8位值,这样可以节省带宽和高速缓存存储。
在一些实施例中,识别较少数量的更重要的光,可以允许使用另外的解决方案或方法,否则所述解决方案或方法对于使用可能是不切实际的。例如,基于线性变换余弦(LTC)的方法可用于较少数量的光源。此外,知道哪些是区域中最重要的光,以及重要光的数量,对于引导式自适应采样可能很有用,这样就无法在要渲染的图像上均匀地利用所述阴影射线预算,而是一部分所述阴影射线预算更多地集中在工作更重要的地方。在至少一个实施例中,PDF可用于评估方差,例如执行光剔除。光剔除可以有效地剔除或移除对某个区域不重要的光,并保留对该区域重要的光或“英雄”光。然后可以仅对所述重要的光执行可能相对昂贵的评估,例如LTC 评估。然后,在至少一个实施例中,所述CDF中的所述数字(可以包括统计信息和标准差信息)可以用于确定由于所述更高的方差何时需要更多的阴影射线。
在至少一个实施例中,可以尝试确保接收到零值(指示光源对于区域或体素不重要)的PDF,如果该光源实际上可能对该区域或体素具有某些重要性,则有机会获得非零值。如前所述,所述采样方法可能会丢失仅通过小开口或由于场景中的移动而从灯光传递到对象的光线。可能需要提供一种捕获该重要性的方法,所述重要性在随机采样的一段时间内可能尚未捕获。在至少一个实施例中,对于每一帧或帧的子集,该方法可以通过将多个射线投射到场景中的随机光射线来执行,而不管它们的重要性或被认为具有相对较低的重要性。该方法可以为那些光源提供射线采样的机会,以使所述相应的PDF由于检测到撞击而具有非零值,所述采样的射线是可能撞击对象或区域的射线。在一些实施例中,该方法可以包括针对每个体素、针对每帧或每n帧,将少量阴影射线投射到少量随机(且均匀地)选取的光源。因此,可以使用少量的阴影射线来尝试发现光交互作用,所述光交互作用是先前通过所述采样方法漏掉的光交互作用。另一种方法是避免允许PDF的值为0的方法,从而对光源的某些贡献始终允许。在至少一个实施例中,该方法可以涉及设置要分配给光源的最小允许PDF值。
所述PDF至少部分基于场景中光的所述数量来确定。对于连续函数,所述概率密度函数(PDF)是所述变量具有值x的所述概率。对于离散分布,所述PDF可通过以下公式给出:
f(x)=P[X=x]
在至少一个实施例中,所述PDF可以对应于一除以场景中光的数量再乘以一除以该空间散列或体素投射阴影射线的数量。在至少一个实施例中,对于每个帧,可以存在光值的至少子集的刷新。为一帧获得的所述新信息可用于更新存储平均辐射度的数据结构。在计算一帧结束时,可以建立一个新的CDF,对于给定的光源将具有一个新的概率。在至少一个实施例中,条目的所述数目可以是固定的,并且替换策略用于最小化这些操作所需的内存量。这样的方法可以仅存储关于最大数量的最重要的光信息。在其他方法中,可以仅针对具有重要性值的光存储光信息,所述具有重要性值的光是达到或超过最小重要性阈值的光。
如上所述,在至少一个实施例中,当对体素采样时可以使用基于抖动的混合。也可以使用其他混合方法,可能与PDF动画有关。例如,这可以涉及PDF之间的线性内插动画。当在帧的末尾获得新的PDF时,之前的帧中有一个旧的PDF,因此可能需要为该过渡设置动画。PDF可以为此目的设置动画。其他方法可以脱离基于平均值的方法,而改为使用基于最大值的方法。如前所述,可能存在仅偶尔撞击体素的光或仅撞击一小部分射线,因此可以通过基于平均值的方法将其影响最小化。然而,如果这些射线具有高辐射值,则可能需要保留该信息。基于最大值的方法可以保留最大贡献信息,所述最大贡献信息是对于任何体素的光返回的所述最大贡献信息,并在高PDF和低PDF之间采用相应的混合方法,从而可以保留高PDF的辐射度,而不会由于相对较低的总体重要性,而对该光过度采样。
在一些实施例中,可以生成并存储部分CDF以供使用。部分CDF只能在场景中的固定数量、选择或光子集上构建给定的CDF。在一个示例中,可以对随机变量进行采样并将其与阈值b进行比较。如果该随机采样的值大于b,则可以从例如固定尺寸的列表中选择光。可以使用部分CDF进行该选择,概率为:
概率=(1-b)*部分PDF值+b*(1/n)
其中n是总光照计数,且部分PDF值是由带有减法的部分CDF构造的。如果所述随机采样低于b,则可以从所有光中均匀选择一个光,其概率为b*(1/n)。为了更新所述结构,可以在帧的所有均匀选择的光上累积所述最大光贡献,并在所述固定尺寸结构中选择一个光来替换最大贡献者。在至少一个实施例中,可以通过选择要替换的随机时隙(random slot)来实现替换,或者通过另一种方法(例如选择所述最低PDF并滚动模具)来确定是否替换。
图4示出了可以根据各种实施例执行的,用于渲染场景的帧或图像的示例过程400。应当理解,对于本文提出的该过程和其他过程,除非另外特别说明,否则可以在各种实施例的范围内以类似或替代顺序或至少部分并行地执行附加、较少或替代步骤。在该示例中,为场景中的多个光源和对象射线采样402许多射线。来自该采样的数据可以用于确定这些光源的404 重要性值,所述重要性值是针对该场景的各个区域的重要性值。可以使用各种方法将场景划分为多个区域,例如可以包括将所述区域划分为多个尺寸不同的八面体体素。这些重要性值可以被高速缓存406,例如在GPU存储器中高速缓存。在至少一个实施例中,可以将用于挑选每个光源的概率值存储到高速缓存中,其中可以使用所述重要性值来计算该概率值。对于将要渲染的帧(可能是帧序列的一部分),可以至少部分地基于这些高速缓存的重要性值,来选择408要采样的多条光线(在可以投射到所有可能光源的所有可能光线中)。对于给定的区域或体素,要采样射线的所述数量可以至少部分地基于多个重要光源以及这些光源的相对重要性。一旦选定,就可以对那些选定的射线执行采样410。该信息可用于更新该场景的高速缓存数据。从这些采样射线获得的所述光信息,还可以用于渲染412该帧,例如基于各类因素来真实地照明该场景中的对象,所述各类因素是诸如这些光源相对于该场景中的对象的位置、形状和辐射度等因素。也可以选择其他类型的区域,如可能涉及均匀尺寸或不同尺寸的图块。
图5示出了根据至少一个实施例的可以渲染的用于渲染帧的另一示例过程500。该示例过程可以表示用于更通用过程的一个或更多个实现选择,如图4所示的过程400。在该示例中,确定要渲染的场景(502)。例如,这可以包括:确定虚拟三维环境以及放置在该环境内或附近的对象和光源。在该示例中,该场景的对象(包括前景和背景对象两者)可以选择性地被分割504成一组八面体体素,其中在各种实施例的范围内也可以使用其他类型的区域。在一些实施例中,空间散列允许针对位置以及渲染过程中可用的方向来确定体素标识符或内存中的位置。射线(例如阴影射线)可以投射到该环境中的多个光源。可以针对每个体素计算508来自这些射线的平均光贡献。在至少一些实施例中,这可以包括方向性考虑。对于要为该场景渲染序列中的当前帧,可以使用这些平均值来构建510用于光选择的累积分布函数(CDF)。然后,可以使用该CDF来选择512要在所述当前帧的渲染期间采样的光。然后,这些选择的光可以被采样514,并且在至少一个实施例中使用光信息来渲染516当前帧,所述光信息是来自这些采样光的光信息以及来自先前帧或采样的高速缓存光信息。除非没有更多的帧要对该序列渲染,否则可以选择518下一帧,并且该过程可以继续进行具有更新的CDF的另一采样。
在至少一个实施例中,可以在各个位置执行内容帧的呈现和渲染的各方面,诸如在客户端设备上,由第三方提供商执行或在云中执行,以及其他此类选项。图6示出了根据各种实施例的可用于生成、提供和呈现此类内容的示例组件600。在至少一个实施例中,客户端设备602可以使用客户端设备602上的内容应用程序604的组件和本地存储在该客户端设备上的数据来生成会话的内容,例如游戏会话或视频观看会话。在至少一个实施例中,在内容服务器620上执行的内容应用程序624(例如,游戏或流媒体应用)可以发起会话,所述会话至少与客户端设备602相关联,也可以利用会话管理器和存储在用户数据库636中的用户数据,并且可以使内容管理器626确定内容632,并且使用渲染器628进行渲染(如果此类型的内容或平台需要),并使用适当的传输管理器622发送到客户端设备602,发送过程是通过下载、流媒体或其他此类传输渠道来发送的。在至少一个实施例中,接收该内容的客户端设备602可以将该内容提供给对应的内容应用程序604,所述内容应用程序还可以或者可替代地包括渲染器608,所述渲染器608用于渲染该内容中的至少一些,以便经由客户端设备602来呈现,例如通过显示器606和音频的视频内容、通过至少一个音频回放设备(例如扬声器或耳机)的音频(例如声音和音乐)。在至少一个实施例中,该内容中的至少一些可能已经在客户端设备602上存储、在客户端设备602 上渲染或可被客户端设备602访问,使得至少该部分内容不需要通过网络 640进行传输,例如在该部分内容之前可能已经下载或本地存储在硬盘驱动器或光盘上的情况下。在至少一个实施例中,可以使用诸如数据流传输的传输机制,来将该内容从内容服务器620或内容数据库634传输到客户端设备602。在至少一个实施例中,可以从另一源获得或流传输该内容的至少一部分,所述另一源是诸如第三方内容服务650之类的另一源,所述第三方内容服务650也可以包括用于生成或提供内容的内容应用652。在至少一个实施例中,可以使用多个计算设备或一个或更多个计算设备内的多个处理器(例如可以包括CPU和GPU的组合)来执行该功能的部分。
在至少一个实施例中,内容应用程序624包括内容管理器626,所述内容管理器626可以在将该内容发送到客户端设备602之前就确定或分析内容。在至少一个实施例中,内容管理器626还可以包括(或与其一起工作)其他组件,所述其他组件是能够生成、修改或增强要提供的内容的组件。在至少一个实施例中,这可以包括用于渲染内容的渲染器628,例如以第一分辨率显示的混叠内容。在至少一个实施例中,上采样或缩放组件630 可以以不同的分辨率(更高或更低)生成该图像的至少一个附加版本,并且可以执行诸如抗混叠的至少一些处理。在至少一个实施例中,如本文所讨论的,混合模块632(可以包括至少一个神经网络)可以参考一个或更多个先前图像,对那些图像中的一个或更多个执行混合。在至少一个实施例中,内容管理器626然后可以选择适当分辨率的图像或视频帧,以发送到客户端设备602。在至少一个实施例中,客户端设备602上的内容应用程序 604,也可以包括诸如渲染器608的组件,从而可以在客户端设备602上附加或替代地执行任何或所有此功能。在至少一个实施例中,第三方内容服务系统650上的内容应用程序652也可以包括该功能。在至少一个实施例中,执行该功能中的至少一些功能的位置可以是可配置的,或者可以取决于诸如客户端设备602的类型或具有适当带宽的网络连接的可用性等因素,以及其他因素。在至少一个实施例中,上采样模块630或混合模块632可以包括用于执行或辅助该功能的一个或更多个神经网络,其中那些神经网络(或至少那些网络的网络参数)可以由内容服务器620或第三方系统650 提供。在至少一个实施例中,用于内容生成的系统在一个或更多个位置中可以包括硬件和软件的任何适当组合。在至少一个实施例中,也可以将生成的一种或更多种分辨率的图像或视频内容提供给(或使其可用)其他客户端设备660,例如用于从存储该图像或视频内容的副本的媒体源下载或流式传输。在至少一个实施例中,这可以包括发送用于多玩家游戏的游戏内容的图像,其中不同的客户端设备可以以不同的分辨率显示该内容,所述不同的分辨率包括一个或更多个超分辨率。
数据中心
图7示出了示例数据中心700,其中可以使用至少一个实施例。在至少一个实施例中,数据中心700包括数据中心基础设施层710、框架层720、软件层730和应用层740。
在至少一个实施例中,如图7所示,数据中心基础设施层710可以包括资源协调器712、分组的计算资源714和节点计算资源(“节点C.R.”)716 (1)-716(N),其中“N”代表任何完整的正整数。在至少一个实施例中,节点C.R.716(1)-716(N)可以包括但不限于任何数量的中央处理单元 (“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器等),内存设备(例如动态只读内存),存储设备(例如固态硬盘或磁盘驱动器),网络输入/输出(“NW I/O”)设备,网络交换机,虚拟机 (“VM”),电源模块和冷却模块等。在至少一个实施例中,节点C.R.716 (1)-716(N)中的一个或更多个节点C.R.可以是具有一个或更多个上述计算资源的服务器。
在至少一个实施例中,分组的计算资源714可以包括容纳在一个或更多个机架内的节点C.R.的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组的计算资源714内的节点C.R. 的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、内存或存储资源。在至少一个实施例中,可以将包括CPU 或处理器的几个节点C.R.分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。在至少一个实施例中,一个或更多个机架还可以包括任何数量的电源模块、冷却模块和网络交换机,以任意组合。
在至少一个实施例中,工作调度器722可以配置或以其他方式控制一个或更多个节点C.R.716(1)-716(N)和/或分组的计算资源714。在至少一个实施例中,工作调度器722可以包括用于数据中心700的软件设计基础结构(“SDI”)管理实体。在至少一个实施例中,资源协调器可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图7所示,框架层720包括作业调度器732、配置管理器734、资源管理器736和分布式文件系统738。在至少一个实施例中,框架层720可以包括支持软件层730的软件732和/或应用层740的一个或更多个应用程序742的框架。在至少一个实施例中,软件732或应用程序742可以分别包括基于Web的服务软件或应用程序,例如由Amazon Web Services,Google Cloud和Microsoft Azure提供的服务或应用程序。在至少一个实施例中,框架层720可以是但不限于一种免费和开放源软件网络应用框架,例如可以利用分布式文件系统738来进行大范围数据处理(例如“大数据”)的Apache SparkTM(以下称为“Spark”)。在至少一个实施例中,作业调度器732可以包括Spark驱动器,以促进对数据中心700的各个层所支持的工作负载进行调度。在至少一个实施例中,配置管理器734可以能够配置不同的层,例如软件层730和包括Spark和用于支持大规模数据处理的分布式文件系统738的框架层720。在至少一个实施例中,资源管理器736能够管理映射到或分配用于支持分布式文件系统738和作业调度器 732的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层710上的分组的计算资源714。在至少一个实施例中,资源管理器736可以与资源协调器712协调以管理这些映射的或分配的计算资源。
在至少一个实施例中,包括在软件层730中的软件732可以包括由节点C.R.716(1)-716(N)的至少一部分,分组的计算资源714和/或框架层720的分布式文件系统738使用的软件。一种或更多种类型的软件可以包括但不限于Internet网页搜索软件、电子邮件病毒扫描软件、数据库软件和流视频内容软件。
在至少一个实施例中,应用层740中包括的一个或更多个应用程序742 可以包括由节点C.R.716(1)-716(N)的至少一部分、分组的计算资源 714和/或框架层720的分布式文件系统738使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序,认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如PyTorch、TensorFlow、Caffe等)或其他与一个或更多个实施例结合使用的机器学习应用程序。
在至少一个实施例中,配置管理器734、资源管理器736和资源协调器712中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。在至少一个实施例中,自我修改动作可以减轻数据中心700的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或执行差的部分。
在至少一个实施例中,数据中心700可以包括工具、服务、软件或其他资源,以根据本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,在至少一个实施例中,可以通过使用上文关于数据中心700描述的软件和计算资源,根据神经网络架构通过计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过本文所述的一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心700所描述的资源,使用对应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息。
在至少一个实施例中,数据中心可以使用CPU、专用集成电路(ASIC)、 GPU、FPGA或其他硬件来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
通过缓存光重要性信息并使用该信息来确定图像或视频帧的射线采样,此类组件可用于提高图像生成过程中的图像质量。
计算机系统
图8是示出根据至少一个实施例示例性计算机系统的框图,该示例性计算机系统可以是具有互连的设备和组件的系统,片上系统(SOC)或它们的某种形成有处理器的组合800,该处理器可以包括执行单元以执行指令。在至少一个实施例中,根据本公开,例如本文所述的实施例,计算机系统800可以包括但不限于组件,例如处理器802,其执行单元包括逻辑以执行用于过程数据的算法。在至少一个实施例中,计算机系统800可以包括处理器,例如可从加利福尼亚圣塔克拉拉的英特尔公司(Intel Corporation of Santa Clara,California)获得的
Figure BDA0003199824810000171
处理器家族、XeonTM、
Figure BDA0003199824810000172
XScaleTM和/或StrongARMTM,
Figure BDA0003199824810000173
CoreTM或
Figure BDA0003199824810000174
Figure BDA0003199824810000181
NervanaTM微处理器,尽管也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在至少一个实施例中,计算机系统1400 可以执行可从华盛顿州雷蒙德市的微软公司(Microsoft Corporation of Redmond,Wash.)获得的WINDOWS操作系统版本,尽管其他操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户界面也可以使用。
实施例可以用在其他设备中,例如手持设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议(Internet Protocol)设备、数码相机、个人数字助理(“PDA”)和手持PC。在至少一个实施例中,嵌入式应用可以包括微控制器、数字信号处理器(“DSP”)、片上系统、网络计算机 (“NetPC”)、机顶盒、网络集线器、广域网(“WAN”)交换机,或根据至少一个实施例可以执行一个或更多个指令的任何其他系统。
在至少一个实施例中,计算机系统800可包括但不限于处理器802,该处理器802可包括但不限于一个或更多个执行单元808,以根据本文描述的技术执行机器学习模型训练和/或推理。在至少一个实施例中,计算机系统8A是单处理器台式机或服务器系统,但是在另一实施例中,计算机系统 8A可以是多处理器系统。在至少一个实施例中,处理器802可以包括但不限于复杂指令集计算机(“CISC”)微处理器、精简指令集计算(“RISC”) 微处理器、超长指令字(“VLIW”)微处理器、实现指令集组合的处理器,或任何其他处理器设备,例如数字信号处理器。在至少一个实施例中,处理器802可以耦合到处理器总线810,该处理器总线810可以在处理器802 与计算机系统800中的其他组件之间传输数据信号。
在至少一个实施例中,处理器802可以包括但不限于1级(“L1”)内部高速缓存(“cache”)804。在至少一个实施例中,处理器802可以具有单个内部高速缓存或多级内部缓存。在至少一个实施例中,高速缓存内存可以驻留在处理器802的外部。根据特定的实现和需求,其他实施例也可以包括内部和外部高速缓存的组合。在至少一个实施例中,寄存器文件806 可以在各种寄存器中存储不同类型的数据,包括但不限于整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
在至少一个实施例中,包括但不限于执行整数和浮点运算的逻辑的执行单元808,其也位于处理器802中。处理器802还可以包括微码(“ucode”) 只读内存(“ROM”),用于存储某些宏指令的微代码。在至少一个实施例中,执行单元808可以包括用于处理封装指令集809的逻辑。在至少一个实施例中,通过将封装指令集809包括在通用处理器802的指令集中,以及要执行指令的相关电路,可以使用通用处理器802中的封装数据来执行许多多媒体应用程序使用的操作。在一个或更多个实施例中,可以通过使用处理器的数据总线的全宽度来在封装的数据上执行操作来加速和更有效地执行许多多媒体应用程序,这可能不需要在处理器的数据总线上传输较小的数据单元来一次执行一个数据元素的一个或更多个操作。
在至少一个实施例中,执行单元808也可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。在至少一个实施例中,计算机系统800可以包括但不限于内存820。在至少一个实施例中,内存 820可以被实现为动态随机存取内存(“DRAM”)设备、静态随机存取内存 (“SRAM”)设备、闪存设备或其他存储设备。在至少一个实施例中,内存820可以存储由处理器802可以执行的由数据信号表示的指令819和/或数据821。
在至少一个实施例中,系统逻辑芯片可以耦合到处理器总线810和内存820。在至少一个实施例中,系统逻辑芯片可以包括但不限于内存控制器集线器(“MCH”)816,并且处理器802可以经由处理器总线810与MCH 816 通信。在至少一个实施例中,MCH 816可以提供到内存820的高带宽内存路径818以用于指令和数据存储以及用于图形命令、数据和纹理的存储。在至少一个实施例中,MCH 816可以在处理器802、内存820和计算机系统800中的其他组件之间启动数据信号,并且在处理器总线810、内存1420 和系统I/O 822之间桥接数据信号。在至少一个实施例中,系统逻辑芯片可以提供用于耦合到图形控制器的图形端口。在至少一个实施例中,MCH 816 可以通过高带宽内存路径818耦合到内存820,并且图形/视频卡812可以通过加速图形端口(Accelerated Graphics Port)(“AGP”)互连814耦合到MCH816。
在至少一个实施例中,计算机系统800可以使用系统I/O 822作为专有集线器接口总线来将MCH 816耦合到I/O控制器集线器(“ICH”)830。在至少一个实施例中,ICH 830可以通过本地I/O总线提供与某些I/O设备的直接连接。在至少一个实施例中,本地I/O总线可以包括但不限于用于将外围设备连接到内存820、芯片组和处理器802的高速I/O总线。示例可以包括但不限于音频控制器829、固件集线器(“Flash BIOS”)828、无线收发器826、数据存储824、包含用户输入的传统I/O控制器823和键盘接口、串行扩展端口827(例如通用串行总线(USB))和网络控制器834。数据存储824可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。
在至少一个实施例中,图8示出了包括互连的硬件设备或“芯片”的系统,而在其他实施例中,图8可以示出示例性片上系统(“SoC”)。在至少一个实施例中,图8中示出的设备可以与专有互连、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,系统800的一个或更多个组件使用计算快速链路(CXL)互连来互连。
通过缓存光重要性信息并使用该信息来确定图像或视频帧的射线采样,此类组件可用于提高图像生成过程中的图像质量。
图9是示出根据至少一个实施例的用于利用处理器910的电子设备 900的框图。在至少一个实施例中,电子设备900可以是,例如但不限于,笔记本电脑、塔式服务器、机架服务器、刀片服务器、膝上型计算机、台式机、平板电脑、移动设备、电话、嵌入式计算机或任何其他合适的电子设备。
在至少一个实施例中,系统900可以包括但不限于通信地耦合到任何合适数量或种类的组件、外围设备、模块或设备的处理器910。在至少一个实施例中,处理器910使用总线或接口耦合,诸如1℃总线、系统管理总线(“SMBus”)、低引脚数(LPC)总线、串行外围接口(“SPI”)、高清音频(“HDA”)总线、串行高级技术附件(“SATA”)总线、通用串行总线(“USB”)(1、2、3版)或通用异步接收器/发送器(“UART”)总线。在至少一个实施例中,图9示出了系统,该系统包括互连的硬件设备或“芯片”,而在其他实施例中,图9可以示出示例性片上系统(“SoC”)。在至少一个实施例中,图9中所示的设备可以与专有互连线、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,图9的一个或更多个组件使用计算快速链路(CXL)互连线来互连。
在至少一个实施例中,图9可以包括显示器924、触摸屏925、触摸板 930、近场通信单元(“NFC”)945、传感器集线器940、热传感器946、快速芯片组(“EC”)935、可信平台模块(“TPM”)938、BIOS/固件/闪存(“BIOS,FW Flash”)922、DSP960、驱动器920(例如固态磁盘(“SSD”)或硬盘驱动器(“HDD”))、无线局域网单元(“WLAN”)950、蓝牙单元952、无线广域网单元(“WWAN”)956、全球定位系统(GPS)955、相机(“USB 3.0 相机”)954(例如USB 3.0相机)或以例如LPDDR3标准实现的低功耗双倍数据速率(“LPDDR”)内存单元(“LPDDR3”)915。这些组件可以各自以任何合适的方式实现。
在至少一个实施例中,其他组件可以通过以上讨论的组件通信地耦合到处理器910。在至少一个实施例中,加速度计941、环境光传感器(“ALS”) 942、罗盘943和陀螺仪944可以可通信地耦合到传感器集线器940。在至少一个实施例中,热传感器939、风扇937、键盘946和触摸板930可以通信地耦合到EC935。在至少一个实施例中,扬声器963、耳机964和麦克风(“mic”)965可以通信地耦合到音频单元(“音频编解码器和D类放大器”)964,其又可以通信地耦合到DSP960。在至少一个实施例中,音频单元964可以包括例如但不限于音频编码器/解码器(“编解码器”)和D类放大器。在至少一个实施例中,SIM卡(“SIM”)957可以通信地耦合到 WWAN单元956。在至少一个实施例中,组件(诸如WLAN单元950和蓝牙单元952以及WWAN单元956)可以被实现为下一代形式因素(NGFF)。
这样的组件可以通过缓存光重要性信息并使用该信息来确定图像或视频帧的射线采样,从而用于在图像生成过程中改善图像质量。
图10是根据至少一个实施例的处理系统的框图。在至少一个实施例中,系统1000包括一个或更多个处理器1002和一个或更多个图形处理器 1008,并且可以是单处理器台式机系统、多处理器工作站系统或具有大量处理器1002或处理器核心1007的服务器系统。在至少一个实施例中,系统1000是集成在片上系统(SoC)集成电路内的处理平台,所述处理平台用于移动、手持或嵌入式设备。
在至少一个实施例中,系统1000可包括游戏控制台,或包含在基于服务器的游戏平台内,所述游戏控制台包括游戏和媒体控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台。在至少一个实施例中,系统1000 是移动电话、智能电话、平板计算设备或移动互联网设备。在至少一个实施例中,处理系统1000也可以包括可穿戴设备、与可穿戴设备耦合或集成在可穿戴设备中,所述可穿戴设备例如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在至少一个实施例中,处理系统1000 是电视或机顶盒设备,所述电视或机顶盒设备具有一个或更多个处理器 1002以及由一个或更多个图形处理器1008生成的图形。
在至少一个实施例中,一个或更多个处理器1002各自包括一个或更多个处理器核心1007,以处理指令,所述指令在被执行时完成针对系统和用户软件的运算。在至少一个实施例中,将一个或更多个处理器核心1007中的每一个配置为处理特定指令集1009。在至少一个实施例中,指令集1009 可以促进复杂指令集计算(CISC)、精简指令集计算(RISC),或通过超长指令字(VLIW)进行计算。在至少一个实施例中,处理器核心1007可各自处理不同的指令集1009,所述指令集1009可包括有助于仿真其他指令集的指令。在至少一个实施例中,处理器核心1007也可以包括其他处理设备,例如数字信号处理器(DSP)。
在至少一个实施例中,处理器1002包括高速缓存存储器1004。在至少一个实施例中,处理器1002可以具有单个内部高速缓存存储器或多层内部高速缓存存储器。在至少一个实施例中,高速缓存存储器在处理器1002 的各个组件之间共享。在至少一个实施例中,处理器1002还使用外部高速缓存,例如,三级(L3)高速缓存或最后一级高速缓存(LLC)(未示出),所述外部高速缓存可以使用已知的高速缓存一致性技术在处理器内核心 1007之间共享。在至少一个实施例中,处理器1002中另外包括寄存器文件 1006,其可以包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。在至少一个实施例中,寄存器文件1006可以包括通用寄存器或其他寄存器。
在至少一个实施例中,一个或更多个处理器1002与一个或更多个接口总线1010耦合,以在处理器1002与系统1000中的其他组件之间传输通信信号,例如地址、数据或控制信号。在至少一个实施例中,接口总线1010 在一个实施例中可以是处理器总线,例如直接媒体接口(DMI)总线的版本。在至少一个实施例中,接口1010不限于DMI总线,也可以包括一个或更多个外围组件互连总线(例如,PCI、PCI Express)、存储器总线或其他类型的接口总线。在至少一个实施例中,处理器1002包括集成存储器控制器1016和平台控制器集线器1030。在至少一个实施例中,存储器控制器 1016促进存储器设备与系统1000的其他组件之间的通信,而平台控制器集线器(PCH)1030通过本地I/O总线提供到I/O设备的连接。
在至少一个实施例中,存储器设备1020可以是动态随机访问存储器 (DRAM)设备、静态随机访问存储器(SRAM)设备、闪存设备、相变存储设备或具有适当的性能用作过程存储器。在至少一个实施例中,存储器设备1020可以用作系统1000的系统存储器,以存储数据1022和指令 1021,以便在一个或更多个处理器1002执行应用程序或过程时使用。在至少一个实施例中,存储器控制器1016还与可选的外部图形处理器1012耦合,所述外部图形处理器1012可以与处理器1002中的一个或更多个图形处理器1008通信以执行图形和媒体操作。在至少一个实施例中,显示器设备1011可以连接至处理器1002。在至少一个实施例中,显示器设备1011 可以包括一个或更多个内部显示器设备,例如在通过显示接口(例如,显示器端口等)连接的移动电子设备或膝上型设备或外部显示器设备中。在至少一个实施例中,显示器设备1011可以包括头戴式显示器(HMD),诸如用于虚拟现实(VR)应用或增强现实(AR)应用的立体显示器设备。
在至少一个实施例中,平台控制器集线器1030使外围设备能够通过高速I/O总线连接到存储器设备1020和处理器1002。在至少一个实施例中, I/O外围设备包括但不限于音频控制器1046、网络控制器1034、固件接口 1028、无线收发器1026、触摸传感器1025、数据存储设备1024(例如,硬盘驱动器、闪存等)。在至少一个实施例中,数据存储设备1024可以经由存储器接口(例如,SATA)或经由外围总线来连接,所述外围总线诸如外围组件互连总线之类(例如,PCI、PCI Express)。在至少一个实施例中,触摸传感器1025可以包括触摸屏传感器、压力传感器或指纹传感器。在至少一个实施例中,无线收发器1026可以是Wi-Fi收发器、蓝牙收发器或诸如3G、4G或长期演进(LTE)收发器之类的移动网络收发器。在至少一个实施例中,固件接口1028支持与系统固件的通信,并且例如,可以是统一的可扩展固件接口(UEFI)。在至少一个实施例中,网络控制器1034可以启用到有线网络的网络连接。在至少一个实施例中,高性能网络控制器(未示出)与接口总线1010耦合。在至少一个实施例中,音频控制器1046是多通道高清音频控制器。在至少一个实施例中,系统1000包括可选的传统 I/O控制器1040,所述可选的传统I/O控制器1040用于将传统(例如,个人系统2(PS/2))设备耦合到系统。在至少一个实施例中,平台控制器集线器1030也可以连接到一个或更多个通用串行总线(USB)控制器1042,所述控制器连接输入设备,所述输入设备是诸如键盘和鼠标1043组合,相机1044或其他USB之类的输入设备。
在至少一个实施例中,存储器控制器1016和平台控制器集线器1030 的实例可以被集成到谨慎的外部图形处理器中,所述谨慎的外部图形处理器例如外部图形处理器1012。在至少一个实施例中,平台控制器集线器1030 和/或存储器控制器1016可以在一个或更多个处理器1002的外部。例如,在至少一个实施例中,系统1000可以包括外部存储器控制器1016和平台控制器集线器1030,所述系统可以被配置为系统芯片组中的内存控制器集线器和外围控制器集线器,所述系统芯片组与处理器1002通信。
通过高速缓存光重要性信息并使用该信息来确定图像或视频帧的射线采样,此类组件可用于在图像生成过程中改善图像质量。
图11是根据至少一个实施例的具有一个或更多个处理器核心 1102A-1102N、集成存储器控制器1114和集成图形处理器1108的处理器1100的框图。在至少一个实施例中,处理器1100可以包括附加核心,所述附加核心直至并包括由虚线框表示的附加核心1102N。在至少一个实施例中,每个处理器核心1102A-1102N包括一个或更多个内部高速缓存单元1104A-1104N。在至少一个实施例中,每个处理器核心还可以访问一个或更多个共享高速缓存单元1106。
在至少一个实施例中,内部高速缓存单元1104A-1104N和共享高速缓存单元1106表示处理器1100内的高速缓存存储器层次结构。在至少一个实施例中,内部高速缓存单元1104A-1104N可以包括每个处理器核心内的至少一级指令和数据高速缓存,以及一个或更多个共享的中级高速缓存,例如第2级(L2)、第3级(L3)、第4级(L4)或其他级高速缓存,其中外部存储器归类为LLC之前的最高级别高速缓存。在至少一个实施例中,高速缓存一致性逻辑保持各种高速缓存单元1106和1104A-1104N之间的一致性。
在至少一个实施例中,处理器1100还可以包括一个或更多个总线控制器单元1116和系统代理核心1110的集合。在至少一个实施例中,一个或更多个总线控制器单元1116管理一组外围总线,所述外围总线例如一个或更多个PCI或PCI Express总线。在至少一个实施例中,系统代理核心1110 为各种处理器组件提供管理功能。在至少一个实施例中,系统代理核心1110 包括一个或更多个集成存储器控制器1114,以管理对各种外部存储器设备(未示出)的访问。
在至少一个实施例中,一个或更多个处理器核心1102A-1102N包括对并发多线程的支持。在至少一个实施例中,系统代理核心1110包括在多线程处理期间用于协调和操作核心1102A-1102N的组件。在至少一个实施例中,系统代理核心1110可以另外包括功率控制单元(PCU),所述功率控制单元包括逻辑和组件,以调节处理器核心1102A-1102N和图形处理器 1108的一个或更多个功率状态。
在至少一个实施例中,处理器1100另外包括图形处理器1108,以执行图形处理操作。在至少一个实施例中,图形处理器1108与共享高速缓存单元1106和系统代理核心1110耦合,所述系统代理核心1110包括一个或更多个集成存储器控制器1114。在至少一个实施例中,系统代理核心1110 也包括显示控制器1111,以驱动图形处理器输出到一个或更多个耦合显示器。在至少一个实施例中,显示控制器1111也可以是与图形处理器1108 耦合的单独模块,或者可以集成在图形处理器1108内,所述耦合是经由至少一个互连进行的耦合。
在至少一个实施例中,基于环的互连单元1112用于耦合处理器1100 的内部组件。在至少一个实施例中,可以使用替代互连单元,例如点对点互连、交换互连或其他技术。在至少一个实施例中,图形处理器1108经由 I/O链路1113与环形互连1112耦合。
在至少一个实施例中,I/O链路1113表示多种I/O互连中的至少一种,所述多种I/O互连包括封装I/O互连,所述封装I/O互连便于各种处理器组件与高性能嵌入式存储器模块1118(例如eDRAM模块)之间的通信。在至少一个实施例中,每一个处理器核心1102A-1102N与图形处理器 1108,使用嵌入式存储器模块1118作为共享的最后一级高速缓存(LastLevel Cache)。
在至少一个实施例中,处理器核心1102A-1102N是执行公共指令集架构的同质核。在至少一个实施例中,处理器核心1102A-1102N在指令集体系结构(ISA)方面是异构的,其中一个或更多个处理器核心1102A-1102N 执行公共指令集,而一个或更多个其他处理器核心1102A-1102N执行公共指令集或不同指令集的子集。在至少一个实施例中,就微架构而言,处理器核心1102A-1102N是异构的,其中具有相对较高功耗的一个或更多个核心与具有较低功耗的一个或更多个功率核心相耦合。在至少一个实施例中,处理器1100可以在一个或更多个芯片上实现或作为SoC集成电路实现。
通过缓存光重要性信息并使用该信息来确定图像或视频帧的射线采样,此类组件可以在图像生成过程中改善图像质量。
其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是其某些示出的实施例在附图中示出并且已经在上面进行了详细描述。但是,应当理解,无意将公开内容限制为所公开的一种或更多种特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的公开内容的精神和范围内的所有修改、替代构造和等同物。
其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是其某些示出的实施例在附图中示出并且已经在上面进行了详细描述。但是,应当理解,无意将公开内容限制为所公开的一种或更多种特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的公开内容的精神和范围内的所有修改、替代构造和等同物。
除非以其他方式明确指出或与环境明显矛盾,否则诸如“A、B和C中的至少一个”或“A、B和C的至少一个”形式的词组等联合语言在环境中理解为通常用来表示项目,术语等可以是A或B或C,也可以是A和B和C 集合的任何非空子集。例如,在具有三个成员,连接短语“A、B和C中的至少一个”和“A、B和C的至少一个”是指以下任意集合:{A},{B},{C}, {A,B},{A,C},{B,C},{A,B,C}。因此,这种联合语言通常不意图暗示某些实施例要求存在A中的至少一个、B中的至少一个和C中的至少一个。另外,除非另有说明或与环境矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示多个项目)。复数中项目的数量是至少两个,但是当明确地或通过环境指示时可以是多个。此外,除非另有说明或从环境中清楚得知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。
除非本文另外指出或与环境明显矛盾,否则本文描述的过程的操作可以任何合适的序列执行。在至少一个实施例中,诸如本文所述的那些过程 (或其变形和/或其组合)的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为代码(例如,可执行指令、一个或更多个计算机程序或一个或更多个应用程序)通过硬件或其组合在一个或更多个处理器上共同执行。在至少一个实施例中,代码例如以计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令。在至少一个实施例中,计算机可读存储介质是非暂时性计算机可读存储介质,其不包括暂时性信号(例如,传播的瞬态电或电磁传输),但包括暂时性信号的收发器中的非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令的一组一个或更多个非暂时性计算机可读存储介质(或用于存储可执行指令的其他内存)上,当由计算机系统的一个或更多个处理器执行(即,由于被执行)而导致的计算机系统执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质以及缺少所有代码的多个非暂时性计算机可读存储介质的一个或更多个单个非暂时性存储介质,而多个非暂时性计算机可读存储介质共同存储所有代码。在至少一个实施例中,执行可执行指令,使得不同的指令由不同的处理器执行,例如,非暂时性计算机可读存储介质存储指令,并且主中央处理单元(“CPU”) 执行一些指令,而图形处理单元(“GPU”)执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。
因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文所描述的过程的操作的一个或更多个服务,并且这样的计算机系统配置有能够实现操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中,是一种分布式计算机系统,其包括以不同方式操作的多个设备,使得分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。
本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有声明。说明书中的任何语言都不应被解释为表示对于实施公开必不可少的任何未要求保护的要素。
本文引用的所有参考文献,包括出版物、专利申请和专利,均以引用的方式并入本文,如同每个参考文献被单独且具体地指出以引用的方式并入本文一样。
在描述和权利要求中,可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。
除非另外特别说明,否则可以理解,在整个说明书中,诸如“处理”、“计算”、“运算”、“确定”等,是指计算机或计算系统的动作和/或过程。或类似的电子计算设备,将计算系统的寄存器和/或内存中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算系统的内存、寄存器或其他此类信息存储、传输或显示器设备中的物理量的其他数据。
以类似的方式,术语“处理器”可以指处理来自寄存器和/或内存的电子数据并将该电子数据转换成可以存储在寄存器和/或内存中的其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器”可以是CPU 或GPU。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”过程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。而且,每个过程可以指代多个过程,以连续地或间歇地序列地或并行地执行指令。因为系统可以体现一种或更多种方法并且方法可以被认为是系统,术语“系统”和“方法”在本文中可互换使用。
在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器中。可以以多种方式来完成获得、获取、接收或输入模拟和数字数据,例如通过接收作为函数调用或对应用程序接口的调用的参数的数据。在一些实施方式中,获得、获取、接收或输入模拟或数字数据的过程可以通过经由串行或并行接口传输数据来完成。在另一实施方式中,可以通过经由计算机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。也可以参考提供、输出、传输、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传输、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数,应用程序编程接口或进程间通信机制的参数进行传输来实现。
尽管上面的讨论阐述了所描述的技术的示例实现,但是其他架构可以用于实现所描述的功能,并且意图在本公开的范围内。此外,尽管出于讨论目的在上面定义了具体的责任分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。
此外,尽管已经用针对结构特征和/或方法动作的语言描述了主题,但是应该理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。

Claims (20)

1.一种计算机实现的方法,包括:
确定针对虚拟环境中的一个或更多个光源所投射的第一组射线的光信息;
至少部分地基于所述光信息,确定相对于所述虚拟环境的多个空间区域的所述一个或更多个光源的值;
至少部分地基于所述值,选择相对于所述多个空间区域的针对所述一个或更多个光源的要采样的第二组射线,所述第二组射线包括针对具有较高值的所述光源的更多数量的样本;
对所述第二组射线进行采样,以获得所述多个空间区域的更新的照明信息;以及
使用所述更新的照明信息来渲染所述虚拟环境的图像。
2.根据权利要求1所述的计算机实现的方法,还包括:
使用空间散列算法来确定所述虚拟环境的所述多个空间区域,其中所述空间区域还提供方向信息。
3.根据权利要求2所述的计算机实现的方法,其中所述空间散列算法将所述虚拟环境分割成与多个八面体体素相对应的所述多个空间区域,所述多个八面体素具有一个或更多个尺寸。
4.根据权利要求3所述的计算机实现的方法,还包括:
至少部分地基于所选光源相对于各个八面体体素的方向性信息来确定所选光源的所述值。
5.根据权利要求1所述的计算机实现的方法,还包括:
使用所述值为所述多个空间区域构建累积分布函数(CDF);以及
高速缓存根据所述多个空间区域的所述CDF所确定的选择概率数据,所述选择概率数据被用来选择所述第二组射线。
6.根据权利要求5所述的计算机实现的方法,还包括:
针对所述虚拟环境的图像序列的至少一个图像子集,更新所述多个空间区域的所述CDF。
7.根据权利要求1所述的计算机实现的方法,还包括:
至多选择具有最高值的最大数量的光源,从所述光源中对所述第二组射线进行采样。
8.根据权利要求1所述的计算机实现的方法,还包括:
至少部分地基于单个光源相对于单个空间区域的平均光贡献,来确定所述一个或更多个光源相对于所述多个空间区域的的所述值。
9.根据权利要求1所述的计算机实现的方法,还包括:
使具有低于阈值的确定值的一个或更多个光源被考虑用于采样要渲染的一个或更多个后续图像。
10.一种系统,包括:
处理器;以及
包括指令的存储器,所述指令在由所述处理器执行时使所述系统执行以下操作:
确定针对虚拟环境中的一个或更多个光源所投射的第一组射线的光信息;
至少部分地基于所述光信息,确定相对于所述虚拟环境的多个空间区域的所述一个或更多个光源的值;
至少部分地基于所述值,选择相对于所述多个空间区域的所述一个或更多个光源的要采样的第二组射线,所述第二组射线包括针对具有较高值的光源的更多数量的样本;
对所述第二组射线进行采样,以获得所述多个空间区域的更新的照明信息;以及
使用所述更新的照明信息来渲染所述虚拟环境的图像。
11.根据权利要求10所述的系统,其中在执行所述指令时进一步使所述系统:
使用空间散列算法来确定所述虚拟环境的所述多个空间区域。
12.根据权利要求11所述的系统,其中所述空间散列算法将所述虚拟环境分割成由多个八面体体素定义的所述多个空间区域,所述多个八面体素具有一个或更多个尺寸。
13.根据权利要求11所述的系统,其中在执行所述指令时进一步使所述系统:
至少部分地基于所选光源相对于各个八面体体素的方向性信息来确定所选光源的所述值。
14.根据权利要求10所述的系统,其中在执行所述指令时进一步使所述系统:
使用所述值,以针对所述多个空间区域构建累积分布函数(CDF);以及
高速缓存根据所述多个空间区域的所述CDF所确定的选择概率数据,所述选择概率数据被用来选择所述第二组射线。
15.根据权利要求10所述的系统,其中在执行所述指令时进一步使所述系统:
针对所述虚拟环境的图像序列的至少一个图像子集,更新所述多个空间区域的所述CDF。
16.根据权利要求10所述的系统,其中在执行所述指令时进一步使所述系统:
至少部分地基于单个光源相对于单个空间区域的平均光贡献,来确定所述一个或更多个光源相对于所述多个空间区域的所述值。
17.根据权利要求10所述的系统,其中所述系统包括以下至少一项:
用于执行图形渲染操作的系统;
用于执行模拟操作的系统;
用于执行模拟操作以测试或验证自主机器应用程序的系统;
用于执行深度学习操作的系统;
使用边缘设备实现的系统;
包含一个或更多个虚拟机(VM)的系统;
至少部分在数据中心实现的系统;或者
至少部分使用云计算资源实现的系统。
18.一种非暂时性的计算机可读存储介质,其包括指令,当所述指令由一个或更多个处理器执行时,所述指令使一个或更多个处理器执行以下操作:
确定针对虚拟环境中的一个或更多个光源所投射的第一组射线的光信息;
至少部分地基于所述光信息,确定相对于所述虚拟环境的多个空间区域的所述一个或更多个光源的值;
至少部分地基于所述值,选择相对于所述多个空间区域的所述一个或更多个光源的要采样的第二组射线,所述第二组射线包括针对具有较高值的光源的更多数量的样本;
对所述第二组射线进行采样,以获得所述多个空间区域的更新的照明信息;以及
使用所述更新的照明信息来渲染所述虚拟环境的图像。
19.根据权利要求18所述的非暂时性计算机可读存储介质,其中在执行所述指令时进一步使所述一个或更多个处理器:
使用空间散列算法来确定所述虚拟环境的所述多个空间区域,其中所述多个空间区域是一个或更多个尺寸的八面体体像素。
20.根据权利要求19所述的非暂时性计算机可读存储介质,其中在执行所述指令时进一步使所述一个或更多个处理器:
至少部分地基于所选光源相对于各个八面体体素的方向性信息来确定所选光源的所述值。
CN202110901023.XA 2020-12-08 2021-08-06 实时射线追踪应用中使用空间散列的光重要性高速缓存 Pending CN114663572A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/115,010 US11756254B2 (en) 2020-12-08 2020-12-08 Light importance caching using spatial hashing in real-time ray tracing applications
US17/115,010 2020-12-08

Publications (1)

Publication Number Publication Date
CN114663572A true CN114663572A (zh) 2022-06-24

Family

ID=81849361

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110901023.XA Pending CN114663572A (zh) 2020-12-08 2021-08-06 实时射线追踪应用中使用空间散列的光重要性高速缓存

Country Status (4)

Country Link
US (2) US11756254B2 (zh)
EP (1) EP4027302A1 (zh)
JP (1) JP2022091091A (zh)
CN (1) CN114663572A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019045144A1 (ko) * 2017-08-31 2019-03-07 (주)레벨소프트 의료용 항법 장치를 위한 의료 영상 처리 장치 및 의료 영상 처리 방법
US11935177B2 (en) * 2021-06-15 2024-03-19 Nvidia Corporation Ray tracing using reservoir resampling with spatial shift-mapping
CN117839202A (zh) * 2022-09-30 2024-04-09 腾讯科技(深圳)有限公司 场景画面的渲染方法、装置、设备、存储介质及程序产品

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4866637A (en) * 1987-10-30 1989-09-12 International Business Machines Corporation Pipelined lighting model processing system for a graphics workstation's shading function
US9619922B2 (en) * 2014-09-09 2017-04-11 Disney Enterprises, Inc. Distribution caching for direct lights
US10008032B2 (en) * 2015-03-03 2018-06-26 Imagination Technologies Limited Graphics processing using directional representations of lighting at probe positions within a scene
US10614612B2 (en) 2018-06-09 2020-04-07 Adshir Ltd. Fast path traced reflections for augmented reality
EP3223247A1 (en) * 2016-03-24 2017-09-27 Ecole Nationale de l'Aviation Civile Boolean object management in 3d display
CN111727462A (zh) * 2017-10-16 2020-09-29 莫维迪厄斯有限公司 针对体积数据的密度坐标散列
WO2020191066A1 (en) 2019-03-18 2020-09-24 Nvidia Corporation Adaptive ray tracing suitable for shadow rendering

Also Published As

Publication number Publication date
US20230419590A1 (en) 2023-12-28
US11756254B2 (en) 2023-09-12
US20220180591A1 (en) 2022-06-09
JP2022091091A (ja) 2022-06-20
EP4027302A1 (en) 2022-07-13

Similar Documents

Publication Publication Date Title
US11704863B2 (en) Watertight ray triangle intersection
CN110827387A (zh) 没有着色器干预下对交点进行连续层次包围盒遍历的方法
US11756254B2 (en) Light importance caching using spatial hashing in real-time ray tracing applications
US11790594B2 (en) Ray-tracing with irradiance caches
US20230297562A1 (en) Concurrent hash map updates
US11450077B2 (en) Appearance-driven automatic three-dimensional modeling
US11216916B1 (en) History clamping for denoising dynamic ray-traced scenes using temporal accumulation
US20230326124A1 (en) Adaptive temporal image filtering for rendering realistic illumination
US20240177394A1 (en) Motion vector optimization for multiple refractive and reflective interfaces
US11830125B2 (en) Ray-guided water caustics
US20230298274A1 (en) Hash cell boundary shifting for light transport simulation systems and applications
US20230298257A1 (en) Visibility-based environment importance sampling for light transport simulation systems and applications
US20240054720A1 (en) Differentiable object insertion using hybrid lighting volumes for synthetic data generation applications
US20240112356A1 (en) Estimating flow vectors for occluded content in video sequences
CN117596406A (zh) 利用光流进行帧速率上转换
CN115244571A (zh) 基于深度的图像锐化
CN114910450A (zh) 使用粒子密度进行光传输模拟的部分可见度估计
CN115775311A (zh) 使用神经网络在3d资产渲染中传输几何和纹理样式

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination