自动曝光的光线追踪的制作方法

文档序号:29402532发布日期:2022-03-26 04:32阅读:283来源:国知局
自动曝光的光线追踪的制作方法
自动曝光的光线追踪


背景技术:

1.像视频游戏的应用的渲染帧的适当曝光水平可提供更多真实感,同时还允许玩家更轻松地导航游戏环境。游戏中的自动曝光通常通过分析渲染场景的像素,并根据像素值调整亮度或曝光来实现令人愉悦的平衡。例如,在一些像素较亮而另一些较暗的情况下,所确定的曝光值可能对应于亮像素和暗像素之间的某种平衡,使得每个像素都被正确曝光。然而,这些传统方法通常在图像中的所有内容要么暗要么亮的情况下遇到困难。例如,在图像太暗的情况下,自动曝光算法可能会将曝光水平提高到图像中的所有内容都过亮的程度。同样,在图像太亮的情况下,自动曝光算法可能会将曝光水平降低到图像中所有内容都太暗的程度。再举一个例子,如果场景的主体是在明亮的背景前拍摄的——例如,一个背着天空站立的人——自动曝光算法可能会适当地曝光描绘天空的像素,但会使主体曝光不足(例如,作为剪影)。此外,帧间构图的突然变化——从暗到亮,反之亦然——通常会导致曝光或亮度的相应快速变化,这不仅对自然感知不准确,而且由于快速变化而产生噪点。例如,当相机在黑暗的表面上平移以显示一张白纸时,传统的自动曝光算法可能会在帧中只有桌子的情况下过度曝光帧,然后,当白纸进入视野时,可能会快速切换到曝光不足的帧。但是,由于桌子周围的实际照明条件可能没有改变,这种从过度曝光到曝光不足的快速切换不会创建渲染帧的自然或理想的呈现。因此,传统的自动曝光算法可能会导致帧序列通过使游戏更具挑战性(例如,由于帧中潜在相关主体的曝光不当)而降低用户体验,同时也会产生不那么吸引人的视觉效果。


技术实现要素:

