CN116310026A - 云端分布式图形渲染系统、方法、电子设备和介质 - Google Patents
云端分布式图形渲染系统、方法、电子设备和介质 Download PDFInfo
- Publication number
- CN116310026A CN116310026A CN202310153884.3A CN202310153884A CN116310026A CN 116310026 A CN116310026 A CN 116310026A CN 202310153884 A CN202310153884 A CN 202310153884A CN 116310026 A CN116310026 A CN 116310026A
- Authority
- CN
- China
- Prior art keywords
- computing
- steps
- processing units
- graphics
- shared
- 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
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 279
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000012545 processing Methods 0.000 claims abstract description 123
- 238000003860 storage Methods 0.000 claims abstract description 27
- 238000004364 calculation method Methods 0.000 claims description 104
- 238000005286 illumination Methods 0.000 claims description 80
- 238000007781 pre-processing Methods 0.000 claims description 52
- 230000008569 process Effects 0.000 claims description 18
- 239000013598 vector Substances 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 17
- 230000005540 biological transmission Effects 0.000 claims description 12
- 238000011156 evaluation Methods 0.000 claims description 12
- 238000009826 distribution Methods 0.000 claims description 8
- 230000007613 environmental effect Effects 0.000 claims description 4
- 238000012538 light obscuration Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 31
- 230000000694 effects Effects 0.000 description 18
- 230000001419 dependent effect Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 13
- 239000000463 material Substances 0.000 description 13
- 238000005070 sampling Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000012805 post-processing Methods 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000002910 structure generation Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001795 light effect Effects 0.000 description 2
- 239000003595 mist Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 241001270131 Agaricus moelleri Species 0.000 description 1
- 102100027159 Membrane primary amine oxidase Human genes 0.000 description 1
- 101710132836 Membrane primary amine oxidase Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000005574 cross-species transmission Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
提供一种云端分布式图形渲染系统、云端分布式图形渲染方法、电子设备和非暂时存储介质,该系统包括:云端的多个图形处理单元;其中,所述多个图形处理单元中的一个或多个图形处理单元,运行能被多个图形渲染管线共享的计算步骤,以输出和/或缓存运行得到的数据供所述多个图形渲染管线的计算步骤使用。如此,通过共享尽可能多的计算和数据,降低云端的整体渲染成本。
Description
技术领域
本申请涉及计算机图形学和云计算领域,且更具体地,涉及云端分布式图形渲染系统、云端分布式图形渲染方法、电子设备和非暂时存储介质。
背景技术
图形处理单元(Graphic Processing unit,GPU)即显卡,用来渲染图形。渲染图形的应用领域有:游戏、广告以及电影、电视和动画、产品设计的视觉特效、建筑、教育、医疗、智慧城市、元宇宙、虚拟现实(VR)、增强现实(AR)、扩展现实(XR)等等。
当前发展了云渲染技术,即利用基于云上的分布式GPU的云原生(cloud native)技术来进行图形渲染。
发明内容
根据本申请的一个方面,提供一种云端分布式图形渲染系统,包括:云端的多个图形处理单元;其中,所述多个图形处理单元中的一个或多个图形处理单元运行能被多个图形渲染管线共享的计算步骤,以输出和/或缓存运行得到的数据供所述多个图形渲染管线的计算步骤使用。
根据本申请的另一个方面,提供一种云端分布式图形渲染方法,包括:通过云端的多个图形处理单元中的一个或多个图形处理单元运行能被多个图形渲染管线共享的计算步骤;输出所述运行所得到的数据供所述多个图形渲染管线的计算步骤使用。
根据本申请的另一个方面,提供一种电子设备,包括:存储器,用于存储指令;处理器,用于读取所述存储器中的指令,并执行根据本申请的实施例的方法。
根据本申请的另一个方面,提供一种非暂时存储介质,其上存储有指令,其中,所述指令在被处理器读取时,使得所述处理器执行根据本申请的实施例的方法。
如此,通过共享尽可能多的计算和数据,降低云端的整体渲染成本。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了现有技术的利用云上的分布式GPU来进行游戏图形渲染的云系统的方框图。
图2示出了根据本申请的实施例的云端分布式图形渲染系统的方框图。
图3示出了根据本申请的实施例的图形渲染管线中的各个处理模块是否能被共享的示意图。
图4示出了根据本申请的实施例的图形渲染管线中的各个处理模块的各个计算步骤和数据是否能被共享的示意图。
图5A和5B示出了根据本申请的实施例的在两种类型的蒙皮计算步骤中能被多个图形渲染管线共享的计算阶段和输出数据的示意图。
图6A和图6B分别示出了根据本申请的实施例的阴影和光照预处理中的与视角无关的阴影贴图阶段和与视角相关的阴影贴图阶段的示意图。
图6C示出了根据本申请的实施例的阴影和光照预处理中的光照预处理阶段的示意图。
图7A示出了根据本申请的实施例的不透明光照计算步骤中的光照阶段的示意图。
图7B示出了根据本申请的实施例的不透明光照计算步骤中的与视角无关的环境光遮蔽阶段的示意图。
图8示出了根据本申请的实施例的云端分布式图形渲染系统的方框图。
图9示出了根据本申请的实施例的作为云上渲染引擎的加速器的运算阶段的示意图。
图10示出了根据本申请的实施例的云端分布式图形渲染方法的流程图。
图11示出了适于用来实现本申请的实施例的示例性电子设备的方框图。
图12示出了根据本申请的实施例的非暂时性计算机可读存储介质的示意图。
具体实施方式
现在将详细参照本申请的具体实施例,在附图中例示了本申请的例子。尽管将结合具体实施例描述本申请,但将理解,不是想要将本申请限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本申请的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
图形渲染需要完成以下基本功能:无限接近真实的场景(利用光照模型和物理模型)、3维(3D)元素动画、动作前向渲染算法、影视级后期特效处理等等。由于图形处理单元(Graphic Processing Unit,GPU)渲染图形需要处理大量的数据和运算来进行图形加速和实时渲染,一段视频的图形渲染可能需要很长时间且占用大量计算资源。当前发展了云渲染技术,即利用基于云上的分布式的多个GPU(例如云原生(cloud native))技术来进行图形渲染。通过利用云上的分布式的多个GPU来进行图形渲染,减轻了各个客户端用自己的硬件来进行图形渲染的计算压力,加快了图形渲染的速度,因此应用广泛于很多领域,例如游戏、广告以及电影、电视和动画、产品设计的视觉特效、建筑、教育、医疗、智慧城市、元宇宙、虚拟现实(VR)、增强现实(AR)、扩展现实(XR)等等。
图1示出了现有技术的利用云上的分布式GPU来进行游戏图形渲染的云系统100的方框图。
如图1所示,存在需要渲染的游戏实例1 101、游戏实例2 102、……游戏实例N 103(其中,N是正整数)。现有技术的利用云上的分布式GPU来进行游戏图形渲染的方式是利用云系统100上的GPU 1 107、GPU 2 108、……GPU N 109来分别处理针对各自的游戏的多个渲染管线(pipeline)中的多个渲染计算步骤(pass)104、105、106。其中,例如,GPU 1 107负责处理游戏实例1 101的多个渲染管线中的多个渲染计算步骤104,GPU 2 108负责处理游戏实例2 102的多个渲染管线中的多个渲染计算步骤105,……GPU N 109负责处理游戏实例N 103的多个渲染管线中的多个渲染计算步骤106。
这里的渲染管线和计算步骤都是软件层面的概念。渲染管线是一系列与光照和着色等相关的操作,每个渲染管线可以包括多个渲染计算步骤。一个被渲染的对象需要经过多个渲染管线中的多个渲染计算步骤来实现渲染,每个渲染计算步骤的结果会被累加到最终的呈现结果上。渲染计算步骤生成的数据都包含有关场景的特定信息,例如纹理(textures)、颜色、法向(normals)和深度信息。这些数据会进行组合生成更为复杂的效果,例如阴影(shadows)、光照(lighting)、模糊(blur)、发光(glow)和其他后处理(post-processing)效果。
在现有技术中,每个游戏实例的渲染都需要完成该游戏实例的特定的多个渲染计算步骤,且与该游戏实例对应的云上的那个GPU负责处理该游戏实例的特定的多个渲染计算步骤。
但是,在现有技术的GPU云环境中,例如同一个游戏的多个游戏实例可能存在或需要一些相同的场景或数据。具体地,例如在多人对战游戏中,可能有一些人可能在同一场景中游玩,这些人实际上共享同一场景。如果针对每个人的不同游戏实例都渲染同一场景一次,则可能导致占据较大的计算步骤渲染时间和计算成本。而且在现有技术中,利用专门的GPU负责处理特定的游戏实例,也可能导致该GPU的计算资源被浪费。
本申请的实施例希望通过共享尽可能多的计算和数据,降低云端的整体渲染成本,且还希望能够通过合适的调度机制来充分利用云端的GPU的计算资源。
总体上,本申请的实施例依靠云上强大的GPU资源,分离传统渲染管线中的能共享渲染计算步骤,分离在传统的渲染管线中能共享的数据,可使用专用的或被调度的共享GPU资源来运行这些能共享渲染计算步骤,并可以先一次性生成数据,然后依靠GPU(或中央处理单元(Central Processing Unit,CPU))同步将数据传输到每个单独的管线,以进行剩余的渲染。
图2示出了根据本申请的实施例的云端分布式图形渲染系统200的方框图。
如图2所示,云端分布式图形渲染系统200包括:云端的多个图形处理单元206、207……208,例如GPU 1、GPU 2……GPU N,其中N是正整数。云端的多个图形处理单元206、207……208中的一个或多个图形处理单元(例如如图2所示的GPU 1 206、GPU 2 207)运行能被多个图形渲染管线共享的计算步骤(例如如图2所示的能被共享的渲染计算步骤204),以输出和/或缓存运行得到的数据供其它渲染计算步骤使用。
在此,云端的多个图形处理单元206、207……208中的一个或多个图形处理单元可以是固定被设置用来专门运行能被多个图形渲染管线共享的计算步骤的,也可以是被动态调度来运行能被多个图形渲染管线共享的计算步骤的,即可以不固定为GPU 1 206、GPU 2207来专门运行能被多个图形渲染管线共享的计算步骤,而可以(例如根据实时任务和负载情况来)动态调度其他GPU、例如GPU 4、GPU 5(图中未示出)来运行能被多个图形渲染管线共享的计算步骤。本申请对此不做限制。
如图2所示的传统渲染计算步骤205可以包括那些不能被上述多个图形渲染管线共享的计算步骤。这里,术语“传统”旨在强调那些不能被上述多个图形渲染管线共享的计算步骤,以便与上述能被多个图形渲染管线共享的计算步骤相区分。另外,传统渲染计算步骤205可以包括共享地使用这些能被多个图形渲染管线共享的计算步骤输出的数据的计算步骤,也就是说,例如图2所示的GPU 1 206、GPU 2 207运行能被上述多个图形渲染管线共享的计算步骤(例如如图2所示的能被共享的渲染计算步骤204),以输出和/或缓存运行得到的数据供传统渲染计算步骤205中的要共享地使用这些数据的计算步骤来使用。
在为计算步骤配置GPU来运行时,在一个实施例中,可以考虑事先固定配置由例如云端的多个图形处理单元206、207……208中的GPU 1 206、GPU2 207来专门运行能被多个图形渲染管线共享的计算步骤,而固定配置由云端的多个图形处理单元206、207……208中的除了GPU 1 206、GPU 2 207以外的例如GPU N 208来运行其他传统计算步骤。在另一实施例中,也可以(例如根据实时任务和负载情况来)动态调度云端的多个图形处理单元206、207……208中的一些GPU来运行能被多个图形渲染管线共享的计算步骤以及一些GPU来运行其他传统渲染计算步骤。当然,调度云端的多个图形处理单元来运行被多个图形渲染管线共享的计算步骤和其他传统渲染计算步骤的方式不限于此。
如此,通过共享尽可能多的计算和数据,降低云端的整体渲染成本。
在一个实施例中,能被多个图形渲染管线共享的计算步骤是根据计算步骤和/或计算步骤的输出数据是否能被多个图形渲染管线的计算步骤使用来确定的。
在一个实施例中,能被多个图形渲染管线共享的计算步骤包括与与视角无关的(view independent)计算步骤。
例如,在多人对战游戏中,可能有一些人可能在同一场景中游玩,这里的场景的渲染是与每个人的与视角无关的渲染计算步骤,这样的与视角无关的渲染计算步骤就可以被GPU运行一次,然后将输出的场景渲染数据提供给每个人的场景渲染中,而不需要对每个人都渲染一次该场景。诸如此类,还可以存在一些可以共享的计算步骤和数据,以下将详细描述哪些计算步骤通常能被多个图形渲染管线共享使用。
图3示出了根据本申请的实施例的图形渲染管线中的各个处理模块是否能被共享的示意图。
图形渲染管线通常包括与视角无关的预处理(View Independent Pre-processing)模块301、与视角相关的预处理(view-dependent Pre-processing)模块302、阴影和光照预处理(Shadow and Lighting Pre-Processing)模块303、不透明光照处理(Opaque Lighting)模块304、透明光照处理(Transparent Lighting)模块305、运动矢量(Motion Vector)计算模块306、后处理(Post-Processing)模块307。
与视角无关的预处理模块301通常涉及与每个人的与视角无关的场景环境渲染(Environment Capture)或与每个人的与视角无关的蒙皮(Skinning)的预处理的计算步骤,例如在多人游戏所处的同一场景的渲染等的预处理。
与视角相关的预处理模块302通常涉及与每个人的与视角相关的渲染的预处理的计算步骤,例如各个游戏玩家自己的视角看到的对象的渲染等的预处理。
阴影和光照预处理模块303通常涉及各种光源下的光照和阴影渲染的计算步骤。
不透明光照处理模块304通常涉及不透明对象的光照效果渲染的计算步骤,例如先渲染离视角(相机)近的对象,然后渲染远处的对象,这样可以不渲染被遮挡的对象。
透明光照处理模块305通常涉及渲染透明和半透明的对象的光照效果的计算步骤。
运动矢量计算模块306通常涉及计算两帧之间的像素的运动矢量。
后处理模块307涉及改善画质的一些计算步骤,例如抗锯齿等。
在一个实施例中,通常,能被多个图形渲染管线共享的计算步骤包括与与视角无关的计算步骤,例如针对场景的渲染。而与视角相关的计算步骤、例如针对各个对象的渲染通常不能被多个图形渲染管线共享,需要针对每个视角来进行单独计算。
在图3到图7B中,用不同灰度的阴影来表示该模块是否可能被多个图形渲染管线共享。例如,浅灰色阴影表示该模块能被多个图形渲染管线共享,而无阴影表示该模块不能被多个图形渲染管线共享,而深灰色阴影表示该模块中的一些计算阶段(而非全部计算阶段)能被多个图形渲染管线共享,其中,通常与视角无关的计算阶段能被多个图形渲染管线共享,而与视角相关的计算阶段不能被多个图形渲染管线共享,需要针对每个视角来进行单独计算。
如图3所示,能被多个图形渲染管线共享的计算步骤包括与视角无关的预处理模块的计算步骤301、阴影和光照预处理模块303的计算步骤303、运动矢量计算步骤306、以及不透明光照处理模块304中的一部分阶段,稍后还将结合图4来详细描述。
图4示出了根据本申请的实施例的图形渲染管线中的各个处理模块的各个计算步骤和数据是否能被共享的示意图。例如,浅灰色阴影表示该模块能被多个图形渲染管线共享,而无阴影表示该模块不能被多个图形渲染管线共享,而深灰色阴影表示该模块中的一些计算阶段(而非全部计算阶段)能被多个图形渲染管线共享。
通常与视角无关的计算阶段能被多个图形渲染管线共享,而与视角相关的计算阶段不能被多个图形渲染管线共享,需要针对每个视角来进行单独计算。
如图4所示,在一个实施例中,能被多个图形渲染管线共享的计算步骤包括与与视角无关的预处理计算步骤301。
与视角无关的预处理模块301中通常涉及的都是与视角无关的计算步骤,通常都是能被多个图形渲染管线共享的计算步骤,因为与每个人的与视角无关的场景环境渲染相关的预处理的计算步骤——例如在多人游戏所处的同一场景的渲染等的预处理——可以在例如计算一次以后将输出的场景环境渲染预处理数据提供给多人各自的场景渲染中共享使用,以便渲染每个人的场景环境,尤其是在同一场景中游玩的每个人的场景环境的渲染。
例如,与视角无关的预处理计算步骤包括蒙皮计算步骤401和环境捕捉计算步骤402中的至少一种,其中蒙皮计算步骤401被云端的一个或多个图形处理单元运行以输出蒙皮顶点(skinning vertex)数据431供多个图形渲染管线的计算步骤使用,环境捕捉计算步骤402被云端的一个或多个图形处理单元运行以输出和/或缓存立方体贴图数据432供多个图形渲染管线的计算步骤使用。
蒙皮指的是对骨骼模型蒙上皮肤。环境捕捉指的是模拟全包围的环境,得到类似带有6个面的立方体。这两个计算步骤都是与与视角无关的。
图5A和5B示出了根据本申请的实施例的在两种类型的蒙皮计算步骤中能被多个图形渲染管线共享的计算阶段和输出数据的示意图。
图5A示出了在传统蒙皮计算步骤中能被多个图形渲染管线共享的计算阶段和输出数据的示意图。
如图5A所示,在传统蒙皮计算步骤中包括顶点着色器(Vertex Shader)和像素着色器(Pixel Shader)步骤。
顶点着色器用于渲染顶点,例如对顶点计算光照以及纹理坐标等。像素着色器用于渲染像素。通常顶点着色器步骤输出的蒙皮顶点数据(Skinned Vertex Data)可以作为后续阶段的输入数据。
根据本申请的实施例,顶点着色器步骤输出的蒙皮顶点数据能供多个图形渲染管线共享和使用。这里的蒙皮顶点数据是通过骨骼模型本身渲染出来的组成网格(皮肤)的一堆顶点。一个顶点数据有一个纹理坐标、一个或多个权重组成。一个顶点位置(或坐标)可以看作是各个经过矩阵变换后的权重位置的加权平均。
与视角无关的蒙皮顶点数据表示的是通过骨骼模型渲染的纹理坐标和权重,其完全能够被其他图形渲染管线共享和使用来生成皮肤渲染效果。如此,节省了其他图形渲染管线重新计算和存储蒙皮顶点数据的计算资源成本和时间成本。
图5B示出了在光线跟踪友好蒙皮(Ray Tracing Friendly Skinning)计算步骤中能被多个图形渲染管线共享的计算阶段和输出数据的示意图。
在光线追踪中,追踪一条穿过图像中每个像素中心的光线,然后测试这条光线是否与场景中的任何几何体相交。如果找到相交,可以将像素颜色设置为与光线相交的对象的颜色。因为一条射线可能与多个对象相交,所以一般需要跟踪最近的相交距离。
如图5B所示,在光线跟踪友好蒙皮计算步骤中包括运行计算着色器(ComputeShader)、得到蒙皮顶点数据。计算着色器是可以在GPU上运行以执行任意计算的着色器。蒙皮顶点数据可以用于光线跟踪着色器或加速数据结构生成的输入。
接下来,光线跟踪友好蒙皮计算步骤还包括顶点着色器、像素着色器、加速数据结构生成(Acceleration Data Structure Generation)、光线生成/相交着色器(RayGeneration/Intersection Shader)和阴影化(Shadowing)等。这些都是用于跟踪光线的生成、反射、折射和路径跟踪、命中/相交。
其中,根据本申请的实施例,运行计算着色器得到的蒙皮顶点数据能够被其他图形渲染管线共享和使用。蒙皮顶点数据可以被保存在一个缓冲器中,使得其他所有图形渲染管线实例都可以从该缓冲器中提取数据以达到共享的目的。
如此,节省了其他图形渲染管线重新计算和存储蒙皮顶点数据的计算资源成本和时间成本。
当然,蒙皮计算步骤的具体阶段不限于图5A和图5B所示的阶段,本申请不限制蒙皮计算步骤的具体阶段,只需要使得蒙皮计算步骤中得到的蒙皮顶点数据能够被其他图形渲染管线共享和使用即可。
环境捕捉(Environment Capture)计算步骤402是为了实现环境映射中的反射(reflection)和折射(refraction)效果,得到带有场景环境的立方体贴图。因为这种立方体贴图是与与视角无关的,因此也可以被其他图形渲染管线共享和使用。
而与视角相关的预处理计算步骤通常不能被多个图形渲染管线共享,需要针对每个视角来进行单独计算。
如图4所示,与视角相关的预处理模块302通常涉及与每个人的视角相关的渲染的预处理的计算步骤,例如各个游戏玩家自己的视角看到的对象等。
具体地,与视角相关的预处理模块302的计算步骤通常包括用于得到像素的深度模板视图433的深度预处理计算步骤(Depth Pre-pass)403、用于存储每个像素对应的位置(Position)、法向(Normal)、漫反射颜色(Diffuse Color)以及其他有用材质参数的G-缓冲区(几何缓冲区)计算步骤(G-Buffer Pass)404、用于得到反射数据434的服务端渲染(Server Side Render,SSR)计算步骤405、用于只渲染能在视锥内看到的对象以得到剔除结果435的Hi-Z视锥剔除(Hi-Z Culling)计算步骤406、用于实现近似环境光屏蔽效果的屏幕空间环境光遮蔽(Screen Space Ambient Occlusion,SSAO)407等。其中G缓冲区(G-buffer)是对所有用来储存光照相关的数据,并在最后的光照处理阶段中使用的所有纹理的总称。服务端渲染指的是在服务端进行渲染。
当然上述计算步骤是与视角相关的预处理的计算步骤的一些举例,并非限制,也可以包括更多或更少或不同的计算步骤。
这些与视角相关的预处理计算步骤通常不能被多个图形渲染管线共享,需要针对每个视角来进行单独计算,因为它们都与每个人的视角有关,不同人的视角下看到的对象可能是不同的,因此通常难以将一个人的视角下看到的对象与其他人的视角下看到的对象进行共享。
在一个实施例中,能被多个图形渲染管线共享的计算步骤包括阴影和光照预处理计算步骤。因为阴影和光照预处理计算步骤得到的阴影和光照数据也可以用于其他渲染管线实例以用于进行阴影化和模拟真实光照。
具体地,如图4所示,能被多个图形渲染管线共享的阴影和光照预处理计算步骤包括角色(与视角相关的)阴影贴图(Character Shadow Maps)计算步骤408、场景(与视角无关的)阴影贴图(Scene Shadow Maps)计算步骤409、场景聚类灯光和对象(Cluster Lightsand Objects)计算步骤410、角色环境(Character Ambient)计算步骤411、角色聚类灯光和对象(Cluster Lights and Objects)计算步骤412。
角色阴影贴图指的是对角色附加阴影贴图,并让其跟随角色一起运动,以达到角色的真实感光照和阴影效果。场景阴影贴图是对场景附加阴影贴图,以达到场景的真实感光照和阴影效果。场景聚类灯光和对象指的是聚类场景中的灯光和对象,角色聚类灯光和对象指的是聚类角色的灯光和对象。灯光的类型包括聚光灯光源(spot light)、点光源(point light)和平行光源(directional light)等。角色环境计算步骤指的是计算角色的环境光。
其中多个图形处理单元被配置为运行这些能被共享的计算步骤以输出和/或缓存聚光灯光源阴影贴图数据(Spot Shadow Maps)、点光源阴影贴图数据(Point ShadowMaps)、平行光源阴影贴图数据(Directional Shadow Maps)436中的至少一种供多个图形渲染管线的计算步骤使用。
具体地,图6A和图6B分别示出了根据本申请的实施例的阴影和光照预处理中的与视角无关的阴影贴图阶段和与视角相关的阴影贴图阶段的示意图。
如图6A所示,与视角无关的场景阴影贴图计算步骤中的顶点着色器、深度测试和光栅化(Depth Test and Rasterization)以及级联阴影贴图(Cascaded Shadow Map,CSM)阶段都能被多个渲染管线实例完全共享。唯一的问题是如何合理地为每个管线实例挑选和平铺得到的阴影数据。
深度测试指的是通过深度测试来模拟实现近处的物体遮挡远处的物体。光栅化指的是使用透视投影,将三角形的三维表示变为二维表示,以将三角形的顶点“投射”到屏幕上。级联阴影贴图指的是通过在观察者附近提供更高分辨率的深度纹理,而在远处提供更低分辨率的纹理,这是通过分割视角视锥并为每个分区创建单独的深度贴图来实现的。
如图6B所示,对于与视角相关的角色阴影贴图(View Dependent Shadow Map),例如,每个实例视角视锥数据(Per Instance View Frustum Data)计算阶段、与视角无关的聚类灯光、与视角无关的聚类对象(cluster object)、每个实例视角更新(Per InstanceView Updates)阶段、顶点着色器阶段、深度测试和光栅化阶段是能被多个渲染管线实例共享的。级联所有视图的稀疏阴影贴图(Cascade Sparse Shadow Maps for all Views)阶段中的分块(tile)运算也是能被多个渲染管线实例共享的。每个实例视角视锥数据指的是计算每个实例的视角的视锥数据,其中视锥指的是视角能看到的具有矩形底面的截顶金字塔区域(视锥体)。与视角无关的聚类灯光、与视角无关的聚类对象分别指的是例如场景的聚类灯光、场景的聚类对象。每个实例视角更新指的是每个实例的视角的更新。深度测试指的是通过深度测试来模拟实现近处的物体遮挡远处的物体。光栅化指的是使用透视投影,将三角形的三维表示变为二维表示,以将三角形的顶点“投射”到屏幕上。
另外,场景聚类灯光和对象(Scene Cluster Lights and Objects)计算步骤410、角色环境(Character Ambient)411、角色聚类灯光和对象(Character Cluster Lightsand Objects)计算步骤412计算得到的信息也是被多个渲染管线实例共享的。
图6C示出了根据本申请的实施例的阴影和光照预处理中的光照预处理阶段的示意图。
在一个实施例中,能被多个图形渲染管线共享的计算步骤包括光照预处理中的一部分阶段。
其中,如图6C所示,上述能被多个图形渲染管线共享的光照预处理中的一部分阶段包括每个实例视角视锥数据(Per Instance View Frustum Data)阶段、与视角无关的聚类灯光(Cluster Lights)、与视角无关的聚类对象(Cluster Objects)、漫反射材质评估(Diffuse Material Evaluation)阶段、每个对象材质缓存(Per Object Material Cache)阶段、每个对象光照评估(Per Object Lighting Evaluation)阶段、每个对象辐照缓存(Per Object Radiance Cache)阶段、与视角无关的分布缓存(Distributed Cache)阶段中的至少一种。而缓存重建和采样(Cache Reconstruction and Sampling)不能被多个图形渲染管线共享,需要单独计算。
每个实例视角视锥数据指的是每个实例的视角视锥可见的对象的数据。与视角无关的聚类灯光指的是能够用于场景的聚类灯光,与视角无关的聚类对象指的是能够用于场景的聚类对象。漫反射材质评估指的是评估漫反射材质表面材质的粗糙性等等。每个对象材质缓存指的是缓存评估的每个对象的材质信息。每个对象光照评估指的是评估每个对象的光照信息,每个对象辐照缓存指的是缓存每个对象的着色点的亮度和色度值。与视角无关的分布缓存指的是与视角无关的材质和灯光数据的缓存的分布。缓存重建和采样指的是对缓存的数据进行重建和采样。
也就是说,全局场景中的灯光和对象的聚类(即与视角无关的聚类灯光、与视角无关的聚类对象)可以在共享处理中有效地完成。而与视角相关的聚类灯光和聚类对象则不能被共享,而需要单独计算。每个实例视角视锥数据阶段、漫反射材质评估阶段、每个对象材质缓存阶段、每个对象光照评估阶段因为是与视角无关的,因此都可以被共享。如果启用了对象空间照明,还可以将每个对象的照明信息预先计算为辐照缓存。即每个对象辐照缓存阶段也可以被共享。之后,可以将全局场景中的材质和灯光数据分发到每个管道实例,用于视图相关的照明。即与视角无关的分布缓存阶段可以被共享。
接下来,光照通常是渲染管道中最复杂的阶段。不透明光照指的是渲染不透光的物体的光照效果,透明光照指的是渲染透明或半透明的物体的光照效果。
如图4所示,不透明光照计算步骤304中的光照处理中的一部分阶段和与视角无关的环境光遮蔽中的一部分阶段是能被多个图形渲染管线共享的计算步骤。通常与视角无关的阶段基本上能被多个图形渲染管线共享,而与视角相关的阶段基本上不能被多个图形渲染管线共享,需要针对每个视角来进行单独计算。
图7A示出了根据本申请的实施例的不透明光照计算步骤304中的光照阶段的示意图。
如图7A所示,光照阶段中的准备基于物理的渲染(Physically Based Rendering,PBR)的材质阶段、准备光照材质(Prepare Lighting Materials)阶段、网格着色器(MeshShader)阶段,而顶点着色器(Vertex Shader)阶段、细分曲面着色器(TessellationShader)阶段、几何着色器(GS Shader)阶段、像素着色器(Pixel Shader)阶段不能被多个图形渲染管线共享,需对每个渲染管线实例单独计算。
基于物理的渲染指的是使用基于物理原理和微平面理论建模的着色/光照模型,以及使用从现实中测量的表面参数来准确表示真实世界材质的渲染。准备光照材质指的是准备用于光照的材质。网格着色器指的是对网格进行着色,其中网格是定义物体形状的一系列顶点、边缘、面的组合。细分曲面着色器指的是将曲面进一步划分为更小的子曲面(增加了更多的顶点)以此来增加物体表面的三角面的数量,并对这些细分的曲面进行着色。几何着色器指的是对图元进行着色,其中图元指的是构成一个三维实体的顶点集合,例如空间中的一个点对应一个顶点,一条线段对应两个顶点,一个三角形对应三个顶点,这些都是图元。
图7B示出了根据本申请的实施例的不透明光照计算步骤304中的与视角无关的环境光遮蔽阶段的示意图。
其中,如图7B所示,与视角无关的环境光遮蔽中的一部分阶段包括变换几何图形(Transform Geometry)阶段、逐顶点光线行进(Per Vertex Ray Marching)阶段、去噪(Denoising)阶段、生成缓存(Generate Cache)阶段、与视角无关的分布缓存(DistributedCache)阶段中的至少一种。而缓存重建和采样(Cache Reconstruction and Sampling)不能被多个图形渲染管线共享,需要单独计算。
变换几何图形指的是对物体的几何图形进行变换。逐顶点光线行进指的是从视角中心向观察方向逐像素地投射射线,基于光路可逆的原理,反向查找落在这个像素的光会是来自哪些物体,其是通过步进的方式,沿着射线逐步前进,并沿途判断是否命中了发光物体。去噪指的是去除渲染的画面中的噪声(点)。生成缓存指的是生成缓存的数据。与视角无关的分布缓存指的是分布与视角无关的缓存的数据。
如此,多个图形处理单元被配置为运行这些能被共享的计算步骤以输出和/或缓存光照数据(Light Data)437、漫反射数据(Diffuse Data)438、镜面反射数据(SpecularData)439供多个图形渲染管线的计算步骤使用。其中,光照数据反映了物体的光照信息,而漫反射数据反映了物体的漫反射信息,镜面反射数据反映了物体的镜面反射信息,其中漫反射一般在光射到表面较粗糙的物体时发生,指的是当光线照射到表面时,它的某些部分被吸收而另一部分被反射,而镜面反射一般在光射到表面很光滑的物体时发生,指的是当光线照射到表面时,几乎全部光线被反射。
如图4所示,在一个实施例中,运动矢量计算步骤306是能被多个图形渲染管线共享的计算步骤,其中多个图形处理单元被配置为运行计算运动矢量的步骤417以输出和/或缓存运动矢量数据440供多个图形渲染管线的计算步骤使用。
运动矢量指的是同一像素在两帧之间的位移。
运动矢量可以用于运动模糊,以模拟胶片相机的慢快门速度拍摄快速运动物体时产生的模糊效果。
如图4所示,透明光照处理305中的雾(Fog)渲染阶段414、服务端渲染SSR计算阶段415、前向渲染对象(Forward Objects)计算阶段416以及后处理307中的时域抗锯齿方法(Temporal Anti-Aliasing,TAA)阶段418、运动模糊(Motion Blur)阶段419、光华(Bloom)渲染阶段420、用户界面(User Interface,UI)渲染阶段不能被多个图形渲染管线共享。
雾渲染指的是模拟大气中有雾的效果。服务端渲染SSR在的是在服务器端进行渲染。前向渲染对象指的是对于每个光源渲染被该光源照亮的对象,因此根据场景中的光源数量以及它们是否照亮对象,有些对象可能会渲染多次。时域抗锯齿方法指的是利用时域信息(例如历史帧的数据)提升抗锯齿效果,用于修复/清理图形中的混叠。时域抗锯齿方法对任意一帧只计算一个像素点,随着多个帧的累积,就有多个采样像素,再混合结果,来提高采样效率,达到缓解锯齿的目的。运动模糊指的是利用像素在两帧之间的运动矢量信息,以模拟胶片相机的慢快门速度拍摄快速运动物体时产生的模糊效果。光华渲染指的是从明亮区域边缘延伸出来的光的边缘的效果,类似于高光溢出的光学效果,其中来自明亮来源(如闪光)的光表现为泄露到周围对象中。用户界面渲染指的是渲染用户界面,例如游戏玩家操作的用户界面。
如此,通过共享尽可能多的计算和数据,降低云端的整体渲染成本。
在实际的GPU云的运行阶段中,可以先调度多个图形处理单元来运行能被共享的计算步骤,在得到和缓冲了共享数据之后,然后再调度多个图形处理单元利用这些共享数据来运行其他计算步骤。这样先集中精力调度多个图形处理单元一次性把能被共享的计算步骤都计算完,然后再对多个图形处理单元进行调度来对其他计算步骤进行计算,这样可以降低计算步骤之间相互等待执行结果的情况,因为能被共享的计算步骤的执行结果更容易被其他计算步骤依赖,因此有些其他计算步骤可能会等待能被共享的计算步骤的执行结果。
当然,上述调度先后顺序也不是必须的,也可以将多个图形处理单元作为整理来调度执行包括能被共享的计算步骤和其他计算步骤的整体计算步骤,例如可以在图形处理单元执行完一个能被共享的计算步骤之后,调度图形处理单元执行共享该能被共享的计算步骤的计算步骤,也可以不考虑相互依赖关系进行调度,只要计算过程中等待所需的计算步骤执行完。即,调度器与额可以被配置为调度所有多个图形处理单元来运行所有能被共享的计算步骤和其他计算步骤。
如图4右侧所示,假设需要处理实例A、实例B、实例……,进行每个实例预处理441,得到每个实例数据442,进行每个实例调度443。然后,先进行能被共享的计算步骤、包括与视角无关的处理444、阴影和光照预处理447、不透明光照中的漫反射处理450和能被共享的计算步骤和运动矢量计算451,在得到了能被共享的数据、包括立方体贴图445、聚光灯光源阴影贴图、点光源阴影贴图、平行光源阴影贴图448、场景相关的(即与视角无关的)光照数据449、和缓冲的运动矢量452之后,进行不能被共享的计算步骤、即与视角相关的一些计算步骤、包括视角相关处理446、不透明光照中的镜面反射处理和不能被共享的计算步骤453、透明光照处理454、以及后处理455。
如此,接下来,介绍调度云端GPU来运行计算的调度方案。
在现有技术的调度方案中,分散式调度(Decentralized Scheduling)当云相对较小时,会在每个节点上增加不必要的开销。集中式调度(Centralized Scheduling)在假设原子任务很小、并且可以细分的情况下,不适合GPU的情况。
图8示出了根据本申请的实施例的云端分布式图形渲染系统200’的方框图。
在一个实施例中,系统200’除了包括与图2所示的相同的模块之外,还包括:调度器209,被配置为调度多个图形处理单元206、207……208来运行能被共享的计算步骤204和/或其他计算步骤205。
在一个实施例中,调度器被配置为先调度多个图形处理单元来运行能被共享的计算步骤,然后再调度多个图形处理单元来运行其他计算步骤。
在一个实施例中,调度器209被配置为基于多个图形处理单元的运算时间和从调度器209到多个图形处理单元206、207……208的传输带宽来将包括能被多个图形渲染管线共享的计算步骤204和/或其他计算步骤205的多个任务分配到多个图形处理单元206、207……208上。
在一个实施例中,调度器209被配置为将多个任务分配到多个图形处理单元206、207……208上使得对于多个任务,从调度器209到多个图形处理单元206、207……208的传输带宽的总和与多个图形处理单元206、207……208上运行多个任务的运算时间的总和的和最小。
具体地,例如,调度器209可以被配置为通过最小化如下公式的值来将能被多个图形渲染管线共享的计算步骤204和其他计算步骤205(统称为任务)分配到多个图形处理单元206、207……208上:
其中n是任务的总数,k表示第k个任务,xk表示多个图形处理单元206、207……208中的要运行第k个任务的那个图形处理单元。T(xk)表示从调度器到要运行第k个任务的那个图形处理单元的传输带宽,而C(xk)表示要运行第k个任务的那个图形处理单元运算该第k个任务的运算时间。
通过使得对于所有n个任务、从调度器到要运行所有n个任务的相应图形处理单元的传输带宽的总和与运行n个任务的图形处理单元运算所有n个任务的运算时间的总和的和E最小,来将能被多个图形渲染管线共享的计算步骤204和多个图形渲染管线205(统称为任务)分配到多个图形处理单元206、207……208上,可以使得总体运算成本最低。
如此,通过上述方式,可以在共享尽可能多的计算和数据的同时最优地调度图形处理单元来使得总体运算成本最低,从而进一步降低整体渲染成本。
上述调度方式也可以结合先调度多个图形处理单元来运行能被共享的计算步骤、然后再调度多个图形处理单元来运行其他计算步骤的方案,使得先通过上述调度方式来调度多个图形处理单元来一次性运行能被共享的计算步骤,然后再通过上述调度方式来调度多个图形处理单元来运行其他计算步骤。当然这里的先后顺序也不是限制,也可以在调度使得一个GPU运行完一个能被共享的计算步骤之后就调度使得(该或另一个)GPU来运行共享地利用该计算步骤得到的数据的另一计算步骤。
当然,调度器209的调度方式不限于此,也可以考虑其他因素,或者省略考虑某些因素,或者以不同的考虑因素的方式来进行调度,在此不限制该调度方式。
该系统200’还可以包括:位于云端的加速器210,被配置为加速能被多个图形渲染管线共享的计算步骤和/或其他不能被共享的计算步骤的运算。
如图8所示,调度器209和加速器210位于云端。
在一个实施例中,加速器被配置为组合能被共享的计算步骤和/或其他不能被共享的计算步骤所需的资源,以利用组合的资源通过图形处理单元来进行能被共享的计算步骤和/或其他不能被共享的计算步骤的运算。
图9示出了根据本申请的实施例的作为云上渲染引擎的加速器的运算阶段的示意图。
如图9所示,例如游戏A的实例1 901、游戏A的实例2 902、游戏B的实例1 903都需要进行渲染,它们分别有一些资源需求。例如在资源代理904中,游戏A的实例1需要资源1_1(即资源1中的一部分),游戏A的实例2需要资源2_1(即资源2中的一部分)、资源1_2(即资源1中的另一部分),游戏B的实例1需要资源2_2(即资源2中的另一部分)、资源3。资源代理904将这些资源需求进行组合,例如组合为资源1、资源2、资源3。资源处理器905将资源1、2、3分配给渲染器中的渲染器906中的渲染器1、渲染器2、渲染器3以使得渲染器进行渲染阶段A(例如固定和重用能共享的计算步骤)以及渲染阶段B(例如对于每个实例的渲染管线)。然后渲染器906将渲染器渲染的结果发回游戏A的实例1 901、游戏A的实例2 902、游戏B的实例1 903以便展示给用户。
注意,这里的资源代理、资源处理器、渲染器都是加器中的软件程序/模块。
如此,可以在共享尽可能多的计算和数据的同时对各个渲染实例的资源需求进行组合来使得总体运算成本降低,从而进一步降低整体渲染成本。
注意,根据本申请的实施例的基于云上的分布式GPU的云原生(cloud native)的实用场景不限于游戏、元宇宙、数字孪生、虚拟城市、导航、景点故事等等。云上的分布式GPU也可以被进一步划分为小云服务器或子云,例如在虚拟城市中的某个街道口的渲染和应用可以由小云服务器或子云来完成。也就是说,图像渲染的场景都可以使用根据本申请的实施例。
图10示出了根据本申请的实施例的云端分布式图形渲染方法1000的流程图。
如图10所示,云端分布式图形渲染方法1000包括:步骤1001,通过云端的多个图形处理单元中的一个或多个图形处理单元运行能被多个图形渲染管线共享的计算步骤;步骤1002,输出运行所得到的数据供多个图形渲染管线的计算步骤使用。
如此,通过共享尽可能多的计算和数据,降低云端的整体渲染成本。
在一个实施例中,能被多个图形渲染管线共享的计算步骤是根据计算步骤和/或计算步骤的输出数据是否能被多个图形渲染管线的计算步骤使用来确定的。
在一个实施例中,能被多个图形渲染管线共享的计算步骤包括与视角无关的计算步骤。
在一个实施例中,能被多个图形渲染管线共享的计算步骤包括与视角无关的预处理计算步骤。
在一个实施例中,与视角无关的预处理计算步骤包括蒙皮计算步骤和环境捕捉计算步骤中的至少一种,其中蒙皮计算步骤被云端的一个或多个图形处理单元运行以输出和/或缓存蒙皮顶点数据供多个图形渲染管线的计算步骤使用,环境捕捉计算步骤被云端的一个或多个图形处理单元运行以输出和/或缓存立方体贴图数据供多个图形渲染管线的计算步骤使用。
在一个实施例中,能被多个图形渲染管线共享的计算步骤包括阴影和光照预处理计算步骤。
在一个实施例中,能被多个图形渲染管线共享的阴影和光照预处理计算步骤包括角色阴影贴图计算步骤中的级联阴影贴图阶段、场景阴影贴图阶段、场景聚类灯光和对象阶段、角色环境阶段、角色聚类灯光和对象阶段中的至少一种,其中,能被多个图形渲染管线共享的阴影和光照预处理计算步骤中的光照预处理中的一部分阶段包括每个实例视角视锥数据阶段、与视角无关的聚类灯光、与视角无关的聚类对象、漫反射材质评估阶段、每个对象材质缓存阶段、每个对象光照评估阶段、每个对象辐照缓存阶段、与视角无关的分布缓存阶段中的至少一种,其中多个图形处理单元被配置为运行能被共享的计算步骤以输出和/或缓存聚光灯光源阴影贴图数据、点光源阴影贴图数据、平行光源阴影贴图数据中的至少一种供多个图形渲染管线的计算步骤使用。
在一个实施例中,能被多个图形渲染管线共享的计算步骤包括不透明光照计算步骤中的光照处理中的一部分阶段和与视角无关的环境光遮蔽中的一部分阶段中的至少一种。
在一个实施例中,光照处理中的一部分阶段包括准备基于物理的渲染的材质阶段、准备光照材质阶段、网格着色器阶段中的至少一种,与视角无关的环境光遮蔽中的一部分阶段包括变换几何图形阶段、逐顶点光线行进阶段、去噪阶段、生成缓存阶段、与视角无关的分布缓存阶段中的至少一种,其中多个图形处理单元被配置为运行能被共享的计算步骤以输出和/或缓存光照数据、漫反射数据、镜面反射数据中的至少一种供多个图形渲染管线的计算步骤使用。
在一个实施例中,能被多个图形渲染管线共享的计算步骤包括运动矢量计算步骤,其中多个图形处理单元被配置为运行能被共享的计算步骤以输出和/或缓存运动矢量数据供多个图形渲染管线的计算步骤使用。
在一个实施例中,方法1000还包括:通过位于云端的调度器调度多个图形处理单元来运行能被共享的计算步骤和/或其他不能被共享的计算步骤。
在一个实施例中,调度先调度多个图形处理单元来运行能被共享的计算步骤,然后再调度多个图形处理单元来运行其他计算步骤。
在一个实施例中,调度包括:基于多个图形处理单元的运算时间和从调度器到多个图形处理单元的传输带宽来将包括能被多个图形渲染管线共享的计算步骤和/或其他不能被共享的计算步骤的多个任务分配到多个图形处理单元上。
在一个实施例中,调度包括:将能被多个图形渲染管线共享的计算步骤和/或其他不能被共享的计算步骤分配到多个图形处理单元上使得对于多个任务,从调度器到多个图形处理单元的传输带宽的总和与多个图形处理单元上运行多个任务的运算时间的总和的和最小。
如此,通过上述方式,可以在共享尽可能多的计算和数据的同时最优地调度图形处理单元来使得总体运算成本最低,从而进一步降低整体渲染成本。
在一个实施例中,方法1000还包括:通过位于云端的加速器加速能被多个图形渲染管线共享的计算步骤和/或其他不能被共享的计算步骤的运算。
在一个实施例中,通过位于云端的加速器加速能被多个图形渲染管线共享的计算步骤和/或其他不能被共享的计算步骤的运算包括:通过加速器组合能被共享的计算步骤和/或其他不能被共享的计算步骤所需的资源,以利用组合的资源通过图形处理单元来进行能被共享的计算步骤和/或其他不能被共享的计算步骤的运算。
如此,可以在共享尽可能多的计算和数据的同时对各个渲染实例的资源需求进行组合来使得总体运算成本降低,从而进一步降低整体渲染成本。
总体上,本申请的实施例依靠云上强大的GPU资源,分离传统渲染管线中的能共享渲染计算步骤,分离在传统的渲染管线中能共享的数据,可使用专用的共享GPU资源来运行这些渲染计算步骤,并可以一次性生成数据,依靠GPU(或中央处理单元(CentralProcessing Unit,CPU))同步将数据传输到每个单独的管线,以进行剩余的渲染。
图11示出了适于用来实现本申请的实施例的示例性电子设备的方框图。
电子设备可以包括处理器(H1);存储介质(H2),耦合于处理器(H1),且在其中存储计算机可执行指令,用于在由处理器执行时进行本申请的实施例的各个方法的步骤。
处理器(H1)可以包括但不限于例如一个或者多个处理器或者或微处理器等。
存储介质(H2)可以包括但不限于例如,随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、计算机存储介质(例如硬碟、软碟、固态硬盘、可移动碟、CD-ROM、DVD-ROM、蓝光盘等)。
除此之外,该电子设备还可以包括(但不限于)数据总线(H3)、输入/输出(I/O)总线(H4),显示器(H5)以及输入/输出设备(H6)(例如,键盘、鼠标、扬声器等)等。
处理器(H1)可以通过I/O总线(H4)经由有线或无线网络(未示出)与外部设备(H5、H6等)通信。
存储介质(H2)还可以存储至少一个计算机可执行指令,用于在由处理器(H1)运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
在一个实施例中,该至少一个计算机可执行指令也可以被编译为或组成一种软件产品,其中多个计算机可执行指令被处理器运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
图12示出了根据本申请的实施例的非暂时性计算机可读存储介质的示意图。
如图12所示,计算机可读存储介质1220上存储有指令,指令例如是计算机可读指令1210。当计算机可读指令1210由处理器运行时,可以执行参照以上描述的各个方法。计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。例如,计算机可读存储介质1220可以连接于诸如计算机等的计算设备,接着,在计算设备运行计算机可读存储介质1220上存储的计算机可读指令1210的情况下,可以进行如上描述的各个方法。
当然,上述的具体实施例仅是例子而非限制,且本领域技术人员可以根据本申请的构思从上述分开描述的各个实施例中合并和组合一些步骤和装置来实现本申请的效果,这种合并和组合而成的实施例也被包括在本申请中,在此不一一描述这种合并和组合。
注意,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
本公开中的步骤流程图以及以上方法描述仅作为例示性的例子并且不意图要求或暗示必须按照给出的顺序进行各个实施例的步骤。如本领域技术人员将认识到的,可以按任意顺序进行以上实施例中的步骤的顺序。诸如“其后”、“然后”、“接下来”等等的词语不意图限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。此外,例如使用冠词“一个”、“一”或者“该”对于单数的要素的任何引用不被解释为将该要素限制为单数。
另外,本文中的各个实施例中的步骤和装置并非仅限定于某个实施例中实行,事实上,可以根据本申请的概念来结合本文中的各个实施例中相关的部分步骤和部分装置以构思新的实施例,而这些新的实施例也包括在本申请的范围内。
以上描述的方法的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路、专用集成电路(ASIC)或处理器。
可以利用被设计用于进行在此描述的功能的通用处理器、数字信号处理器(DSP)、ASIC、场可编程门阵列信号(FPGA)或其他可编程逻辑器件(PLD)、离散门或晶体管逻辑、离散的硬件组件或者其任意组合而实现或进行描述的各个例示的逻辑块、模块和电路。通用处理器可以是微处理器,但是作为替换,该处理器可以是任何商业上可获得的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合,多个微处理器、与DSP核协作的微处理器或任何其他这样的配置。
结合本公开描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、硬碟、可移动碟、CD-ROM等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。
在此公开的方法包括用于实现描述的方法的动作。方法和/或动作可以彼此互换而不脱离权利要求的范围。换句话说,除非指定了动作的具体顺序,否则可以修改具体动作的顺序和/或使用而不脱离权利要求的范围。
上述功能可以按硬件、软件、固件或其任意组合而实现。如果以软件实现,功能可以作为指令存储在切实的计算机可读介质上。存储介质可以是可以由计算机访问的任何可用的切实介质。通过例子而不是限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟存储、磁碟存储或其他磁存储器件或者可以用于携带或存储指令或数据结构形式的期望的程序代码并且可以由计算机访问的任何其他切实介质。如在此使用的,碟(disk)和盘(disc)包括紧凑盘(CD)、激光盘、光盘、数字通用盘(DVD)、软碟和蓝光盘,其中碟通常磁地再现数据,而盘利用激光光学地再现数据。
因此,本公开还可以包括计算机程序产品,其中计算机程序产品可以进行在此给出的方法、步骤和操作。例如,这样的计算机程序产品可以是计算机软件包、计算机代码指令、具有有形存储(和/或编码)在其上的计算机指令的计算机可读的有形介质,该指令可由处理器执行以进行在此描述的操作。计算机程序产品可以包括包装的材料。
软件或指令也可以通过传输介质而传输。例如,可以使用诸如同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或诸如红外、无线电或微波的无线技术的传输介质从网站、服务器或者其他远程源传输软件。
此外,用于进行在此描述的方法和技术的模块和/或其他适当的手段可以在适当时由用户终端和/或基站下载和/或其他方式获得。例如,这样的设备可以耦接到服务器以促进用于进行在此描述的方法的手段的传送。或者,在此描述的各种方法可以经由存储部件(例如RAM、ROM、诸如CD或软碟等的物理存储介质)提供,以便用户终端和/或基站可以在耦接到该设备或者向该设备提供存储部件时获得各种方法。此外,可以利用用于将在此描述的方法和技术提供给设备的任何其他适当的技术。
其他例子和实现方式在本公开和所附权利要求的范围和精神内。例如,由于软件的本质,以上描述的功能可以使用由处理器、硬件、固件、硬连线或这些的任意的组合执行的软件实现。实现功能的特征也可以物理地位于各个位置,包括被分发不同功能的部分在不同的物理位置处实现。而且,如在此使用的,包括在权利要求中使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
可以不脱离由所附权利要求定义的教导的技术而进行对在此描述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上描述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此描述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (34)
1.一种云端分布式图形渲染系统,包括:
云端的多个图形处理单元;
其中,所述多个图形处理单元中的一个或多个图形处理单元运行能被多个图形渲染管线共享的计算步骤,以输出和/或缓存运行得到的数据供所述多个图形渲染管线的计算步骤使用。
2.根据权利要求1所述的系统,其中,所述能被多个图形渲染管线共享的计算步骤是根据计算步骤和/或计算步骤的输出数据是否能被所述多个图形渲染管线的计算步骤使用来确定的。
3.根据权利要求1所述的系统,其中,所述能被多个图形渲染管线共享的计算步骤包括与视角无关的计算步骤。
4.根据权利要求1或2或3所述的系统,其中,所述能被多个图形渲染管线共享的计算步骤包括与视角无关的预处理计算步骤。
5.根据权利要求4所述的系统,其中,所述与视角无关的预处理计算步骤包括蒙皮计算步骤和环境捕捉计算步骤中的至少一种,
其中所述蒙皮计算步骤被所述云端的一个或多个图形处理单元运行以输出和/或缓存蒙皮顶点数据供所述多个图形渲染管线的计算步骤使用,
所述环境捕捉计算步骤被所述云端的一个或多个图形处理单元运行以输出和/或缓存立方体贴图数据供所述多个图形渲染管线的计算步骤使用。
6.根据权利要求1或2或3所述的系统,其中,所述能被多个图形渲染管线共享的计算步骤包括阴影和光照预处理计算步骤。
7.根据权利要求6所述的系统,
其中,所述能被多个图形渲染管线共享的阴影和光照预处理计算步骤包括角色阴影贴图计算步骤中的级联阴影贴图阶段、场景阴影贴图阶段、场景聚类灯光和对象阶段、角色环境阶段、角色聚类灯光和对象阶段中的至少一种,
其中,能被多个图形渲染管线共享的所述阴影和光照预处理计算步骤中的光照预处理中的一部分阶段包括每个实例视角视锥数据阶段、与视角无关的聚类灯光、与视角无关的聚类对象、漫反射材质评估阶段、每个对象材质缓存阶段、每个对象光照评估阶段、每个对象辐照缓存阶段、与视角无关的分布缓存阶段中的至少一种,
其中所述多个图形处理单元被配置为运行所述能被共享的计算步骤以输出和/或缓存聚光灯光源阴影贴图数据、点光源阴影贴图数据、平行光源阴影贴图数据中的至少一种供所述多个图形渲染管线的计算步骤使用。
8.根据权利要求1或2或3所述的系统,其中,能被多个图形渲染管线共享的计算步骤包括不透明光照计算步骤中的光照处理中的一部分阶段和与视角无关的环境光遮蔽中的一部分阶段中的至少一种。
9.根据权利要求8所述的系统,
其中所述光照处理中的一部分阶段包括准备基于物理的渲染的材质阶段、准备光照材质阶段、网格着色器阶段中的至少一种,且所述与视角无关的环境光遮蔽中的一部分阶段包括变换几何图形阶段、逐顶点光线行进阶段、去噪阶段、生成缓存阶段、与视角无关的分布缓存阶段中的至少一种,
其中所述多个图形处理单元被配置为运行所述能被共享的计算步骤以输出和/或缓存光照数据、漫反射数据、镜面反射数据中的至少一种供所述多个图形渲染管线的计算步骤使用。
10.根据权利要求1或2或3所述的系统,其中,能被多个图形渲染管线共享的计算步骤包括运动矢量计算步骤,其中所述多个图形处理单元被配置为运行所述能被共享的计算步骤以输出和/或缓存运动矢量数据供所述多个图形渲染管线的计算步骤使用。
11.根据权利要求1或2或3所述的系统,还包括:
位于云端的调度器,被配置为调度所述多个图形处理单元来运行所述能被共享的计算步骤和/或其他不能被共享的计算步骤。
12.根据权利要求11所述的系统,其中,所述调度器被配置为先调度所述多个图形处理单元来运行所述能被共享的计算步骤,然后再调度所述多个图形处理单元来运行所述其他计算步骤,或者调度器被配置为调度所述多个图形处理单元来运行所述能被共享的计算步骤和所述其他计算步骤。
13.根据权利要求11所述的系统,其中,所述调度器被配置为基于所述多个图形处理单元的运算时间和从所述调度器到所述多个图形处理单元的传输带宽,来将包括所述能被多个图形渲染管线共享的计算步骤和/或其他不能被共享计算步骤的多个任务分配到所述多个图形处理单元上。
14.根据权利要求13所述的系统,其中,所述调度器被配置为将所述多个任务分配到所述多个图形处理单元上,使得对于多个任务,从所述调度器到所述多个图形处理单元的传输带宽的总和与所述多个图形处理单元上运行所述多个任务的运算时间的总和的和最小。
15.根据权利要求1或2或3所述的系统,还包括:
位于云端的加速器,被配置为加速所述能被多个图形渲染管线共享的计算步骤和/或其他不能被共享的计算步骤的运算。
16.根据权利要求15所述的系统,其中,所述加速器被配置为组合所述能被共享的计算步骤和/或其他不能被共享的计算步骤所需的资源,以利用组合的资源通过所述图形处理单元来进行能被共享的计算步骤和/或其他不能被共享的计算步骤的运算。
17.一种云端分布式图形渲染方法,包括:
通过云端的多个图形处理单元中的一个或多个图形处理单元运行能被多个图形渲染管线共享的计算步骤;
输出所述运行所得到的数据供所述多个图形渲染管线的计算步骤使用。
18.根据权利要求17所述的方法,其中,所述能被多个图形渲染管线共享的计算步骤是根据计算步骤和/或计算步骤的输出数据是否能被所述多个图形渲染管线的计算步骤使用来确定的。
19.根据权利要求17所述的方法,其中,所述能被多个图形渲染管线共享的计算步骤包括与视角无关的计算步骤。
20.根据权利要求17或18或19所述的方法,其中,所述能被多个图形渲染管线共享的计算步骤包括与视角无关的预处理计算步骤。
21.根据权利要求20所述的方法,其中,所述与视角无关的预处理计算步骤包括蒙皮计算步骤和环境捕捉计算步骤中的至少一种,
其中所述蒙皮计算步骤被所述云端的一个或多个图形处理单元运行以输出和/或缓存蒙皮顶点数据供所述多个图形渲染管线的计算步骤使用,所述环境捕捉计算步骤被所述云端的一个或多个图形处理单元运行以输出和/或缓存立方体贴图数据供所述多个图形渲染管线的计算步骤使用。
22.根据权利要求17或18或19所述的方法,其中,所述能被多个图形渲染管线共享的计算步骤包括阴影和光照预处理计算步骤。
23.根据权利要求22所述的方法,
其中,所述能被多个图形渲染管线共享的阴影和光照预处理计算步骤包括角色阴影贴图计算步骤中的级联阴影贴图阶段、场景阴影贴图阶段、场景聚类灯光和对象阶段、角色环境阶段、角色聚类灯光和对象阶段中的至少一种,
其中,能被多个图形渲染管线共享的所述阴影和光照预处理计算步骤中的光照预处理中的一部分阶段包括每个实例视角视锥数据阶段、与视角无关的聚类灯光、与视角无关的聚类对象、漫反射材质评估阶段、每个对象材质缓存阶段、每个对象光照评估阶段、每个对象辐照缓存阶段、与视角无关的分布缓存阶段中的至少一种,
其中所述多个图形处理单元被配置为运行所述能被共享的计算步骤以输出和/或缓存聚光灯光源阴影贴图数据、点光源阴影贴图数据、平行光源阴影贴图数据中的至少一种供所述多个图形渲染管线的计算步骤使用。
24.根据权利要求17或18或19所述的方法,其中,能被多个图形渲染管线共享的计算步骤包括不透明光照计算步骤中的光照处理中的一部分阶段和与视角无关的环境光遮蔽中的一部分阶段中的至少一种。
25.根据权利要求24所述的方法,
其中所述光照处理中的一部分阶段包括准备基于物理的渲染的材质阶段、准备光照材质阶段、网格着色器阶段中的至少一种,所述与视角无关的环境光遮蔽中的一部分阶段包括变换几何图形阶段、逐顶点光线行进阶段、去噪阶段、生成缓存阶段、与视角无关的分布缓存阶段中的至少一种,
其中所述多个图形处理单元被配置为运行所述能被共享的计算步骤以输出和/或缓存光照数据、漫反射数据、镜面反射数据中的至少一种供所述多个图形渲染管线的计算步骤使用。
26.根据权利要求17或18或19所述的方法,其中,能被多个图形渲染管线共享的计算步骤包括运动矢量计算步骤,其中所述多个图形处理单元被配置为运行所述能被共享的计算步骤以输出和/或缓存运动矢量数据供所述多个图形渲染管线的计算步骤使用。
27.根据权利要求17或18或19所述的方法,还包括:
通过位于云端的调度器调度所述多个图形处理单元来运行所述能被共享的计算步骤和/或其他不能被共享的计算步骤。
28.根据权利要求27所述的方法,其中,所述调度先调度所述多个图形处理单元来运行所述能被共享的计算步骤,然后再调度所述多个图形处理单元来运行所述其他计算步骤,或者所述调度调度所述多个图形处理单元来运行所述能被共享的计算步骤和所述其他计算步骤。
29.根据权利要求27所述的方法,其中,所述调度包括:基于所述多个图形处理单元的运算时间和从所述调度器到所述多个图形处理单元的传输带宽,来将包括所述能被多个图形渲染管线共享的计算步骤和/或其他不能被共享的计算步骤的多个任务分配到所述多个图形处理单元上。
30.根据权利要求29所述的方法,其中,所述调度包括:将所述多个任务分配到所述多个图形处理单元上使得对于多个任务,从所述调度器到所述多个图形处理单元的传输带宽的总和与所述多个图形处理单元上运行所述多个任务的运算时间的总和的和最小。
31.根据权利要求17或18或19所述的方法,还包括:
通过位于云端的加速器加速所述能被多个图形渲染管线共享的计算步骤和/或其他不能被共享的计算步骤的运算。
32.根据权利要求31所述的方法,其中,所述通过位于云端的加速器加速所述能被多个图形渲染管线共享的计算步骤和/或其他不能被共享的计算步骤的运算包括:
通过所述加速器组合所述能被共享的计算步骤和/或其他不能被共享的计算步骤所需的资源,以利用组合的资源通过所述图形处理单元来进行能被共享的计算步骤和/或其他不能被共享的计算步骤的运算。
33.一种电子设备,包括:
存储器,用于存储指令;
处理器,用于读取所述存储器中的指令,并执行如权利要求17-32中任一项所述的方法。
34.一种非暂时存储介质,其上存储有指令,
其中,所述指令在被处理器读取时,使得所述处理器执行如权利要求17-32中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310153884.3A CN116310026A (zh) | 2023-02-22 | 2023-02-22 | 云端分布式图形渲染系统、方法、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310153884.3A CN116310026A (zh) | 2023-02-22 | 2023-02-22 | 云端分布式图形渲染系统、方法、电子设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116310026A true CN116310026A (zh) | 2023-06-23 |
Family
ID=86825035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310153884.3A Pending CN116310026A (zh) | 2023-02-22 | 2023-02-22 | 云端分布式图形渲染系统、方法、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116310026A (zh) |
-
2023
- 2023-02-22 CN CN202310153884.3A patent/CN116310026A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11302058B2 (en) | System for non-planar specular reflections in hybrid ray tracing | |
JP5063698B2 (ja) | レイ・トレーシング画像処理システムにおけるピクセル色の決定方法および画像処理システム | |
JP5063695B2 (ja) | 空間インデックスをトラバースする方法及びシステム | |
US11816783B2 (en) | Enhanced techniques for traversing ray tracing acceleration structures | |
US20210390760A1 (en) | Ray tracing hardware acceleration for supporting motion blur and moving/deforming geometry | |
US11120610B2 (en) | Coherent secondary rays for reflections in hybrid ray tracing | |
US11854141B2 (en) | Early release of resources in ray tracing hardware | |
Harada et al. | Forward+: A step toward film-style shading in real time | |
CN116310026A (zh) | 云端分布式图形渲染系统、方法、电子设备和介质 | |
Damez et al. | Global Illumination for Interactive Applications and High-Quality Animations. | |
Schwandt | High-Quality Illumination of Virtual Objects Based on an Environment Estimation in Mixed Reality Applications | |
CN110832549A (zh) | 现实世界环境中虚拟对象的经过光线追踪的反射的快速产生方法 | |
Otto et al. | Physically-based Environment and Area Lighting using Progressive Rendering in WebGL | |
Simion et al. | Practical gpu and voxel-based indirect illumination for real time computer games | |
Bashford-Rogers et al. | Approximate visibility grids for interactive indirect illumination | |
Aila | Efficient algorithms for occlusion culling and shadows | |
Di Koa et al. | Interactive rendering of translucent materials under area lights using voxels and Poisson disk samples | |
KIM | REAL-TIME RAY TRACING REFLECTIONS AND SHADOWS IMPLEMENTATION USING DIRECTX RAYTRACING | |
Es et al. | GPU based real time stereoscopic ray tracing | |
CN117671104A (zh) | 一种渲染方法、装置、电子设备及计算机可读存储介质 | |
Ruff et al. | Dynamic per Object Ray Caching Textures for Real-Time Ray Tracing | |
Michael-Grigoriou et al. | Real-time high quality HDR illumination and tonemapped rendering | |
Michael | Real-time high quality HDR illumination and tonemapped rendering | |
Es | Accelerated ray tracing using programmable graphics pipelines | |
Schmitt | Gpu-accelerated point-based color bleeding |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Applicant after: Shanghai Bi Ren Technology Co.,Ltd. Address before: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Applicant before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |