一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于光线追踪应用中的循环模糊的去噪技术的制作方法

2022-04-30 18:31:56 来源:中国专利 TAG:

用于光线追踪应用中的循环模糊的去噪技术


背景技术:

1.光线追踪可用于通过追踪虚拟环境中的光路并模拟光与虚拟对象的相遇的效果来渲染图像。光线追踪技术的各个应用可以模拟各种光学效应——诸如阴影、反射和折射、散射现象、环境遮挡、全局照明和色散现象(诸如色差)。光线追踪典型地涉及通过在虚拟环境中将光线投射到像素的样本光照条件来生成光线追踪样本(ray-traced sample)。光线追踪样本可以被组合并且用于确定图像的像素颜色。为了节省计算资源,光照条件可以被稀疏地采样,从而导致有噪声的渲染数据。为了产生近似完全采样场景的渲染的最终渲染,可将去噪声滤波器应用于有噪声的渲染数据以减少噪声,且可使用时间累积来通过利用来自先前帧的信息增加有效样本计数。
2.涉及时间累积的去噪策略通常使用后累积或预累积。在后累积中,有噪声的渲染数据的帧首先被模糊,接着与先前被模糊的类似的模糊帧一起被时间上累积。在预累积中,有噪声的渲染数据的帧首先被时间上累积,然后时间上累积的数据被模糊。在任一情况下,由于低频和高频输入不在模糊中被混合,所以可能导致伪影。循环模糊可以用于通过将有噪声的渲染数据的帧与时间上累积的数据迭代地累积来混合低频和高频输入,然后模糊该累积的数据以生成输出,该输出被往回反馈以为后续迭代更新时间上累积的数据。然而,由于循环模糊往回反馈接下来用于模糊的模糊输出,所以该方法可能易于过度模糊。


技术实现要素:

