CN117078824A - 参数拟合方法、装置、设备、存储介质及程序产品 - Google Patents

参数拟合方法、装置、设备、存储介质及程序产品 Download PDF

Info

Publication number
CN117078824A
CN117078824A CN202311113622.0A CN202311113622A CN117078824A CN 117078824 A CN117078824 A CN 117078824A CN 202311113622 A CN202311113622 A CN 202311113622A CN 117078824 A CN117078824 A CN 117078824A
Authority
CN
China
Prior art keywords
rendering
virtual scene
result
fitting
items
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311113622.0A
Other languages
English (en)
Inventor
乔晨
王学强
史亦婕
兰翔
周杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311113622.0A priority Critical patent/CN117078824A/zh
Publication of CN117078824A publication Critical patent/CN117078824A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本申请提供了一种虚拟场景的参数拟合方法、装置、电子设备、计算机可读存储介质及计算机程序产品;方法包括:获取虚拟场景的第一渲染参数以及第二渲染参数集合;基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列;基于第一渲染参数以及第二渲染参数集合,对排序队列依次进行拟合渲染处理,得到虚拟场景的拟合渲染图,并确定拟合渲染图与标准渲染图之间的渲染损失;基于渲染损失优化第一渲染参数,并将经过优化的第一渲染参数添加至第二渲染参数集合。通过本申请,能够通过排序队列的方式对虚拟场景实现高效的拟合渲染。

Description