2.本公开的实施例涉及应用光线追踪技术以在图形渲染的帧中执行自动曝光。公开了实现虚拟测光表(virtual light meters)的系统和方法,该虚拟测光表使用光线追踪来确定入射光值以调整渲染帧的自动曝光设置。例如,一条或更多条光线可用于对虚拟环境中任何位置的采样形状(例如半球或测光半球)上的入射光进行采样(例如,作为入射辐射度、入射辐照度和/或光强度)。因此,与传统过程相比,入射光可以在场景或帧中感兴趣的对象附近被采样,使得曝光值是一致的或稳定的,而不管渲染帧的组成如何。此外,由于光线读数可能与对象的反射率或其他表面特征无关,因此根据虚拟测光表的输出确定的曝光值更有可能产生正确的曝光值——即使对于具有不寻常表面特征的对象。例如,在一张黑暗的桌子上有一张白纸的情况下——白纸是场景中感兴趣的对象——可以在虚拟场景中的白纸附近(例如,上方、旁边、前面等)实施虚拟光线追踪式测光表,以测量入射光,使得渲染帧的曝光值适合白纸的正确曝光。在这样的示例中,如果相机要在交替包含和省略白纸的帧中平移黑色的桌子,那么曝光值可以保持一致,因为曝光值不是根据渲染帧的像素确定的,而是根据虚拟测光表的输出。
3.在某些场景中,可能存在比白纸更亮的主体、物体或表面,例如天空、镜面反射或发射表面。因此,为了不仅考虑白纸,还考虑场景的其他主体、物体或表面,可以使用来自虚拟测光表的曝光值来设置曝光上限,并且曝光值可以根据渲染图像的像素进行调整——例
如,以对于可能比白纸亮的东西减少曝光。可以对暗表面执行类似的过程,其中来自虚拟测光表的自动曝光值可以用作下限,并且可以根据渲染图像的像素调整曝光值——例如,以对于可能比桌子更暗的东西增加曝光,其中桌子是帧的主体。
附图说明
4.下面结合附图详细描述用于自动曝光的光线追踪的本系统和方法,其中:
5.图1是根据本公开的一些实施例的自动曝光系统的框图;
6.图2a-2b描绘了根据本公开的一些实施例的使用虚拟测光表来确定渲染帧的曝光值的示例可视化;
7.图2c描绘了根据本公开的一些实施例的使用来自屏幕空间缓冲器的计算的光线追踪数据作为虚拟测光表来确定渲染帧的曝光值的示例可视化;
8.图3描绘了图示根据本公开的一些实施例的使用虚拟测光表确定曝光值的方法的流程图;
9.图4描绘了示出根据本公开的一些实施例的用于使用来自屏幕空间缓冲器的计算的光线追踪数据作为虚拟测光表来确定曝光值的方法的流程图;
10.图5是适用于实施本公开的一些实施例的示例内容流传输系统的框图;
11.图6是适用于实施本公开的一些实施例的示例计算设备的框图;以及
12.图7是适用于实施本公开的一些实施例的示例数据中心的框图。
具体实施方式
13.所公开的系统和方法涉及应用光线追踪技术以在图形渲染的帧中执行自动曝光。尽管主要针对对应于视频游戏应用的虚拟环境进行了描述,但这并不旨在进行限制。例如,本公开的系统和方法可以针对包括虚拟或半虚拟(例如,增强或混合现实)环境的任何应用实施,例如虚拟现实(vr)应用、增强现实(ar)应用、计算机辅助设计(cad)应用、模拟应用(例如,机器人模拟、车辆模拟等)和/或其他应用类型。
14.参考图1,图1是根据本公开的一些实施例的示例自动曝光系统100(在本文中也称为“系统100”)。应当理解,本文描述的这种和其他布置仅作为示例阐述。除了所示的那些之外或代替所示的那些,可以使用其他布置和元素(例如,机器、接口、功能、命令、功能分组等),并且可以完全省略一些元素。此外,本文描述的许多元素是功能实体,它们可以实现为离散或分布式组件或与其他组件结合,并以任何合适的组合和位置实现。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件或其任何组合来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。在一些实施例中,系统100的特征、功能和/或组件可以类似于图5的示例内容流传输系统500和/或图6的示例计算设备600的那些。例如,在一些实施例中并且关于图5,自动曝光系统100可以对应于内容流传输应用,并且本文描述的用于确定渲染帧的曝光值的方法可以由一个或更多个应用服务器502执行以生成可以流式传输到一个或更多个客户端设备504的渲染帧。
15.自动曝光系统100可以包括但不限于对象确定器104、一个或更多个虚拟测光表106、屏幕空间缓冲器108、曝光确定器110、时间滤波器112和/或图像渲染器114。对象确定器104可以确定虚拟环境中的一个或更多个对象。例如,对象可以对应于将为其确定曝光值
的潜在对象。在一些实施例中,可以确定单个对象,而在其他实施例中,可以确定任意数量的对象。对象可以包括人、动物、建筑物、静态物体、动态演员和/或其他对象类型。在一些实施例中,对象确定器104可以基于使用应用数据来确定一个或更多个对象以生成曝光值。例如,应用数据可以指示作为场景焦点的一个或更多个特定对象。与导演可以用来确定将场景聚焦在哪里或谁身上的故事板类似,可以分析应用数据以确定每个帧的一个或更多个对象。因此,可以表示应用状态信息(例如,游戏状态信息)的应用数据可以用于确定对象和对象在虚拟环境中的位置。根据应用类型,对象类型可能会有所不同。例如,对于具有化身或角色的游戏,化身或角色可以是对象。对于没有角色的游戏,例如有建筑物、车辆等的游戏,对象可以对应于建筑物、车辆或其他类型的物体。在一些实施例中,帧的对象可能在每帧或每场景的基础上不同。例如,对于某些帧,对象可以对应于化身,在其他帧中,对象可以对应于项目,并且在其他帧中,对象可以对应于结构。
16.在一些实施例中,对象确定器104可以使用光线追踪来确定场景或帧的一个或更多个对象(例如,人210a、210b、建筑物212等)。例如,并且关于图2a的可视化200a,可以将一条或更多条光线204从虚拟相机206(例如,在围绕视场中心的方向上)投射到虚拟环境202中,并且光线204与一个或更多个物体的相交可用于确定一个或更多个对象。例如,一条或更多条光线204可以与人210相交。在一些实施例中,例如在要使用单个对象的情况下,可以使用最接近虚拟相机206的对象(例如,如使用来自光线204的采样数据确定的被确定为距虚拟相机206最短距离的对象),或者可以使用被识别为特定类型对象的对象。例如,虽然建筑物212可能被一条或更多条光线204相交,但人210可以被选择为应该基于对象选择标准(例如,指示人或其他动画演员应该曝光的标准)来确定曝光值的对象。在不存在动画演员的情况下,可以使用次要对象类型(例如,建筑物)和/或使用其他标准,在距虚拟相机206一定距离(例如,两米、四米等)处测量曝光。
17.例如,在游戏应用(例如第一人称射击游戏(fps)游戏应用)中,可以将帧曝光为类似于人眼的自然感知。在这样的实施例中,对象可以是由用户控制并从第一人称视角观察的角色或化身。因此,虚拟测光表106a可以放置在化身前面或上方的位置,或者帧中没有化身的位置(例如,因为视角来自化身的眼睛),虚拟测光表106可以被放置在虚拟相机206前面的某个位置(例如,直接在前面、前面某个距离等),以便在化身的位置测量入射光(例如,入射辐射度、辐照度、光强度等)。结果,当化身从黑暗的建筑物内移动到室外位置时,可以调整曝光值,使得帧在建筑物内时被曝光以允许导航,而在室外时被曝光不会太亮。在这样的示例中,如果不使用虚拟测光表106,则可以基于更亮的外部来曝光帧,这可能使帧曝光不足,即使当化身或玩家仍在建筑物内时(例如,帧可能看起来太暗而不能导航到建筑物内部)。
18.再次参考图1,一个或更多个虚拟测光表106可以被实例化或放置在虚拟环境中的一个或更多个位置处。如本文所述,一个或更多个位置可以对应于一个或更多个对象。一个或更多个虚拟测光表106可以通过从一个或更多个虚拟测光表106的一个或更多个位置投射采样光线并以采样图案或形状(例如半球或叶瓣)来测量入射光。采样光线可以从它们的源头——例如,在虚拟测光表106b的光探头220(图2b)的位置——被追踪穿过环境,直到采样光线222击中光源(例如,以追踪光束将在虚拟世界中采取的路径)。在一些实施例中,但不限于,每帧每个虚拟测光表106可以投射数百条采样光线——例如大约1000条采样光线。
例如,使用600到1400条采样光线可以产生高质量的入射光测量结果,这些测量结果可用于确定产生高质量渲染帧的曝光水平。然而,该数量不旨在进行限制,并且可以使用不同数量的采样光线而不背离本公开的范围。在为渲染而执行光线追踪时,每帧可能会投射数百万条光线。因此,通过为每帧的每个虚拟测光表106添加大约1000条以上的光线,渲染操作的运行时间可以受到最小的影响,同时仍然产生高质量的结果。
19.一个或更多个虚拟测光表106可以测量入射光,并且入射光值可以用于确定一个或更多个帧的曝光值。例如,可以通过评估一个或更多个对象附近的入射辐射度来测量入射光——例如,有多少光入射到对象附近。除了辐辐射度之外或替代地,辐照度、光强度和/或其他光测量值可以使用从一个或更多个虚拟测光表106的位置投射的采样光线来评估。
20.参考图2b的可视化200b,一个或更多个虚拟测光表106(例如,测光表106b和106c)可以包括探头220和在围绕探头220的采样图案224中投射的一条或更多条采样光线222——例如图2b的图示中的半球图案。取决于实施例,一个或更多个虚拟测光表106的采样图案或形状可以朝向任何方向。作为非限制性示例,采样形状可以被定向为使得半球的底部平行于地平面,可以被定向为使得半球的底部垂直于与对象相交的光线204的方向,或者可以被定向为使得半球的底部垂直于对象或其表面。在一些实施例中,代替半球,采样形状可以对应于球体或半球的一部分——例如,用作来自更聚焦方向的入射光的点测光表。例如,可以将聚焦的测量波瓣用作点测光表以“曝光对象的面部”。测量波瓣可以放置在虚拟环境中对象的面部附近或之上,这可以为对象的面部生成适当的入射光读数。
21.此外,取决于实施例,一个或更多个虚拟测光表106的探头220的位置可以位于不同的位置。例如,如图2a所示,一个或更多个虚拟测光表106a可以位于对象的前面,例如对象的面部前面。这可允许测量对象面部的入射光——类似于曝光图像以正确照亮人的面部。作为另一个示例,并且关于图2b,虚拟测光表106b和106c可以放置在对象上方,使得来自对象的阴影不会干扰光测量。例如,通过将一个或更多个虚拟测光表106放置在对象上方,入射光测量结果可以更准确地反映从任何方向落在对象上的光量,而不仅仅是对象面部、侧面、胸部上的光量。作为另一个示例,一个或更多个虚拟测光表106可以在垂直于从虚拟相机206投射的光线的方向上实例化,从而基于从虚拟相机206的角度的对象附近的入射光量为对象设置曝光水平。在一些实施例中,参考图2c的可视化200c,虚拟测光表106d可以在这样的位置和方向上被实例化:使得围绕对象的表面法线的入射光被测量。在这样的示例中,如本文所述,可以从屏幕空间缓冲器108检索表面法线信息,使得计算的入射光信息——例如,来自漫射光缓冲器——可以重新用作用于确定曝光值的一个或更多个虚拟测光表106d。
22.此外,关于图1和2c所示,屏幕空间缓冲器108可用于确定对应于虚拟环境202中的位置的光特性,其可用于确定一帧或更多帧的曝光值。例如,但不限于,屏幕空间缓冲器108可以存储场景或帧208的光线追踪的光信息。因此,代替在虚拟环境中的位置使用虚拟测光表106(例如,代替实例化虚拟测光表106d),存储在屏幕空间缓冲器108中的光线追踪的光信息可以重新用作一个或更多个虚拟测光表106。在一些实施例中,屏幕空间缓冲器108可以对应于光线追踪的间接漫射光缓冲器。例如,并且关于图2c,当填充屏幕空间缓冲器108时,可以从虚拟相机206的视角为帧208的每个像素230投射光线204。这些光线204可以用于填充定义虚拟环境中的对象的表面法线的几何缓冲器。可以在虚拟环境中的位置执行光线
追踪以评估照明信息,并且可以将得到的样本存储在屏幕空间缓冲器108中。可以通过对相邻像素230进行平均并随着时间平滑这些值,对得到的样本执行去噪。结果,帧208的每个像素230可以包括与使用一个或更多个虚拟测光表106计算的信息相似的信息。例如,每个像素230与虚拟环境202中的位置之间的对应关系可以基于光线204是已知的,物体或对象的表面取向可以是已知的,并且可以基于使用光线追踪在表面处对光信息进行采样而已知进入对象或物体的表面的光。可以为每个像素230存储该信息,并且该信息用于确定照明信息,该照明信息用于确定曝光值。在实施例中,屏幕空间缓冲器108的照明信息——例如,入射辐射度、辐照度、光强度等——可以用球谐函数编码。
23.在一些实施例中,仅对应于像素230的子集的屏幕空间缓冲器108信息可用于确定照明信息——例如,辐射度、辐照度、光强度等——以及帧的对应曝光值。例如,可以分析像素网格232以确定像素网格232中的哪个像素230应该用于确定曝光。像素网格232可以位于帧208的中心,使得帧208的中心像素被包括在像素网格232内,和/或位于像素网格232的中心。网格可以是矩形、正方形和/或其他形状。例如,但不限于,像素网格232可以包括在帧208上居中的8x8、16x16、24x24或32x32网格。在实施例中,通过将像素网格230在帧208上居中,可以为虚拟相机206的视场中心设置曝光值,该中心可以对应于—或者更可能对应于—帧208的虚拟环境202的有意义的部分。然而,在其他实施例中,像素网格232可能不在帧208中居中,或者可能在逐帧或逐场景的基础上动态放置。例如,应用数据可以用于确定一个或更多个对象在虚拟环境202中的一个或更多个位置,并且可以选择像素网格232以对应于一个或更多个位置。
24.在一些实施例中可以使用像素网格232内的每个像素230,而在其他实施例中可以使用像素网格232中的像素230的子集。例如,可以分析对应于像素网格232中的每个像素230的对象、物体或环境特征的分析。因此,在要为特定类型的一个或更多个对象(例如,人、动物、人物、建筑物、汽车等)设置曝光的情况下,可以使用对应于特定类型的一个或更多个对象的具有虚拟环境202中的位置的光信息的像素230。在其他实施例中,可以从考虑中过滤掉某些对象或环境特征——例如天空、太阳、云、树等。因此,在任何实施例中,可以分析像素网格232内的像素230以确定像素230对应的虚拟环境中的对象,并且可以选择像素230的子集。
25.一旦选择了像素230,来自与像素232网格内的像素230相对应的屏幕空间缓冲器108的照明值可用于确定最终照明值。在一些实施例中,每个像素230的照明值(其对应于虚拟环境中对应于像素230的位置的照明值)可以被平均或加权,以确定最终照明值——例如,用于入射辐射度、辐照度和/或光强度。
26.再次参考图1,一旦确定了来自一个或更多个虚拟测光表106和/或屏幕空间缓冲器108的照明值,这些值就可以用于由曝光确定器110确定曝光值。在一些实施例中,用于确定曝光的照明值可以是对应于来自屏幕空间缓冲器108的两个或更多个虚拟测光表106和/或两个或更多个像素230的平均值或加权值。例如,加权可以基于对象与观看者(例如,与虚拟相机206)的距离来确定,和/或可以是预定义的。作为非限制性示例,在照明值对应于入射辐照度值的情况下,可以通过计算表示为2的幂(例如,2n)的辐照度值来确定曝光值(ev),因为曝光遵循对数标度。然后可以将计算的值限制在0和1之间的范围,并且可以将结果值重新缩放到与曝光值相对应的-1到6的范围。然而,这并非旨在进行限制,并且可以使
用其他方法来计算曝光值与辐照度、辐射度、光强度和/或其他照明值之间的相关性,而不背离本公开的范围。
27.在一些实施例中,考虑到更传统的自动曝光技术,使用一个或更多个虚拟测光表106和/或屏幕空间缓冲器108计算的帧曝光值可以被加权或平均。例如,使用光线追踪来确定用于确定曝光的照明特性或值可能会为漫射表面(例如主体)返回准确的结果,但对于天空可能不那么准确。因此,使用一个或更多个虚拟测光表106和/或屏幕空间缓冲器108确定的曝光值可以用作曝光值上限和/或曝光值下限的钳位。因此,可以使用更传统的技术来计算曝光值,例如通过分析帧或图像的每个像素,找到最暗和最亮的像素,生成直方图,然后根据该信息确定曝光。这不旨在进行限制,并且可以使用使用其他技术(例如使用色调映射)的曝光值。一旦确定了曝光值,就可以将其与使用一个或更多个虚拟测光表106和/或屏幕空间缓冲器108确定的一个或更多个钳位进行比较。在曝光值低于上曝光值钳位的情况下和/或高于下曝光值钳位的情况中,曝光值可用于确定帧的最终曝光值。例如,来自传统技术的曝光值可以直接使用,可以与使用一个或更多个虚拟测光表106和/或屏幕空间缓冲器108确定的曝光值进行平均,和/或可以相对于使用一个或更多个虚拟测光表106和/或屏幕空间缓冲器108确定的曝光值进行加权。在使用传统技术确定的曝光值大于上曝光值钳位和/或小于下曝光值钳位的情况下,对于特定帧,曝光值可以被忽略或丢弃。因此,最终曝光值不仅可以被生成为对于帧的一个或更多个特定对象是准确的,而且可以被调整以在帧的一个或更多个对象和帧的其他环境特征(如天空)之间找到平衡。
28.在一些实施例中,曝光确定器110可以使用时间滤波器112来基于先前一个或更多个帧的曝光值来调整帧的曝光值。例如,当前帧的最终曝光值可以通过考虑一个或更多个先前帧而对帧的确定曝光值进行加权来确定。在一些实施例中,这可以是递归的(例如,移动平均),使得当前帧的曝光值可以根据先前帧的曝光值被加权以确定当前帧的最终值。该最终值随后可用于对下一帧的曝光值进行加权,等等。在其他实施例中,当前帧的曝光值可以根据一个或更多个先前帧的一个或更多个曝光值来加权,而没有递归性。在任何示例中,在考虑一个或更多个先前帧来加权当前帧的曝光值的情况下,当前帧的曝光值的权重可以小于一个或更多个先前帧的权重,以便平滑曝光水平之间的过渡。作为非限制性示例,先前帧的曝光值可以具有95%的权重,并且当前帧的曝光值可以具有5%的权重。作为另一个非限制性示例,先前帧的曝光值可以具有90%的权重,并且当前帧的曝光值可以具有10%的权重。然而,在其他实施例中,当前帧的权重可以比一个或更多个先前帧的权重更大。
29.因此,在每帧实例化一个使用1000条采样光线的虚拟测光表106且帧速率为每秒60帧(fps)的示例中,则每分钟可投射60,000条采样光线,从每个帧确定的曝光值可以随着时间被加权,且结果可以是随着时间的平滑曝光,其不会从帧到帧地跳,而是平滑过渡。在使用时间滤波器112的情况下,时间滤波器112可以针对新场景或导致重置的一些应用间标准被重置。例如,当用户在视频游戏中导航虚拟环境并到达游戏中要播放过场动画的位置时,可以在过场动画开始时重置时间滤波器112,使得来自虚拟环境的导航的曝光值不影响过场动画的曝光值。
30.图像渲染器114可以渲染图像或帧。例如,可以使用光线追踪来渲染帧,可以使用诸如光栅化之类的其他技术或者它们的组合来渲染帧。可以基于从曝光确定器110确定的曝光值来调整渲染帧的曝光值。在一些示例中,曝光值可以用于渲染帧,或者曝光值可以用
于调整渲染之后的帧。在自动曝光系统100被包括在云流传输环境中的情况下——例如图5的示例内容流传输系统500

