CN114140335A - 光线追踪应用中的时空自引导阴影去噪 - Google Patents

光线追踪应用中的时空自引导阴影去噪 Download PDF

Info

Publication number
CN114140335A
CN114140335A CN202111035686.4A CN202111035686A CN114140335A CN 114140335 A CN114140335 A CN 114140335A CN 202111035686 A CN202111035686 A CN 202111035686A CN 114140335 A CN114140335 A CN 114140335A
Authority
CN
China
Prior art keywords
filter
values
moment
temporal
data
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
CN202111035686.4A
Other languages
English (en)
Inventor
P·科兹洛夫斯基
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 CN114140335A publication Critical patent/CN114140335A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • G06T5/70
    • 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
    • G06T15/60Shadow generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration by the use of local operators

Abstract

在示例中,可以至少基于时间累加的光线追踪样本中的方差来适配用于对(一个或更多个)像素的阴影进行去噪的滤波器。可基于方差来定义时空滤波器的滤波器值的范围,并用于排除该范围之外的时间光线追踪样本。用于计算分布的一阶矩的数据可用于计算分布的二阶矩,所述分布用于计算方差。对于二进制信号,例如可见度,一阶矩(例如,累加平均值)可能等效于二阶矩(例如,均方)。在进一步的方面,基于将(一个或更多个)像素的方差的均值与一个或更多个阈值进行比较并且基于像素的值的累加数量,可以跳过(一个或更多个)像素的空间滤波。

Description