参数拟合方法、装置、设备、存储介质及程序产品
技术领域
本申请涉及计算机图形图像技术,尤其涉及一种虚拟场景的参数拟合方法、装置、电子设备、计算机可读存储介质及程序产品。
背景技术
基于图形处理硬件的显示技术,扩展了感知环境以及获取信息的渠道,尤其是虚拟场景的显示技术,能够根据实际应用需求实现受控于用户或人工智能的虚拟对象之间的多样化的交互,具有各种典型的应用场景,例如在游戏等的虚拟场景中,能够模拟虚拟对象之间的真实的对战过程。
相关技术中采取可微渲染(Differentiable Rendering)技术实现对虚拟场景的渲染,它将渲染过程与反向传播算法相结合,使得神经网络可以直接学习和优化渲染参数。但是可微渲染器每次只需要重建一个网格,而虚拟场景必然会涉及到多个网格,每个网格使用不同的材质和纹理实现,因此相关技术中的可微渲染器是无法直接应用到虚拟场景的渲染中。
发明参数
本申请实施例提供一种虚拟场景的参数拟合方法、装置、电子设备、计算机可读存储介质及程序产品,能够通过排序队列的方式对虚拟场景实现高效的拟合渲染。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种虚拟场景的参数拟合方法,包括:
获取所述虚拟场景的第一渲染参数以及第二渲染参数集合,其中,所述第一渲染参数是当前待优化的渲染参数,所述第二渲染参数集合包括已优化的渲染参数;
基于所述虚拟场景的第一渲染参数、所述虚拟场景的渲染项的透明度以及深度,对所述虚拟场景的多个渲染项进行排序,得到排序队列;
基于所述第一渲染参数以及所述第二渲染参数集合,对所述排序队列依次进行拟合渲染处理,得到所述虚拟场景的拟合渲染图,并确定所述拟合渲染图与标准渲染图之间的渲染损失;
基于所述渲染损失优化所述第一渲染参数,并将经过优化的第一渲染参数添加至所述第二渲染参数集合,其中,添加得到的第二渲染参数集合用于渲染所述虚拟场景。
本申请实施例提供一种虚拟场景的参数拟合装置,包括:
获取模块,用于获取所述虚拟场景的第一渲染参数以及第二渲染参数集合,其中,所述第一渲染参数是当前待优化的渲染参数,所述第二渲染参数集合包括已优化的渲染参数;
排序模块,用于基于所述虚拟场景的第一渲染参数、所述虚拟场景的渲染项的透明度以及深度,对所述虚拟场景的多个渲染项进行排序,得到排序队列;
拟合模块,用于基于所述第一渲染参数以及所述第二渲染参数集合,对所述排序队列依次进行拟合渲染处理,得到所述虚拟场景的拟合渲染图,并确定所述拟合渲染图与标准渲染图之间的渲染损失;
优化模块,用于基于所述渲染损失优化所述第一渲染参数,并将经过优化的第一渲染参数添加至所述第二渲染参数集合,其中,添加得到的第二渲染参数集合用于渲染所述虚拟场景。
本申请实施例提供一种电子设备,包括:
存储器,用于存储计算机可执行指令;
处理器,用于执行所述存储器中存储的计算机可执行指令时,实现本申请实施例提供的虚拟场景的参数拟合方法。
本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令,用于引起处理器执行时,实现本申请实施例提供的虚拟场景的参数拟合方法。
本申请实施例具有以下有益效果:
通过本申请实施例获取虚拟场景的第一渲染参数以及第二渲染参数集合,第一渲染参数是当前待优化的渲染参数,第二渲染参数集合包括已优化的渲染参数;基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列;基于第一渲染参数以及第二渲染参数集合,对排序队列依次进行拟合渲染处理,得到虚拟场景的拟合渲染图,相比于每次拟合只能够拟合得到单个渲染项,通过本申请实施例利用队列的方式可以实现对虚拟场景内所有渲染项的拟合渲染,并确定拟合渲染图与标准渲染图之间的渲染损失;基于渲染损失优化第一渲染参数,并将经过优化的第一渲染参数添加至第二渲染参数集合,通过排序队列的方式对虚拟场景实现高效的拟合渲染,因此后续可以利用第二渲染参数集合实现整个虚拟场景的渲染。
附图说明
图1A是相关技术提供的可微渲染示意图;
图1B是相关技术提供的基于软光栅化和聚合函数的可微渲染示意图;
图2A至图2B是本申请实施例提供的虚拟场景的参数拟合系统架构的结构示意图;
图3是本申请实施例提供的电子设备的结构示意图;
图4A-图4C是本申请实施例提供的虚拟场景的参数拟合方法的流程示意图;
图5是本申请实施例提供的虚拟场景的参数拟合方法的部署示意图;
图6是本申请实施例提供的虚拟场景的参数拟合方法的拟合示意图;
图7是本申请实施例提供的虚拟场景的参数拟合方法的排序示意图;
图8是本申请实施例提供的虚拟场景的参数拟合方法的合并示意图;
图9是本申请实施例提供的虚拟场景的参数拟合方法的光线处理示意图;
图10A-图10B是本申请实施例提供的虚拟场景的参数拟合方法的渲染效果示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本申请实施例中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)客户端:终端中运行的用于提供各种服务的应用程序,例如视频播放客户端、游戏客户端等。
2)虚拟场景:游戏应用程序在终端上运行时显示(或提供)的虚拟游戏场景。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例对虚拟场景的维度不加以限定。例如,虚拟场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,用户可以控制虚拟对象在该虚拟场景中进行移动。
3)图像渲染:将三维的光能传递处理转换为一个二维图像的过程。场景和物体用三维形式表示,更接近于现实世界,便于操纵和变换,而图像的显示设备大多是二维的光栅显示器和点阵化打印机。从三维场景的表示N维光栅和点阵化的表示就是图像渲染,即光栅化。光栅显示器可以看作是一个像素矩阵,在光栅显示器上显示的任何一个图像,实际上都是一些具有一种或多种颜色和灰度像素的集合。
4)材质和纹理映射:渲染中会为物体表面分配合适的材质属性,例如反射率、折射率和表面纹理等。纹理映射是将二维图像映射到物体表面以增加细节和逼真度。
5)渲染系统:指用于执行图形渲染过程的软件和硬件组件的集合。其主要由图形处理单元,渲染引擎、场景图和模型、着色程序、缓冲区及后处理组成。
6)图形处理单元:是渲染系统的核心组件之一,它专门设计用于高效地进行图形计算和渲染任务。
7)渲染引擎:渲染引擎是一种软件组件,负责执行渲染过程中的各种计算和操作。它包括几何处理、光照计算、材质和纹理映射、光栅化等功能。渲染引擎通常由底层的图形编程接口(如OpenGL、DirectX等)提供支持。
8)着色器程序:着色器程序是在渲染过程中执行的小型程序,用于计算像素的颜色和顶点的属性。它们可以根据需求编写,以实现特定的渲染效果,如光照模型、阴影和纹理映射等。
9)美术资源:指由艺术家或设计师创作和提供的用于渲染的各种图像和数据。这些资源用于增强场景的外观、表现物体的外观和材质,并丰富图形渲染的视觉效果。
10)可微渲染:是一种图形渲染技术,它将渲染过程中的各个环节变成可微分的操作,从而使得整个渲染过程能够被导数计算和优化。可微渲染的主要思想是通过使用自动微分技术,将渲染的输入参数(例如几何形状、光照、材质等)与输出图像之间的关系建模为可微分函数。
11)可微渲染器:是指实现了可微渲染技术的渲染器。它是一种特殊的渲染器,能够计算渲染过程中各个操作的导数,并将其应用于优化、反向渲染和其他需要导数计算的图形任务中。
12)基于物理的渲染:基于物理的渲染(Physically Based Rendering,PB R)是一种渲染技术,旨在模拟现实世界中光线和材质的物理行为,以产生更加真实和逼真的图像。PBR通过基于物理原理的光照模型和材质定义,使得渲染结果更符合真实世界的光照和材质表现。
可微渲染(Differentiable Rendering)是一种新型的计算机图形学技术,它将渲染过程与反向传播算法相结合,使得神经网络可以直接学习和优化渲染参数。这种方法使得计算机视觉和机器学习领域中的任务,如图像合成、物体重建和场景理解,更加直观和高效。
在传统的渲染过程中,渲染器根据场景的几何、材质和光照信息按照指定的观察相机生成一张二维图像。这个渲染过程通常出于效率方面的考虑,会利用大量的加速技术来完成渲染计算。但是这一渲染过程是不可微的,也就是说,它无法直接用于基于梯度的优化算法。但是,可微渲染通过对渲染过程进行重新建模和近似,使得渲染输出关于输入参数的梯度可计算,从而允许使用反向传播算法进行优化。
参见图1A,可微渲染的实现也有基于蒙特卡洛的实现方法和基于光栅化的实现方法。基于蒙特卡洛的实现方法包括边缘采样和路径空间微分渲染等边界采样方案,包括有偏重参数化方案和无偏的翘曲区采样方案的区域采样方案。基于光栅化的实现方法包括软光栅化,神经网络渲染和高性能可区分渲染的模块化基元Nvdiffrast。参见图1B,当前主要的基于光栅化的可微渲染器的两个主流实现是SoftRas方案与Nvdiffrast方案。SoftRas方案引入软光栅化和聚合函数解决了屏幕空间上的不连续性和深度方向上不连续性的问题。Nvdiffrast方案通过自定义的图形管线基本操作:光栅化、属性插值、纹理过滤和抗锯齿,实现基于延迟着色的可微渲染系统。在效率方面,因为借用了传统的渲染管线,并且没有使用概率图和聚合函数的软光栅化模式,效率有明显提升。在连续性方面,其将连续性通过前三个模块传递到最后的抗锯齿模块,并在抗锯齿使用合理的设计保证了基本的连续性,能够完成梯度的传递。
当前可微渲染器主要是用于重建目的或网络训练目的,此类重建工作每次只需要重建一个网格,不会生成多个网格。所以重建所采用的渲染也是一次绘制当前的一个网格,此外此网格的坐标轴也会被合并到一个坐标空间下。而在游戏的场景中,即便是静态物体也往往是由多个网格组成,每个网格使用不同的材质和纹理实现,这个静态物体在游戏场景中出现多次的情况下会复用这些资源。所以当前可微渲染器是无法直接应用到实际游戏项目中。如果采用当前可微渲染器,需要将现有网格进行合并,将多网格部件合并为同一个网格部件,对于原有UV空间也需要进行合并和重新计算,从而导致计算资源消耗较大。
本申请实施例提供一种虚拟场景的参数拟合方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够利用不同渲染图之间的损失,基于较少的带宽占用的纹理数据实现较高的渲染效果,从而提高了渲染资源利用率。为便于更容易理解本申请实施例提供的虚拟场景的参数拟合方法,首先说明本申请实施例提供的虚拟场景的参数拟合方法的示例性实施场景,本申请实施例提供的虚拟场景的参数拟合方法中的虚拟对象可以完全基于终端输出,或者基于终端和服务器协同输出。
在一些实施例中,虚拟场景可以是供游戏角色交互的环境,例如可以是供游戏角色在虚拟场景中进行对战,通过控制游戏角色的行动可以在虚拟场景中进行双方互动,从而使用户能够在游戏的过程中舒缓生活压力。
在一个实施场景中,参见图1A,图1A是本申请实施例提供的虚拟场景的参数拟合系统的架构示意图,适用于一些完全依赖于终端400的图形处理硬件计算能力即可完成虚拟场景100的相关数据计算的应用模式,例如单机版/离线模式的游戏,通过智能手机、平板电脑和虚拟现实/增强现实设备等各种不同类型的终端400完成虚拟场景的输出。
作为示例,图形处理硬件的类型包括中央处理器(CPU,Central Processin gUnit)和图形处理器(GPU,Graphics Processing Unit)。
当形成虚拟场景100的视觉感知时,终端400通过图形计算硬件计算显示所需要的数据,并完成显示数据的加载、解析和渲染,在图形输出硬件输出能够对虚拟场景形成视觉感知的视频帧,例如,在智能手机的显示屏幕呈现二维的视频帧,或者,在增强现实/虚拟现实眼镜的镜片上投射实现三维显示效果的视频帧;此外,为了丰富感知效果,终端400还可以借助不同的硬件来形成听觉感知、触觉感知、运动感知和味觉感知的一种或多种。
作为示例,终端400上运行有客户端410(例如单机版的游戏应用),在客户端410的运行过程中输出包括有角色扮演的虚拟场景,虚拟场景可以是供游戏角色交互的环境,例如可以是用于供游戏角色进行对战的平原、街道、山谷等等;以第一人称视角显示虚拟场景100为例,在虚拟场景100中显示虚拟对象401,虚拟对象401可以是受用户(或称玩家)控制的游戏角色,将响应于真实用户针对按钮(包括摇杆按钮、攻击按钮、防御按钮等)的操作而在虚拟场景中操作,例如当真实用户向左移动摇杆按钮时,虚拟对象将在虚拟场景中向左部移动,还可以保持原地静止、跳跃以及使用各种功能(如技能和道具);虚拟对象401也可以是通过训练设置在虚拟场景对战中的人工智能(AI,Artif icial Intelligence);虚拟对象401还可以是设置在虚拟场景互动中的非用户角色(NPC,Non-Player Character);虚拟对象401还可以是虚拟场景100中不可活动对象或者可活动对象。
举例来说,终端400为游戏开发人员所使用的终端,在游戏的开发打包阶段,终端400获取虚拟场景的第一渲染参数以及第二渲染参数集合,其中,第一渲染参数是当前待优化的渲染参数,第二渲染参数集合包括已优化的渲染参数;基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列;基于第一渲染参数以及第二渲染参数集合,对排序队列依次进行拟合渲染处理,得到虚拟场景的拟合渲染图,并确定拟合渲染图与标准渲染图之间的渲染损失;基于渲染损失优化第一渲染参数,并将经过优化的第一渲染参数添加至第二渲染参数集合,至此均是游戏开始前所执行的处理,在测试阶段,即游戏安装运行过程中,终端400基于第二渲染参数集合,进行实时渲染处理,得到包括虚拟场景的目标渲染图,并基于目标渲染图进行虚拟场景的人机交互,例如游戏对抗。
在另一个实施场景中,参见图1B,图1B是本申请实施例提供的虚拟场景的参数拟合系统的架构示意图,应用于终端400和服务器200,适用于依赖于服务器200的计算能力完成虚拟场景计算、并在终端400输出虚拟场景的应用模式。
以形成虚拟场景100的视觉感知为例,服务器200进行虚拟场景相关显示数据(例如场景数据)的计算并通过网络300发送到终端400,终端400依赖于图形计算硬件完成计算显示数据的加载、解析和渲染,依赖于图形输出硬件输出虚拟场景以形成视觉感知,例如可以在智能手机的显示屏幕呈现二维的视频帧,或者,在增强现实/虚拟现实眼镜的镜片上投射实现三维显示效果的视频帧;对于虚拟场景的形式的感知而言,可以理解,可以借助于终端400的相应硬件输出,例如使用麦克风形成听觉感知,使用振动器形成触觉感知等等。
作为示例,终端400上运行有客户端410(例如网络版的游戏应用),通过连接服务器200(例如游戏服务器)与其他用户进行游戏互动,终端400输出客户端410的虚拟场景100,以第一人称视角显示虚拟场景100为例,在虚拟场景100中显示虚拟对象401,虚拟对象401可以是受用户(或称玩家)控制的游戏角色,将响应于真实用户针对按钮(包括摇杆按钮、攻击按钮、防御按钮等)的操作而在虚拟场景中操作,例如当真实用户向左移动摇杆按钮时,虚拟对象将在虚拟场景中向左部移动,还可以保持原地静止、跳跃以及使用各种功能(如技能和道具);虚拟对象401也可以是通过训练设置在虚拟场景对战中的人工智能(AI,Artificial Intelligence);虚拟对象401还可以是设置在虚拟场景互动中的非用户角色(NPC,Non-Player Character);虚拟对象401还可以是虚拟场景100中不可活动对象或者可活动对象。
举例来说,服务器200获取虚拟场景的第一渲染参数以及第二渲染参数集合,其中,第一渲染参数是当前待优化的渲染参数,第二渲染参数集合包括已优化的渲染参数;基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列;基于第一渲染参数以及第二渲染参数集合,对排序队列依次进行拟合渲染处理,得到虚拟场景的拟合渲染图,并确定拟合渲染图与标准渲染图之间的渲染损失;基于渲染损失优化第一渲染参数,并将经过优化的第一渲染参数添加至第二渲染参数集合,至此均是游戏开始前所执行的处理,例如,游戏的开发打包阶段,终端400接收由服务器200发送的第二渲染参数集合(可以封装在安装包中),在游戏安装运行过程中,终端400基于第二渲染参数集合,进行实时渲染处理,得到包括虚拟对象的目标渲染图,并基于目标渲染图进行虚拟场景的人机交互,例如游戏对抗。
在一些实施例中,终端400可以通过运行计算机程序来实现本申请实施例提供的虚拟场景的参数拟合方法,例如,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,APPlication),即需要在操作系统中安装才能运行的程序,例如换装游戏APP(即上述的客户端410);也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的游戏小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
以计算机程序为应用程序为例,在实际实施时,终端400安装和运行有支持虚拟场景的应用程序。该应用程序可以是第一人称射击游戏(FPS,First-Per son Shootinggame)、第三人称射击游戏、虚拟现实应用程序、三维地图程序或者多人枪战类生存游戏中的任意一种。用户使用终端400操作位于虚拟场景中的虚拟对象进行活动,该活动包括但不限于:调整身体姿态、爬行、步行、奔跑、骑行、跳跃、驾驶、拾取、射击、攻击、投掷、建造虚拟建筑中的至少一种。示意性的,该虚拟对象可以是虚拟人物,比如仿真人物角色或动漫人物角色等。
在一些实施例中,本申请实施例还可以借助于云技术(Cloud Technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源。
示例的,图2B中的服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
参见图3,图3是本申请实施例提供的用于虚拟场景的参数拟合的电子设备的结构示意图,图3所示的终端400包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。终端400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Me mory),易失性存储器可以是随机存取存储器(RAM,Random Access Memor y)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他电子设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的虚拟场景的参数拟合装置可以采用软件方式实现,图3示出了存储在存储器450中的虚拟场景的参数拟合装置455,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块4551、排序模块4552、拟合模块4553以及优化模块4554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
下面将结合附图对本申请实施例提供的虚拟场景的参数拟合方法进行具体说明。本申请实施例提供的虚拟场景的参数拟合方法可以由图2A中的终端400单独执行,也可以由图2B中的终端400和服务器200协同执行。
下面,以由图2A中的终端400单独执行本申请实施例提供的虚拟场景的参数拟合方法为例进行说明。参见图4A,图4A是本申请实施例提供的虚拟场景的参数拟合方法的流程示意图,将结合图4A示出的步骤101-步骤104进行说明。
需要说明的是,图4A示出的方法可以由终端400上运行的各种形式的计算机程序执行,并不局限于上述的客户端410,还可以是上文的操作系统451、软件模块和脚本,因此客户端不应视为对本申请实施例的限定。
在步骤101中,获取虚拟场景的第一渲染参数以及第二渲染参数集合。
作为示例,第一渲染参数是当前待优化的渲染参数,第二渲染参数集合包括已优化的渲染参数。渲染参数可以是网格数据,所使用的具体材质和纹理,在游戏场景中的变换矩阵,在当前游戏环境中的环境光照信息等内容,摄像机期望的观察位置组等等。
在步骤102中,基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列;
在一些实施例中,在基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列之前,从引擎中获取虚拟场景的多个待渲染物体;获取多个待渲染物体的多个网格部件,并将多个网格部件分别转换为渲染项。
作为示例,待渲染物体是虚拟场景中需要渲染的物体,例如花草、桌子、椅子等等,这里的引擎是游戏引擎,例如游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。游戏引擎为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。
作为示例,在从引擎中获取待渲染物体之后,需要统计完所有的待渲染物体的网格部件,网格部件是待渲染物体对应的网格部分,将网格部分对应转换为待进行渲染的渲染项。
在一些实施例中,参见图4B,步骤102中基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列,可以通过图4B示出的步骤1021至步骤1023实现。
在步骤1021中,针对每个渲染项执行以下处理:当渲染项具有第一渲染参数时,将渲染项作为有待优化内容的渲染项。
在步骤1022中,针对每个渲染项执行以下处理:当渲染项不具有第一渲染参数时,将渲染项作为没有待优化内容的渲染项。
这些渲染项会被分为两类,有待优化内容的渲染项和没有待优化内容的渲染项,有待优化内容的渲染项是具有第一渲染参数的渲染项,例如渲染项A的纹理参数需要拟合优化,那么渲染项A是有待优化内容的渲染项,没有待优化内容的渲染项是不具有第一渲染参数的渲染项,例如渲染项A的所有参数均不需要优化,那么渲染项A是有待优化内容的渲染项,这里的所有参数可以是渲染项A的网格数据,渲染项A所使用的具体材质和纹理,渲染项A在游戏场景中的变换矩阵,渲染项A在当前游戏环境中的环境光照信息等内容,摄像机期望的观察位置组等等。
在步骤1023中,基于透明度以及深度将没有待优化内容的渲染项排序在有待优化内容的渲染项之前,得到排序队列。
在一些实施例中,步骤1023中基于透明度以及深度将没有待优化内容的渲染项排序在有待优化内容的渲染项之前,得到排序队列,可以通过以下技术方案实现:对多个没有待优化内容的不透明渲染项进行基于深度的升序排序处理,得到第一排序结果;对多个有待优化内容的不透明渲染项进行基于深度的降序排序处理,得到第二排序结果;对多个透明渲染项进行基于深度的降序排序处理,得到第三排序结果;将第一排序结果排序在最靠前的位置,将第三排序结果排序在最靠后的位置,将第二排序结果排序在第一排序结果与第三排序结果的中间,得到排序队列。
作为示例,首先对所有不参与优化的不透明渲染项按照深度距离由远到近的排序,并按照由近及远的顺序进行渲染。由近及远的主要目的是在可微渲染阶段利用深度进行剔除,减少不必要物体的绘制。之后绘制透明的优化项。对于所有透明的渲染项(不参与优化与参与优化的一起)进行排序,按照由远及近的顺序进行绘制,以保证混合的正确。这里将有待优化内容的不透明渲染项也可以视为透明渲染项,即采取相同的渲染顺序,均采用按照深度距离由远及近的顺序进行绘制。对于第一排序结果、第二排序结果以及第三排序结果,首先对第一排序结果中的渲染项进行依次渲染,再对第二排序结果中的渲染项进行依次渲染,最后对第三排序结果中的渲染项进行依次渲染。
在一些实施例中,多个透明渲染项包括没有待优化内容的透明渲染项与有待优化内容的透明渲染项;上述对多个透明渲染项进行基于深度的降序排序处理,得到第三排序结果,可以通过以下技术方案实现:对多个透明渲染项进行基于深度的降序排序处理,得到初始排序结果;当初始排序结果中包括与有待优化内容的透明渲染项重合的没有待优化内容的透明渲染项时,将没有待优化内容的透明渲染项合并入重合的有待优化内容的透明渲染项,得到第三排序结果。
作为示例,参见图7,对于透明渲染项的初始排序结果,可能会存在有待优化内容的透明渲染项与没有待优化内容的透明渲染项之间重合的情况,对于此种情况,将没有待优化内容的透明渲染项合并入有待优化内容的透明渲染项,将不优化标记添加到顶点属性中。
在步骤103中,基于第一渲染参数以及第二渲染参数集合,对排序队列依次进行拟合渲染处理,得到虚拟场景的拟合渲染图,并确定拟合渲染图与标准渲染图之间的渲染损失。
作为示例,拟合渲染处理可以通过以下技术方案实现:获取渲染项的第一渲染参数以及第二渲染参数集合;获取对应拟合渲染处理的可微分渲染框架;将第一渲染参数以及第二渲染参数集合在可微分渲染框架中进行正向传播,得到虚拟场景的拟合渲染图。可微分渲染框架是将基于硬件的渲染过程进行软件化封装得到的,其中基于硬件的渲染过程可以是无受光材质的渲染方式,由于进行软件化封装,从而可微可导,因而后续可以基于梯度进行反向传播。
作为示例,光栅化渲染流程通过统一电子设备架构(CUDA,Compute Un ifiedDevice Architecture)来实现,并且作为机器学习库(例如PyTorch)的一个模块来运行,这里的CUDA即为上述可微分渲染框架,整个渲染过程是可以逆向传播梯度的,所以整个过程是可微的。将所有相关资源(Assets)通过可传递梯度的计算连接(Connection withGradients),获取模型切线/法线数据(C ompute Tangent/Normal)、生成光照图纹理坐标(Lightmap UV Generation)、计算动画和蒙皮(Animation&Skinning),将模型切线/法线数据、光照图纹理坐标、动画和蒙皮通过可传递梯度的计算连接(Connection withGradients),获取裁剪空间中的坐标(Clip Space Pos),将所有相关资源(Assets)通过常规的计算连接(Ordinary Connection),获取三角形索引数据(Index Buffer),基于裁剪空间中的坐标以及三角形索引数据进行光栅化(Rasterization),分别得到坐标(u,v)以及基于坐标(u,v)、/>以及顶点属性数据(Vertex Attributes)进行插值(Interpolation)处理,得到插值后的属性数据(Interpolate Attributes)以及像素级属性数据的导数(Attribute Pixel Derivatives),基于差值后的属性数据、像素级属性数据的导数以及纹理(Text ure)进行纹理采样(Texture Sampling)处理,得到过滤后的采样数据(Filtere d Samples),基于光照(Lights Camera)、材质参数(MaterialParemeters)、插值后的属性数据以及过滤后的采样数据进行待拟合的目标渲染(GroundTruth S hading),得到有锯齿的渲染图像(Aliased Image),对有锯齿的渲染图像进行抗锯齿(Antialiasing)处理,得到最终拟合渲染图(Final Image)。
作为示例,标准渲染图是基于目标参数进行标准渲染处理得到的虚拟场景的渲染图。标准渲染处理可以是基于物理的渲染处理,例如,通过基于物理规律的渲染技术(PBR,Physically Based Rendering)加载虚拟场景的目标参数,并基于物理规律对目标参数进行渲染处理,得到符合物理规律的标准渲染图,这种渲染方式可以带来最优的渲染效果,但是代价是需要付出较大的存储资源以及计算资源。
在一些实施例中,参见图4C,步骤103中基于第一渲染参数以及第二渲染参数集合,对排序队列依次进行拟合渲染处理,得到虚拟场景的拟合渲染图,可以按照排序队列的顺序,依次对排序队列中每个渲染项执行以下拟合渲染处理,即执行图4C示出的步骤1031至步骤1036。
在步骤1031中,对渲染项关联的第一渲染参数、渲染项关联的第二渲染参数进行材质翻译处理,得到材质翻译结果。
作为示例,步骤1031中对渲染项关联的第一渲染参数、渲染项关联的第二渲染参数进行材质翻译处理,得到材质翻译结果,可以通过以下技术方案实现:对渲染项关联的第一渲染参数进行材质翻译处理,得到材质翻译数据,在材质翻译中对于UE引擎中使用材质的常用计算节点和常用内置材质函数(Material Function),主要是MaterialLayerBlend类,WorldPositionUV,WorldNormal类;对材质翻译数据进行材质编译处理,得到顶点操作相关数据以及片元像素操作相关数据,并将顶点操作相关数据以及片元像素操作相关数据组成材质翻译结果。通过材质编译可以得到对应顶点操作相关数据以及片元像素操作相关数据,这些相关数据均是代码。
在步骤1032中,基于材质翻译结果对渲染项进行网格处理,得到渲染项的网格数据。
在步骤1033中,对渲染项关联的第一渲染参数、渲染项关联的第二渲染参数以及网格数据进行光线处理,得到渲染项的光线处理结果;
在一些实施例中,步骤1033中对渲染项关联的第一渲染参数、渲染项关联的第二渲染参数以及网格数据进行光线处理,得到渲染项的光线处理结果,可以通过以下技术方案实现:基于第一渲染参数、第二渲染参数以及网格数据执行光线追踪处理,得到主光源阴影;对主光源阴影进行可微分去噪处理,得到光线去噪结果;对光线去噪结果叠加主光源光照以及环境光照,得到渲染项的光线处理结果。
作为示例,本申请实施例在这里利用光线追踪得到主光源的阴影,用于物件着色中方向光阴影的处理,并且通过可微分降噪来提升效果的同时保证梯度传递,之后叠加环境光光照效果完成最终的渲染。相比纯基于蒙特卡洛光线追踪的可微渲染器,本申请实施例采用了类似nvdiffrecmc和现有游戏引擎的方式,进行混合的光追集成。
在步骤1034中,对网格数据进行光栅化处理,得到光栅化结果。
在步骤1035中,基于光栅化结果、材质翻转结果以及光线处理结果进行着色处理,得到渲染项的第一着色结果。
在步骤1036中,对渲染项的第一着色结果和上一次拟合渲染得到的第二着色结果进行混合处理,得到包括渲染项的拟合渲染图。
在一些实施例中,步骤1036中对渲染项的第一着色结果与上一次拟合渲染得到的第二着色结果进行混合处理,得到包括渲染项的拟合渲染图,可以通过以下技术方案实现:对第一着色结果和第二着色结果中不透明渲染项的着色结果进行合并处理,得到第一合并结果;对所述第一着色结果和所述第二着色结果中透明渲染项的着色结果与第一合并结果进行合并处理,得到第二合并结果;对第二合并结果进行抗锯齿处理,得到拟合渲染图。
作为示例,参见图9,在着色阶段根据顶点属性进行相应的着色的选择。对于不透明物体的选择,需要使用削(peeler)的方式进行绘制。排列完成的待渲染队列按照上述顺序进行渲染,并在完成渲染后每个渲染项的渲染结果进行合并混合。混合的主要标准是基于深度和透明度。对于先后两次渲染(渲染项的第一着色结果与上一次拟合渲染得到的第二着色结果),可以比较光栅化器输出的深度通道,来挑选处于最前面的像素。对于前后两次着色结果可以依次使用深度比较合并,另外也可以将所有深度输出堆叠到一起,利用AD框架的函数来确定每个像素距离摄像机最近的网格,再提取正确的颜色。此外如果希望能够将深度相关的信息传播到更远的深度距离上,也可以使用SoftRas(一种三角网格的可微渲染器)的聚合函数来替代上面的深度合并操作,实现软性Z缓存的效果,即隐藏物件背后的部分不会显示出来。参见图8,因为对于深度的处理不同,透明网格需要通过peeler组件来进行透明的处理,所以使用两个不同的合并操作来进行合并的操作。
在步骤104中,基于渲染损失优化第一渲染参数,并将经过优化的第一渲染参数添加至第二渲染参数集合,其中,添加得到的第二渲染参数集合用于渲染虚拟场景。
在一些实施例中,拟合渲染处理以及优化是通过调用微分处理代码实现的,获取拟合渲染过程中以及优化过程中至少一个固定算子;将至少一个固定算子的计算结果封装至微分处理代码中。本申请实施例增加手动CUDA实现,用于加速对于复杂材质的微分计算以及减少直接使用自动微分带来的显存占用。
作为示例,即本申请实施例所涉及到的计算处理很多是重复的,这些重复的计算处理所涉及到的算子即为固定算子,如果采取自动微分的话,那么每次均需要对固定算子进行多次计算,从而浪费计算资源,因此可以直接将固定算子的计算结果封装到微分处理代码中,这里相当于是手动微分,从而加速对于复杂材质的微分计算以及减少直接使用自动微分带来的显存占用。
在一些实施例中,步骤104中确定拟合渲染图与标准渲染图之间的渲染损失,并基于渲染损失优化第一渲染参数,可以通过以下技术方案实现:针对拟合渲染图以及标准渲染图在屏幕空间中任一相同像素执行以下处理:确定拟合渲染图中对应像素的第一像素值,并确定标准渲染图中对应像素的第二像素值;将第一像素值与第二像素值之间的差值的绝对值作为像素的像素值差异;对屏幕空间中多个像素的像素值差异进行求和处理,得到整体像素值差异;基于整体像素值差异、拟合渲染图的长度以及拟合渲染图的宽度,确定渲染损失。以每个像素作为差异衡量的最小单位,可以有效提高渲染损失的价值,从而基于渲染损失进行更新时,可以得到具有更优渲染效果的转换参数以及第一纹理数据
作为示例,渲染损失是基于公式(1)得到的:
其中,Img1和Img2分别表示标准渲染图与拟合渲染图,H和W分别表示Img1(或Img2)的长宽,表示标准渲染图与拟合渲染图在屏幕空间的像素值差异,(i,j)表示标准渲染图中在屏幕空间中任一像素。
需要说明的是,本申请实施例的渲染损失并不局限于公式(1),还可以是其他的变形公式。
通过本申请实施例获取虚拟场景的第一渲染参数以及第二渲染参数集合,第一渲染参数是当前待优化的渲染参数,第二渲染参数集合包括已优化的渲染参数;基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列;基于第一渲染参数以及第二渲染参数集合,对排序队列依次进行拟合渲染处理,得到虚拟场景的拟合渲染图,相比于每次拟合只能够拟合得到单个渲染项,通过本申请实施例利用队列的方式可以实现对虚拟场景内所有渲染项的拟合渲染,并确定拟合渲染图与标准渲染图之间的渲染损失;基于渲染损失优化第一渲染参数,并将经过优化的第一渲染参数添加至第二渲染参数集合,通过排序队列的方式对虚拟场景实现高效的拟合渲染,因此后续可以利用第二渲染参数集合实现整个虚拟场景的渲染。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例可以应用于各种游戏的渲染场景,例如对抗游戏、赛车游戏、变装游戏等。在一些实施例中,服务器获取虚拟场景的第一渲染参数以及第二渲染参数集合,其中,第一渲染参数是当前待优化的渲染参数,第二渲染参数集合包括已优化的渲染参数;基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列;基于第一渲染参数以及第二渲染参数集合,对排序队列依次进行拟合渲染处理,得到虚拟场景的拟合渲染图,并确定拟合渲染图与标准渲染图之间的渲染损失;基于渲染损失优化第一渲染参数,并将经过优化的第一渲染参数添加至第二渲染参数集合,至此均是游戏开始前所执行的处理,例如,游戏的开发打包阶段,终端接收由服务器发送的第二渲染参数集合(可以封装在安装包中),在游戏安装运行过程中,终端基于第二渲染参数集合,对虚拟场景进行实时渲染处理,得到包括虚拟对象的目标渲染图,并基于目标渲染图进行虚拟场景的人机交互,例如游戏对抗。
与训练神经网络的流程类似,基于可微渲染的资源转换与优化同样具有类似或相同的数据准备、模型定义、损失函数优化算法选择、训练/拟合循环、模型评估与部署的流程。在当前使用情形中,拟合纹理这类数据相当于训练单层网络,所以因此更倾向于使用“拟合”而非“训练”。
参见图5,可微渲染进行资源转化以及拟合的基本流程如下。
首先进行数据准备,具体而言,从游戏引擎导出需要处理的数据,如物体三角形的网格数据(顶点位置、法线方向与UV坐标等),物体所使用的具体材质和纹理,物体在游戏场景中的变换矩阵(位置、旋转与缩放),物体在当前游戏环境中的环境光照信息等内容,摄像机期望的观察位置组(如果需要还会导出当前位置的场景颜色或渲染过程中的渲染目标纹理),利用这些数据能在引擎外部重新渲染当前内容并取得基本一致的效果。
接着定义待拟合数据并初始化,具体而言,定义所有需要拟合的参数,同时初始化这些参数。初始化这些参数方法对于不同数据可能有不同的方式,比如对于需要拟合的PBR纹理参数可能使用默认的中间颜色,对于法线纹理使用默认z方向上的编码颜色,对于需要处理的网格可以使用期望拓扑的单元网格或者近似的LOD网格。这些初始化数据可以是通过传统算法得到,也可以通过其他神经网络算法得到,通过下面的拟合循环实现效果的精修。
然后选择损失函数及优化算法,定义拟合循环中所使用到的损失函数和优化算法。损失函数可能包含图像空间的损失,轮廓损失,正则化器等内容,对于不同拟合任务,可以给予不同的选择或权重。此外对于不同的视角可以定义不同的损失权重。类似的优化算法可以在随机梯度下降算法、Adam算法、RM Sprop算法等当中选择。这些算法都基于梯度下降,但具有不同的优化策略和更新规则。对于不同的任务可以选择不同的损失函数和优化算法。
接着进行拟合循环,首先是前向传播过程,将待拟合参数通过可微渲染器完成渲染,得到拟合渲染结果。这些拟合渲染结果可以是单视角的也可使是多个视角联合在一起的。然后计算损失,根据定义的损失函数,计算拟合渲染结果和拟合目标结果的视角加权后的损失值。拟合目标结果可以使用目标数据在相同可微渲染器完成渲染得到,也可以根据情况使用导出的场景颜色或着色。接着,计算损失函数关于拟合参数的梯度,这里会根据可微渲染器及材质的情况,通过自动微分、手动微分或者两者混合的计算完成梯度的计算。根据梯度和具体优化算法更新待拟合参数,最后验证并提前停止循环,评估当前拟合参数的拟合情况。如在一定数量的连续拟合轮数内没有明显提升,就提前终止拟合过程,避免过拟合。
然后进行资源评估以及资源部署,在导出视角及新视角下进行观察,确定拟合结果是否满足预期效果。将拟合好的数据导回到游戏引擎,并根据具体的情况完成设置。
可以将上述步骤简化描述为:由引擎导出资源到外部的可微渲染器,外部可微渲染器中进行拟合循环,将拟合完的资源按项目规则导回到引擎项目中。
下面介绍拟合循环中的前向传播过程,参见图6,在可微渲染的单次绘制基础上,本申请实施例将网格信息、材质信息和位置信息按照网格部件封装完成渲染,并增加多绘制结果的抗锯齿操作和合并,从而支持多网格部件的渲染。为了处理光影相关内容,本申请实施例增加利用光线追踪的光源阴影计算。本申请实施例增加手动CUDA实现,用于加速对于复杂材质的微分计算以及减少直接使用自动微分带来的显存占用。
参见图7,从引擎导出待渲染物体列表时,统计所有待渲染物体(网格部件,材质实例,坐标列表)的元组。在统计完所有的待渲染物体的网格部件之后,将这些网格部件转换成待进行渲染的渲染项。这些渲染项会被分为两类,有待优化内容的渲染项和没有待优化内容的渲染项。这里将不透明的场景的数据通过光线追踪引擎建立包围盒层级结构,进行光线追踪的阴影的计算,用于不透明物件着色中方向光阴影的处理。本申请实施例将待优化的渲染项当作“类透明”的方式进行了排序处理,相当于在队列中增加了一种需要处理的“透明”物体。首先进行所有不参与优化的不透明渲染项按照深度距离由远到近的排序,并按照由近及远的顺序进行渲染。由近及远的主要目的是在可微渲染阶段利用深度进行剔除,减少不必要物体的绘制。之后绘制透明的优化项。对于所有透明的渲染项(不参与优化与参与优化的一起)进行排序,按照由远及近的顺序进行绘制,以保证混合的正确。对于透明队列中,存在参与优化与不参与优化物件重合的情况,对于此种情况,将不参与优化物件合并入待优化物件,将不优化标记添加到额外的顶点属性中。在着色阶段根据顶点属性进行相应的着色的选择。对于不透明物体的选择,需要使用削(peeler)的方式进行绘制。排列完成的待渲染列表按照上述顺序进行渲染,并在完成渲染后每个渲染项的渲染结果进行合并混合。排列完成的待渲染列表按照顺序进行渲染,并每个渲染项的渲染结果进行合并混合,混合的主要标准是基于深度和透明度。对于先后两次渲染,可以比较光栅化器输出的深度通道,来挑选处于最前面的像素。对于前后两次着色结果可以依次使用深度比较合并,另外也可以将所有深度输出堆叠到一起,利用AD框架的函数来确定每个像素距离摄像机最近的网格,再提取正确的颜色。此外如果希望能够将深度相关的信息传播到更远的深度距离上,也可以使用SoftRas(一种三角网格的可微渲染器)的聚合函数来替代上面的深度合并操作,实现软性Z缓存的效果。
参见图8,因为对于深度的处理不同,透明网格需要通过peeler来进行透明的处理,所以使用两个不同的合并操作来进行合并的操作。
参见图9,在上述渲染排序阶段,完成不透明物体的收集之后,不透明的场景数据通过光线追踪引擎建立包围盒,本申请实施例在这里利用光线追踪得到主光源的阴影,用于物件着色中方向光阴影的处理,并且通过可微分的降噪来提升效果的同时,保证梯度的传递,之后叠加环境光光照效果完成最终的渲染。相比纯基于蒙特卡洛光线追踪的可微渲染器,本申请实施例采用类似Nvdi ffrecmc和相关技术中游戏引擎的方式进行混合光追集成,本申请实施例的处理方法是适用于游戏资源的,且本申请实施例希望将光追技术更多用于材质表现方面。
参见图10A,使用本申请实施例提供的可微渲染器,对当前的游戏中卡车资源进行了拟合。可以看到相比于原始的PBR材质,拟合后的材质基本保留了细节,并将PBR中的粗糙度等信息以合理的方式叠加到当前的拟合纹理中,仅使用了基本的兰伯特漫反射即可达到类似的效果。对于卡车上部也拟合进了法线的效果和相应的反射效果。
参见图10B,在光照是计算瓶颈的情况下,这种优化收效显著。对于前向管线,这种优化非常便于使用,对引擎不需要做较大修改。拟合资源的使用最好是整体开关切换。对于如果全局切换,则有较大的性能和显存收益。
本申请实施例提供了一种用于游戏中美术资源处理的可微渲染器设计方案。对重建类可微渲染器引入渲染队列的构思,在主要功能基于光栅化的基础上加入了光线追踪的扩展,并增加了引擎内部常用着色器计算的手动微分支持。本申请实施例能够方便的处理游戏美术类资源,避免了网格合并和UV数据重排除,不影响原有资源的结构与UV数据。此外光线追踪的扩展能够很好处理资源光影的效果,便于之后光影相关的美术资源的处理,进而能够实现光影相关的数据的拟合、转换与近似。
下面继续说明本申请实施例提供的虚拟场景的参数拟合装置455的实施为软件模块的示例性结构,在一些实施例中,如图3所示,存储在存储器450的虚拟场景的参数拟合装置455中的软件模块可以包括:获取模块4551,用于获取虚拟场景的第一渲染参数以及第二渲染参数集合,其中,第一渲染参数是当前待优化的渲染参数,第二渲染参数集合包括已优化的渲染参数;排序模块4552,用于基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列;拟合模块4553,用于基于第一渲染参数以及第二渲染参数集合,对排序队列依次进行拟合渲染处理,得到虚拟场景的拟合渲染图,并确定拟合渲染图与标准渲染图之间的渲染损失;优化模块4554,用于基于渲染损失优化第一渲染参数,并将经过优化的第一渲染参数添加至第二渲染参数集合。
在一些实施例中,在基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列之前,获取模块4551,还用于从引擎中获取虚拟场景的多个待渲染物体;获取多个待渲染物体的多个网格部件,并将多个网格部件分别转换为渲染项。
在一些实施例中,排序模块4552,还用于:针对每个渲染项执行以下处理:当渲染项具有第一渲染参数时,将渲染项作为有待优化内容的渲染项;当渲染项不具有第一渲染参数时,将渲染项作为没有待优化内容的渲染项;基于透明度以及深度将没有待优化内容的渲染项排序在有待优化内容的渲染项之前,得到排序队列。
在一些实施例中,排序模块4552,还用于:对多个没有待优化内容的不透明渲染项进行基于深度的升序排序处理,得到第一排序结果;对多个有待优化内容的不透明渲染项进行基于深度的降序排序处理,得到第二排序结果;对多个透明渲染项进行基于深度的降序排序处理,得到第三排序结果;将第一排序结果排序在最靠前的位置,将第三排序结果排序在最靠后的位置,将第二排序结果排序在第一排序结果与第三排序结果的中间,得到排序队列。
在一些实施例中,多个透明渲染项包括没有待优化内容的透明渲染项与有待优化内容的透明渲染项;排序模块4552,还用于:对多个透明渲染项进行基于深度的降序排序处理,得到初始排序结果;当初始排序结果中包括与有待优化内容的透明渲染项重合的没有待优化内容的透明渲染项时,将没有待优化内容的透明渲染项合并入重合的有待优化内容的透明渲染项,得到第三排序结果。
在一些实施例中,拟合模块4553,还用于:按照排序队列的顺序,依次对排序队列中每个渲染项执行以下拟合渲染处理:对渲染项关联的第一渲染参数、渲染项关联的第二渲染参数进行材质翻译处理,得到材质翻译结果;基于材质翻译结果对渲染项进行网格处理,得到渲染项的网格数据;对渲染项关联的第一渲染参数、渲染项关联的第二渲染参数以及网格数据进行光线处理,得到渲染项的光线处理结果;对网格数据进行光栅化处理,得到光栅化结果;基于光栅化结果、材质翻转结果以及光线处理结果进行着色处理,得到渲染项的第一着色结果;对渲染项的第一着色结果和上一次拟合渲染得到的第二着色结果进行混合处理,得到包括渲染项的拟合渲染图。
在一些实施例中,拟合模块4553,还用于:对渲染项关联的第一渲染参数进行材质翻译处理,得到材质翻译数据;对材质翻译数据进行材质编译处理,得到顶点操作相关数据以及片元像素操作相关数据,并将顶点操作相关数据以及片元像素操作相关数据组成材质翻译结果。
在一些实施例中,拟合模块4553,还用于:基于第一渲染参数、第二渲染参数以及网格数据执行光线追踪处理,得到主光源阴影;对主光源阴影进行可微分去噪处理,得到光线去噪结果;对光线去噪结果叠加主光源光照以及环境光照,得到渲染项的光线处理结果。
在一些实施例中,拟合渲染处理以及优化是通过调用微分处理代码实现的,拟合模块4553,还用于:获取拟合渲染过程中以及优化过程中至少一个固定算子;将至少一个固定算子的计算结果封装至微分处理代码中。
在一些实施例中,拟合模块4553,还用于:对第一着色结果和第二着色结果中不透明渲染项的着色结果进行合并处理,得到第一合并结果;对所述第一着色结果和所述第二着色结果中透明渲染项的着色结果与第一合并结果进行合并处理,得到第二合并结果;对第二合并结果进行抗锯齿处理,得到拟合渲染图。
在一些实施例中,优化模块4554,还用于:针对拟合渲染图以及标准渲染图在屏幕空间中任一相同像素执行以下处理:确定拟合渲染图中对应像素的第一像素值,并确定标准渲染图中对应像素的第二像素值;将第一像素值与第二像素值之间的差值的绝对值作为像素的像素值差异;对屏幕空间中多个像素的像素值差异进行求和处理,得到整体像素值差异;基于整体像素值差异、拟合渲染图的长度以及拟合渲染图的宽度,确定渲染损失。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机可执行指令,该计算机可执行指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该电子设备执行本申请实施例上述的虚拟场景的参数拟合方法。
本申请实施例提供一种存储有计算机可执行指令的计算机可读存储介质,其中存储有计算机可执行指令,当计算机可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的图像渲染方法,例如,如图4A-4C示出的虚拟场景的参数拟合方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EP ROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,计算机可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,计算机可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,HyperText Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,计算机可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
综上所述,通过本申请实施例获取虚拟场景的第一渲染参数以及第二渲染参数集合,第一渲染参数是当前待优化的渲染参数,第二渲染参数集合包括已优化的渲染参数;基于虚拟场景的第一渲染参数、虚拟场景的渲染项的透明度以及深度,对虚拟场景的多个渲染项进行排序,得到排序队列;基于第一渲染参数以及第二渲染参数集合,对排序队列依次进行拟合渲染处理,得到虚拟场景的拟合渲染图,相比于每次拟合只能够拟合得到单个渲染项,通过本申请实施例利用队列的方式可以实现对虚拟场景内所有渲染项的拟合渲染,并确定拟合渲染图与标准渲染图之间的渲染损失;基于渲染损失优化第一渲染参数,并将经过优化的第一渲染参数添加至第二渲染参数集合,通过排序队列的方式对虚拟场景实现高效的拟合渲染,因此后续可以利用第二渲染参数集合实现整个虚拟场景的渲染。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (15)