3.本公开涉及用于光线追踪应用中的循环模糊的去噪技术。更具体来说,本公开涉及可用于改进光线追踪渲染的去噪(例如,采用循环模糊的去噪)的各种方法。可将各种所公开的概念并入到利用时间累积的模糊中。
4.与传统系统相比,本公开可提供循环模糊以便对虚拟环境的帧进行渲染,其中像素的至少一个去噪滤波器的半径(或更一般地,尺寸或大小)至少基于对应于该像素的成功累积的帧或样本的数量。可以使用分层方法来解释相对于像素对时间上累积的样本的拒绝,其中可以使用来自光线追踪渲染的较低分辨率版本的光线追踪样本来增加有效样本计数,而不是仅使用来自该像素的光线追踪渲染的光线追踪样本。视差可用于控制像素的时间累积的累积速度以及对应于该像素的视图向量之间的角度,以考虑如何在不同视角处在视觉上感知视差。
5.不是将去噪滤波器应用于在世界空间中实际上各向同性的像素,而是滤波器的一个或更多个尺寸的量值可至少基于对应于像素的视图向量的角度来致使反射在掠射角下沿着轴伸长,从而产生更逼真的渲染。尺寸可至少基于与视图向量相关联的镜面反射波瓣的方向(例如,主导方向)和对应的表面法线。
附图说明
6.以下参考附图详细描述用于适于循环模糊的去噪技术的本系统和方法,其中:
7.图1是示出了根据本公开的至少一个实施例的用于至少基于累积的样本确定一个
或更多个滤波器参数的示例过程的数据流程图;
8.图2a示出了根据本公开的至少一个实施例的可以在累积的两个帧之后使用图1的示例过程生成的虚拟环境的示例渲染;
9.图2b示出了根据本公开的至少一个实施例的可以在累积的三十二帧之后使用图1的示例过程生成的虚拟环境的示例渲染;
10.图3是示出了根据本公开的至少一个实施例的用于至少基于虚拟环境的渲染的帧的数量来确定滤波器的一个或更多个参数的方法的示例的流程图;
11.图4是示出了根据本公开的至少一个实施例的用于至少基于虚拟环境的与累积的样本相对应的渲染的数量来迭代地确定滤波器的一个或更多个参数的方法的示例的流程图;
12.图5是示出了根据本公开的至少一个实施例的用于至少基于虚拟环境的与累积的渲染的至少一个样本相对应的渲染的数量来确定滤波器的一个或更多个参数的方法的示例的流程图;
13.图6a是示出了根据本公开的至少一个实施例的用于使用循环模糊进行去噪的示例过程的流程图,该示例过程包括至少基于虚拟环境的与累积的渲染中的光线追踪样本相对应的渲染的数量来生成经增强的样本;
14.图6b是示出了根据本公开的至少一个实施例的用于使用预累积进行去噪的示例过程的流程图,该示例过程包括至少基于虚拟环境的与累积的渲染中的光线追踪样本相对应的渲染的数量来生成经增强的样本;
15.图7a示出了根据本公开的至少一个实施例的虚拟环境在不同mip级别的渲染的示例;
16.图7b示出了根据本公开的至少一个实施例的mipmap级别和在相邻mipmap级别之间的对齐的示例;
17.图8a示出了根据本公开的至少一个实施例的可以在无需增强累积的样本的情况下生成的虚拟环境的示例渲染;
18.图8b示出了根据本公开的至少一个实施例的可使用增强累积的样本生成的虚拟环境的示例渲染;
19.图9是示出了根据本公开的至少一个实施例的用于至少基于与虚拟环境的累积的渲染中的虚拟环境的光线追踪样本相对应的渲染的数量来增强累积的渲染的方法的示例的流程图;
20.图10是示出了根据本公开的至少一个实施例的用于至少基于与虚拟环境的至少一个光线追踪样本相对应的渲染的数量来迭代地增强累积的样本集合的方法的示例的流程图;
21.图11是示出了根据本公开的至少一个实施例的用于至少基于与虚拟环境的累积的渲染中的像素相对应的渲染的数量来增强累积的渲染的方法的示例的流程图;
22.图12是示出了根据本公开的至少一个实施例的用于对虚拟环境的渲染进行去噪的示例过程的数据流程图;
23.图13a是示出了根据本公开的至少一个实施例的确定用于镜面反射的模糊平面的示例的示图;
24.图13b是示出了根据本公开的至少一个实施例的确定用于漫射信号的模糊平面的示例的图示;
25.图14a是示出了根据本公开的至少一个实施例的确定用于对光线追踪样本进行去噪的模糊平面的示例的示图;
26.图14b是示出了根据本公开的至少一个实施例的确定用于对光线追踪样本进行去噪的各向异性滤波器的示例的图示;
27.图15是示出了根据本公开的至少一个实施例的用于至少基于反射的镜面波瓣的方向、法线以及视图向量的角度来计算滤波器的尺寸的方法的示例的流程图;
28.图16是示出了根据本公开的至少一个实施例的用于至少基于至少基于视图向量的角度延伸各向同性滤波器来确定各向异性滤波器的方法的示例的流程图;
29.图17是示出了根据本公开的至少一个实施例的用于至少基于反射的镜面波瓣的方向、法线和与相互作用相关联的光线的角度来计算滤波器的尺寸的方法的示例的流程图;
30.图18示出了根据本公开的至少一个实施例的具有可用于计算视差的视图向量的虚拟环境的示例渲染;
31.图19是示出了根据本公开的至少一个实施例的用于至少基于视图向量之间的角度和与视图向量相关联的视角计算累积速度的方法的示例的流程图;
32.图20是示出了根据本公开的至少一个实施例的用于使用累积速度来累积光线追踪渲染的方法的示例的流程图,该累积速度至少基于视图与由光线追踪渲染捕获的视角之间的视差;
33.图21是示出了根据本公开的至少一个实施例的用于至少基于渲染和与一个或更多个渲染相关联的视角之间的视差计算累积速度的方法的示例的流程图;
34.图22是根据本公开的一些实施例的用于示出光线追踪技术的示例的图,这些光线追踪技术可以用于生成光线追踪渲染;
35.图23是适合用于实现本公开的一些实施例的示例计算设备的框图;以及
36.图24是适合用于实现本公开的一些实施例的示例数据中心的框图。
具体实施方式
37.公开了与适于循环模糊的去噪技术有关的系统和方法。本公开提供可单独或以其任何组合使用的各种去噪技术。可将各种所公开的概念并入到利用时间累积的模糊中。
38.本公开的方面可提供循环模糊以便对虚拟环境的帧进行渲染,其中像素的至少一个去噪滤波器的半径(或更一般地,尺寸或大小)至少基于对应于所述像素的成功累积的帧的数量(例如,历史缓冲区中的时间上累积的样本)。例如,成功累积的帧的数量可每像素追踪,且可用来控制或调整被应用于那些像素的去噪滤波器的模糊尺寸(例如,在一个或更多个空间滤波传递中)。这些方法可用于随着与那些像素相关联的累积的样本或帧的数量的增加而减小像素的去噪滤波器的大小,从而减少或防止过度模糊。
39.本公开的方面还可提供一种分层方法,用于解释相对于像素对时间上累积的样本的拒绝。典型地,当像素的时间上累积的样本被拒绝时(例如,由于在光线追踪中对该像素的去遮挡),该像素的时间累积被重置。由此,当重新累积时间数据时,针对帧的数量可以减
少像素的有效样本计数。这可导致渲染的帧中的伪影,特别是当用于对像素的虚拟环境进行采样的每像素的光线的数量低时。
40.所公开的方法可至少基于对应于像素的成功累积帧、渲染和/或样本的数量来补充用于对该像素的虚拟环境进行采样的每像素的有效光线数量。例如,在去噪管线中,可以使用来自光线追踪渲染的较低分辨率版本的光线追踪样本,而不是仅使用来自该像素的光线追踪渲染的光线追踪样本。在不同实施例中,分辨率等级(例如,mipmap级别)可以至少基于成功累积的帧的数量,并且可以随着成功累积的帧的数量而增加(例如,直到达到光线追踪渲染的基本分辨率)。例如,可以每像素追踪成功累积的帧的数量,并且可以使用该成功累积的帧的数量来控制或调整光线追踪渲染的分辨率,该光线追踪渲染与那些像素的时间上累积的数据组合或代替这些像素的时间上累积的数据(例如,在一个或更多个空间滤波传递之前或之后)使用。此方法可结合循环模糊使用,循环模糊可至少基于或可不至少基于成功累积的帧的数量调整去噪滤波器大小。还预期可使用例如后累积或预累积之类的其他去噪策略来实现这些方法。
41.本公开的方面还可提供用于在对光线追踪渲染进行去噪时计算应用于像素的各向异性去噪滤波器(例如,滤波器内核)的一个或更多个尺寸的方法。例如,不是将去噪声滤波器应用于在世界空间中实际上各向同性的像素,而是滤波器的一个或更多个尺寸的量值可至少基于对应于该像素的视图向量的角度。这可以用于使反射在掠射角下沿着轴延长,从而产生更逼真的渲染。本公开提供了计算各向异性滤波器内核,该各向异性滤波器内核可以被延长,使得滤波器内核的大小沿着第一轴比沿着第二轴延伸得更远,以更紧密地反映brdf波瓣在虚拟环境中的占用空间。在各个示例中,一个或更多个尺寸还可以至少基于与视图向量相关联的反射的镜面波瓣的方向(例如,主导方向)和对应的表面法线。这些方法可以结合循环模糊、后累积、预累积和/或可能不一定包括时间累积的其他去噪策略来使用。
42.本公开的方面还可提供使用帧或渲染之间的视差来控制时间累积的累积速度(例如,用于镜面累积)。例如,表面运动可用于将镜面历史纹理从先前帧或渲染重新投影到后续(例如,当前)帧或渲染。然而,当光从表面反射离开时,反射的运动可不同于该表面运动,且因此仅使用表面运动可导致所渲染的帧中的伪影。像素的表面运动的准确性可至少部分基于帧之间的视差,且因此可用以控制时间累积中的表面运动的影响。
43.在各个实施例中,用于计算像素的累积速度的视差可以至少基于对应于像素的视图向量之间的角度。例如,视差可对应于同一表面点的先前视图向量与当前视图向量之间的角度。在至少一个实施例中,像素的视差可被计算为渲染或帧之间的一个或更多个点到屏幕平面的的相机移动投影与到一个或更多个点的距离之间的比。累积速度还可以至少基于与光线追踪渲染的视图向量相关联的视角,这可以考虑视差如何在不同视角处被视觉上感知。这些方法可以结合循环模糊、后累积、预累积和/或其他去噪策略使用。
44.所公开的方法可例如使用接受辐射(例如,仅辐射和/或除其他信息之外还有辐射)的去噪器来实现。根据各个实施例,漫射和镜面信号可分离或可不分离。例如,辐射或来自特定方向的能量可以从材料中分离出来。在一些实施例中,像素的最终颜色可以至少基于应用于包括光特性的基于物理的光模型的辐射的相乘或其他组合(例如,在去噪之后)。作为示例,对于漫射辐射,最终颜色可以至少基于辐射乘以反射率,该反射率基本上可以表
示基本颜色。虽然所公开的方法可与镜面辐射及漫射辐射两者兼容,但一些实施例可经调整以使得其仅适应镜面辐射或漫射辐射。
45.所公开的方法可以使用用于光线追踪的任何合适的方法(诸如随机光线追踪)来生成光线追踪样本(例如,辐射的光线追踪样本)。可以使用的随机光线追踪技术的示例包括采用蒙特卡罗(monte carlo)或准蒙特卡罗采样策略的那些。所公开的方法可考虑例如由不同类型的表面(例如光泽表面)投射的表面反射等性质。为此,可以采用正态分布函数(ndf)。本文所述的ndf的非限制性示例是ggx ndf,但可采用其他类型的ndf。
46.虽然本公开涉及表面的某点处的粗糙度值,但是可使用任何合适的方法来限定表面粗糙度,任何合适的方法可包括使用一个或更多个粗糙度值。例如,在ndf捕获ggx分布的情况下,可使用单个粗糙度值。然而,本文所提供的示例可以根据需要适用于其他微平面分布模型。在各个示例中,本公开可以与ggx、beckman、blinn-phong或其他类型的ndf分布一起使用,这些ndf分布还可以包括非标准分布。在限定多个粗糙度值的情况下,可以如本文所述通过组合和/或分析粗糙度值来确定并使用单个粗糙度值,可以使用粗糙度值中的一个,或者可以其他方式适当地适配那些方法。
47.所公开的系统可以包括或被包括在以下各项中的一项或更多项中:用于执行模拟操作的系统、用于执行模拟操作以测试或验证自主机器应用的系统、用于执行深度学习运算的系统、使用边缘设备实现的系统、包含一个或更多个虚拟机(vm)的系统、至少部分地在数据中心中实现的系统、或至少部分地使用云计算资源实现的系统。
48.图1是示出了根据本公开的至少一个实施例的用于至少基于累积的样本确定一个或更多个滤波器参数的示例过程100的数据流程图。过程100可以使用例如图像渲染器102、样本累积器104、滤波器确定器106和去噪器108来执行。应当理解,本文所述的这种和其他布置仅作为示例进行阐述。除了或代替所示的布置和元件,可使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),并且可完全省略一些元件。进一步,本文描述的许多元件是可以被实现为分立或分布式组件或与其他组件结合、和以任何合适的组合和位置的功能实体。本文描述为由实体执行的各种功能可由硬件、固件和/或软件执行。
49.图像渲染器102可被配置成渲染虚拟环境(例如,图22的虚拟环境2200)的图像。为了渲染虚拟环境的图像,图像渲染器102可采用样本累积器104、滤波器确定器106和去噪器108。样本累积器104可以被配置成累积(例如,相对于像素在时间上)光线追踪样本(即,基于对虚拟环境进行光线追踪而生成的样本)。由样本累积器104累积的样本可以不同方式使用,例如,取决于是否使用后累积、预累积或循环模糊来渲染图像。滤波器确定器106可被配置为针对虚拟环境中的点或对应像素确定滤波器(例如,空间滤波器)的至少一个尺寸(例如,几何形状)和该滤波器的对应滤波器权重。去噪器108可被配置为将滤波器应用于对应于虚拟环境中的点的像素(例如,在滤波器的初始像素位置处),以对表示虚拟环境的图像(例如,光线追踪渲染或帧)进行去噪。
50.图像渲染器102可类似地使用样本累积器104、滤波器确定器106和去噪器108来确定用于虚拟环境中的其他点和图像中的对应像素的滤波器以产生结果图像。由此,多个滤波器可以用于对与图像相关联的光照条件数据(例如,辐射)进行降噪以产生结果图像(例如,每像素至少一个滤波器),并且那些滤波器可以全部应用在单个绘制调用或通道中(尽管多个通道可以用于附加滤波器)。本文描述的图像需要不被完全渲染。作为示例,图像的
视觉内容的一个或更多个部分和/或其成分可以被渲染(例如,辐射)。去噪器108可将滤波器应用于表示图像的视觉内容的一个或更多个部分和/或其成分的图像数据以产生表示经渲染的帧的图像数据(例如,使用任何数量的去噪传递)。图像可以被示出以说明在本公开的一些示例中可被滤除的噪声。
51.图像渲染器102可使用每个像素的光照条件数据来渲染图像的一个或更多个对应像素。通常,图像渲染器针对像素相对于光源计算的光照条件的准确度可以随着用于对光照条件进行采样的主光线和/或辅助光线的量而增加。然而,用于确定光照条件的计算资源还可以随着光线数量而增加,这可能增加渲染时间。
52.为了保留计算资源和减少渲染时间,用于对光照条件进行采样的光线的数量可低于反射质量收敛到理想的光线追踪结果所需要的数量。这可导致图像渲染器102生成包括有噪声图像数据的光照条件数据,如贯穿全文的各种图像中所指示的。例如,屏幕的每个像素的光照条件可以基于单个光线追踪样本(例如,每像素一个光线采样)或虚拟环境的状态的其他有限数量的样本(例如,包括单个相机或眼睛光线和每入射光线单个反射光线)。
53.为了减少像素的光照条件数据中的噪声,去噪器108可以将光照条件数据(光线追踪样本、累积的样本等)过滤任意次数,以生成最终渲染帧。在一些示例中,滤波器确定器106可确定用于屏幕的每个像素和/或渲染的滤波器。图像渲染器102可以将滤波器应用于对应于相关像素的图像(例如,像素)位置的光照条件数据以渲染结果图像。在各个示例中,可并行地应用滤波器中的一个或更多个。进一步地,每个滤波器可在一个或更多个传递中被应用(例如,作为可分离滤波器)。另外,虽然提供了用于确定滤波器的性质的信息的示例,但可使用导致对滤波器的性质(例如,尺寸和/或滤波器权重)相应调整的附加信息。
54.本文中所描述的每一滤波器可包括滤波器内核,且可包括或可不包括一个或更多个滤波器方向。滤波器的滤波器内核可指定矩阵(例如,矩形阵列),该矩阵将一个或更多个卷积限定为用于处理图像的图像数据以改变图像的一个或更多个特性(例如,图像的像素的阴影和颜色)(例如,通过施加到辐射)。在一些示例中,滤波器内核可应用于可分离滤波器,其中可以使用可在多个传递中应用于图像的多个子矩阵或滤波器来表示矩阵。当确定或计算可分离滤波器的滤波器内核时,本公开预期可直接计算或可从另一矩阵导出子矩阵。
55.滤波器内核的矩阵的每一元素可表示相应像素位置。矩阵的像素位置中的一者可表示与应用滤波器的且通常位于矩阵的中心处的像素对应的初始像素位置。例如,在本文所描述的各图中,点p可对应于初始像素位置(例如,还有图22的点2216和/或像素2212)。滤波器方向可定义相对于应用滤波器的图像和/或像素的矩阵的对齐。由此,当将滤波器应用于像素时,用于滤波器内核的矩阵的其他像素位置的其他像素可基于滤波器方向相对于初始像素位置。
56.滤波器内核的矩阵的每一元素可包括针对像素位置的滤波器权重(其可为本文中所描述的一个或更多个子权重的组合,例如乘法)。矩阵可使用卷积应用于图像,其中图像的对应于矩阵的像素位置的每一像素的数据值可与对应于矩阵中的局部相邻者的像素的数据值相加,由滤波器值(也称为滤波器权重)加权。滤波器值可被配置为模糊像素,例如通过将分布拟合到滤波器内核的大小(例如,拟合到宽度和高度),或以其他方式使用基于光的模型对滤波器权重或值进行建模。
57.滤波器所应用于的数据值可对应于像素的光照条件数据(例如,在先前去噪之前或之后)。因此,去噪器108将滤波器内核的矩阵应用于像素可致使光照条件数据至少部分地在对应于滤波器内核的像素位置的这些像素之间共享。当滤波器内核准确地限定哪些像素可共享光照条件数据(例如,经由矩阵的大小和滤波器方向)以及多少光照条件数据可被共享(例如,经由滤波器权重)时,共享光照条件数据可减轻由于在光线追踪中稀疏地采样光照条件而产生的噪声。照此,在滤波器内核的大小、滤波器方向和/或滤波器权重不准确地反映虚拟环境的光照条件的情况下,滤波器内核可导致过度模糊和/或不逼真的模糊,从而导致在渲染的图像中表示不逼真的光照条件。
58.样本累积器104可以被配置成累积(例如,相对于像素在时间上)光线追踪样本(即,基于虚拟环境的光线追踪所生成的样本)。本文中的去噪方法可采用样本累积器104将累积的样本存储在历史缓冲区和/或纹理中(例如,相对于特定像素)。例如,图像渲染器102可以迭代地生成光线追踪渲染器,并且在每次迭代中,样本累积器104可以将一个或更多个样本累积到历史缓冲区中。有时,样本累积器104可拒绝一个或更多个累积的样本在渲染的帧的去噪迭代(和/或后续迭代)中使用。例如,针对像素和/或光线追踪样本的累积的样本可以从系统确定不存在于历史缓冲区中的输入信号(例如,光线追踪渲染器)被拒绝(例如,使用投影来将光线追踪样本映射到累积的样本)。
59.作为示例而非限制,当一个或更多个像素和/或光线追踪样本对应于遮挡事件或不遮挡事件(例如,如由样本累积器104所确定的)时,由样本累积器104维持在历史缓冲区中的累积的样本可以被拒绝并且不用于那些像素和/或光线追踪样本。随着用于渲染虚拟环境的相机或视角移动和/或虚拟环境中的对象移动,引起遮挡和/或不遮挡事件,可能发生拒绝。在各个实施例中,样本累积器104可以分析来自光线追踪的渲染数据以确定这样的事件,并且如果针对一个或更多个像素和/或一个或更多个累积的样本识别出事件(例如,发现不遮挡),则成功累积的帧的数量可以被重置(例如,重置为零)并且累积可以从头开始恢复(例如,针对该一个或更多个累积的样本)。
60.作为一些示例,样本累积器104可至少基于对应的当前深度值(例如,z值)与对应的先前深度值(例如,使用重投影来确定)之间的比较来确定光线追踪样本或像素的不遮挡。附加地或可替代地,可以至少基于比较平面距离来确定光线追踪样本或像素的不遮挡。在各个实施例中,可以采用其他合适的方法。
61.图像渲染器102、样本累积器104、滤波器确定器106和去噪器108可取决于所采用的一个或更多个去噪策略而不同地配置。对于后累积,样本累积器104可在去噪器108对样本执行模糊或去噪传递之后累积样本。对于预累积,样本累积器104可以在对累积的样本执行模糊或去噪传递之前累积样本。后累积或预累积的输入信号可以包括虚拟环境的光线追踪渲染和/或光线追踪样本(可选地在预处理之后,诸如预模糊)。输入信号可以具有非常高的频率,尤其是在其被稀疏地采样的情况下(例如,每像素仅用一条光线)。所述输入还可称为光线追踪输出和/或去噪输入。在模糊之后,可将输入信号转换为较低频率信号。在后累积中,高频输入可以被模糊,然后用于累积到低频纹理,并且在预累积中,可能发生相反的情况。
62.循环模糊或模糊可以混合具有较宽频率的信号。在去噪器108执行模糊之后,信号可以具有较低频率,并且可以被放入反馈回路(可选地,在附加的处理和/或模糊之后)中,
作为对下一帧和/或渲染的输入,以由样本累积器104与随后的高频有噪声输入一起累积。它还可以被称为光线追踪渲染与背景的模糊,并且该背景可以与来自图像渲染器102所执行的光线追踪过程的当前传入输入信号一起累积。由于循环模糊反馈回模糊输出(例如,经模糊的累积的样本或背景),该模糊输出然后被用于模糊,所以该方法可能倾向于过度模糊。可以采用图1的过程100来减少或防止可能导致更清晰的输出帧的过度模糊。
63.自适应模糊半径
64.在高级别上,过程100可以包括:图像渲染器102生成一个或更多个输出,诸如虚拟环境(例如,图22的虚拟环境2200)的光线追踪渲染。过程100还可以包括:样本累积器104接收一个或更多个输入(诸如来自过程100的先前迭代的光线追踪渲染和去噪的累积的渲染),累积一个或更多个输入,以及生成一个或更多个输出(如累积的渲染)。过程100可进一步包括:滤波器确定器106接收一个或更多个输入(例如,累积到累积的渲染的像素的样本的数量的计数),以及生成一个或更多个输出(例如,一个或更多个滤波器的一个或更多个尺寸)。过程100可进一步包括:去噪器108接收一个或更多个输入(例如,一个或更多个尺寸),且生成一个或更多个输出(例如,使用一个或更多个滤波器进行去噪的累积的渲染)。
65.如图1所示,由于其递归性质,过程100可以利用循环模糊来有效地及时重新分配空间采样。例如,在去噪器108执行累积的样本的模糊之后,信号可以具有较低频率,并且可以被放入反馈回路140中(可选地,在附加的处理和/或模糊之后),作为样本累积器104的输入,以用于要由样本累积器104与来自图像渲染器102的后续高频有噪声输入进行累积的下一帧和/或渲染。过程100可以利用样本累积器104来增加由图像渲染器102生成的光线追踪渲染的有效样本计数。作为非限制性示例,如果由图像渲染器102渲染的帧的每秒帧(fps)在30处,并且采用每像素8个光线追踪样本来对虚拟环境进行光线追踪,则由于重复地模糊相同的纹理(例如,在历史缓冲区中),累积可以有效地得到每秒240个光线追踪样本。
66.为了减少或消除可能由循环模糊引起的过度模糊,本公开的方面可提供循环模糊以便渲染虚拟环境的帧,其中滤波器确定器106至少基于对应于像素的成功累积的帧(例如,历史缓冲区中的时间上累积的样本)来确定该像素的至少一个去噪滤波器的半径(或更一般地,尺寸或大小)。例如,样本累积器104可追踪每像素成功累积的帧的数量,且可用于控制或调整由去噪器108应用于那些像素的去噪滤波器的模糊尺寸(例如,在一个或更多个空间滤波传递中)。
67.所公开的方法可以基于累积对解决像素的最终光照积分的贡献来减小用于该像素的模糊滤波器的大小。这可允许滤波器大小随着贡献(例如,累积到历史缓冲区的样本的数量)在若干去噪迭代上增加而减小。如果历史缓冲区针对像素被拒绝,则可以针对至少一次迭代消除针对该像素的累积的贡献,并且可以增大相应模糊滤波器的大小(例如,当不考虑可以用于影响滤波器大小的其他潜在因素时)。
68.在至少一个实施例中,样本累积器104可以递增一个或更多个计数器以追踪成功累积的帧和/或样本的数量(例如,每像素)。例如,可以对去噪迭代的每迭代、每累积、每帧或渲染(例如,针对像素的每次成功累积一次)递增计数器。如果样本累积器104拒绝一个或更多个累积的样本在去噪迭代中使用,那么可以重置计数(例如,重置为零)并且可以从头开始恢复累积(例如,针对该一个或更多个累积的样本)。例如,可以针对来自样本累积器104确定其不存在于历史缓冲区中的输入信号(例如,光线追踪渲染)的像素和/或光线追踪
样本来重置计数(例如,使用投影来将光线追踪样本映射至累积的样本)。
69.图1,图像150提供像素的成功累积的帧的数量的可视化。较暗像素可对应于用于该像素的较少累积的样本或帧,而且较亮像素可对应于用于该像素的较多累积的样本或帧。例如,黑像素可具有指示没有成功累积的帧(例如,由于遮挡事件或不遮挡事件)的最小计数,并且白像素可具有指示累积的帧的最大数量的最大计数。作为示例而非限制,计数的范围可以为从0至32。
70.在至少一个实施例中,计数可以用于计算调整因子,该调整因子然后用于计算滤波器的一个或更多个尺寸(例如,模糊半径)。调整因子可对应于例如将计数用作变量的等式或其部分的计算结果。调整因子可以与累积的帧和/或样本的数量成比例或以其他方式相关,并且可以每像素进行计算。在一些实施例中,可以将与一个或更多个样本相对应的累积的帧的数量约束至累积的帧的最大数量(例如,32)。该数量可以由终端用户和/或软件控制和/或可以是动态的。减少累积的帧的数量可减少时滞。在至少一个实施例中,用于像素的滤波器的半径在重置时(例如,计数=0)可以是最大的,并且在达到最大数量的累积帧时(例如,计数=32)是最小的。作为示例,用于像素的半径尺度可使用等式(1)来计算:
71.1/(1 newcount),
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
72.其中newcount可指代在累积之后的去噪迭代中像素的经更新的计数。
73.现在参考图2a和图2b,图2a示出了根据本公开的至少一个实施例的可以在两个累积帧之后使用图1的示例过程100生成的虚拟环境的渲染200a。图2b示出了根据本公开的至少一个实施例的可以在三十二个累积帧之后使用图1的示例过程100生成的虚拟环境的渲染200b。虽然计数和滤波器大小可每像素变化,但渲染200a和200b是其中每一像素具有相同计数的示例。如可以看到的,在2个累积帧的情况下,由于去噪器108在使渲染数据模糊以生成渲染200a时使用具有较大模糊半径的滤波器,因此渲染200a具有比渲染200b更少的细节。
74.现在参见图3-5,方法300、400和500以及本文描述的其他方法的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以通过执行存储在存储器中的指令的处理器来实现。所述方法还可体现为存储于计算机存储介质上的计算机可用指令。仅举几例,所述方法可由独立应用、服务或托管服务(独立地或与其他托管服务组合)或另一产品的插件提供。此外,通过示例的方式,关于图1的系统组件描述方法。然而,这些方法可以另外地或可替代地由任何一个系统或系统的任何组合来执行,这些系统包括但不限于本文描述的那些系统。
75.图3是示出根据本公开的至少一个实施例的用于至少基于虚拟环境的渲染的帧的数量来确定滤波器的一个或更多个参数的方法300的示例的流程图。在框b302处,方法300包括:利用至少基于对第一累积的样本去噪而生成的至少一个样本来累积光线追踪样本以生成第二累积的样本。例如,样本累积器104可以将来自图像渲染器102的虚拟环境的光线追踪样本用至少基于去噪器108对虚拟环境的第一累积的样本去噪而生成的至少一个样本进行累积。该至少一个样本可以由反馈回路140从过程100的先前迭代中提供,并且该累积可以生成要在过程100的当前迭代中提供给去噪器108的第二累积的样本。
76.在框b304处,方法300包括:至少基于对应于第二累积的样本的渲染的帧的数量来确定滤波器的一个或更多个参数。例如,滤波器确定器106可以至少基于与第二累积的样本
相对应的渲染的帧(或样本)的数量来确定滤波器的模糊半径。
77.在框b306,方法300包括:至少基于使用滤波器模糊第二累积的样本来生成渲染的帧。例如,渲染的帧可以至少基于去噪器108使用具有模糊半径的滤波器模糊第二累积的样本来生成。
78.现在参考图4,图4是示出根据本公开的至少一个实施例的用于至少基于与累积的样本相对应的虚拟环境的渲染的数量来迭代地确定滤波器的一个或更多个参数的方法400的示例的流程图。
79.在框b402处,方法400包括:利用对应于先前迭代的样本的样本累积光线追踪样本以生成累积的样本。例如,样本累积器104可以用过程100的先前迭代(由反馈回路140提供)的样本来累积来自图像渲染器102的虚拟环境的光线追踪样本以生成针对过程100的当前迭代的累积的样本。
80.在框b404处,方法400包括:至少基于对应于累积的样本中的至少一个样本的渲染的数量来确定滤波器的一个或更多个参数。例如,滤波器确定器106可至少基于对应于累积的样本中的至少一个样本的渲染的数量来确定滤波器的模糊半径。
81.在框b406处,方法400包括:至少基于使用滤波器模糊累积的样本来生成样本以用于后续迭代。例如,可以至少基于去噪器108使用具有模糊半径的滤波器模糊累积的样本来生成用于后续迭代的样本。在一些示例中,样本可包括去噪器108的输出。然而,在至少一个实施例中,可以在去噪器108的模糊之后执行进一步处理以生成样本。
82.现在参见图5,图5是示出根据本公开的至少一个实施例的用于至少基于与累积的渲染的至少一个样本相对应的虚拟环境的渲染的数量来确定滤波器的一个或更多个参数的方法500的示例的流程图。
83.在框b502处,方法500包括:生成累积渲染,该累积渲染对应于用去噪的累积渲染而累积的光线追踪渲染。例如,样本累积器104可以生成与来自图像渲染器102的虚拟环境的光线追踪渲染相对应的累积的渲染,所述累积的渲染用从过程100的先前迭代中使用去噪器108生成的虚拟环境的经去噪的累积的渲染来累积。
84.在框b504处,方法500包括:至少基于与累积的渲染中的至少一个样本相对应的渲染的数量来确定滤波器的一个或更多个参数。例如,滤波器确定器106可至少基于与累积的渲染的至少一个样本相对应的渲染的数量来确定滤波器的模糊半径。
85.在框b506处,方法500包括:至少基于使用滤波器模糊累积的渲染来生成渲染的帧。例如,可以至少基于去噪器108使用具有模糊半径的滤波器模糊累积的渲染来生成渲染的帧。
86.层次历史重建
87.本公开的方面还可提供一种分层方法来解释相对于像素对累积的样本的拒绝。通常,当像素的时间上累积的样本被样本累积器104拒绝时(例如,由于在由图像渲染器102执行的光线追踪中像素的不遮挡),针对该像素的时间累积被重置。由此,针对若干帧,针对像素的有效样本计数可减少,因为时间数据由样本累积器104重新累积。这可导致渲染的帧中的伪影,尤其是当图像渲染器102用来针对该像素对虚拟环境进行采样的每像素的光线的数量低时。
88.所公开的方法可至少基于对应于像素的成功累积的帧的数量来补充用于针对像
素对虚拟环境进行采样的每像素的有效光线数量。现在参见图6a和图6b,图6b是示出根据本公开的至少一个实施例的用于使用循环模糊进行去噪的过程600a的流程图,所述过程600a包括至少基于与累积的渲染中的光线追踪样本相对应的虚拟环境的渲染的数量生成经增强的样本。图6b是示出根据本公开的至少一个实施例的用于使用预累积进行去噪的过程600b的流程图,所述过程600b包括至少基于与累积的渲染中的光线追踪样本相对应的虚拟环境的渲染的数量生成经增强的样本。
89.在过程600a和过程600b中,样本累积器104可以使用来自较低分辨率版本的光线追踪渲染的光线追踪样本,而不是仅使用来自用于针对像素进行累积的光线追踪渲染的光线追踪样本。在高级别下,过程600a可以包括图像渲染器102生成一个或更多个输出,诸如虚拟环境(例如,图22的虚拟环境2200)的光线追踪渲染。过程100还可以包括样本累积器104从过程600a的先前迭代接收一个或更多个输入(诸如光线追踪渲染和经去噪的累积的渲染),累积一个或更多个输入,以及生成一个或更多个输出(诸如累积的渲染)。
90.过程600a可以还包括分辨率管理器,该分辨率管理器接收一个或更多个输入(例如,累积的渲染以及累积到该累积的渲染的像素的样本数量的计数),并且生成一个或更多个输出(例如,用与光线追踪的渲染的分辨率级别相对应的至少一个样本增强的一个或更多个样本)。过程100可进一步包括:滤波器确定器106接收一个或更多个输入,且产生一个或更多个输出,例如一个或更多个滤波器的一个或更多个参数。过程100可进一步包括:去噪器108接收一个或更多个输入(例如,一个或更多个参数),且产生一个或更多个输出(例如,使用一个或更多个滤波器进行去噪的累积的渲染)。
91.过程600b可类似于过程600a,除了样本累积器104可在对累积的样本执行模糊或去噪声传递之前累积样本。
92.由于对累积数据的拒绝,历史缓冲区可以不包括用于像素的任何可用数据。使用所公开的方法,分辨率管理器602可以在过程600a或600b的迭代中对像素使用粗分辨率(例如,最高mipmap级别)。分辨率管理器602可以根据像素的成功累积的帧和/或样本的数量而递增地增加每次迭代的分辨率(例如,直到达到基本级分辨率)。最初,分辨率管理器602可以使用历史缓冲区中的像素的对应复合样本(例如,连同其他像素的未拒绝的累积的样本),以便在去噪迭代中增强累积的数据。在针对像素成功累积之后,分辨率管理器602可结合用于像素的历史缓冲区中的对应累积的数据来使用该像素的对应复合样本,以便在去噪迭代中增强累积的数据。
93.在各个实施例中,分辨率管理器602可以至少基于成功累积的帧的数量来计算一个或更多个样本和/或像素的分辨率级别(例如,mipmap级别),并且可以随着成功累积的帧或样本的数量而增加(例如,直到达到光线追踪渲染的基本分辨率)。例如,如本文所描述的,样本累积器104可以追踪成功累积的帧或样本的数量(例如,每像素),分辨率管理器602可以使用该成功累积的帧或样本的数量来控制或调整来自图像渲染器102的光线追踪渲染的分辨率。在至少一个实施例中,分辨率管理器602可以附加地或替代地使用像素的表面粗糙度来确定该像素的分辨率级别。例如,可以计算分辨率级别,使得分辨率随着增加的表面粗糙度而降低。
94.分辨率管理器602可以结合或者代替来自样本累积器104的时间上累积的数据(例如,在一个或更多个空间滤波传递之前或之后)在分辨率上使用光线追踪渲染的版本的一
个或更多个部分。此方法可用于过程600a的循环模糊方法中,其可或可不至少基于成功累积的帧的数量调整去噪声滤波器大小(例如,根据过程100)。还预期可使用例如后累积或预累积之类的其他去噪声策略来实现这些方法。例如,过程600b示出了针对预累积实现的这些方法。
95.在至少一个实施例中,可使用例如关于图7a和图7b所描述的一个或更多个mipmap(纹理映射)来实现不同分辨率级别下的渲染的版本。现在参考图7a和图7b,图7a示出根据本公开的至少一个实施例的不同mipmap级别的虚拟环境的渲染的示例。图7b示出根据本公开的至少一个实施例的mipmap级别mip 0至mip 4以及相邻mipmap级别之间的对齐的示例。
96.例如,在图7a和图7b中,mip 0可以指光线追踪渲染的基本分辨率,其可以由图像渲染器102输出。随着mip级别增加,渲染的分辨率降低。图7b的堆叠700示出了相应的mipmap如何被可视化为重叠图像的堆叠。右侧示出了相邻分辨率/mip级别之间的对齐702的示例。根据本公开的各个实施例,可以使用任何数量的mipmap和/或分辨率级别。在至少一个实施例中,可针对辐射和视图z(其可捕获世界空间中的像素的z坐标)生成mipmap,其中视图z delta可用于在上采样期间计算权重。
97.在各个实施例中,分辨率管理器602可以使用针对一个或更多个像素的成功累积的帧或样本的计数来计算调整因子,该调整因子然后用于计算该一个或更多个像素的分辨率级别。该计数可以是关于过程100描述的并且由样本累积器104追踪的相同计数,或者可以是不同的计数。调整因子可对应于例如将计数用作变量的等式或其部分的计算结果。调整因子可以与累积的帧和/或样本的数量成比例或以其他方式相关,并且可以每像素计算。
98.作为示例,可使用等式(2)来计算像素的mip级别:
99.maxlevel*roughness*max(1

newcount/n,0),
ꢀꢀꢀꢀ
(2)
100.其中粗糙度可以指像素的表面粗糙度值,maxlevel可以指渲染器(例如,图7a中的mip 4)的最低分辨率的mipmap级别,并且n可以指具有活动历史重建的多个帧。
101.使用所公开的方法,分辨率管理器602可以权衡每像素光线的分辨率,以增加像素的有效样本计数。给定例如且不限于mip处的基础分辨率或对应于一个每像素光线(rpp)的分辨率级别0,在mip 1处,分辨率管理器602可以使用用于像素的渲染的2x2像素区域来将有效样本计数增加到4个rpp。在mip 2处,分辨率管理器602可以使用针对像素的渲染的4x4像素区域来将有效样本计数增加到16个rpp。在mip 3处,分辨率管理器602可以使用针对像素的渲染的8x8像素区域来将有效样本计数增加到64个rpp。进一步,在mip 4处,分辨率管理器602可以使用针对像素的渲染的16 x 16像素区域来将有效样本计数增加到256个rpp。
102.分辨率管理器602可以对光线追踪渲染进行下采样以用于迭代(例如,通过在将其除以2的所有方向上对其进行收缩)以生成任何数量的不同分辨率,并且在去噪迭代中可以将相应样本应用于基本分辨率像素。在一些实施例中,可以对那些样本进行上采样(例如,使用双线性、双边或高阶上采样)或以其他方式进行组合以生成用于基本分辨率样本的对应复合样本。
103.现在参考图8a和图8b,图8a示出根据本公开的至少一个实施例的可以在无增强累积的样本的情况下生成的虚拟环境的渲染800a。图8b示出根据本公开的至少一个实施例的可以通过增强累积的样本生成的虚拟环境的渲染800b。例如,可以使用过程600a或600b生成渲染800b。
104.现在参见图9,图9是示出根据本公开的至少一个实施例的用于至少基于与虚拟环境的累积的渲染中的虚拟环境的光线追踪样本相对应的渲染的数量来增强累积的渲染的方法900的示例的流程图。在框b902处,方法900包括:至少基于与累积的渲染中的光线追踪渲染的像素相对应的渲染的数量来计算分辨率级别。例如,分辨率管理器602可以至少基于与虚拟环境的累积的渲染中的虚拟环境的光线追踪样本相对应的渲染的数量来计算分辨率级别(例如,mipmap级别)。累积的渲染可使用样本累积器104生成。
105.在框b904处,方法900包括:至少基于用对应于分辨率级别的至少一个样本增强累积的渲染来生成渲染的帧。例如,分辨率管理器602可以至少基于用对应于分辨率级别和光线追踪样本的至少一个样本增强累积的渲染来生成经增强的样本。
106.在框b906处,方法900包括:至少基于使用一个或更多个滤波器模糊与经增强的样本相对应的数据来生成渲染的帧。例如,可至少基于去噪器108使用一个或更多个滤波器模糊对应于经增强的样本的数据来生成渲染的帧。
107.现在参见图10,图10是示出根据本公开的至少一个实施例的用于至少基于与虚拟环境的至少一个光线追踪样本相对应的渲染的数量来迭代地增强累积的样本集合的方法1000的示例的流程图。在框b1002处,方法1000包括:将光线追踪样本与先前迭代的样本进行累积以生成累积的样本集合。例如,样本累积器104可以将来自图像渲染器102的虚拟环境的光线追踪样本与多个迭代中的先前迭代的样本进行累积,其中该累积将用于生成累积的样本集合。
108.在框b1004处,方法1000包括:至少基于对应于光线追踪样本中的至少一个样本的渲染的数量来计算分辨率级别。例如,分辨率管理器602可以至少基于对应于累积的样本集合中的光线追踪样本中的至少一个样本的渲染的数量来计算分辨率级别。
109.在框b1006处,方法1000包括:用对应于分辨率级别的一个或更多个样本来增强累积的样本集合。例如,分辨率管理器602可以用对应于分辨率级别的一个或更多个样本来增强累积的样本集合。
110.在框b1008处,方法1000包括:至少基于使用一个或更多个滤波器模糊与经增强的样本集合相对应的数据来生成渲染。例如,可至少基于去噪器108使用一个或更多个滤波器模糊与用一个或更多个样本增强的累积的样本集合相对应的数据来生成渲染。
111.现在参见图11,图11是示出根据本公开的至少一个实施例的用于至少基于与虚拟环境的累积的渲染中的像素相对应的渲染的数量来增强累积的渲染的方法1100的示例的流程图。在框b1102处,方法1100包括:至少基于与累积的渲染中的光线追踪渲染的像素相对应的渲染的数量来计算分辨率级别。例如,分辨率管理器602可以至少基于与在使用样本累积器104生成的虚拟环境的累积的渲染中使用图像渲染器102所生成的虚拟环境的光线追踪渲染的像素相对应的渲染的数量来计算分辨率级别。
112.在框b1104,方法1100包括:用对应于像素和分辨率级别的至少一个样本来增强累积的渲染。例如,分辨率管理器602可以用对应于像素和分辨率级别的至少一个样本来增强累积的渲染,以生成经增强的累积的渲染。
113.在框b1106,方法1100包括:至少基于使用一个或更多个滤波器模糊与经增强的累积的渲染相对应的数据来生成渲染的帧。例如,可至少基于去噪器108使用一个或更多个滤波器模糊与用至少一个样本增强的累积的渲染相对应的数据来生成渲染的帧。
114.现在参见图12,图12是示出了根据本公开的至少一个实施例的用于对虚拟环境的渲染进行去噪的示例过程1200的数据流图。过程1200可以根据过程100实现自适应模糊半径和根据过程600a实现历史重建。
115.作为示例,过程1200可以用于漫射或镜面输入信号并且使用循环模糊。进一步,如图所示,在过程1200中可以包括预模糊1202和后模糊1210。作为示例,预模糊1202、模糊1208和后模糊1210可以基于泊松盘采样,但可以使用其他类型。预模糊1202可以使用恒定的滤波器大小,后模糊1210可以是自适应的。后模糊1210还可以考虑累积之后输入信号的强度和模糊之后信号的强度。滤波器确定器106可比较这些值,且滤波器的大小(例如,半径)可以至少基于这些值之间的差。例如,大小可以作为该差的函数而增加,因为较大差可指示缺乏收敛性。
116.过程1200可以包括:一个或更多个传递的预模糊1202被应用于虚拟环境的光线追踪渲染(例如,从图像渲染器102)。例如,预模糊可以使用恒定或自适应半径滤波器,并且可以用于解决光线追踪渲染的样本中的异常值。过程1200还可以包括:预模糊的光线追踪渲染与来自反馈回路1240的经去噪的累积的渲染进行累积1204(例如,使用样本累积器104)。举例来说,累积1204可以使用线性权重来执行,并且可以累积高达32或某个其他最大数量的帧。
117.过程1200可进一步包括:从累积的数据进行历史重建(例如,使用分辨率管理器602)和半径确定1206(例如,使用滤波器确定器106)。这可包括:生成mipmap以及使用mipmap来增强累积的样本(例如,在用于累积的历史缓冲区中)。在至少一个实施例中,mipmap可以在共享存储器中在单个传递中生成,例如,使用平均。可针对已丢弃或以其他方式不足的累积的样本数据的每一像素执行历史重建。
118.所述过程还可包括:模糊1202经增强的累积的样本(例如,使用去噪器108)。模糊1202可以至少基于使用具有对应半径的一个或更多个滤波器的半径确定。过程1200可以附加地包括:经模糊且经增强的累积的样本(例如,使用去噪器108)的后模糊1210。后模糊1210可以使用针对模糊1202确定的相同的半径或不同的半径。在至少一个实施例中,由后模糊1210使用的滤波器的半径可以至少基于与像素以及像素与来自历史重建的再投影历史之间的强度增量相对应的渲染的帧的数量。该过程还可以包括:后模糊的渲染的时间稳定1212,其可以利用具有潜在更宽的方差钳位的时间抗混叠(taa)。
119.去噪滤波器尺寸
120.现在参考图13a和图13b,图13a是示出根据本公开的至少一个实施例的确定用于镜面反射的模糊平面1302a的示例的图示。图13b是示出根据本公开的至少一个实施例的确定用于漫射信号的模糊平面1302b的示例的图示。
121.在至少一个实施例中,滤波器确定器106可以使用图13a和图13b所示的方法来确定世界空间中的滤波器的模糊平面。然而,可以采用其他方法。由于漫射信号可以覆盖采样空间的整个半球,所以点p的模糊平面1302b可以位于围绕平面法线n构造的切平面中。对于镜面信号,至少对于几乎镜面反射,可以在垂直于视图向量v的平面中构建模糊平面1302a,其中图13a中的向量r可以是视图向量v的逆在表面1306的法向量n上的反射。这实际上可以非常靠近屏幕空间,如图13a中的屏幕平面1304所示。
122.在一些实施例中,模糊平面可至少部分地基于与视图向量和对应的表面法线相关
联的镜面波瓣的方向(例如,主导方向),如关于图14a进一步描述的。图14a是示出根据本公开的至少一个实施例的确定用于对光线追踪样本进行去噪的模糊平面1402的示例的示图。例如,图14a的方法可用于镜面和/或漫射信号。
123.图14a示出了针对点p(例如,世界空间内的内核中心)滤波器的模糊平面1402可以至少部分地基于ggx ndf主导方向1404,但是在各个实施例中可以采用其他类型的ndf。作为示例,镜面波瓣的方向可以通过修剪掉ndf重要性采样中的值(例如,随机值)来计算,例如可见正态分布函数(vndf)。该方向可以用于例如提供用于定义垂直于视图向量、并且更具体地垂直于镜面反射方向(例如,主导方向)1406的模糊平面1402的一般化方法(例如,与镜面信号和漫射信号两者兼容)。在漫射信号的情况下,如果表面1306的表面粗糙度是0,则镜面反射方向1406可以是法向量n,并且法线周围的镜面反射方向1406(向量)仍然是相同的法向量n,因此构建这种情况的切平面对应于漫射信号。相同的方法可以用于几乎镜面反射。
124.本公开的方面可提供用于在对光线追踪渲染进行去噪时计算应用于像素的各向异性去噪滤波器(例如,滤波器内核)的一个或更多个尺寸的方法。例如,滤波器确定器106可至少基于对应于像素的视图向量的角度来确定滤波器的一个或更多个尺寸的量值,而不是将去噪滤波器应用于在世界空间中实际上各向同性的像素。这可以用于使反射在掠射角下沿着轴延长,从而产生更逼真的渲染。本公开提供了计算各向异性滤波器内核,该各向异性滤波器内核可以被延长,使得滤波器内核的尺寸沿着第一轴比沿着第二轴延伸得更远,以更紧密地反映brdf波瓣在虚拟环境中的占用空间。在各个示例中,一个或更多个尺寸还可以至少基于与视图向量相关联的镜面反射波瓣和对应的表面法线的方向(例如,主导方向)。
125.现在参见图14b,图14b是示出了根据本公开的至少一个实施例的确定用于对光线追踪样本进行去噪的各向异性滤波器的示例的图示。图14b示出了其中各向异性滤波器可以至少部分基于ggx ndf主导方向1404的示例,但是在各种实施例中可以采用其他类型的ndf。在掠射角下,反射沿着某个轴线延长。所公开的方法可用于确定效应应为多少和多长时间以及如何找到此轴。
126.如本文所描述的,可以在模糊平面1402上定义采样,该模糊平面垂直于镜面反射方向(例如,主导方向)1406。所得滤波器在屏幕空间中可为各向异性的且在世界空间中为各向同性的。滤波器确定器106可使用切向量t和基向量b构建围绕镜面反射方向1406的滤波器的基础,以限定滤波器的滤波器方向和/或半径。当采用广义基时,向量t和b可以具有相同的单位长度。可以从法向量n和镜面反射方向1406计算切向量t(例如,至少基于这些向量的归一化叉积)。可从镜面反射方向1406和切向量t(例如,至少基于向量的叉积)计算基向量b。向量t和b可限定各向同性滤波器基。为了模拟掠射角下的反射效应,可以至少基于视图向量v的视角来缩放切向量t。在一些实施例中,点p的表面粗糙度也可以用作缩放因子,因为漫射信号或镜面信号在它们由于采样空间的半球的扩展而接近漫射信号时不发生延长。在至少一个实施例中,该切向量可以被缩放并且可以垂直于该表面法线,这样使得该延长沿着该表面法线发生。
127.现在参见图15,图15是示出根据本公开的至少一个实施例的用于至少基于镜面反射波瓣的方向、法线和视图向量的角度来计算滤波器的尺寸的方法1500的示例的流程图。
在框b1502处,方法1500包括:至少基于虚拟环境中的相互作用来生成光线追踪样本。例如,图像渲染器102可以至少基于虚拟环境中的视图向量v与点p之间的相互作用来生成至少一个光线追踪样本。
128.在框b1504处,方法1500包括:至少基于相互作用的镜面反射波瓣的方向以及与相互作用相关联的法线来计算滤波器的尺寸,其中所述尺寸的量值至少基于与相互作用相关联的视图向量的角度。例如,滤波器确定器106可至少基于相互作用的镜面反射方向和对应于虚拟环境中的点p的法向量n来计算各向异性去噪滤波器的尺寸(例如,沿着切向量t),其中该尺寸的量值至少基于视图向量v的角度。
129.在框b1506,方法1500包括:使用滤波器生成渲染的帧。例如,可以至少基于去噪器108将各向异性去噪滤波器应用于与所述至少一个光线追踪样本相对应的数据来生成渲染的帧。
130.现在参见图16,图16是示出根据本公开的至少一个实施例的用于至少基于延长各向同性滤波器基础来确定各向异性滤波器的方法1600的示例的流程图,该延长各向同性滤波器基础(basis)至少基于视图向量的角度。在框b1602处,方法1600包括:至少基于镜面反射波瓣的方向和虚拟环境中的视图向量的相互作用的法线来计算各向同性滤波器基础。例如,滤波器确定器106可至少基于镜面反射方向1406以及虚拟环境中的视图向量v的相互作用的法向量n来计算各向同性滤波器基础(例如,包括切向量t和基向量b)。
131.在框b1604处,方法1600包括:至少基于延长所述各向同性滤波器基础来确定各向异性滤波器,延伸所述各向同性滤波器基础至少基于与相互作用相关联的视图向量的角度。例如,滤波器确定器106可至少基于延长各向同性滤波器基础(例如,切向量t)来确定各向异性滤波器,延长各向同性滤波器基础至少基于视图向量v的角度。
132.在框b1606,方法1600包括:使用各向异性滤波器生成渲染的帧。例如,可以至少基于去噪器108使用各向异性滤波器过滤对应于相互作用的渲染数据来生成虚拟环境的渲染的帧。
133.现在参见图17,图17是示出根据本公开的至少一个实施例的用于至少基于镜面反射波瓣的方向、法线和与相互作用相关联的光线的角度来计算滤波器的尺寸的方法1700的示例的流程图。在框b1702处,方法1700包括:至少基于在虚拟环境中光线的相互作用的镜面反射波瓣的方向、该相互作用的法线以及该光线的角度来确定滤波器的尺寸。例如,滤波器确定器106可至少基于虚拟环境中的视图向量v在点p处的相互作用的镜面反射方向1406来确定针对点p的滤波器的尺寸。
134.在框b1704处,方法1700包括:使用滤波器生成渲染的帧。例如,可以至少基于去噪器108使用滤波器模糊对应于相互作用的渲染数据来生成虚拟环境的渲染的帧。
135.基于视差的累积速度
136.本发明的方面可提供使用帧或渲染之间的视差来控制时间累积的累积速度(例如,用于镜面累积)。例如,表面运动可用于将镜面历史纹理从先前帧或渲染重新投影到后续(例如,当前)帧或渲染。然而,当光从表面反射时,反射的运动可不同于该表面运动,且因此仅使用表面运动可导致所渲染的帧中的伪影。像素的表面运动的准确性可至少部分基于帧之间的视差,且因此可用于控制时间累积中表面运动的影响。
137.在各个实施例中,用于计算像素的累积速度的视差可以至少基于对应于像素的视
图向量之间的角度。例如,视差可对应于同一表面点的先前视图向量与当前视图向量之间的角度。在至少一个实施例中,像素的视差可被计算为针对屏幕平面的渲染或帧之间的一个或更多个点的相机运动投影与到一个或更多个点的距离之间的比。累积速度还可以至少基于与光线追踪渲染的视图向量相关联的视角,这可以考虑在不同视角处视差如何被视觉感知。这些方法可以结合循环模糊、后累积、预累积和/或其他去噪策略使用。
138.现在参见图18,图18示出根据本公开的至少一个实施例的具有可用于计算视差的视图向量1802a、1802b、1804a和1804b的虚拟环境的渲染1800。在图18中,视图向量1802a和1802b是用于当前帧和/或虚拟环境的渲染状态的视图向量的示例,并且视图向量1804a和1804b是用于先前帧和/或虚拟环境的渲染状态的视图向量的示例。视图向量1802a和1804a可用于计算对应像素的视差,且视图向量1802b和1804b可用于计算不同对应像素的视差。在至少一个实施例中,可至少基于当前视图向量与先前视图向量(例如,视图向量1802a和1804a或视图向量1802b和1804b)之间的角度来计算视差。例如,像素的视差可至少部分计算为针对屏幕平面的渲染或帧之间的点的相机运动投影与到所述点的距离之间的比。视图向量1802a和1804a的相机运动可包括对应相机位置1810a和1810b之间的世界空间向量(如图所示),其可被投影到屏幕平面以确定相机运动投影。在至少一个实施例中,当前帧的像素的viewz坐标可用于到所述点的距离。
139.在各个实施例中,样本累积器104可以计算世界空间或视图空间中的视差,并且该视差可以应用于一个或更多个对应像素以用于确定累积速度。对于靠近相机的像素,视差可能较大。例如,针对对应于视图向量1802a和1804a的像素,进而针对对应于视图向量1802b和1804b的像素,视差可以较大。如果视差小,则由样本累积器104确定的实际累积基于表面运动或多或少是正确的。因此,视差可以被样本累积器104用来确定用于针对像素进行累积的累积速度。
140.在至少一个实施例中,样本累积器104可至少基于视差以及基于当前视图向量和先前视图向量(例如,视图向量1802a和1804a或视图向量1802b和1804b)之间的点积来确定累积速度。当前点处的表面粗糙度也可以是一个因素。如果粗糙度接近1,则反射可被分解成漫射信号,并且漫射信号可总是位于表面上,使得利用历史缓冲区,累积可接近100%。关于视角,当以掠射角观看表面时,视图对视差最敏感。当在表面上从上方观看时,视图向量垂直于表面,且视差的效应将减小。照此,视角可用作视差的灵敏度的量度。
141.现在参见图19,图19是示出根据本公开的至少一个实施例的用于至少基于视图向量之间的角度和与视图向量相关联的视角计算累积速度的方法1900的示例的流程图。在框b1902处,方法1900包括:至少基于第一视图向量与第二视图向量之间的角度以及至少基于与第一视图向量相关联的视角来计算累积。例如,样本累积器104可至少基于对应于至少一个像素的视图向量1802a与对应于至少一个像素的视图向量1804a之间的角度以及至少基于与视图向量1802a相关联的视角来计算针对该至少一个像素的累积速度。视图向量1802a可以由图像渲染器102用于生成虚拟环境的第一光线追踪渲染,并且视图向量1804a可以由图像渲染器102用于生成虚拟环境的第二光线追踪渲染。
142.在框b1904处,方法1900包括:使用累积速度来累积一个或更多个样本以生成虚拟环境的累积的渲染。例如,样本累积器104可以使用针对至少一个像素的累积速度将一个或更多个样本与虚拟环境的第一累积的渲染进行累积,以生成虚拟环境的第二累积的渲染。
143.在框b1906处,方法1900包括:使用累积的渲染来生成渲染的帧。例如,可使用第二累积的渲染来生成渲染的帧。
144.现在参见图20,图20是示出根据本公开的至少一个实施例的用于使用累积速度来累积光线追踪渲染的方法2000的示例的流程图,该累积速度至少基于视图与由光线追踪渲染捕获的视角之间的视差。在框b2002处,方法2000包括:至少基于虚拟环境的光线追踪渲染之间的视差以及至少基于与一个或更多个光线追踪渲染相关联的视角来计算累积速度。例如,样本累积器104可以至少基于虚拟环境的光线追踪渲染之间的视差以及至少基于与一个或更多个光线追踪渲染相关联的(例如,视图向量1802a和/或1802b的)视角来计算累积速度。
145.在框b2004,方法2000包括:使用累积速度来累积一个或更多个样本以生成虚拟环境的累积的渲染。例如,样本累积器104可以使用累积速度将一个或更多个样本累积到虚拟环境的第一累积的渲染,以生成虚拟环境的第二累积的渲染。
146.在框b2006,方法2000包括:使用第二累积的渲染来生成渲染的帧。
147.现在参考图21,图21是示出根据本公开的至少一个实施例的用于至少基于渲染之间的视差以及与一个或更多个渲染相关联的视角计算累积速度的方法2100的示例的流程图。在框b2102处,方法2100包括:至少基于视图之间的视差与由光线追踪渲染捕获的视角,使用累积速度来累积光线追踪渲染。例如,样本累积器104可以至少基于由光线追踪渲染所表示的虚拟环境的视图之间的视差与由光线追踪渲染捕获的虚拟环境的视角,使用针对像素的累积速度来累积虚拟环境的光线追踪渲染。
148.在框b2104,方法2100包括:使用通过累积生成的数据生成一个或更多个渲染的帧。
149.光线追踪技术的示例
150.现在参见图22,图22是根据本公开一些实施例的用于示出图像渲染器102可以用于生成光线追踪渲染的光线追踪技术的示例的示图。图22示出了包括相机2202、屏幕2204、对象2206和表面2208的虚拟环境2200。
151.屏幕2204可以是屏幕的虚拟表示,该虚拟表示可以是或者不是与本文描述的渲染的帧或中间图像或渲染相同或不相同的分辨率。屏幕2204可包括虚拟像素或区域的矩阵,其像素2212被个体地标记。为了确定像素2212的至少一些光照条件数据,图像渲染器102可以投射任何数量的光线(例如,一个或更多个)(诸如光线2214)通过屏幕2204的像素2212以采样像素2212的光照条件。作为示例,这些光线可被称作相机光线、眼睛光线、入射光线、视图向量或主光线。
152.图像渲染器102可以使用相机光线来确定环境中可能受对象2206和/或至少一个光源影响的可见点。例如,图像渲染器102可以使用光线2214来确定表面2208上或附近的点2216(例如,点p)。这可以包括图像渲染器将点2216确定为光线2214与表面2208相交的位置(或者点2216可以以其他方式至少基于该位置)。虽然光线2214与表面2208相交,但在投射一条以上光线的示例中,并非所有光线可与表面相交。
153.从图像渲染器102使用投射通过像素2212的光线确定的虚拟环境2200中的每个点,可以投射任何数量的光线(例如,一条或更多条)(诸如光线2218)来对光线2214在点2216处的反射进行建模。图像渲染器102可以至少基于表面2208在点2216处的法线来确定
光线2218的方向。例如,图像渲染器可至少基于表面2208在点2216处的法线来定义点2216的ndf范围2220。图像渲染器102可以使用ndf、光线2214、以及与点2216相关联的表面2208的粗糙度值来定义brdf(例如,使用光滑微面brdf模型)。例如,ndf范围2220可以使用函数(ndf)来定义,该函数定义微面在特定方向上对齐的可能性。
154.brdf波瓣可以使用函数(brdf)来定义,该函数使用ndf作为加权函数来缩放反射的亮度。图像渲染器102可以对brdf波瓣进行采样(例如,随机地使用brdf或使用另一个采样策略)以确定光线2218。作为示例,这些光线可被称为反射光线或辅助光线。虽然光线2218与对象2206相交,但在投射一条以上光线的示例中,并非所有光线都可与对象2206相交。例如,光线可以与不同的对象相交或者可以不与任何对象相交。在一些实施例中,可以投射一个或更多个附加光线以例如基于光线2218与对象2206的相互作用来确定像素2212的光照条件,并且可以相对于该相互作用的点执行类似操作。
155.图像渲染器102可以使用各个光线(例如,光线2214、光线2218等)来确定像素2212的光照条件的光线追踪样本。例如,光线可形成像素2212与一个或更多个光源之间的任何数量的虚拟光路,其任何数量的示例可包括光线2214和光线2218。对象2206可以是这样的光源的示例,或者对象2206可以是另一类型的对象,诸如非发光反射对象。在对象2206不是光源的情况下,虚拟光路还可以包括到光源的一条或更多条光线。图像渲染器可以通过组合(例如,取平均)从各个光线追踪样本导出的光照条件数据来确定像素2212的至少一些光照条件数据。图像渲染器可类似地确定屏幕2204的每个像素或区域的至少一些光照条件数据(例如,使用任何数量的阴影光线、相机光线、和/或其他光线类型),以便生成虚拟环境2200的光线追踪渲染。
156.如本文中所描述,本公开的方面提供用于滤波器确定器108确定应用于像素以对经图形渲染的图像的光线追踪样本进行去噪的滤波器内核的大小、形状、定向、滤波器方向和/或滤波器权重的方法。可基于本文中所描述的各种信息(例如,来自先前帧的时间光线追踪样本信息和/或图像渲染器用于渲染输出和/或最终帧或渲染的图像渲染数据)来确定和/或调整滤波器内核的大小、定向和/或形状以及滤波器的对应滤波器权重。示例包括辐射数据(例如,镜面或漫射)、命中距离数据、场景深度数据和世界法线。各种类型的滤波器被构想为在本公开的范围内,包括基于泊松盘的滤波器、基于泊松的滤波器、基于均匀抖动的滤波器、双边滤波器、交叉双边滤波器、时空滤波器、时间滤波器、空间滤波器等。可将各种数量的样本用于滤波器,其示例包括8个。用于滤波器的合适占用空间可包括矩形、正方形、圆形、椭圆形等。
157.在各个示例中,滤波器确定器108可至少基于光线2214来确定滤波器的一个或更多个滤波器尺寸,光线2214可能已或可能尚未由图像渲染器使用以用于对针对像素2212的光照条件进行采样(例如,以确定对应的图像数据)。在一些示例中,图像渲染器102使用虚拟环境2200的至少一个先前状态(例如,每个状态可以与表示虚拟环境2200的所渲染的帧相对应)的至少一个光线追踪样本来确定像素2212在虚拟环境的一个或更多个后续状态下的光照条件。例如,除了用于确定像素2212的光照条件的一个或更多个空间或当前光线追踪样本之外,任何数量的时间光线追踪样本可以用于确定像素2212的光照条件(例如,使用累积或历史缓冲区)。在使用许多时间光线追踪样本的情况下,那些样本可以被计数(例如,每像素)或者可以以其他方式被用来减小滤波器的尺寸和/或一个或更多个几何结构。
158.使用本文所描述的一些方法,在掠射角处,滤波器可与反射本身一起伸展,且在光线2214更垂直于表面2208的区域中,滤波器可变得更不延长,因为其可更紧密地对应于点2216处的brdf波瓣。
159.示例计算设备
160.图23是适合用于实现本公开的一些实施例的示例计算设备2300的框图。计算设备2300可以包括直接或间接耦合以下设备的互连系统2302:存储器2304、一个或更多个中央处理单元(cpu)2306、一个或更多个图形处理单元(gpu)2308、通信接口2310、输入/输出(i/o)端口2312、输入/输出组件2314、电源2316,一个或更多个呈现组件2318(例如,一个或更多个显示器)和一个或更多个逻辑单元2320。在至少一个实施例中,一个或更多个计算设备2300可以包括一个或更多个虚拟机(vm),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,gpu 2308中的一个或更多个可以包括一个或更多个vgpu,cpu 2306中的一个或更多个可以包括一个或更多个vcpu,和/或逻辑单元2320中的一个或更多个可以包括一个或更多个虚拟逻辑单元。这样,一个或更多个计算设备2300可以包括分立组件(例如,专用于计算设备2300的全gpu)、虚拟组件(例如,专用于计算设备2300的gpu的一部分)、或其组合。
161.尽管图23的各个方框被示出为利用线路经由互连系统2302连接,但这并不旨在是限制性的并且仅是为了清楚起见。例如,在一些实施例中,呈现组件2318(诸如显示设备)可被认为是i/o组件2314(例如,如果显示器是触摸屏)。作为另一个示例,cpu 2306和/或gpu 2308可以包括存储器(例如,存储器2304可以表示除了gpu 2308的存储器、cpu 2306和/或其他组件之外的存储设备)。换言之,图23的计算设备仅是说明性的。在如“工作站”、“服务器”、“膝上型计算机”、“桌面型计算机”、“平板计算机”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型的此类类别之间不做区分,因为所有都被考虑在图23的计算设备的范围内。
162.互连系统2302可表示一个或更多个链路或总线,诸如地址总线、数据总线、控制总线或其组合。互连系统2302可以包括一个或更多个总线或链路类型,诸如工业标准架构(isa)总线、扩展工业标准架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、快速外围组件互连(pcie)总线和/或另一类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,cpu 2306可直接连接到存储器2304。进一步,cpu 2306可直接连接到gpu 2308。在组件之间存在直接或点对点连接的情况下,互连系统2302可包括pcie链路以执行连接。在这些示例中,pci总线不需要被包括在计算设备2300中。
163.存储器2304可以包括各种计算机可读介质中的任何计算机可读介质。计算机可读介质可以是可由计算设备2300访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
164.计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型的信息的任何方法或技术实现的易失性和非易失性介质和/或可移动和不可移动介质。例如,存储器2304可以存储计算机可读指令(例如,表示(一个或更多个)程序和/或(一个或更多个)程序元件,诸如操作系统)。计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或其他存储器技术,cd-rom、数字通用盘(dvd)或其他光盘存储、磁带
盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所要信息且可由计算设备2300存取的任何其他介质。如本文所使用的,计算机存储介质不包括信号本身。
165.计算机存储介质可将计算机可读指令、数据结构、程序模块和/或其他数据类型体现在诸如载波或其他传输机制之类的已调制数据信号中,并且包括任何信息传递介质。术语“调制数据信号”可以指代以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、rf、红外和其他无线介质)。以上任何内容的组合也应包含在计算机可读介质的范围内。
166.cpu 2306可经配置以执行计算机可读指令中的至少一些以控制计算设备2300的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。cpu 2306可各自包含能够同时处置众多软件线程的一个或更多个核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。cpu 2306可包含任何类型的处理器,且可取决于所实施的计算设备2300的类型而包含不同类型的处理器(例如,针对移动装置具有较少核心的处理器和针对服务器具有较多核心的处理器)。例如,取决于计算设备2300的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机器(arm)处理器或使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(诸如数学协处理器)之外,计算设备2300还可包括一个或更多个cpu 2306。
167.除一个或更多个cpu 2306以外或替代一个或更多个cpu 2306,一个或更多个gpu 2308可被配置成执行计算机可读指令中的至少一些以控制计算设备2300的一个或更多个组件执行本文所描述的方法和/或过程中的一个或更多个。gpu 2308中的一个或更多个可为集成gpu(例如,有cpu 2306中的一个或更多个)和/或gpu 2308中的一个或更多个可为离散gpu。在实施例中,gpu 2308中的一个或更多个可以是cpu 2306中的一个或更多个的协处理器。gpu 2308可由计算设备2300使用于渲染图形(例如,3d图形)或执行通用计算。例如,gpu 2308可用于gpu上的通用计算(gpgpu)。gpu 2308可包含能够同时处置数百或数千软件线程的数百或数千核心。gpu 2308可响应于渲染命令(例如,经由主机接口从cpu 2306接收的渲染命令)而产生输出图像的像素数据。gpu 2308可包含用于存储像素数据或任何其他合适数据(例如,gpgpu数据)的图形存储器(例如,显示存储器)。显示存储器可作为存储器2304的一部分被包括。gpu 2308可包含并行操作(例如,经由链路)的两个或两个以上gpu。链路可以直接连接gpu(例如,使用nvlink)或可以通过交换机(例如,使用nvswitch)连接gpu。当组合在一起时,每一gpu 2308可产生用于输出的不同部分或用于不同输出的像素数据或gpgpu数据(例如,用于第一图像的第一gpu和用于第二图像的第二gpu)。每一gpu可包含其自己的存储器,或可与其他gpu共享存储器。
168.除cpu 2306和/或gpu 2308之外或替代cpu 2306和/或gpu 2308,逻辑单元2320可经配置以执行计算机可读指令中的至少一些以控制计算设备2300的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。在实施例中,一个或更多个cpu 2306、一个或更多个gpu 2308、和/或一个或更多个逻辑单元2320可以离散地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元2320中的一个或更多个可为cpu 2306和/或gpu 2308中的一个或更多个中的一部分和/或集成于cpu 2306和/或gpu 2308中的一个或更多个和/或逻辑单元2320中的一个或更多个可为离散组件或以其他方式在cpu 2306和/
或gpu 2308外部。在实施例中,逻辑单元2320中的一个或更多个可以是cpu 2306中的一个或更多个和/或gpu 2308中的一个或更多个的协处理器。
169.逻辑单元2320的示例包括一个或更多个处理核心和/或其组件,诸如张量核心(tc)、张量处理单元(tpu)、像素视觉核心(pvc)、视觉处理单元(vpu)、图形处理群集(gpc)、纹理处理群集(tpc)、流多处理器(sm)、树横向单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu)、专用集成电路(asic)、浮点单元(fpu)、输入/输出(i/o)元件、外围组件互连(pci)或快速外围组件互连(pcie)元件等。
170.通信接口2310可以包括使计算设备2300能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备通信的一个或更多个接收机、发射机和/或收发机。通信接口2310可包括实现通过多个不同网络中的任一个进行通信的组件和功能,诸如无线网络(例如,wi-fi、z-wave、蓝牙、蓝牙le、zigbee等)、有线网络(例如,通过以太网或无限带通信)、低功率广域网(例如,lorawan、sigfox等)和/或互联网。
171.i/o端口2312可以使得计算设备2300能够逻辑地耦合到包括i/o组件2314、一个或更多个呈现组件2318和/或其他组件的其他设备,其中一些可以被内置到(例如,集成在)计算设备2300中。说明性i/o组件2314包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等。i/o组件2314可以提供处理空中姿势、语音或由用户生成的其他生理输入的自然用户界面(nui)。在一些情况下,可将输入发射到适当的网络元件以供进一步处理。nui可实现与计算设备2300的显示器相关联的语音识别、指示笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的姿势识别、空中姿势、头部和眼睛追踪、以及触摸识别(如以下更详细地描述的)的任何组合。计算设备2300可以包括用于手势检测和识别的深度相机,诸如立体相机系统、红外相机系统、rgb相机系统、触摸屏技术和这些的组合。另外,计算设备2300可包含使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(imu)的部分)。在一些示例中,计算设备2300可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。
172.电源2316可包括硬连线电源、电池电源或其组合。电源2316可向计算设备2300提供电力以使得计算设备2300的组件能够操作。
173.呈现组件2318可包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(hud)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。呈现组件2318可从其他组件(例如,gpu 2308、cpu 2306等)接收数据,且输出所述数据(例如,作为图像、视频、声音等)。
174.示例数据中心
175.图24示出了可在本公开的至少一个实施例中使用的示例数据中心2400。数据中心2400可包括数据中心基础设施层2410、框架层2420、软件层2430和/或应用层2440。
176.如图24所示,数据中心基础设施层2410可以包括资源协调器2412、分组的计算资源2414和节点计算资源(“节点c.r.s”)2416(1)-2416(n),其中“n”表示任何完整的正整数。在至少一个实施例中,节点c.r.s 2416(1)-2416(n)可包括,但不限于任何数量的中央处理单元(cpu)或其他处理器(包括加速器、现场可编程门阵列(fpga)、图形处理器或图形处理单元(gpu)等),存储器设备(例如,动态只读存储器),存储设备(例如,固态或磁盘驱动器),网络输入/输出(nw i/o)设备、网络交换机、虚拟机(vm)、功率模块和/或冷却模块,等等。在一些实施例中,来自节点c.r.s 2416(1)-2416(n)中的一个或更多个节点c.r.s可对应于具
有上述计算资源中的一个或更多个的服务器。此外,在一些实施例中,节点c.r.s 2416(1)-24161(n)可包括一个或更多个虚拟组件,诸如vgpu、vcpu等,和/或节点c.r.s 2416(1)-2416(n)中的一个或更多个可对应于虚拟机(vm)。
177.在至少一个实施例中,分组的计算资源2414可包括容纳在一个或更多个机架(未示出)内的节点c.r.s 2416的单独分组,或容纳在不同地理位置(也未示出)处的数据中心内的许多机架。分组的计算资源2414内的节点c.r.s 2416的单独分组可包括可被配置或分配来支持一个或更多个工作负荷的分组计算、网络、存储器或存储资源。在至少一个实施例中,包括cpu、gpu和/或其他处理器的若干节点c.r.s 2416可以分组在一个或更多个机架内以提供计算资源来支持一个或更多个工作负荷。一个或更多个机架还可包括任意组合的任意数量的功率模块、冷却模块和/或网络交换机。
178.资源协调器2422可配置或以其他方式控制一个或更多个节点c.r.s 2416(1)-2416(n)和/或分组的计算资源2414。在至少一个实施例中,资源协调器2422可以包括用于数据中心2400的软件设计基础设施(“sdi”)管理实体。资源协调器2422可以包括硬件、软件或其某种组合。
179.在至少一个实施例中,如图24所示,框架层2420可以包括作业调度器2418、配置管理器2434、资源管理器2436和/或分布式文件系统2438。框架层2420可以包括支持软件层2430的软件2418和/或应用层2440的一个或更多个应用2442的框架。软件2418或应用2442可分别包含基于网络的服务软件或应用,例如由amazon(亚马逊)网络服务、google cloud(谷歌云)和microsoft azure提供的那些。框架层2420可以是但不限于可以利用分布式文件系统2438进行大规模数据处理(例如,“大数据”)的免费和开源的软件网络应用框架(如apache spark
tm
(下文称为“spark”))的类型。在至少一个实施例中,作业调度器2418可以包括spark驱动器以促进调度由数据中心2400的不同层支持的工作负荷。配置管理器2434可以能够配置不同层,诸如软件层2430和框架层2420(其包括用于支持大规模数据处理的spark和分布式文件系统2438)。资源管理器2436可以能够管理被映射到分布式文件系统2438和作业调度器2418或被分配用于支持分布式文件系统2438和作业调度器2418的集群的或分组的计算资源。在至少一个实施例中,集群的或分组的计算资源可包括在数据中心基础设施层2410的分组的计算资源2414。资源管理器1036可与资源协调器2412协调以管理这些被映射或分配的计算资源。
180.在至少一个实施例中,在软件层2430中包括的软件2418可包括由节点c.r.s 2416(1)-2416(n)、分组的计算资源2414和/或框架层2420的分布式文件系统2438中的至少部分使用的软件。一种或更多种类型的软件可以包括但不限于互联网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
181.在至少一个实施例中,在应用层2440中包括的应用2442可包括由节点c.r.s 2416(1)-2416(n)、分组的计算资源2414和/或框架层2420的分布式文件系统2438中的至少部分使用的一个或更多个类型的应用。一种或更多种类型的应用可以包括但不限于任何数量的基因组应用、认知计算和机器学习应用,包括训练或推断软件、机器学习框架软件(例如,pytorch、tensorflow、caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用。
182.在至少一个实施例中,配置管理器2434、资源管理器2436和资源协调器2412中的任一个可基于在任何技术上可行的方式中获取的任何量和类型的数据来实现任何数量和
类型的自修改动作。自修改动作可使数据中心2400的数据中心操作者免于做出可能较差的配置决策和可能避免数据中心的未充分利用和/或较差执行部分。
183.根据本文描述的一个或更多个实施例,数据中心2400可包括工具、服务、软件或其他资源来训练一个或更多个机器学习模型或使用一个或更多个机器学习模型来预测或推断信息。例如,可以通过使用于上相对于数据中心2400描述的软件和/或计算资源根据神经网络架构来计算权重参数来训练一个或更多个机器学习模型。在至少一个实施例中,对应于一个或更多个神经网络的经训练或部署的机器学习模型可用于通过使用通过一种或多种训练技术(诸如但不限于本文中描述的那些训练技术)计算的权重参数,使用上文相对于数据中心2400描述的资源来推断或预测信息。
184.在至少一个实施例中,数据中心2400可使用cpu、专用集成电路(asic)、gpu、fpga和/或其他硬件(或与其对应的虚拟计算资源)来使用上述资源执行训练和/或推断。此外,上文所描述的一个或更多个软件和/或硬件资源可被配置为允许用户训练或执行对信息的推断的服务,例如图像识别、语音识别或其他人工智能服务。
185.示例网络环境
186.适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(nas)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图23的一个或更多个计算设备2300的一个或更多个示例上实现——例如,每个设备可以包括一个或更多个计算设备2300的类似部件、特征和/或功能。此外,在实现后端设备(例如,服务器、nas等)的情况下,后端设备可被包括作为数据中心2400的一部分,数据中心2400的示例在本文中关于图24更详细地描述。
187.网络环境的组件可经由网络彼此通信,所述网络可为有线的、无线的或为两者。网络可以包括多个网络或多个网络中的一个网络。例如,网络可包括一个或更多个广域网(wan)、一个或更多个局域网(lan)、一个或更多个公共网络(诸如互联网和/或公共交换电话网(pstn))和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他组件)的组件可以提供无线连接。
188.兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可以不被包括在网络环境中)和一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可以被包括在网络环境中)。在对等网络环境中,本文针对服务器所描述的功能可在任何数量的客户端设备上实现。
189.在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可包括框架层、作业调度器、资源管理器和在一个或更多个服务器上实现的分布式文件系统,所述服务器可包括一个或更多个核心网服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或应用可分别包含基于网络的服务软件或应用。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用(例如,通过经由一个或更多个应用编程接口(api)访问服务软件和/或应用)。框架层可以是但不限于如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)的一种免费和开源软件网络应用框架。
190.基于云的网络环境可提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任何功能可以分布在来
自(例如,可以分布在州、地区、国家、全球等的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果与用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
191.一个或更多个客户端设备可以包括本文关于图23所描述的一个或更多个示例计算设备2300的组件、特征和功能中的至少一些。作为示例而非限制,客户端设备可被实现为个人计算机(pc),膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(pda)、mp3播放器、虚拟现实耳机、全球定位系统(gps)或设备、视频播放器、摄像机、监视设备或系统、车辆、船、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、这些描绘的设备的任何组合或任何其他合适的设备。
192.本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
193.如在本文中使用的,“和/或”关于两个或更多元件的叙述应当解释为仅指一个元件或者元件组合。例如,“元件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中的至少一个。
194.本文详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本公开人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元件,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献