光线追踪应用中的时空自引导阴影去噪
背景技术
光线追踪是一种用于通过在虚拟环境中追踪光的路径并模拟光与虚拟对象的交互作用来渲染图像的方法。光线追踪技术可用于模拟各种光学效果——例如阴影、反射和折射、散射现象和色散现象(例如色差)。当使用光线追踪渲染软阴影时,传统的阴影追踪方法可以从虚拟环境中的某个位置投射任意数量的阴影光线,以采样像素相对于光源的光照条件。光线追踪样本可以组合并应用于像素。在半影(光被部分遮挡的阴影区域)中,一些阴影光线可能对光源可见,而其他阴影光线可能被遮挡。可能需要大量的阴影光线,以便组合光照条件收敛到准确的结果。为了节省计算资源并减少渲染时间,阴影光线可能会被稀疏地采样,从而导致有噪声的渲染数据。可以使用去噪技术滤波有噪声的渲染数据以减少噪声并产生更接近于完全采样场景的渲染的最终渲染。
时空滤波器可用于去噪以将来自当前帧的空间信息与时间累加信息组合以通过利用来自先前帧的信息来增加有效样本计数。为了避免过度模糊,可以使用光线命中距离来引导传统的阴影去噪滤波器,其中滤波器半径基于到光源的遮挡物的距离来调整适应。这种方法需要用于存储命中距离和对命中距离数据去噪以考虑其随机性的带宽。颜色亮度的方差已被用于指导时空滤波器,该时空滤波器在全局照明中对颜色亮度进行去噪。虽然全局照明可以为环境的渲染提供阴影,作为考虑直接和间接照明的一部分,但传统技术通常比阴影追踪要昂贵得多。
发明内容
本公开的实施例涉及时空自引导阴影去噪。本公开提供了用于至少基于时间累加的光线追踪样本中的方差来调适去噪滤波器(例如阴影去噪滤波器)的方法。
与用于对光线追踪阴影去噪的传统方法相比,所公开的方法可以适配用于至少基于时间累加的光线追踪样本中的方差来对(一个或更多个)像素的阴影去噪的滤波器。在各种示例中,时空滤波器的滤波器值的范围可以基于方差来定义并且用于排除在范围之外的一组时间光线追踪样本。在进一步的方面,用于计算分布的一阶矩的数据可用于计算分布的二阶矩,所述分布用于计算方差。对于二进制信号,例如可见度,一阶矩(例如,累加平均值)可等效于二阶矩(例如,均方)。因此,可以通过仅累加用于导出矩之一的数据来节省计算资源。在矩不等价的实施例中,一阶矩可能仍然足以定义二阶矩的近似值。在进一步的方面,可以至少基于分布的平均值和/或一阶矩中的一个或更多个跳过(一个或更多个)像素的空间和/或时间滤波,所述分布用于计算(一个或更多个)像素的方差,分布的平均值和/或一阶矩中的一个或更多个小于或等于第一阈值,或大于或等于第二阈值,并且像素的累加值或样本数大于或等于第三阈值。
附图说明
下面结合附图详细描述本发明的适用于阴影渲染的自适应光线追踪的系统和方法,其中:
图1是示出了根据本公开的一些实施例的用于使用图像渲染系统生成输出图像的示例过程的数据流程图;
图2是示出了根据本公开的一些实施例的捕获虚拟环境的光线追踪样本的示例的图;
图3是示出了根据本公开的一些实施例的可用于确定滤波器的滤波器值的范围的分布函数的示例的图;
图4是示出了根据本公开的一些实施例的可以使用阴影去噪生成的虚拟环境的帧的示例的图;
图5是示出了根据本公开的一些实施例的用于至少基于可见度值的平均值来定义滤波器值的范围的方法的示例的流程图;
图6是示出了根据本公开的一些实施例的用于在滤波光线追踪样本中使用用于计算方差的分布的一阶矩来定义分布的二阶矩的方法的示例的流程图;
图7是示出了根据本公开的一些实施例的用于在滤波对应于二进制信号的光线追踪样本中将对应于分布的累加一阶矩的数据应用于分布的二阶矩的方法的示例的流程图;
图8是适用于实现本公开的一些实施例的示例计算环境的框图;以及
图9是适用于实现本公开的一些实施例的示例数据中心的框图。
具体实施方式
本公开涉及时空自引导阴影去噪。本公开提供了用于至少基于时间累加的光线追踪样本中的方差来调适去噪滤波器(例如阴影去噪滤波器)的方法。
与对光线追踪阴影去噪的传统方法相比,所公开的方法至少基于时间累加的光线追踪样本中的方差来调适用于对像素的阴影去噪的滤波器。使用公开的方法,可以在不需要使用光线命中距离来引导滤波器的情况下对阴影去噪,避免用于存储和去噪命中距离数据的带宽或其他更昂贵的方法。
在各种示例中,可以基于方差来定义时空滤波器的滤波器值的范围。在应用时空滤波器时,可以基于一组时间光线追踪样本超出范围将该组从滤波中排除。当平均值介于最大值和最小值之间(例如,介于0和1之间)时,该范围可以处于最大值,平均值的最大值(例如,0.5)对应于可能处于阴影半影中的区域。此外,当平均值处于或接近最大值或最小值时,范围可以处于最小值(例如,0),对应于可以完全被光源照亮或可以完全处于阴影中的区域。
在进一步的方面,本公开提供了基于累加样本的一阶矩和二阶矩来计算方差的方法,所述方差用于引导对时间光线追踪样本(例如,可见度)的滤波。一阶矩可以包括时间光线追踪样本的值的平均值,且二阶矩可以包括值的平方的平均值。对于二进制信号,例如可见度,可以在多个帧上累加平均值,累加平均值等于均方。因此,可以通过仅累加用于导出矩之一的数据来节省存储器带宽,然后可以使用该数据来定义分布的另一个矩。对于非二进制信号,虽然不是等价的,但累加平均值仍然足以用于定义二阶矩的近似值。
根据本公开的另外方面,可以至少基于分布的平均值和/或一阶矩中的一个或更多个小于或等于第一阈值,或大于或等于第二阈值跳过(一个或更多个)像素的空间和/或时间滤波。例如,使用可见度的二进制信号,在平均值为0和/或平均值为1并且至少两个值和/或帧已经被累加的情况下,可以跳过时空滤波。平均值为0可能表示像素完全被遮挡,而平均值为1可能表示像素完全照亮。用于确定是否跳过像素的空间和/或时间滤波的附加因素可以基于像素的值(和/或帧)的累加数量大于或等于第三阈值,例如8帧。可以针对不同实施例和/或不同类型的光线追踪样本调整各种类型的光线追踪样本中的任何一个。
参考图1,图1是示出了根据本公开的一些实施例的用于使用图像渲染系统100生成输出图像的示例过程140的数据流程图。应当理解,本文描述的这种和其他布置仅作为示例提出。除了所示的那些之外或代替所示的那些,可以使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,其可以被实现为离散或分布式组件或与其他组件结合,并且以任何合适的组合、布置或位置来实现。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,各种功能可以由执行存储在存储器中的指令的处理器来执行。在至少一个实施例中,图像渲染系统100可以至少部分地在图9的数据中心900中实现。作为各种示例,图像渲染系统100可以包括或被包括在以下一个或更多个中:用于执行模拟操作的系统、用于执行模拟操作以测试或验证自主机器应用程序的系统、用于执行深度学习操作的系统、使用边缘设备实现的系统、合并一个或更多个虚拟机(VM)的系统、至少部分地在数据中心实现的系统或至少部分地使用云计算资源实现的系统。
图像渲染系统100可以被配置为渲染虚拟环境的图像,例如图2的虚拟环境200。为了渲染虚拟环境的图像,图像渲染系统100可以采用光线追踪器102,矩历史管理器104、样本历史管理器106、时间矩累加器108、时间样本累加器110、方差确定器112、图像滤波器114、图像组合器116和3D渲染器118。
光线追踪器102可以被配置为使用多种潜在光线追踪技术中的任一种来追踪穿过虚拟环境的光线,以便生成相对于虚拟环境中的位置的虚拟环境的一个或更多个方面(例如,光照条件)的光线追踪样本。时间矩累加器108可以被配置为累加分布的空间矩,该分布用于计算来自光线追踪器102的光线追踪样本中的方差,数据表示来自矩历史管理器104的矩的时间累加值(例如,表示可以是这些值的平均值的单个值)以更新表示矩的时间累加值的数据。矩历史管理器104可以被配置为管理表示矩的时间累加值的数据(例如,对于每个像素),例如在矩历史缓冲器中。方差确定器112可以使用表示特定像素的矩的时间累加值的数据来计算一个或更多个特定像素的方差,并且可以将方差提供给图像滤波器114用于时空滤波对应于来自光线追踪器102的空间光线追踪样本的数据。
时间样本累加器110可以被配置为累加来自光线追踪器102的光线追踪样本与表示来自样本历史管理器106的光线追踪样本的时间累加值(例如,表示可以是平均值的单个值)的数据来将表示光线追踪样本的时间累加值的数据提供给图像滤波器114,用于对来自光线追踪器102的空间光线追踪样本对应的数据进行时空滤波。样本历史管理器106可以被配置管理表示光线追踪样本(例如,对于每个像素)的时间累加值的数据,例如在样本历史缓冲器中。在所示的示例中,样本历史管理器106可以使用时空滤波的光线追踪样本来更新样本历史缓冲器。
在一些实施例中,图像组合器116可以将对应于时空滤波的光线追踪样本的数据(例如,滤波的阴影/可见度数据)与表示虚拟环境的3D渲染的数据(例如,没有光线追踪的阴影数据)组合以生成输出图像120。3D渲染器118可以被配置为使用任何合适的方法来生成3D渲染,该方法可以包括也可以不包括光线追踪。在实施例中,3D渲染可以包括虚拟环境的帧的像素颜色信息。
如本文所述,光线追踪器102可以被配置为使用多种潜在的光线追踪技术中的任一种来追踪穿过虚拟环境的光线,以便生成与虚拟环境中的位置有关的虚拟环境的一个或更多个方面的光线追踪样本。现在参考图2,图2是示出了根据本公开的一些实施例的捕获虚拟环境200的光线追踪样本的示例的图。图像渲染系统100可以被配置为使用光线追踪器102来使用任意数量的光线追踪通道渲染图像以便对虚拟环境的条件进行采样。图2的示例是描述关于可见度样本,更具体地,关于虚拟环境中的光源的一个或更多个像素的可见度样本。然而,所公开的方法可以用其他类型的光线追踪样本来实现,这些样本可以包括形成二进制信号(例如,具有0或1的值)的那些。在一些实施例中,时间光线追踪样本可以表示、指示或以其他方式对应于相对于虚拟环境的一个或更多个像素的环境遮挡。当对虚拟环境的不同方面进行采样时,可以调适光线追踪技术以适应被模拟的(一个或更多个)效果。
关于一个或更多个光线追踪通道214,可以由光线追踪器102通过虚拟环境200追踪的光线的各种示例在图2中示出。例如,光线240、光线242和光线244在为光线追踪通道214所示的九条光线之中被单独标记。光线追踪器102可以使用光线来共同采样关于虚拟环境200中的位置的虚拟环境的一个或更多个方面。示出了九个位置的示例(可能更多,例如每个像素一个),其中位置230、232和234被单独标记。在至少一个实施例中,每条光线与位置之一相关联(例如,从该位置投射)并且用于生成该位置的光线追踪样本。例如,光线240与位置232相关联,光线242与位置230相关联,光线244与位置234相关联。
在一些实施例中,光线追踪器102投射光线的每个位置对应于相应像素。例如,位置(例如位置230、232和234)可以通过将像素的虚拟屏幕(例如,从z缓冲区)变换到世界空间来确定。虚拟屏幕可以表示虚拟环境200中的相机的视图,并且在一些实施例中,这些位置可以被称为像素或世界空间像素。在其他示例中,位置可能不具有与像素的这种一一对应关系。此外,在其他示例中,位置可以被确定为相应的眼睛光线(例如,从相机投射通过包括该像素的虚拟屏幕)与虚拟环境200交互的相应点和/或区域。
在各种实施例中,位置处的样本的准确度可能是有限的,因为每条光线可能仅提供该位置的部分信息。因此,使用有限数量的光线对虚拟环境200进行采样可能倾向于在图像中引起噪点,特别是对于虚拟环境200中的某些位置。为了说明前述示例,所示示例中使用的光线是用于在相对于虚拟环境200中的光源220的位置处对照明条件的一个或更多个方面进行采样的阴影光线。图像渲染系统100可以使用该信息,例如,基于位置的光照条件渲染图像中的阴影。在一些实施例中,光线从位置投射以对光源220处的随机或伪随机位置进行采样。光线追踪器102可以使用任何合适的方法进行光线追踪,例如随机光线追踪。可以使用的随机光线追踪技术的示例包括采用蒙特卡罗或准蒙特卡罗采样策略的那些。在所示示例中,光线追踪器102在(一个或更多个)光线追踪通道214中的每个位置和/或像素投射一条光线用于采样。在其他实施例中,可以为每个位置或像素投射不同数量的光线,对于某些位置或像素可以不投射光线,和/或可以为不同的位置或像素投射不同量的光线。
虽然仅示出了光源220,但是可以类似地相对于虚拟环境200中的其他光源和/或对象对位置处的照明条件进行采样,其可以与关于光源220导出的光线追踪样本组合。在一些示例中,可以分别确定和滤波不同光源的照明条件(例如,使用关于图1描述的滤波技术),并由图像组合器116组合(例如,作为到图像组合器116的另一个输入)。此外,在本示例中,当光线与虚拟环境200中的位置(例如,在光源220或遮挡物222处)交互时,不会从该位置投射额外的光线。然而,对于其他光线追踪效果或技术,可以从中投射出一条或更多条附加光线。
如图所示,一些光线(例如光线244)可以与光源220相互作用,导致光线追踪样本指示来自光源220的光可以照亮相应的位置。在一些实施例中,落入该类别的光线可以被分配1的可见度值以指示它们相对于光源220是可见的。其他光线,例如光线240和光线242可以与对象相互作用,导致光线追踪样本指示来自光源220的光至少部分地被阻挡和/或防止到达这些位置。这种对象的一个示例是遮挡物222,它可以阻挡光线到达光源220。在一些实施例中,落入该类别的光线可以被分配0的可见度值以指示它们相对于光源220不可见。由于可见度值可以假定两个潜在值之一,所以它可以对应于二进制信号。
位置230是可以在遮挡物222投射的阴影的半影内的位置的示例,并且可以通过组合从多条光线导出的光线追踪样本来更准确地计算照明条件。例如,仅使用光线242生成的位置230的光线追踪样本可以指示位置230被完全阻挡接收来自光源220的光。然而,使用另一光线生成的位置230的光线追踪样本可以指示位置230至少部分地被光源220照亮。
因此,限制用于生成位置样本的光线数量可能会导致噪声,从而导致由图像渲染系统100渲染的数据中的视觉伪影。图像滤波器114可用于实施去噪技术以减少噪声。在各种示例中,去噪技术可以包括图像滤波器114在空间和/或时间上滤波对应于来自光线追踪器102的光线追踪样本的照明条件数据。例如,图像滤波器114可以对来自光线追踪器102的照明条件数据应用一个或更多个空间滤波器通路和/或时间滤波器通路。
照明条件数据的时间滤波可以利用光线追踪的样本,这些样本可以类似于参照图2所描述的那些样本生成,但用于虚拟环境200的先前状态和/或先前输出帧。因此,时间滤波可增加用于确定像素的经滤波的照明条件数据的光线追踪样本的有效样本计数和/或可增加像素的经滤波的照明条件数据的时间稳定性。然而,由于时间光线追踪样本可能对应于虚拟环境200的不同状态,因此某些样本可能与虚拟环境200的当前状态无关或相关(例如,对象或相机可能会移动,光源可能会更改),当它们用于滤波时存在视觉伪影的风险。公开的实施例可以使用对应于时间光线追踪样本的值的变化来指导时间滤波,以便减少或消除这些潜在的伪影。
根据所公开的实施例,对应于时间光线追踪样本的值的方差(例如,每像素)可由方差确定器112使用包括分布的多个矩的方差的计算来确定。方差是指一组值分散多远的度量(例如,从平均值或其他参考值)。用于计算方差的分布的矩是指函数形状的定量度量(例如,方差函数)。组合的矩定义了值的方差。一组值i中的方差Var可以至少基于等式(1)确定:
Var(i)=μ1i–μ2i 2 (1)
其中μ1是一阶矩,μ2是二阶矩。一阶矩μ1对应于值的平均值,二阶矩μ2对应于值平方的平均值。
在某些情况下,一阶矩可用于计算二阶矩。例如,对于二进制信号,例如可见度,平均值可能等于均方。特别地,如上所述,二阶矩可以是值的平方的平均值。二进制信号可能具有0或1的值,当值的平方时该值不变。为了说明上述内容,假设一系列可见度值:1、0、1、1、0(例如,超过5帧的像素)。值的平均值(例如,一阶矩)是(1+0+1+1+0)/5=“0.6”。值的平方的平均值(例如,二阶矩)是(12+02+12+12+02)/5=“0.6”。因此,在计算方差时,一阶矩可以用作二阶矩。因此,可以使用等式(2)计算方差:
Var(i)=μ1i–μ1i 2 (2)
在值对应于非二进制信号的实施例中,可以使用类似的方法。例如,虽然不等价,但一阶矩可以足够接近二阶矩以用作二阶矩和/或二阶矩可以以其他方式从一阶矩导出或近似。在一些示例中,一阶矩可以是使用因子或公式进行调整以导出二阶矩。作为进一步的示例,当计算一阶矩时,这些值可以被四舍五入、分组或以其他方式修改,并且一阶矩可以用于导出二阶矩。例如,如果值介于0和1之间(或归一化为落在该范围内),则可以将这些值四舍五入为最接近的值(0或1),用于计算一阶矩。
如本文所述,时间矩累加器108可以在多个帧上计算和累加(使用矩历史管理器104)一阶矩(例如,平均值)。由于一阶矩可以用于导出二阶矩,因此可以通过仅累加用于导出其中一个矩的数据来节省带宽,然后可以使用该数据来定义分布的另一个矩。
对于时间滤波,时间矩累加器108可以在来自虚拟环境的任何数量的先前状态和/或帧的像素的光线追踪照明条件数据中累加方差的矩。矩历史管理器104可以将用于时间滤波的累加矩存储在矩历史缓冲器中,可以使用更新162针对每个渲染状态和/或帧更新所述累加矩。例如,在过程140的迭代中,时间矩累加器108可以向方差确定器112提供捕获矩的时间累加值的数据,方差确定器112可以至少基于该数据计算像素的方差值。在一些示例中,时间矩累加器108可以将像素的分布的矩的空间值与对应的矩的时间累加值合并,其可以由提供给方差确定器112的数据捕获。在任何示例中,更新162可以用更新的时间累加值替换当前存储的时间累加值以用于后续迭代(例如,状态或帧)。
同样对于时间滤波,时间样本累加器110可以累加来自虚拟环境的任何数量的先前状态和/或帧的像素的光线追踪照明条件数据的样本。样本历史管理器106可以将用于时间滤波的累加样本存储在样本历史缓冲器中,可以使用更新164针对每个渲染状态和/或帧更新该累加样本。例如,在过程140的迭代中,时间样本累加器110可以将捕获光线追踪样本的时间累加值的数据提供给图像滤波器114,以用于一次或更多次滤波器通路。在一些示例中,时间矩累加器108可以将样本的空间值与对应的时间累加样本合并,其可以由提供给图像滤波器114的数据捕获。在任何示例中,更新164可以用更新的时间累加值替换当前存储的时间累加值以用于后续迭代(例如,状态或帧)。
过程140示出并描述关于时间累加的某些方法的更新162和164。然而,在各种实施例中,可以使用预累加、后累加和/或循环时间累加来实现任一更新的时间累加(例如,用时间累加数据迭代累加帧噪声渲染数据,然后模糊累加数据生成输出,该输出被反馈以更新后续迭代的时间累加数据)。
在确定时间累加的样本和/或矩时,累加的样本和/或矩的数量可以例如以上限数(例如,从八到十六个样本和/或矩的任何地方)为上限。作为示例,对于每个像素,时间样本累加器110可以累加来自八个先前帧的多达八个光线追踪样本,从而将潜在有效样本计数增加八倍。因此,在每个渲染帧对应于每像素单个样本的情况下,时间样本累加器110可以将有效样本计数增加至每像素多达八个样本。(一个或更多个)上限数可保持恒定或可随时间变化,例如基于虚拟环境200的状态。此外,上限数对于样本和矩可以不同。
在各种示例中,缓冲器(例如,矩历史缓冲器和/或样本历史缓冲器)可以包括可以针对每个渲染的帧更新的值的滚动窗口(例如,达到上限数量的值)。在各种示例中,像素的数据值(例如,用于计算(一个或更多个)像素的方差)可以是虚拟环境200的当前状态的(一个或更多个)像素的数据值的聚合以及虚拟环境200的一个或更多个先前状态(例如,帧)的数据值。在确定像素的聚合数据值时,时间矩累加器108和/或时间矩累加器108可以对每个数据值进行加权。例如,每个数据值可以被同等地加权或者不同的数据值可以被分配不同的权重。在一些示例中,每个像素的历史数据值被累加在缓冲器中并且与像素的当前空间数据值组合以确定用于滤波的像素的聚合数据值。在各种示例中,可以使用指数移动平均来计算(一个或更多个)像素的聚合数据值。可以使用空间数据值与每次迭代的时间累加值的线性组合来计算指数移动平均数,从而产生指数组合。
连同时间整合的照明条件数据(例如,可见度数据)和时间整合的矩数据,图像渲染系统100可以保持(例如,在G缓冲器中)深度、对象或世界空间法线、网格标识符(ID)、从光栅化过程生成的屏幕空间运动矢量和/或其他信息(例如,空间信息)。图像渲染系统100还可以维持先前帧的深度、法线、网格ID和/或其他信息(例如,来自该帧的空间信息)。在各种示例中,时间矩累加器108和/或时间样本累加器110可以使用该信息中的任何一个来将样本和/或矩从一帧时间重新投影到另一帧(例如,跨帧映射像素)。在重投影失败的情况下,可以使用空间矩和/或样本数据。
图像滤波器114可以使用多种可能的滤波技术中的任一种来滤波数据。在一些示例中,图像滤波器114使用交叉(或联合)双边滤波器来执行滤波。交叉双边滤波器可以用附近像素的加权平均替换每个像素,使用考虑距离、方差和/或像素之间的其他差异的高斯分布权重来引导图像。边缘停止函数可用于使用G缓冲区属性识别公共表面,以提高交叉双边滤波器在输入噪声下的鲁棒性。
本文描述的各种滤波器和/或滤波器通道中的任何一个都可以使用滤波器内核来应用。滤波器还可具有一个或更多个滤波器方向。滤波器的滤波器内核可指定义用于处理图像(例如像素的数据值)的图像数据(和/或照明条件数据或渲染数据)的一个或更多个卷积的矩阵(例如,矩形阵列)以改变图像的一个或更多个特征,例如图像像素的阴影和/或颜色。在一些示例中,滤波器内核可以被应用为可分离滤波器。在将滤波器应用为可分离滤波器时,可以使用多个子矩阵或滤波器来表示矩阵,这些子矩阵或滤波器可以在多个通路中单独应用于图像数据。当确定或计算可分离滤波器的滤波器内核时,本公开设想子矩阵可以直接计算,或者可以从另一个矩阵导出。
滤波器内核的矩阵的每个元素可以对应于各自的像素位置。矩阵的像素位置之一可以表示初始像素位置,该位置对应于应用滤波器的像素并且可以位于矩阵的中心(例如,用于确定滤波器的位置)。例如,当将滤波器应用于对应于图2的位置232的像素时,像素可以定义初始像素位置。在应用一些滤波器时,可以在相对于像素确定的图像位置处使用其他像素的数据值(例如,可见度值)来确定滤波器内核覆盖区内像素的(一个或更多个)数据值。滤波器方向可以定义矩阵相对于沿滤波器宽度应用滤波器的图像和/或像素的对齐。因此,当将滤波器应用于像素时,可以使用(一个或更多个)滤波器方向和滤波器内核相对于初始像素位置来确定滤波器内核矩阵的其他像素位置的其他像素。
滤波器内核的矩阵的每个元素可以包括像素位置的滤波器权重。可以使用卷积将矩阵应用于图像,其中对应于矩阵的像素位置的图像的每个像素的数据值可以与对应于矩阵中的局部邻居的像素的数据值相加或以其他方式组合,如由滤波器值(也称为滤波器权重)加权。对于本文描述的一个或更多个滤波器,滤波器值可以被配置为模糊像素,例如通过将(一个或更多个)分布拟合到滤波器内核(例如,到宽度和高度)。
应用(一个或更多个)滤波器的数据值可以对应于像素的照明条件数据(例如,可见度数据)。因此,将滤波器内核的矩阵应用于像素可以使照明条件数据在对应于滤波器内核的像素位置的像素之间至少部分地共享。由于光线追踪中的稀疏采样照明条件,照明条件数据的共享可以减轻噪声。
在至少一个实施例中,可以至少部分地基于方差确定器112为(一个或更多个)像素计算的方差来引导对(一个或更多个)像素的滤波。例如,可以至少基于方差来确定由图像滤波器114应用的(一个或更多个)滤波器和/或滤波器通道的一个或更多个参数。在至少一个实施例中,一个或更多个参数定义了(一个或更多个)滤波器和/或滤波器通道的滤波器值的范围,并且图像滤波器114可以基于滤波器值的范围将时间光线追踪的样本与空间样本和/或其他渲染数据合并。在各种示例中,该范围可以定义(一个或更多个)像素的一组滤波器值并且可以基于(一个或更多个)像素的方差。例如,在对像素应用滤波器和/或滤波器通道时,图像滤波器114可以至少基于滤波器值集合在范围之外而从滤波中排除滤波器值的集合。
现在参考图3,图3是示出了根据本公开的一些实施例的可用于确定滤波器的滤波器值的范围的分布函数300的示例的图。分布函数300可用于定义(一个或更多个)滤波器的一个或更多个参数,并且在所示示例中对应于伯努利分布。例如,分布函数300可以对应于等式(2),其中i对应于二进制随机或伪随机(例如,猜测)信号。在各种示例中,分布函数300可以与所示出的不同,和/或可以从方差和/或等式(2)导出或以其他方式对应于方差和/或等式(2)。此外,在一些示例中,分布函数300可以对应于可以使用任意数量的矩定义的分布。
在一些示例中,在使用卷积将滤波器应用于初始像素位置时,如本文所述,图像滤波器114可以评估对应于矩阵中的局部相邻的像素的数据值,并且避免组合超出范围的数据值。附加地或替代地,该范围内的数据值可以使用卷积来组合。在一些示例中,一个或更多个数据值可以具有至少基于该范围的滤波权重。可以至少基于数据值与初始像素位置的数据值的距离来减小(或降低)相邻像素的数据值的滤波器权重。在任何示例中,该范围可以以初始像素位置的数据值为中心。在一些示例中,该范围内的数据值的滤波器权重可能不会基于落在该范围内而被修改,但可能会因其他原因而被修改。
在至少一个实施例中,滤波器和/或滤波器通路的一个或更多个参数可以至少部分地基于应用对应于到分布函数300的一阶矩和/或二阶矩(例如,方差变量)的一个或更多个变量的结果或解。例如,参照图3,方程(2)的解可以定义滤波器值的范围的一个或更多个范围或界限。例如,范围可以由数据值加上和减去分布函数300的解来定义。为了说明前述,当平均值(一阶矩)为0.5时,分布函数300的点310处的解可以是0.25。然后,图像滤波器114可以将范围定义为0.5+或–0.25,即从0.25到0.75,这意味着(一个或更多个)滤波器可以接受大多数数据值。在点312,只有1的数据值可以被(一个或更多个)滤波器接受。如点314所示,该范围可以朝着一阶矩的最大值和最小值减小(例如,随着方差从最大值减小)。
图3的示例特别适用于二进制信号,尤其是可见度信号。例如,点312可以对应于完全照亮(例如,没有阴影)的像素,使得时间光线追踪样本中没有变化。结果,可能需要仅接受与像素的数据值相同或接近的数据值以进行滤波。点314可以对应于与半影的暗区相关联的像素,其中仍然可能存在适度的差异。结果,可能需要接受与像素的数据值稍远的数据值以进行滤波。点310可对应于与半影的较亮区域相关联的像素,其中可能存在大量方差。因此,可能需要接受大部分或所有数据值进行滤波。
使用公开的方法可以保持接触硬化,因为靠近遮挡物的半影区域相对较小。例如,图4是示出了根据本公开的一些实施例的可以使用阴影去噪生成的虚拟环境200的帧400的示例的图。帧400可以对应于图1的输出图像120。可以看出,在靠近遮挡物的区域430和432中保持接触硬化。
跳过(一个或更多个)像素的空间滤波
根据本公开的进一步方面,可以至少部分地基于确定从与像素相关联的时间光线追踪样本计算的平均值、一阶矩和/或方差大于或等于第一阈值,和/或小于或等于第二阈值,并且值的计数超过第三阈值对于帧的像素跳过空间滤波像素。
例如,在方差小于或等于阈值(例如,零)并且值的计数超过第三阈值(例如,8个帧的样本)的情况下,对于像素跳过空间滤波,从而节省处理能力。在图3的示例中,方差为0,其中平均值为0或1。因此,在一些示例中,平均值可由图像滤波器114评估并且基于确定平均值大于或等于第一阈值(例如,1),和/或基于确定平均值小于或等于第二阈值(例如,0)跳过滤波。附加地或替代地,可以由图像滤波器114评估平均值并且可以至少基于确定平均值小于第一阈值(例如,1)和/或基于确定平均值大于第二阈值(例如,0)来执行滤波。
平均值是变量的一个示例,该变量可以被评估以确定是否跳过对像素的滤波。在其他示例中,可以关于一个或更多个阈值评估一个或更多个其他变量和/或可以关于一个或更多个阈值评估对应分布函数的解(例如,方差值)。虽然计数被描述为针对像素进行评估,通常,可以使用对应于和/或指示计数的任何变量和/或标准。在一些示例中,对应于分布函数和计数的解(例如,方差)的标准可以被合并到一个或更多个值中,这些值可以针对一个或更多个阈值进行评估。因此,在确定是否跳过对像素的滤波和/或是否对像素执行滤波时,可以有多种方法来考虑这些标准。
本方法可用于任何合适的光线追踪效果或技术,例如用于全局照明、环境遮挡、阴影、反射、折射、散射现象和色散现象。因此,例如,虽然在一些示例中,光线追踪样本可以对应于可见性样本,但在其他示例中,光线追踪样本可以对应于颜色亮度。此外,本方法可以在不同的渲染管线中实现,如图1所示,其可以或可以不使用图像组合器116来组合来自3D渲染器118的输出。
现在参考图5-7,方法500、600和700以及本文描述的其他方法的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器来执行。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。这些方法可以由独立应用程序、服务或托管服务(独立或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,通过示例的方式,关于图像渲染系统100(图1)描述了这些方法。然而,这些方法可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文描述的那些。
图5是示出了根据本公开的一些实施例的用于至少基于可见度值的平均值来定义滤波器值的范围的方法500的示例的流程图。方法500可以适用于图2-4的任何示例或其他示例。在框B502,方法500包括确定对应于时间光线追踪样本的值的平均值。例如,时间矩累加器108可以确定与虚拟环境200的多个渲染上的一个或更多个像素的可见度的时间光线追踪样本相对应的值的平均值。
在框B504,方法500包括至少基于将平均值应用于分布函数的一阶矩和二阶矩来定义滤波器值的范围,该分布函数随着值的方差减小而减小范围。例如,方差确定器112可以至少基于将平均值应用于分布函数的至少一阶矩和二阶矩来定义时空滤波器的滤波器值的范围,该分布函数随着值的方差减小而减小范围。在实施例中,分布函数可以对应于等式(2)和图3。
在框B506,方法500包括使用至少基于滤波器值的范围的滤波器将值与渲染合并。例如,图像滤波器114基于滤波器值的范围使用时空滤波器将对应于可见度的时间光线追踪样本的值与虚拟环境200的渲染结合。
现在参考图6,图6是示出了根据本公开的一些实施例的用于使用用于计算方差的分布的一阶矩来定义过滤光线追踪样本中的分布的二阶矩的方法600的示例的流程图。方法600可以应用于图2-4中的任一个的示例或其他示例。在框B602,方法600包括确定用于根据对应于时间光线追踪样本的值计算方差分布的分布的一阶矩。例如,时间矩累加器108可以确定对应于虚拟环境200的多个渲染上的一个或更多个像素的时间光线追踪样本的值的方差的一阶矩(例如,平均值)。
在框B604,方法600包括使用一阶矩计算分布的一阶矩和二阶矩的方差来定义二阶矩。例如,方差确定器112可以使用一阶矩从时间方差的一阶矩和二阶矩计算方差来定义二阶矩(例如,使用等式(2))。
在框B606,方法600包括至少基于计算的方差来确定滤波器的一个或更多个参数。例如,图像滤波器114可以至少基于方差来确定滤波器的一个或更多个参数。
在框B608,方法600包括使用滤波器将时间光线追踪样本与虚拟环境的渲染合并。例如,图像滤波器114可以使用应用于对应于一个或更多个像素的位置(例如,像素位置)处的渲染的滤波器将时间光线追踪样本与虚拟环境的渲染合并。
现在参考图7,图7是示出了根据本公开的一些实施例的用于滤波对应于二进制信号的光线追踪样本中将对应于分布的累加一阶矩的数据应用于分布的二阶矩的方法700的示例的流程图。方法700可以应用于图2-4中的任一个的示例或其他示例。在框B702,方法700包括累加对应于时间光线追踪样本的二进制值的数据。例如,时间矩累加器108可以在多个帧上累加对应于虚拟环境200的时间光线追踪样本的二进制值的数据。
在框B704,方法700包括将数据应用于方差计算中的分布的一阶矩和二阶矩。例如,方差确定器112可以在二进制值的方差的计算中将数据应用于分布的一阶矩和二阶矩。
在框B706,方法700包括使用至少基于二进制值的方差的滤波器将时间光线追踪样本与渲染合并。例如,图像滤波器114可以使用至少基于二进制值的方差而应用于渲染的滤波器将时间光线追踪样本与虚拟环境200的渲染合并。
示例计算设备
图8是适合用于实现本公开的一些实施例的示例计算设备800的框图。计算设备800可包括直接或间接耦合以下设备的互连系统802:存储器804、一个或更多个中央处理单元(CPU)806、一个或更多个图形处理单元(GPU)808、通信接口810、输入/输出(I/O)端口812、输入/输出组件814、电源816,一个或更多个呈现组件818(例如,(一个或更多个)显示器)和一个或更多个逻辑单元820。
尽管图8的各个框被示为经由具有线路的互连系统802连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件818可以被认为是I/O组件814(例如如果显示器为触摸屏)。作为另一个示例,CPU 806和/或GPU808可以包括存储器(例如,存储器804可以表示除了GPU 808、CPU 806和/或其他组件的存储器以外的存储设备)。换言之,图8的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图8的计算设备的范围内。
互连系统802可以表示一条或更多条链路或总线,例如地址总线、数据总线、控制总线或者其组合。互连系统802可以包括一种或更多种总线或链路类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连快速(PCIe)总线,和/或另一种类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,CPU806可直接连接到存储器804。进一步,CPU806可直接连接到GPU808。在组件之间存在直接或点对点连接的情况下,互连系统802可以包括PCIe链路以执行连接。在这些示例中,PCI总线不需要被包括在计算设备800中。
存储器804可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备800访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器804可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备800访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包括计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
CPU 806可以被配置为执行至少一些计算机可读指令以便控制计算设备800的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU 806中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。CPU 806可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备800的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备800的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备800还可以包括一个或更多个CPU 806。
除了CPU 806之外或替代CPU 806,GPU 808可以被配置成用于执行至少一些计算机可读指令以控制计算设备800的一个或更多个组件执行在此描述的方法和/或过程中的一个或更多个。GPU 808中的一个或更多个可为集成GPU(例如,与CPU 806中的一个或更多 个和/或GPU 808中的一个或更多个可为离散GPU)。在实施例中,GPU 808中的一个或更多个可以是CPU 806中的一个或更多个的协处理器。GPU 808可以由计算设备800用来渲染图形(例如3D图形)或者执行通用计算。例如,GPU 808可用于GPU上的通用计算(GPGPU)。GPU 808可以包括能够同时处理数百或数千个软件线程的数百或数千个核。GPU 808可以响应于渲染命令(例如经由主机接口接收的来自CPU 806的渲染命令)而生成用于输出图像的像素数据。GPU 808可以包括诸如显示存储器之类的用于存储像素数据或任何其他合适的数据(诸如GPGPU数据)的图形存储器。显示存储器可以作为存储器804的部分而被包括。GPU 808可以包括(例如经由链路)并行操作的两个或更多GPU。链路可以直接连接GPU(例如,使用NVLINK)或可以通过交换机(例如,使用NVSwitch)连接GPU。当组合在一起时,每个GPU 808可以生成用于输出的不同部分或者用于不同输出的像素数据或GPGPU数据(例如,第一GPU用于第一图像,第二GPU用于第二图像)。每个GPU可以包括它自己的存储器,或者可以与其他GPU共享存储器。
除了CPU 806和/或GPU 808之外或替代CPU 806和/或GPU 808,(一个或更多个)逻辑单元820可以被配置成用于执行计算机可读指令中的至少一些计算机可读指令以控制计算设备800的一个或更多个部件执行在此描述的方法和/或过程中的一个或更多个。在实施例中,(一个或更多个)CPU 806、(一个或更多个)GPU 808和/或(一个或更多个)逻辑单元820可以离散地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元820中的一个或更多个可为CPU806和/或GPU808中的一个或更多个和/或集成在CPU806和/或GPU808中的一个或更多个,和/或逻辑单元820中的一个或更多个可为离散组件或以其他方式在CPU806和/或GPU808外部。在实施例中,逻辑单元820中的一个或更多个可以是CPU 806中的一个或更多个CPU和/或GPU 808中的一个或更多个GPU的协处理器。
逻辑单元820的示例包括一个或更多个处理核和/或其部件,诸如张量核(TC)、张量处理单元(TPU)、像素视觉核(PVC)、视觉处理单元(VPU),图形处理群集(GPC)、纹理处理群集(TPC)、流多处理器(SM)、树横向单元(TTU),人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC),浮点单元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或快速外围组件互连(PCIe)元件,和/或类似物。
通信接口810可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备800能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口810可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网或无限带宽通信)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
I/O端口812可以使得计算设备800能够逻辑地耦合到包括I/O组件814、呈现组件818和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备800中。说明性I/O组件814包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O组件814可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些示例中,输入可以传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛追踪以及与计算设备800的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备800可以包括诸如立体相机系统之类的深度相机、红外相机系统、RGB相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备800可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备800用来渲染沉浸式增强现实或者虚拟现实。
电源816可以包括硬接线电源、电池电源或者其组合。电源816可以向计算设备800供电以使得计算设备800的组件能够操作。
呈现组件818可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件818可以接收来自其他组件(例如GPU 808、CPU 806等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
示例网络环境
适合于在实现本公开的实施例中使用的网络环境可以包括一个或更多个客户端设备、服务器、网络附接存储(NAS)、其他后端装置、和/或其他装置类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图8的(一个或更多个)计算设备800的一个或更多个实例上实现——例如,每个设备可以包括(一个或更多个)计算设备800的类似部件、特征和/或功能。
网络环境的组件可以经由(一个或更多个)网络彼此通信,所述网络可以是有线的、无线的或两者。网络可以包括多个网络或多个网络中的一个网络。例如,网络可包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络诸如互联网和/或公共交换电话网(PSTN)和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他组件)的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可以不包括在网络环境中)和一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可以包括在网络环境中)。在对等网络环境中,本文相对于服务器所描述的功能可在任何数量的客户端设备上实现。
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可包括框架层、工作调度器、资源管理器和在一个或更多个服务器上实现的分布式文件系统,所述服务器可包括一个或更多个核心网服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用的框架。所述软件或应用程序可分别包括基于网络的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用(例如,通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用)。框架层可以是但不限于自由和开源软件网络应用框架的类型,诸如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
基于云的网络环境可以提供执行在此描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任何功能可以分布在来自(例如,可以分布在州、地区、国家、地球等上的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果与用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
客户端设备可以包括在此关于图8描述的(一个或更多个)示例计算设备800的部件、特征和功能中的至少一些部件、特征和功能。作为示例而非限制,客户机设备可被实现为个人计算机(PC),膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机,个人数字助理(PDA)、MP3播放器、虚拟现实耳机、全球定位系统(GPS)或装置,视频播放器、相机、监视设备或系统、车辆、船,飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备,游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器,遥控器、电器、消费电子设备、工作站、边缘设备、这些描绘的设备的任何组合,或任何其他合适的装置。
示例数据中心
图9示出了可以在其中至少一个实施例中使用的示例数据中心900。在至少一个实施例中,数据中心900可包括数据中心基础设施层910、框架层920、软件层930和/或应用层940。
在至少一个实施例中,如图9所示,数据中心基础设施层910可以包括资源协调器912、分组的计算资源914和节点计算资源(“节点C.R.”)916(1)-916(N),其中“N”代表任何完整的正整数。在至少一个实施例中,节点C.R.916(1)-916(N)可以包括但不限于任何数量的中央处理单元(CPU)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器等),存储器设备(例如动态只读存储器),存储设备(例如固态硬盘或磁盘驱动器),网络输入/输出(NW I/O)设备,网络交换机,虚拟机(VM),电源模块和/或冷却模块等。在至少一个实施例中,节点C.R.916(1)-916(N)中的一个或更多个节点C.R.可以是具有一个或更多个上述计算资源的服务器。
在至少一个实施例中,分组的计算资源914可以包括容纳在一个或更多个机架内的节点C.R.的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组的计算资源914内的节点C.R.的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、存储器或存储资源。在至少一个实施例中,可以将包括CPU、GPU和/或其他处理器的几个节点C.R.916分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。在至少一个实施例中,一个或更多个机架还可以包括任何数量的电源模块、冷却模块和网络交换机,以任意组合。
在至少一个实施例中,资源协调器922可以配置或以其他方式控制一个或更多个节点C.R.916(1)-916(N)和/或分组的计算资源914。在至少一个实施例中,资源协调器922可以包括用于数据中心900的软件设计基础结构(“SDI”)管理实体。在至少一个实施例中,资源协调器可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图9所示,框架层920可以包括作业调度器932、配置管理器934、资源管理器936和分布式文件系统938。在至少一个实施例中,框架层920可以包括支持软件层930的软件932和/或应用程序层940的一个或更多个应用程序942的框架。在至少一个实施例中,软件932或应用程序942可以分别包括基于网络的服务软件或应用程序,例如由Amazon Web Services,Google Cloud和Microsoft Azure提供的服务或应用程序。在至少一个实施例中,框架层920可以是但不限于一种免费和开放源软件网络应用框架,例如可以利用分布式文件系统938来进行大范围数据处理(例如“大数据”)的Apache SparkTM(以下称为“Spark”)。在至少一个实施例中,作业调度器932可以包括Spark驱动器,以促进对数据中心900的各个层所支持的工作负载进行调度。在至少一个实施例中,配置管理器934可以能够配置不同的层,例如软件层930和包括Spark和用于支持大规模数据处理的分布式文件系统938的框架层920。在至少一个实施例中,资源管理器936能够管理映射到或分配用于支持分布式文件系统938和作业调度器932的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层910上的分组的计算资源914。在至少一个实施例中,资源管理器936可以与资源协调器912协调以管理这些映射的或分配的计算资源。
在至少一个实施例中,包括在软件层930中的软件932可以包括由节点C.R.916(1)-916(N)的至少一部分,分组计算资源914和/或框架层920的分布式文件系统938使用的软件。一种或更多种类型的软件可以包括但不限于Internet网页搜索软件、电子邮件病毒扫描软件、数据库软件和流视频内容软件。
在至少一个实施例中,应用层940中包括的一个或更多个应用程序942可以包括由节点C.R.916(1)-916(N)的至少一部分、分组的计算资源914和/或框架层920的分布式文件系统938使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序,认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如PyTorch、TensorFlow、Caffe等)或其他与一个或更多个实施例结合使用的机器学习应用程序。
在至少一个实施例中,配置管理器934、资源管理器936和资源协调器912中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。在至少一个实施例中,自我修改动作可以减轻数据中心900的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或执行差的部分。
在至少一个实施例中,数据中心900可以包括工具、服务、软件或其他资源,以根据本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,在至少一个实施例中,可以通过使用上文关于数据中心900描述的软件和计算资源,根据神经网络架构通过计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心900所描述的资源,使用对应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息。
可以在计算机代码或机器可用指令的一般上下文中描述本公开,包括由计算机或其他机器(如个人数据助理或其他手持式装置)执行的计算机可执行指令(如程序模块)。通常,包括例程、程序、对象、组件、数据结构等的程序模块是指执行特定任务或实现特定抽象数据类型的代码。本公开可以在各种系统配置中实践,包括手持式设备、消费电子产品、通用计算机、更专用计算设备等。本公开还可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。
如在此使用的,关于两个或更多个元件的“和/或”的叙述应被解释为仅意指一个元件或元件的组合。例如,“元件A、元件B和/或元件C”可以包括仅元件A、仅元件B、仅元件C、元件A和元件B、元件A和元件C、元件B和元件C、或元件A、B和C。此外,“元素A或元素B中的至少一个”可以包括元素A中的至少一个、元素B中的至少一个、或者元素A和元素B中的至少一个中的至少一个。进一步地,“元件A和元件B中的至少一个”可以包括元件A中的至少一个、元件B中的至少一个、或者元件A和元件B中的至少一个中的至少一个。
在此具体描述本公开的主题以满足法定要求。然而,该描述本身并不旨在限制本公开的范围。而是,发明人已预期,结合其他当前或未来技术,所主张的标的物还可用其他方式来体现,以包括类似于本文档中所描述的步骤的不同步骤或步骤的组合。此外,尽管术语“步骤”和/或“框”在此可以用于暗示所采用的方法的不同元素,但是这些术语不应被解释为暗示在此公开的各个步骤之中或之间的任何特定顺序,除非并且除了当明确描述单独步骤的顺序时。