1.一种虚拟场景的参数拟合方法,其特征在于,所述方法包括:
获取所述虚拟场景的第一渲染参数以及第二渲染参数集合,其中,所述第一渲染参数是当前待优化的渲染参数,所述第二渲染参数集合包括已优化的渲染参数;
基于所述虚拟场景的第一渲染参数、所述虚拟场景的渲染项的透明度以及深度,对所述虚拟场景的多个渲染项进行排序,得到排序队列;
基于所述第一渲染参数以及所述第二渲染参数集合,对所述排序队列依次进行拟合渲染处理,得到所述虚拟场景的拟合渲染图,并确定所述拟合渲染图与标准渲染图之间的渲染损失;
基于所述渲染损失优化所述第一渲染参数,并将经过优化的第一渲染参数添加至所述第二渲染参数集合,其中,添加得到的第二渲染参数集合用于渲染所述虚拟场景。
2.根据权利要求1所述的方法,其特征在于,在基于所述虚拟场景的第一渲染参数、所述虚拟场景的渲染项的透明度以及深度,对所述虚拟场景的多个渲染项进行排序,得到排序队列之前,所述方法还包括:
从引擎中获取所述虚拟场景的多个待渲染物体;
获取所述多个待渲染物体的多个网格部件,并将所述多个网格部件分别转换为所述渲染项。
3.根据权利要求1所述的方法,其特征在于,所述基于所述虚拟场景的第一渲染参数、所述虚拟场景的渲染项的透明度以及深度,对所述虚拟场景的多个渲染项进行排序,得到排序队列,包括:
针对每个所述渲染项执行以下处理:
当所述渲染项具有所述第一渲染参数时,将所述渲染项作为有待优化内容的渲染项;
当所述渲染项不具有所述第一渲染参数时,将所述渲染项作为没有待优化内容的渲染项;
基于所述透明度以及所述深度将没有待优化内容的渲染项排序在所述有待优化内容的渲染项之前,得到所述排序队列。
4.根据权利要求3所述的方法,其特征在于,所述基于所述透明度以及所述深度将没有待优化内容的渲染项排序在所述有待优化内容的渲染项之前,得到所述排序队列,包括:
对多个所述没有待优化内容的不透明渲染项进行基于深度的升序排序处理,得到第一排序结果;
对多个所述有待优化内容的不透明渲染项进行基于所述深度的降序排序处理,得到第二排序结果;
对多个透明渲染项进行基于所述深度的降序排序处理,得到第三排序结果;
将所述第一排序结果排序在最靠前的位置,将所述第三排序结果排序在最靠后的位置,将所述第二排序结果排序在所述第一排序结果与所述第三排序结果的中间,得到所述排序队列。
5.根据权利要求4所述的方法,其特征在于,所述多个透明渲染项包括没有待优化内容的透明渲染项与有待优化内容的透明渲染项;
所述对多个透明渲染项进行基于所述深度的降序排序处理,得到第三排序结果,包括:
对所述多个透明渲染项进行基于所述深度的降序排序处理,得到初始排序结果;
当所述初始排序结果中包括与所述有待优化内容的透明渲染项重合的没有待优化内容的透明渲染项时,将所述没有待优化内容的透明渲染项合并入重合的有待优化内容的透明渲染项,得到所述第三排序结果。
6.根据权利要求1所述的方法,其特征在于,所述基于所述第一渲染参数以及所述第二渲染参数集合,对所述排序队列依次进行拟合渲染处理,得到所述虚拟场景的拟合渲染图,包括:
按照所述排序队列的顺序,依次对所述排序队列中每个所述渲染项执行以下拟合渲染处理:
对所述渲染项关联的第一渲染参数、所述渲染项关联的第二渲染参数进行材质翻译处理,得到材质翻译结果;
基于所述材质翻译结果对所述渲染项进行网格处理,得到所述渲染项的网格数据;
对所述渲染项关联的第一渲染参数、所述渲染项关联的第二渲染参数以及所述网格数据进行光线处理,得到所述渲染项的光线处理结果;
对所述网格数据进行光栅化处理,得到光栅化结果;
基于所述光栅化结果、所述材质翻转结果以及所述光线处理结果进行着色处理,得到所述渲染项的第一着色结果;
对所述渲染项的第一着色结果和上一次拟合渲染得到的第二着色结果进行混合处理,得到包括所述渲染项的拟合渲染图。
7.根据权利要求6所述的方法,其特征在于,所述对所述渲染项关联的第一渲染参数、所述渲染项关联的第二渲染参数进行材质翻译处理,得到材质翻译结果,包括:
对所述渲染项关联的第一渲染参数进行材质翻译处理,得到材质翻译数据;
对所述材质翻译数据进行材质编译处理,得到顶点操作相关数据以及片元像素操作相关数据,并将所述顶点操作相关数据以及所述片元像素操作相关数据组成所述材质翻译结果。
8.根据权利要求6所述的方法,其特征在于,所述对所述渲染项关联的第一渲染参数、所述渲染项关联的第二渲染参数以及所述网格数据进行光线处理,得到所述渲染项的光线处理结果,包括:
基于所述第一渲染参数、所述第二渲染参数以及所述网格数据执行光线追踪处理,得到主光源阴影;
对所述主光源阴影进行可微分去噪处理,得到光线去噪结果;
对所述光线去噪结果叠加主光源光照以及环境光照,得到所述渲染项的光线处理结果。
9.根据权利要求6所述的方法,其特征在于,所述对所述渲染项的第一着色结果与上一次拟合渲染得到的第二着色结果进行混合处理,得到包括所述渲染项的拟合渲染图,包括:
对所述第一着色结果和所述第二着色结果中不透明渲染项的着色结果进行合并处理,得到第一合并结果;
对所述第一着色结果和所述第二着色结果中透明渲染项的着色结果与第一合并结果进行合并处理,得到第二合并结果;
对所述第二合并结果进行抗锯齿处理,得到所述拟合渲染图。
10.根据权利要求1所述的方法,其特征在于,所述拟合渲染处理以及所述优化是通过调用微分处理代码实现的,所述方法还包括:
获取所述拟合渲染过程中以及所述优化过程中至少一个固定算子;
将所述至少一个固定算子的计算结果封装至所述微分处理代码中。
11.根据权利要求1所述的方法,其特征在于,所述确定所述拟合渲染图与标准渲染图之间的渲染损失,包括:
针对所述拟合渲染图以及所述标准渲染图在屏幕空间中任一相同像素执行以下处理:
确定所述拟合渲染图中对应所述像素的第一像素值,并确定所述标准渲染图中对应所述像素的第二像素值;
将所述第一像素值与所述第二像素值之间的差值的绝对值作为所述像素的像素值差异;
对所述屏幕空间中多个所述像素的像素值差异进行求和处理,得到所述整体像素值差异;
基于所述整体像素值差异、所述拟合渲染图的长度以及所述拟合渲染图的宽度,确定所述渲染损失。
12.一种虚拟场景的参数拟合装置,其特征在于,所述装置包括:
获取模块,用于获取所述虚拟场景的第一渲染参数以及第二渲染参数集合,其中,所述第一渲染参数是当前待优化的渲染参数,所述第二渲染参数集合包括已优化的渲染参数;
排序模块,用于基于所述虚拟场景的第一渲染参数、所述虚拟场景的渲染项的透明度以及深度,对所述虚拟场景的多个渲染项进行排序,得到排序队列;
拟合模块,用于基于所述第一渲染参数以及所述第二渲染参数集合,对所述排序队列依次进行拟合渲染处理,得到所述虚拟场景的拟合渲染图,并确定所述拟合渲染图与标准渲染图之间的渲染损失;
优化模块,用于基于所述渲染损失优化所述第一渲染参数,并将经过优化的第一渲染参数添加至所述第二渲染参数集合,其中,添加得到的第二渲染参数集合用于渲染所述虚拟场景。
13.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储计算机可执行指令;
处理器,用于执行所述存储器中存储的计算机可执行指令时,实现权利要求1至11任一项所述的虚拟场景的参数拟合方法。
14.一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令被处理器执行时实现权利要求1至11任一项所述的虚拟场景的参数拟合方法。
15.一种计算机程序产品,包括计算机可执行指令,其特征在于,所述计算机可执行指令被处理器执行时实现权利要求1至11任一项所述的虚拟场景的参数拟合方法。
CN202311113622.0A 2023-08-30 2023-08-30 参数拟合方法、装置、设备、存储介质及程序产品 Pending CN117078824A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311113622.0A CN117078824A (zh) 2023-08-30 2023-08-30 参数拟合方法、装置、设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311113622.0A CN117078824A (zh) 2023-08-30 2023-08-30 参数拟合方法、装置、设备、存储介质及程序产品