渲染帧可以被编码并流式传输到终端用户设备(例如,客户端设备504)。在其他实施例中,自动曝光系统100可由本地系统执行,例如膝上型电脑、台式机、平板电脑、游戏控制台、智能手机等。在这样的示例中,可以在本地执行渲染,或者可以远程执行渲染,并且可以使用自动曝光系统100在本地更新渲染的帧。
31.现在参考图3-4,本文描述的方法300和400的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。方法300和400也可以体现为存储在计算机存储介质上的计算机可用指令。方法300和400可以由独立应用、服务或托管服务(独立或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,作为示例,关于图1的自动曝光系统100描述了方法300和400。然而,这些方法300和400可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文所述的那些。
32.现在参考图3,图3描绘了图示根据本公开的一些实施例的用于使用虚拟测光表确定曝光值的方法300的流程图。在框b302,方法300包括确定虚拟环境中的对象。例如,对象确定器104可用于确定对象在虚拟环境中的位置。
33.在框b304,方法300包括在虚拟环境中对应于对象的位置处实例化虚拟测光表。例如,一个或更多个虚拟测光表106可以在虚拟环境中被实例化,用于测量在对应于对象的位置处的入射光。对应于对象的位置可以包括虚拟环境中对象的前面、上面、旁边、脸上、接触和/或距对象一定距离(例如,一英寸、六英寸、一英尺、一米等)。
34.在框b306,方法300包括基于从虚拟测光表的位置投射光线而对虚拟测光表的位置处的入射光值进行采样。例如,采样光线222可以从虚拟测光表106的采样探头220以采样图案——例如半球形采样图案——投射,以评估或测量该位置处的入射光值。入射光值可以对应于入射辐照度、入射辐射度、光强度和/或其他光值。
35.在框b308,方法300包括基于入射光值确定曝光值。例如,入射光值可用于确定曝光值。
36.在框b310,方法300包括基于曝光值渲染表示虚拟环境的帧。例如,可以从虚拟相机206的视角渲染帧208。可以使用曝光值渲染帧208,或者可以使用曝光值来调整渲染帧。
37.参考图4,图4描绘了图示根据本公开的一些实施例的用于使用来自屏幕空间缓冲器的计算的光线追踪数据作为用于确定曝光值的虚拟测光表的方法400的流程图。在框b402,方法400包括计算虚拟环境内的位置的入射光值。例如,可以从虚拟相机206的视角投射光线以与虚拟环境内的物体、表面、对象和/或类似物相交。然后可以执行光线追踪以测量虚拟环境内的物体、表面、对象等处的入射光值。
38.在框b404,方法400包括在屏幕空间缓冲器中将入射光值与图像的像素相关联。例如,对应于对象、表面等的入射光值可以与屏幕空间缓冲器108的对应像素230一起存储。例如,在从虚拟相机206的像素投射的光线204的相交位置处测量的入射光值可以与屏幕空间缓冲器中的相应像素230相关联。
39.在框b406,方法400包括确定位于图像中心的像素网格内的像素子集,其对应于一个或更多个对象。例如,可以分析像素网格232内的像素230以确定哪些像素对应于感兴趣的对象——例如人、建筑物、汽车、动物等,而不是天空。
40.在框b408,方法400包括从屏幕空间缓冲器确定对应于像素子集的入射光值子集。例如,可以确定对应于来自像素子集的像素230的入射光值。
41.在框b410,方法400包括基于入射光值的子集计算图像的曝光值。例如,可以对入射光值进行加权、平均和/或以其他方式处理以确定帧的最终入射光值,并且可以根据最终入射光值来确定曝光值。该最终曝光值可用于渲染帧和/或调整渲染之后的帧的曝光。
42.示例内容流式传输系统
43.现在参照图5,图5是根据本公开的一些实施例的用于内容流式传输系统500的示例系统图。图5包括(一个或更多个)应用服务器502(其可以包括与图6的示例计算设备600类似的组件、特征和/或功能),(一个或更多个)客户端设备504(其可以包括与图6的示例计算设备600类似的组件、特征和/或功能),和(一个或更多个)网络506(其可以类似于本文描述的(一个或更多个)网络)。在本公开的一些实施例中,系统500可被实现。应用会话可以对应于游戏流式传输应用(例如,nvidia geforce now)、远程桌面应用、模拟应用(例如,自主或半自主车辆模拟)、计算机辅助设计(cad)应用、虚拟现实(vr)和/或增强现实(ar)流式传输应用、深度学习应用和/或其他应用类型。
44.在系统500中,对于应用会话,(一个或更多个)客户端设备504可以响应于到(一个或更多个)输入设备的输入而仅接收输入数据,将输入数据传输到(一个或更多个)应用服务器502,从(一个或更多个)应用服务器502接收经编码的显示数据,并且在显示器524上显示该显示数据。因此,计算上更密集的计算和处理被卸载到(一个或更多个)应用服务器502(例如,用于应用会话的图形输出的渲染(具体为光线或路径跟踪)由(一个或更多个)游戏服务器502的(一个或更多个)gpu执行)。换言之,应用会话从(一个或更多个)应用服务器502被流传输到(一个或更多个)客户端设备504,由此降低(一个或更多个)客户端设备504对图形处理和渲染的要求。
45.例如,关于应用会话的实例化,客户端设备504可以基于从(一个或更多个)应用服务器502接收显示数据而将应用会话的帧显示在显示器524上。客户端设备504可以接收至(一个或更多个)输入设备中的一个的输入并且作为响应生成输入数据。客户端设备504可经由通信接口520且经由网络506(例如,互联网)将输入数据传输到应用服务器502,且应用服务器502可经由通信接口518接收输入数据。cpu可以接收输入数据,处理输入数据,并且向gpu传输数据,该数据使gpu生成应用会话的渲染。例如,输入数据可以表示用户在游戏应用的游戏会话中的角色的移动、发射武器、重新装载、传球、转动车辆等。渲染组件512可以渲染应用会话(例如,表示输入数据的结果),并且渲染捕获组件514可以捕获应用会话的渲染作为显示数据(例如,作为捕获应用会话的渲染帧的图像数据)。应用会话的渲染可以包括使用一个或更多个并行处理单元(诸如gpu)计算的光线或路径追踪的照明和/或阴影效果,所述一个或更多个并行处理单元可以进一步使用一个或更多个专用硬件加速器或处理核来执行一个或更多个应用服务器502的光线或路径追踪技术。在一些实施例中,一个或更多个虚拟机(vm)——例如,包括一个或更多个虚拟组件,如vgpu、vcpu等——可以由应用服务器502用于支持应用会话。编码器516可接着对显示数据进行编码以产生经编码的显示数据,且经编码的显示数据可经由通信接口518经由网络506传输到客户端设备504。客户端设备504可经由通信接口520接收经编码的显示数据,且解码器522可解码经编码的显示数据以生成显示数据。客户端设备504随后可经由显示器524来显示显示数据。
46.示例计算设备
47.图6为适合用于实现本公开一些实施例的示例计算设备600的框图。计算设备600可以包括直接或间接耦合下列设备的互连系统602:内存604,一个或更多个中央处理单元(cpu)606,一个或更多个图形处理单元(gpu)608,通信接口610,输入/输出(i/o)端口612,输入/输出组件614,电源616,一个或更多个呈现组件618(例如显示器)和一个或更多个逻辑单元620。在至少一个实施例中,计算设备600可以包括一个或更多个虚拟机(vm),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,一个或更多个gpu 608可以包括一个或更多个vgpu,一个或更多个cpu 606可以包括一个或更多个vcpu,和/或一个或更多个逻辑单元620可以包括一个或更多个虚拟逻辑单元。因此,计算设备600可以包括分立组件(例如,专用于计算设备600的完整gpu)、虚拟组件(例如,专用于计算设备600的gpu的一部分),或其组合。
48.尽管图6的各个框被示为经由具有线路的互连系统602连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件618可以被认为是i/o组件614(例如如果显示器为触摸屏)。作为另一个示例,cpu 606和/或gpu 608可以包括内存(例如,内存604可以表示除了gpu 608、cpu 606和/或其他组件的内存以外的存储设备)。换言之,图6的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图6的计算设备的范围内。
49.互连系统602可以表示一条或更多条链路或总线,例如地址总线、数据总线、控制总线或者其组合。互连系统602可以包括一种或更多种链路或总线类型,例如行业标准架构(isa)总线、扩展行业标准架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、外围组件互连快速(pcie)总线,和/或另一种类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,cpu 606可以直接连接到存储器604。此外,cpu 606可以直接连接到gpu 608。在组件之间存在直接或点对点连接的情况下,互连系统602可以包括pcie链路来执行该连接。在这些示例中,计算设备600中不需要包括pci总线。
50.内存604可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备600访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
51.计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,内存604可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或者其他存储技术、cd-rom、数字多功能盘(dvd)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备600访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
52.计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、rf、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。
53.cpu 606可以被配置为执行计算机可读指令中的至少一些,以便控制计算设备600的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。cpu 606中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。cpu 606可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备600的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备600的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机制(arm)处理器或者使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备600还可以包括一个或更多个cpu 606。
54.除了或替代cpu 606,gpu 608还可以被配置为执行至少一些计算机可读指令,以控制计算设备600的一个或更多个组件执行一个或更多个本文所述的方法和/或过程。一个或更多个gpu 608可以是集成gpu(例如,具有一个或更多个cpu 606)和/或一个或更多个gpu 608可以是离散gpu。在实施例中,一个或更多个gpu 608可以是一个或更多个cpu 606的协处理器。计算设备600可以使用gpu 608来渲染图形(例如,3d图形)或执行通用计算。例如,gpu 608可用于gpu上的通用计算(gpgpu)。gpu608可以包括能够同时处理数百或数千个软件线程的数百或数千个核。gpu 608可以响应于渲染命令(例如经由主机接口接收的来自cpu 606的渲染命令)而生成用于输出图像的像素数据。gpu 608可以包括诸如显示内存之类的用于存储像素数据或任何其他合适的数据(例如gpgpu数据)的图形内存。显示内存可以作为内存604的部分而被包括。gpu 608可以包括(例如经由链路)并行操作的两个或更多gpu。链路可以直接连接gpu(例如,使用nvlink),也可以通过交换机(例如,使用nvswitch)连接gpu。当组合在一起时,每个gpu 608可以生成用于输出的不同部分或者用于不同输出的像素数据或gpgpu数据(例如,第一gpu用于第一图像,第二gpu用于第二图像)。每个gpu可以包括它自己的内存,或者可以与其他gpu共享内存。
55.除了或替代cpu 606和/或gpu 608,逻辑单元620可以被配置为执行至少一些计算机可读指令,以控制计算设备600的一个或更多个组件来执行本文描述的一种或更多种方法和/或过程。在实施例中,cpu 606、gpu608和/或逻辑单元620可以离散地或联合地执行方法、过程和/或其部分的任何组合。一个或更多个逻辑单元620可以是一个或更多个cpu 606和/或一个或更多个gpu 608的一部分和/或集成在其中,和/或一个或更多个逻辑单元620可以是cpu 606和/或gpu 608的离散组件或以其他方式在其外部。在实施例中,一个或更多个逻辑单元620可以是一个或更多个cpu606和/或一个或更多个gpu 608的处理器。
56.逻辑单元620的示例包括一个或更多个处理核和/或其组件,例如张量核(tc)、张量处理单元(tpu)、像素视觉核(pvc)、视觉处理单元(vpu)、图形处理集群(gpc)、纹理处理集群(tpc)、流式多处理器(sm)、树遍历单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu))、专用集成电路(asic)、浮点单元(fpu)、输入/输出(i/o)元件、外围组件互连(pci)或外围组件互连快速(pcie)元件等。
57.通信接口610可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备600能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口610可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如wi-fi、z波、蓝牙、蓝牙le、zigbee等等)、有线网络(例如通过以太网或infiniband通信)、低功率广域网(例如lorawan、sigfox等等)和/或因特网。
58.i/o端口612可以使得计算设备600能够逻辑地耦合到包括i/o组件614、呈现组件618和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备600中。说明性i/o组件614包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、浏览仪、打印机、无线设备等等。i/o组件614可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(nui)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。nui可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备600的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备600可以包括诸如立体相机系统之类的深度相机、红外相机系统、rgb相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备600可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(imu)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备600用来渲染沉浸式增强现实或者虚拟现实。
59.电源616可以包括硬接线电源、电池电源或者其组合。电源616可以向计算设备600供电以使得计算设备600的组件能够操作。
60.呈现组件618可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(hud)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件618可以接收来自其他组件(例如gpu 608、cpu 606等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
61.示例数据中心
62.图7示出了示例数据中心700,其可用于本公开的至少一个实施例中。数据中心700可以包括数据中心基础设施层710、框架层720、软件层730和应用层740。
63.如图7所示,数据中心基础设施层710可以包括资源协调器712、分组的计算资源714和节点计算资源(“节点c.r.”)716(1)-716(n),其中“n”代表任何完整的正整数。在至少一个实施例中,节点c.r.716(1)-716(n)可以包括但不限于任何数量的中央处理单元(“cpu”)或其他处理器(包括加速器、现场可编程门阵列(fpga)、图形处理器或图形处理单元(gpu)等),内存设备(例如动态只读内存),存储设备(例如固态硬盘或磁盘驱动器),网络输入/输出(“nw i/o”)设备,网络交换机,虚拟机(“vm”),电源模块和冷却模块等。在一些实施例中,节点c.r.716(1)-716(n)中的一个或更多个节点c.r.可以对应于具有一个或更多个上述计算资源的服务器。此外,在一些实施例中,节点c.r.716(1)-716(n)可以包括一个或更多个虚拟组件,例如vgpu、vcpu等,和/或节点c.r.716(1)-716(n)中的一个或更多个可以对应于虚拟机(vm)。
64.在至少一个实施例中,分组的计算资源714可以包括容纳在一个或更多个机架内的节点c.r.716的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组的计算资源714内的节点c.r.716的单独分组可以包括可以被配置或分配
为支持一个或更多个工作负载的分组的计算、网络、内存或存储资源。在至少一个实施例中,可以将包括cpu、gpu和/或其他处理器的几个节点c.r.716分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。一个或更多个机架还可以包括以任意组合的任何数量的电源模块、冷却模块和/或网络交换机。
65.资源协调器722可以配置或以其他方式控制一个或更多个节点c.r.716(1)-716(n)和/或分组的计算资源714。在至少一个实施例中,资源协调器722可以包括用于数据中心700的软件设计基础结构(“sdi”)管理实体。资源协调器722可以包括硬件、软件或其某种组合。
66.在至少一个实施例中,如图7所示,框架层720可以包括作业调度器732、配置管理器734、资源管理器736和分布式文件系统738。框架层720可以包括支持软件层730的软件732和/或应用程序层740的一个或更多个应用程序742的框架。软件732或应用程序742可以分别包括基于web的服务软件或应用程序,例如由amazon web services,google cloud和microsoft azure提供的服务软件或应用程序。框架层720可以是但不限于一种免费且开源的软件网络应用框架,例如可以利用分布式文件系统738来进行大规模数据处理(例如“大数据”)的apache spark
tm
(以下称为“spark”)。在至少一个实施例中,作业调度器732可以包括spark驱动器,用于促进对数据中心700的各个层所支持的工作负载进行调度。在至少一个实施例中,配置管理器734可以能够配置不同的层,例如软件层730和包括spark和用于支持大规模数据处理的分布式文件系统738的框架层720。资源管理器736能够管理映射到或分配用于支持分布式文件系统738和作业调度器732的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层710处的分组的计算资源714。资源管理器1036可以与资源协调器712协调以管理这些映射的或分配的计算资源。
67.在至少一个实施例中,包括在软件层730中的软件732可以包括由节点c.r.716(1)-716(n)的至少部分,分组的计算资源714和/或框架层720的分布式文件系统738使用的软件。一种或更多种类型的软件可以包括但不限于internet网页搜索软件、电子邮件病毒浏览软件、数据库软件和流视频内容软件。
68.在至少一个实施例中,应用层740中包括的一个或更多个应用程序742可以包括由节点c.r.716(1)-716(n)的至少部分、分组的计算资源714和/或框架层720的分布式文件系统738使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序,认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如pytorch、tensorflow、caffe等)和/或其他与一个或更多个实施例结合使用的机器学习应用程序。
69.在至少一个实施例中,配置管理器734、资源管理器736和资源协调器712中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。自我修改动作可以减轻数据中心700的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或行差的部分。
70.数据中心700可以包括工具、服务、软件或其他资源,用于根据本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,可以通过使用上文关于数据中心700描述的软件和计算资源,根据神经网络架构计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过一
种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心700所描述的资源,使用对应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息,例如但不限于本文所述的那些。
71.在至少一个实施例中,数据中心700可以使用cpu、专用集成电路(asic)、gpu、fpga和/或其他硬件(或与之对应的虚拟计算资源)来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
72.示例网络环境
73.适用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(nas)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图6的计算设备600的一个或更多个实例上实现—例如,每个设备可以包括计算设备600的类似组件、特征和/或功能。此外,在实现后端设备(例如,服务器、nas等)的情况下,后端设备可以是作为数据中心700的一部分而被包括的,其示例在此关于图7更详细地描述。
74.网络环境的组件可以通过网络彼此通信,网络可以是有线、无线或两者。网络可以包括多个网络,或者多个网络中的网络。举例来说,网络可以包括一个或更多个广域网(wan)、一个或更多个局域网(lan)、一个或更多个公共网络(例如因特网和/或公共交换电话网(pstn))、和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点(以及其他组件)之类的组件可以提供无线连接。
75.兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下服务器可能不包括在网络环境中),以及一个或更多个客户端-服务器网络环境(在这种情况下一个或更多个服务器可以包含在网络环境中)。在对等网络环境中,本文描述的关于服务器的功能可以在任意数量的客户端设备上实现。
76.在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、它们的组合等。基于云的网络环境可以包括框架层、作业调度器、资源管理器,以及在一个或更多个服务器上实现的分布式文件系统,这些服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括用于支持软件层的软件和/或应用层的一个或更多个应用程序的框架。软件或应用程序可分别包括基于网络的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用程序(例如,通过经由一个或更多个应用程序编程接口(api)访问服务软件和/或应用程序)。框架层可以是但不限于一种类型的免费且开源软件网络应用程序框架,例如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
77.基于云的网络环境可以提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些各种功能中的任何一个都可以分布在来自(例如,可以分布在州、地区、国家、全球等地的一个或更多个数据中心的)中央或核心服务器的多个位置。如果到用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,仅限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
78.客户端设备可以包括本文关于图6描述的示例计算设备600的至少一些组件、特征和功能。作为示例而非限制,客户端设备可以体现为个人计算机(pc)、膝上型计算机、移动设备、智能手机、平板计算机、智能手表、可穿戴计算机、个人数码助理(pda)、mp3播放器、虚拟现实头戴式显示器、全球定位系统(gps)或设备、视频播放器、摄像机、监视设备或系统、车辆、船只、飞行器、虚拟机器、无人机、机器人、手持通信设备、医院设备、游戏设备或系统、娱乐系统、车载计算机系统、嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、这些描述设备的任意组合或任何其他合适的设备。
79.本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
80.如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素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中的至少一个。
81.这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1