Claims (23)

1.一种计算机实现的方法,包括:
确定与虚拟环境的多个渲染上的一个或更多个像素的可见度的时间光线追踪样本相对应的值的平均值;
至少基于将所述平均值应用于分布函数的一阶矩和二阶矩来定义时空滤波器的滤波器值的范围,其中所述分布函数随着所述值的方差减小而减小所述范围;以及
基于所述滤波器值的所述范围使用所述时空滤波器将对应于可见度的所述时间光线追踪样本的所述值与所述虚拟环境的渲染合并。
2.如权利要求1所述的方法,其中将所述平均值应用于所述分布函数的所述一阶矩和所述二阶矩来计算所述方差。
3.如权利要求1所述的方法,其中滤波器值的所述范围是根据所述方差确定的。
4.如权利要求1所述的方法,其中将所述时间光线追踪样本与所述渲染合并包括基于所述滤波器值的集合在滤波器值的所述范围之外而排除所述滤波器值的集合。
5.如权利要求1所述的方法,其中所述第一分布函数对应于伯努利分布。
6.如权利要求1所述的方法,其中所述确定所述平均值包括在所述多个渲染上将对应于所述平均值的数据累加到缓冲器,并且使用来自所述缓冲器的数据将所述平均值应用于所述分布函数。
7.如权利要求1所述的方法,其中当所述平均值处于最大值或最小值时,所述范围处于最小值。
8.如权利要求1所述的方法,其中所述使用所述时空滤波器至少基于确定所述平均值大于或等于第一阈值,并且所述值的计数超过第三阈值。
9.如权利要求1所述的方法,其中所述使用所述时空滤波器至少基于确定所述平均值小于或等于第二阈值,并且所述值的计数超过第三阈值。
10.一种计算机实现的方法,包括:
根据与虚拟环境的多个渲染上的一个或更多个像素的时间光线追踪样本相对应的值来确定分布的一阶矩;
根据所述分布的一阶矩和二阶矩计算方差,所述分布使用所述一阶矩来定义所述二阶矩;
至少基于所述方差确定滤波器的一个或更多个参数;以及
在对应于所述一个或更多个像素的位置处,使用应用于所述渲染的所述滤波器将所述时间光线追踪样本与所述虚拟环境的渲染合并。
11.如权利要求10所述的方法,其中所述时间光线追踪样本对应于所述一个或更多个像素相对于所述虚拟环境中的一个或更多个光源的可见度。
12.如权利要求10所述的方法,其中所述值对应于二进制信号。
13.如权利要求10所述的方法,其中所述一阶矩包括所述值的平均值并且所述二阶矩包括所述值的平方的平均值。
14.如权利要求10所述的方法,还包括在所述多个渲染上将所述一阶矩累加到缓冲器,其中所述确定所述一阶矩包括基于对应于所述一个或更多个像素的位置从所述缓冲器检索所述一阶矩。
15.如权利要求10所述的方法,其中所述时间光线追踪样本对应于所述一个或更多个像素相对于所述虚拟环境的环境遮挡。
16.如权利要求10所述的方法,其中所述一个或更多个参数定义所述滤波器的滤波器值的范围以及基于所述滤波器值的所述范围使用所述滤波器将所述时间光线追踪样本与所述渲染合并。
17.一种计算机实现的方法,包括:
在多个帧上将对应于虚拟环境的时间光线追踪样本的二进制值的数据累加;
在所述二进制值的方差的计算中将所述数据应用于分布的一阶矩和二阶矩;以及
至少基于所述二进制值的方差使用应用于所述渲染的滤波器,将所述时间光线追踪样本与所述虚拟环境的渲染合并。
18.如权利要求17所述的方法,其中所述时间光线追踪样本对应于一个或更多个像素相对于所述虚拟环境中的一个或更多个光源的可见度。
19.如权利要求17所述的方法,其中将所述数据应用于所述二阶矩包括根据所述一阶矩计算所述二阶矩。
20.如权利要求17所述的方法,其中将所述时间光线追踪样本与所述渲染合并还包括基于所述计算确定所述滤波器的滤波器值的范围,并且基于所述滤波器值的所述范围使用所述滤波器将所述时间光线追踪样本与所述渲染合并。
21.如权利要求17所述的方法,还包括针对与所述多个帧相关联的一个或更多个像素中的每个像素使用至少一个阴影光线来生成所述时间光线追踪样本。
22.如权利要求17所述的方法,其中所述一阶矩对应于平均值,而所述二阶矩对应于均方。
23.如权利要求17所述的方法,其中所述虚拟环境由以下至少一项生成:
用于执行模拟操作的系统;
用于执行模拟操作以测试或验证自主机器应用程序的系统;
用于执行深度学习操作的系统;
使用边缘设备实现的系统;
合并一个或更多个虚拟机VM的系统;
至少部分地在数据中心中实现的系统;或
至少部分地使用云计算资源实现的系统。
CN202111035686.4A 2020-09-04 2021-09-03 光线追踪应用中的时空自引导阴影去噪 Pending CN114140335A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/013,029 US11600036B2 (en) 2020-09-04 2020-09-04 Spatiotemporal self-guided shadow denoising in ray-tracing applications
US17/013,029 2020-09-04