Publications (1)

Publication Number Publication Date
CN117078824A true CN117078824A (zh) 2023-11-17

Family

ID=88715142

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311113622.0A Pending CN117078824A (zh) 2023-08-30 2023-08-30 参数拟合方法、装置、设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN117078824A (zh)

Similar Documents

Publication Publication Date Title
CN105787865B (zh) 基于游戏引擎和gpu并行处理的分形图生成与渲染方法
EP1594091B1 (en) System and method for providing an enhanced graphics pipeline
CN107016170A (zh) 一种基于WebGL的LED灯具三维定制仿真方法
EP4394713A1 (en) Image rendering method and apparatus, electronic device, computer-readable storage medium, and computer program product
EP4004630A1 (en) Systems and methods for augmented reality
CN116228943B (zh) 虚拟对象面部重建方法、面部重建网络训练方法及装置
CN110163945A (zh) 一种实时渲染中的水面仿真方法
CN115082607A (zh) 虚拟角色头发渲染方法、装置、电子设备和存储介质
CN117101127A (zh) 虚拟场景中的图像渲染方法、装置、电子设备及存储介质
CN112843704B (zh) 动画模型处理方法、装置、设备及存储介质
Levkowitz et al. Cloud and mobile web-based graphics and visualization
CN116958390A (zh) 一种图像渲染方法、装置、设备、存储介质及程序产品
CN117078824A (zh) 参数拟合方法、装置、设备、存储介质及程序产品
CN114399580A (zh) 一种图像渲染方法、装置、设备、存储介质及程序产品
da Silva et al. Ray-VR: Ray tracing virtual reality in falcor
Xie The research on mobile game engine
Gil et al. A Shader-Based Architecture for Virtual Reality Applications on Mobile Devices
Nordahl Enhancing the hpc-lab snow simulator with more realistic terrains and other interactive features
Inzerillo et al. Optimization of cultural heritage virtual environments for gaming applications
EP4394715A1 (en) Image rendering method and apparatus, electronic device, computer-readable storage medium, and computer program product
Hanrahan et al. The Design of RenderMan
WO2024027237A1 (zh) 渲染的优化方法、电子设备和计算机可读存储介质
CN117876568A (zh) 一种流传输过程的自定义数据注入方法及装置
GB2432500A (en) Image generation using vertex and pixel processing sections
Doppioslash et al. How shader development works

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40098961

Country of ref document: HK