Publications (1)

Publication Number Publication Date
CN114140335A true CN114140335A (zh) 2022-03-04

Family

ID=80266888

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111035686.4A Pending CN114140335A (zh) 2020-09-04 2021-09-03 光线追踪应用中的时空自引导阴影去噪

Country Status (3)

Country Link
US (2) US11600036B2 (zh)
CN (1) CN114140335A (zh)
DE (1) DE102021122715A1 (zh)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7822286B2 (en) * 2003-11-07 2010-10-26 Mitsubishi Electric Research Laboratories, Inc. Filtering artifacts in images with 3D spatio-temporal fuzzy filters
US8279345B2 (en) * 2009-07-21 2012-10-02 Qualcomm Incorporated System and method for random noise estimation in a sequence of images
WO2013165621A1 (en) * 2012-05-04 2013-11-07 Sunfish Studio, Llc Image-generated system using beta distribution to provide accurate shadow mapping
US20160098820A1 (en) * 2014-10-03 2016-04-07 Raghu Kopalle System for robust denoising of images
US10832374B2 (en) * 2015-01-16 2020-11-10 Disney Enterprises, Inc. Image decomposition and path-space motion estimation
US11113800B2 (en) * 2017-01-18 2021-09-07 Nvidia Corporation Filtering image data using a neural network
US10127392B1 (en) * 2017-08-30 2018-11-13 Go Ghost, LLC Secure rendering system that generates ray tracing samples with obfuscated position data
US10460509B2 (en) * 2017-11-07 2019-10-29 Dolby Laboratories Licensing Corporation Parameterizing 3D scenes for volumetric viewing
US10740954B2 (en) * 2018-03-17 2020-08-11 Nvidia Corporation Shadow denoising in ray-tracing applications

Also Published As

Publication number Publication date
US20230215078A1 (en) 2023-07-06
US11600036B2 (en) 2023-03-07
US20220076481A1 (en) 2022-03-10
DE102021122715A1 (de) 2022-03-10

Similar Documents

Publication Publication Date Title
US11790594B2 (en) Ray-tracing with irradiance caches
US11244493B2 (en) Global illumination using shared lighting contributions for interactions in path tracing
US11508113B2 (en) Denoising techniques suitable for recurrent blurs
US11688042B2 (en) Filtering render data using multiple iterations for a filter direction
US20220005257A1 (en) Adaptive ray tracing suitable for shadow rendering
CN114663572A (zh) 实时射线追踪应用中使用空间散列的光重要性高速缓存
US20230351555A1 (en) Using intrinsic functions for shadow denoising in ray tracing applications
CN114100118A (zh) 基于网络状况的动态图像平滑
US11836844B2 (en) Motion vector optimization for multiple refractive and reflective interfaces
US11600036B2 (en) Spatiotemporal self-guided shadow denoising in ray-tracing applications
WO2022251619A1 (en) Hybrid differentiable rendering for light transport simulation systems and applications
US11308684B2 (en) Ray-tracing for auto exposure
US20240054657A1 (en) Frame rate up-conversion using optical flow
CN115767091A (zh) 使用神经网络进行基于熵的预滤波用于流式传输应用
CN114910450A (zh) 使用粒子密度进行光传输模拟的部分可见度估计

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