全局光照渲染方法、装置、计算机设备和存储介质转让专利

申请号 : CN202310023904.5

文献号 : CN115830208B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王贺

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请涉及一种全局光照渲染方法、装置、计算机设备和存储介质,可应用于游戏、影视及虚拟现实等领域,所述方法包括:生成与目标场景中各对象对应的面元;获取所述目标场景中的光照探针,以及获取与所述光照探针之间的距离满足预设条件的目标面元的面元光照信息;所述目标面元为各所述对象对应的面元中的至少一个,所述面元光照信息包括直接光照信息和间接光照信息,所述间接光照信息是对所述目标面元的投射光进行累积得到的;根据所述面元光照信息对所述目标场景中的对象进行全局光照渲染。采用本方法能够提高全局光照渲染的效率和效果。

权利要求 :

1.一种全局光照渲染方法,其特征在于,所述方法包括:生成与目标场景中各对象对应的面元;所述面元包括第一初始面元和第一目标面元,所述第一初始面元为对所述目标场景的深度阴影贴图进行分块处理,得到各深度阴影贴图块,在各所述深度阴影贴图块中选取初始像素点,并在所述初始像素点的位置处生成的;所述第一目标面元为在各所述深度阴影贴图块中,确定各像素点被所述第一初始面元覆盖的第一覆盖率;当目标深度阴影贴图块中存在所述第一覆盖率小于覆盖率阈值的第一目标像素点时,在所述第一目标像素点的位置处生成的;

获取所述目标场景中的光照探针,以及获取与所述光照探针之间的距离满足预设条件的目标面元的面元光照信息;所述目标面元为各所述对象对应的面元中的至少一个,所述面元光照信息包括直接光照信息和间接光照信息,所述间接光照信息是对所述目标面元的投射光进行累积得到的;

根据所述面元光照信息对所述目标场景中的对象进行全局光照渲染。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取目标场景中的光源信息;

基于所述光源信息生成所述目标场景的深度阴影贴图。

3.根据权利要求1所述的方法,其特征在于,所述面元还包括第二初始面元和第二目标面元,所述第二初始面元为对所述目标场景的场景画面进行分块处理,得到各场景画面块;

在各所述场景画面块中选取初始像素点,并在各所述初始像素点的位置处生成的;所述第二目标面元为在各所述场景画面块中,确定各像素点被所述第二初始面元覆盖的第三覆盖率;当目标场景画面块中存在所述第三覆盖率小于所述覆盖率阈值的第三目标像素点时,在所述第三目标像素点的位置处生成的。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:在各所述深度阴影贴图块中,确定各所述像素点被所述面元覆盖的第二覆盖率;

当所述目标深度阴影贴图块中存在所述第二覆盖率小于所述覆盖率阈值的第二目标像素点时,在所述第二目标像素点的位置处生成新的第一目标面元;

当所述目标深度阴影贴图块中不存在所述第二覆盖率小于所述覆盖率阈值的第二目标像素点时,停止生成新的第一目标面元。

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:确定各所述面元的面元参数;

基于所述目标场景中的光源信息生成深度阴影贴图;

基于所述深度阴影贴图和所述面元参数,确定各所述面元的面元光照信息。

6.根据权利要求5所述的方法,其特征在于,所述基于所述深度阴影贴图和所述面元参数,确定各所述面元的面元光照信息,包括:根据所述深度阴影贴图,确定各所述面元的直接光照信息;

基于所述直接光照信息和所述面元参数,确定各所述面元的投射光;

对各所述面元的投射光进行光照累积,得到各所述面元的间接光照信息;

将所述直接光照信息和所述间接光照信息进行叠加,得到各所述面元的面元光照信息。

7.根据权利要求6所述的方法,其特征在于,所述对各所述面元的投射光进行光照累积,得到各所述面元的间接光照信息,包括:确定所述投射光到达的投射点;

在各所述面元中确定所述投射点所对应的面元,得到投射面元;

选取所述投射面元的至少一种光照信息;所述至少一种光照信息为所述直接光照信息或所述间接光照信息中的至少一种信息;

基于所述至少一种光照信息,确定所述投射点所处区域的区域光照信息;

对所述投射点所处区域的区域光照信息进行光照累积,得到间接光照信息。

8.根据权利要求1所述的方法,其特征在于,所述目标场景是视频帧中的虚拟场景;所述方法还包括:在生成各所述面元后,确定各所述面元的坐标;

当所述视频帧发生更新时,确定各所述面元的新坐标;

若所述新坐标与所述坐标的差值大于预设阈值,将所述差值对应的面元进行回收处理。

9.根据权利要求8所述的方法,其特征在于,所述方法还包括:若所述新坐标与所述坐标的差值不大于所述预设阈值,重新确定所述差值对应面元的面元参数。

10.根据权利要求1至9中任一项所述的方法,其特征在于,所述根据所述面元光照信息对所述目标场景中的对象进行全局光照渲染,包括:基于所述面元光照信息确定所述目标场景中各对象的对象光照信息;

基于所述对象光照信息确定各所述对象中的像素点的光照数据;

根据所述光照数据对各所述对象的像素点进行光照渲染。

11.一种全局光照渲染装置,其特征在于,所述装置包括:面元生成模块,用于生成与目标场景中各对象对应的面元;所述面元包括第一初始面元和第一目标面元,所述第一初始面元为对所述目标场景的深度阴影贴图进行分块处理,得到各深度阴影贴图块,在各所述深度阴影贴图块中选取初始像素点,并在所述初始像素点的位置处生成的;所述第一目标面元为在各所述深度阴影贴图块中,确定各像素点被所述第一初始面元覆盖的第一覆盖率;当目标深度阴影贴图块中存在所述第一覆盖率小于覆盖率阈值的第一目标像素点时,在所述第一目标像素点的位置处生成的;

光照信息获取模块,用于获取所述目标场景中的光照探针,以及获取与所述光照探针之间的距离满足预设条件的目标面元的面元光照信息;所述目标面元为各所述对象对应的面元中的至少一个,所述面元光照信息包括直接光照信息和间接光照信息,所述间接光照信息是对所述目标面元的投射光进行累积得到的;

光照渲染模块,用于根据所述面元光照信息对所述目标场景中的对象进行全局光照渲染。

12.根据权利要求11所述的装置,其特征在于,所述装置还包括:光源信息获取模块,用于获取目标场景中的光源信息;

阴影贴图生成模块,用于基于所述光源信息生成所述目标场景的深度阴影贴图。

13.根据权利要求11所述的装置,其特征在于,所述面元还包括第二初始面元和第二目标面元,所述第二初始面元为对所述目标场景的场景画面进行分块处理,得到各场景画面块;在各所述场景画面块中选取初始像素点,并在各所述初始像素点的位置处生成的;所述第二目标面元为在各所述场景画面块中,确定各像素点被所述第二初始面元覆盖的第三覆盖率;当目标场景画面块中存在所述第三覆盖率小于所述覆盖率阈值的第三目标像素点时,在所述第三目标像素点的位置处生成的。

14.根据权利要求11所述的装置,其特征在于,所述面元生成模块,还用于:在各所述深度阴影贴图块中,确定各所述像素点被所述面元覆盖的第二覆盖率;

当所述目标深度阴影贴图块中存在所述第二覆盖率小于所述覆盖率阈值的第二目标像素点时,在所述第二目标像素点的位置处生成新的第一目标面元;

当所述目标深度阴影贴图块中不存在所述第二覆盖率小于所述覆盖率阈值的第二目标像素点时,停止生成新的第一目标面元。

15.根据权利要求11所述的装置,其特征在于,所述面元生成模块,还用于:确定各所述面元的面元参数;

基于所述目标场景中的光源信息生成深度阴影贴图;

所述装置还包括面元光照信息确定模块,用于基于所述深度阴影贴图和所述面元参数,确定各所述面元的面元光照信息。

16.根据权利要求15所述的装置,其特征在于,所述面元光照信息确定模块,还用于:根据所述深度阴影贴图,确定各所述面元的直接光照信息;

基于所述直接光照信息和所述面元参数,确定各所述面元的投射光;

对各所述面元的投射光进行光照累积,得到各所述面元的间接光照信息;

将所述直接光照信息和所述间接光照信息进行叠加,得到各所述面元的面元光照信息。

17.根据权利要求16所述的装置,其特征在于,所述面元光照信息确定模块,还用于:确定所述投射光到达的投射点;

在各所述面元中确定所述投射点所对应的面元,得到投射面元;

选取所述投射面元的至少一种光照信息;所述至少一种光照信息为所述直接光照信息或所述间接光照信息中的至少一种信息;

基于所述至少一种光照信息,确定所述投射点所处区域的区域光照信息;

对所述投射点所处区域的区域光照信息进行光照累积,得到间接光照信息。

18.根据权利要求11所述的装置,其特征在于,所述目标场景是视频帧中的虚拟场景;

所述面元生成模块,还用于:

在生成各所述面元后,确定各所述面元的坐标;

当所述视频帧发生更新时,确定各所述面元的新坐标;

若所述新坐标与所述坐标的差值大于预设阈值,将所述差值对应的面元进行回收处理。

19.根据权利要求18所述的装置,其特征在于,所述面元生成模块,还用于:若所述新坐标与所述坐标的差值不大于所述预设阈值,重新确定所述差值对应面元的面元参数。

20.根据权利要求11至19中任一项所述的装置,其特征在于,所述光照渲染模块,还用于:基于所述面元光照信息确定所述目标场景中各对象的对象光照信息;

基于所述对象光照信息确定各所述对象中的像素点的光照数据;

根据所述光照数据对各所述对象的像素点进行光照渲染。

21.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述的方法的步骤。

22.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。

说明书 :

全局光照渲染方法、装置、计算机设备和存储介质

技术领域

[0001] 本申请涉及图像处理技术领域,特别是涉及一种全局光照渲染方法、装置、计算机设备和存储介质。

背景技术

[0002] 近年来,随着计算机技术的发展,游戏、影视及虚拟现实等产业呈现出蓬勃发展的趋势,全局光照算法被广泛应用于上述场景的高真实感渲染,用于产生软阴影、相互反射、焦散和散射等效果。
[0003] 然而,目前常用的基于反射阴影贴图(Reflective Shadow Maps,RSM)的全局光照渲染方案,以及基于体素的全局光照(Voxel Lighting)渲染方案,存在计算量大、实时性差、以及渲染效果差的问题。

发明内容

[0004] 基于此,有必要针对上述技术问题,提供一种能够提高计算效率和渲染效果的全局光照渲染方法、装置、计算机设备和存储介质。
[0005] 第一方面,本申请提供了一种全局光照渲染方法。所述方法包括:
[0006] 生成与目标场景中各对象对应的面元;
[0007] 获取所述目标场景中的光照探针,以及获取与所述光照探针之间的距离满足预设条件的目标面元的面元光照信息;所述目标面元为各所述对象对应的面元中的至少一个,所述面元光照信息包括直接光照信息和间接光照信息,所述间接光照信息是对所述目标面元的投射光进行累积得到的;
[0008] 根据所述面元光照信息对所述目标场景中的对象进行全局光照渲染。
[0009] 第二方面,本申请还提供了一种全局光照渲染装置。所述装置包括:
[0010] 面元生成模块,用于生成与目标场景中各对象对应的面元;
[0011] 光照信息获取模块,用于获取所述目标场景中的光照探针,以及获取与所述光照探针之间的距离满足预设条件的目标面元的面元光照信息;所述目标面元为各所述对象对应的面元中的至少一个,所述面元光照信息包括直接光照信息和间接光照信息,所述间接光照信息是对所述目标面元的投射光进行累积得到的;
[0012] 光照渲染模块,用于根据所述面元光照信息对所述目标场景中的对象进行全局光照渲染。
[0013] 在其中一个实施例中,所述装置还包括:
[0014] 光源信息获取模块,用于获取目标场景中的光源信息;
[0015] 阴影贴图生成模块,用于基于所述光源信息生成所述目标场景的深度阴影贴图;
[0016] 所述面元生成模块还用于:
[0017] 根据所述深度阴影贴图生成与目标场景中各对象对应的面元。
[0018] 在其中一个实施例中,所述面元包括初始面元和目标面元,所述面元生成模块还用于:
[0019] 对所述深度阴影贴图进行分块处理,得到各深度阴影贴图块;
[0020] 在各所述深度阴影贴图块中选取初始像素点,并在所述初始像素点的位置处生成初始面元;
[0021] 在各所述深度阴影贴图块中,确定各像素点被所述初始面元覆盖的第一覆盖率;
[0022] 当目标深度阴影贴图块中存在所述第一覆盖率小于覆盖率阈值的第一目标像素点时,在所述第一目标像素点的位置处生成目标面元。
[0023] 在其中一个实施例中,所述面元生成模块还用于:
[0024] 在各所述深度阴影贴图块中,确定各所述像素点被所述面元覆盖的第二覆盖率;
[0025] 当所述目标深度阴影贴图块中存在所述第二覆盖率小于所述覆盖率阈值的第二目标像素点时,在所述第二目标像素点的位置处生成新的目标面元;
[0026] 当所述目标深度阴影贴图块中不存在所述第二覆盖率小于所述覆盖率阈值的第二目标像素点时,停止生成新的目标面元。
[0027] 在其中一个实施例中,所述面元生成模块还用于:
[0028] 确定各所述面元的面元参数;
[0029] 基于所述目标场景中的光源信息生成深度阴影贴图;
[0030] 所述装置还包括:面元光照信息确定模块,用于基于所述深度阴影贴图和所述面元参数,确定各所述面元的面元光照信息。
[0031] 在其中一个实施例中,所述面元光照信息确定模块还用于:
[0032] 根据所述深度阴影贴图,确定各所述面元的直接光照信息;
[0033] 基于所述直接光照信息和所述面元参数,确定各所述面元的投射光;
[0034] 对各所述面元的投射光进行光照累积,得到各所述面元的间接光照信息;
[0035] 将所述直接光照信息和所述间接光照信息进行叠加,得到各所述面元的面元光照信息。
[0036] 在其中一个实施例中,所述面元光照信息确定模块还用于:
[0037] 确定所述投射光到达的投射点;
[0038] 在各所述面元中确定所述投射点所对应的面元,得到投射面元;
[0039] 选取所述投射面元的至少一种光照信息;所述至少一种光照信息为所述直接光照信息或所述间接光照信息中的至少一种信息;
[0040] 基于所述至少一种光照信息,确定所述投射点所处区域的区域光照信息;
[0041] 对所述投射点所处区域的区域光照信息进行光照累积,得到间接光照信息。
[0042] 在其中一个实施例中,所述目标场景是视频帧中的虚拟场景;所述面元生成模块还用于:
[0043] 在生成各所述面元后,确定各所述面元的坐标;
[0044] 当所述视频帧发生更新时,确定各所述面元的新坐标;
[0045] 若所述新坐标与所述坐标的差值大于预设阈值,将所述差值对应的面元进行回收处理。
[0046] 在其中一个实施例中,所述面元生成模块还用于:
[0047] 若所述新坐标与所述坐标的差值不大于所述预设阈值,重新确定所述差值对应面元的面元参数。
[0048] 在其中一个实施例中,所述光照渲染模块还用于:
[0049] 基于所述面元光照信息确定所述目标场景中各对象的对象光照信息;
[0050] 基于所述对象光照信息确定各所述对象中的像素点的光照数据;
[0051] 根据所述光照数据对各所述对象的像素点进行光照渲染。
[0052] 第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0053] 生成与目标场景中各对象对应的面元;
[0054] 获取所述目标场景中的光照探针,以及获取与所述光照探针之间的距离满足预设条件的目标面元的面元光照信息;所述目标面元为各所述对象对应的面元中的至少一个,所述面元光照信息包括直接光照信息和间接光照信息,所述间接光照信息是对所述目标面元的投射光进行累积得到的;
[0055] 根据所述面元光照信息对所述目标场景中的对象进行全局光照渲染。
[0056] 第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0057] 生成与目标场景中各对象对应的面元;
[0058] 获取所述目标场景中的光照探针,以及获取与所述光照探针之间的距离满足预设条件的目标面元的面元光照信息;所述目标面元为各所述对象对应的面元中的至少一个,所述面元光照信息包括直接光照信息和间接光照信息,所述间接光照信息是对所述目标面元的投射光进行累积得到的;
[0059] 根据所述面元光照信息对所述目标场景中的对象进行全局光照渲染。
[0060] 第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
[0061] 生成与目标场景中各对象对应的面元;
[0062] 获取所述目标场景中的光照探针,以及获取与所述光照探针之间的距离满足预设条件的目标面元的面元光照信息;所述目标面元为各所述对象对应的面元中的至少一个,所述面元光照信息包括直接光照信息和间接光照信息,所述间接光照信息是对所述目标面元的投射光进行累积得到的;
[0063] 根据所述面元光照信息对所述目标场景中的对象进行全局光照渲染。
[0064] 上述全局光照渲染方法、装置、计算机设备和存储介质,通过生成与目标场景中各对象对应的面元,并获取目标场景中的光照探针,以及获取与光照探针之间的距离满足预设条件的目标面元的面元光照信息,其中,目标面元为各对象对应的面元中的至少一个,面元光照信息包括直接光照信息和间接光照信息,间接光照信息是对目标面元的投射光进行累积得到的,从而可以根据面元光照信息对目标场景中的对象进行全局光照渲染,以面元为单位进行光线追踪,并以面元为单位进行光照的收集,在达到接近现实的渲染效果的同时,还提高了计算效率,从而实现了高效的实时全局光照渲染。

附图说明

[0065] 图1为一个实施例中全局光照渲染方法的应用环境图;
[0066] 图2为一个实施例中全局光照渲染方法的流程示意图;
[0067] 图3A为一个实施例中面元可视化示意图;
[0068] 图3B为一个实施例中场景画面示意图;
[0069] 图3C为一个实施例中场景画面中面元示意图;
[0070] 图4为一个实施例中光照探针分布示意图;
[0071] 图5为一个实施例中光照渲染效果示意图;
[0072] 图6为另一个实施例中光照渲染效果示意图;
[0073] 图7为另一个实施例中光照渲染效果示意图;
[0074] 图8为另一个实施例中光线弹射示意图;
[0075] 图9为另一个实施例中全局光照渲染方法的流程示意图;
[0076] 图10另一个实施例中光照渲染效果示意图;
[0077] 图11另一个实施例中光照渲染效果示意图;
[0078] 图12为一个实施例中全局光照渲染装置的结构框图;
[0079] 图13为一个实施例中全局光照渲染装置的结构框图;
[0080] 图14为一个实施例中计算机设备的内部结构图;
[0081] 图15为一个实施例中计算机设备的内部结构图。

具体实施方式

[0082] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0083] 本申请实施例提供的实时全局光照渲染方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。该全局光照渲染方法可由终端102或服务器104执行,或者由终端102和服务器104协同执行。在一些实施例中,该全局光照渲染方法由终端102执行,终端102生成与目标场景中各对象对应的面元;获取目标场景中的光照探针,以及获取与光照探针之间的距离满足预设条件的目标面元的面元光照信息;目标面元为各对象对应的面元中的至少一个,面元光照信息包括直接光照信息和间接光照信息,间接光照信息是对目标面元的投射光进行累积得到的;根据面元光照信息对目标场景中的对象进行全局光照渲染。
[0084] 其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端102以及服务器104可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
[0085] 云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
[0086] 计算机视觉技术(Computer Vision,CV)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。
[0087] 作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、OCR、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。可以理解,在本申请的实时全局光照渲染方法,就是基于计算机视觉技术,对虚拟场景中进行图像处理,从而能够有效提高虚拟场景下的光照渲染效率和光照渲染效果。
[0088] 在一个实施例中,如图2所示,提供了一种全局光照渲染方法,该方法可由图1中的终端102或服务器104执行,或者由终端102和服务器104协同执行,以该方法由图1中的终端102执行为例进行说明,包括以下步骤:
[0089] S202,生成与目标场景中各对象对应的面元。
[0090] 其中,目标场景可以是虚拟场景,对象是指虚拟的物体对象。虚拟场景是指计算机设备通过数字通讯技术勾勒出的数字化场景,例如三维虚拟场景,可以用虚拟化技术手段来真实模拟出现世界的各种物质形态、空间关系等信息。三维虚拟场景下的物体对象可以包括地形、房屋、树木、人物等中的至少一种,所有物体对象都可以通过三维场景数据描述,例如,可以把三维场景数据加载到三维虚拟场景中,以展示出三维的仿真环境,其中,三维场景数据包括模型数据、纹理数据、光照数据、矢量数据、地形数据、栅格数据等中的至少一种。
[0091] 可以理解的是,虚拟场景中存在光源,该光源是能够真实地模拟现实中的光源的光照效果的一系列光照数据。现实中的光源,是指能够自行发光且正在发光的物体,例如太阳、电灯、燃烧的物质等。区别于现实中的光源,虚拟场景中的光源可以是没有形状或者轮廓的虚拟光源节点,虚拟场景中的光源是通过对被照射物体表面的明暗分布、色彩分布进行光照计算,并且使得被照射物体和周围环境有明暗、色彩的对比,从而表现出物体的光照效果。例如,可以根据虚拟场景中光源的位置,来计算被照射物体的光照效果,而浏览者是看不到光源本身的。
[0092] 在虚拟场景中,可以通过模拟光线在环境中的传播,实现仿真的全局光照效果。全局光照不仅可以计算各对象的光亮面以及阴暗面,还能计算虚拟环境中光的反射、折射等各种光效。可以理解的是,光线在介质中可以沿直线传播,在传播的过程中遇到障碍物如物体时,可能会发生光线的反射、散射、漫反射、被吸收等情况。不同材质的物体,光线在其表面的反射通过率不同,例如,光线传播到镜面时会发生反射,其发射通过率较高;光线传播到桌面时,会发生漫反射,其发射通过率则会衰减。此外,当虚拟场景中光源发生变化时,虚拟场景中的全局光照效果也会随之发生变化。
[0093] 面元是用于描述物体表面的小平面,即用于描述物体表面的最小单位,其具有一定面积,且对应存储有物体表面的信息,所存储的表面信息也可以称为面元参数,面元参数具体可包括面元的位置、半径、法线和反照率等。
[0094] 具体的,终端获取目标场景的三维场景数据,并根据三维场景数据构建目标场景,当前相机视角下观测虚拟场景得到场景画面,并基于深度阴影视图和该场景画面,生成与该场景画面匹配的各对象对应的面元,其中相机是整个虚拟场景中的观测点。
[0095] 如图3A所示,为一个实施例中目标场景中所生成的面元示意图,图3A中的面元用随机的颜色进行可视化展示。图3B为一个实施例中目标场景其中一个场景画面示意图,图3C为该场景画面对应所生成的面元示意图,图3C中的各“点”即为面元,“点”大小并不表征面元的大小。
[0096] 在一个实施例中,终端在生成各对象的面元之后,还可以确定各个面元的面元参数,并对各个面元的面元参数进行存储,以便后续在基于所存储的面元参数进行面元更新或面元回收,一方面对于未脱离目标场景中对象表面的面元无需重复生成,另一方面避免使用脱离目标场景中的对象表面的面元来进行光照渲染,提高了对目标场景的实时全局光照渲染的渲染效率和渲染效果。
[0097] 在一个实施例中,为了便于对所生成的面元进行管理,如面元更新、面元回收或者遍历面元,终端还可以在生成各面元时,同时生成该面元的面元标识,获取该面元依附的表面所在对象的对象标识,建立面元标识与对象标识之间的对应关系,以便后续基于对应关系快速查找到面元,进行面元更新或面元回收;此外终端还可以对目标场景进行场景体素化,也就是将目标场景的整个空间进行网格划分,并确定各个网格被面元覆盖的情况,针对任意一个网格,获取覆盖该网格的面元的面元标识,并基于所获取面元标识创建对应的面元索引,以便后续通过遍历各个网格,并进一步遍历各个面元索引实现对面元的遍历,提高了遍历面元的速度,进而提高了对目标场景的实时全局光照渲染的渲染效率。
[0098] S204,获取目标场景中的光照探针,以及获取与光照探针之间的距离满足预设条件的目标面元的面元光照信息。
[0099] 需要说明的是,现实中的物体表面接收到的光照并不是全部来自光源,还包括其他物体反射的光照。其中,来自光源的光照即为直接光照,而来自其他物体的光照就是间接光照。全局光照效果包括直接光照和间接光照的效果,也就是全局光照=直接光照+间接光照。
[0100] 直接光照,是指光源直接照射到物体上,并反射到虚拟观测点或相机的光照亮度。间接光照,是指光源先照射到其它物体上,并经过一次、两次或多次弹射,最终抵达到被观察的物体表面上,然后反射到虚拟观测点或相机的光照亮度。
[0101] 光照探针(lighting probe),是预先放置在目标场景中的光照探测器,光照探针也可以理解为一个个的三维感应点,该感应点可以感应穿过其的光照信息,能够用于为虚拟场景中的物体提供包括间接光照的高质量光照信息。如图4所示为一个实施例中虚拟场景中的光照探针分布,其中,圆点表示的是基于屏幕空间所生成的光照探针,从图中可以看出,光照射探针均匀的分布在目标场景中,此外,光照探针还可以基于世界空间进行生成,当确定出各个光照探针位置处的探针光照信息后,对于目标场景中任意一点的光照信息,可以基于距离该点最近的至少一个光照探针的探针光照信息采用插值法求得。
[0102] 目标面元为各对象对应的面元中的至少一个,预设条件是指预设的距离条件,比如预设的距离条件为小于距离阈值,则将到某个光照探针的距离小于距离阈值的面元确定为目标面元,可以理解的是,同一个光照探针所对应的目标面元可以为多个。
[0103] 面元光照信息是指面元的全局光照信息,具体包括直接光照信息和间接光照信息,间接光照信息是对目标面元的投射光进行累积得到的。目标面元的投射光是指由目标面元向外所投射的光线,也可以称为投射光线。本申请中,面元光照信息所包含的间接光照信息可以是一次间接光照信息、二次间接光照信息或多次间接光照信息中的至少一种,其中一次间接光照信息是光线经过一次弹射所产生的光照信息,二次间接光照信息是指光线经过两次弹射所产生的光照信息,多次间接光照信息是光线经过多次弹射所产生的光照信息。
[0104] 具体的,终端可以预先确定并存储各个面元的面元光照信息,并读取预存的探针位置信息以获取目标场景中的光照探针,针对任意一个光照探针,遍历所生成的各个面元,确定与该光照探针之间距离满足预设条件的目标面元,并从预先存储的各个面元的面元光照信息中,读取目标面元的面元光照信息。
[0105] S206,根据面元光照信息对目标场景中的对象进行全局光照渲染。
[0106] 可以理解的是,终端可以对虚拟场景中的一系列场景画面进行渲染处理,以使虚拟场景中的画面内容以二维的图像形式在屏幕上进行显示。其中,在计算机图形中,渲染是指将三维场景中的物体模型,按照设定好的环境、材质、光照及渲染参数,二维投影成数字图像的过程。光照渲染,是指对待渲染图像中的各对象进行渲染过程中的光照计算处理,以使最终的对象的像素点具有光照效果。
[0107] 具体的,终端在得到各个光照探针所对应的目标面元的面元光照信息之后,基于所获取的目标面元的面元光照信息确定出各光照探针处的探针光照信息,针对目标场景中的任意一个对象,确定该对象所对应的目标光照探针,并基于目标光照探针处的探针光照信息,确定该目标对象的对象光照信息,从而得到各个对象的对象光照信息,进而基于所确定的各个对象的对象光照信息对相应的对象进行全局光照渲染。
[0108] 例如,目标场景中存在光照探针1、光照探针2、光照探针3和光照探针4,以及存在面元1、面元2、面元3、面元4、面元5和面元6,其中光照探针1和光照探针2和光照探针3靠近目标场景中的对象A,面元1、面元2、面元3与光照探针1之间距离满足预设条件,面元3、面元4、面元5与光照探针2之间距离满足预设条件,面元4、面元5和面元6与光照探针3之间距离满足预设条件,面元5和面元6与光照探针4之间的距离满足预设条件,则通过光照探针1获取面元1、面元2和面元3的面元光照信息,通过光照探针2获取面元3、面元4和面元5的面元光照信息,通过光照探针3获取面元4、面元5和面元6的面元光照信息,则通过光照探针4获取面元5和面元6的面元光照信息,然后基于面元1、面元2和面元3的面元光照信息,确定出光照探针1处的探针光照信息,基于面元3、面元4、面元5的面元光照信息,确定出光照探针2处的探针光照信息,基于面元4、面元5和面元6的面元光照信息,确定出光照探针3处的探针光照信息,基于面元5和面元6的面元光照信息,确定出光照探针4处的探针光照信息,在需要对目标场景中的对象A进行渲染时,确定与对象A之间的距离满足预设条件的目标光照探针为光照探针1、光照探针2和光照探针3,则根据光照探针1处的探针光照信息、光照探针2处的探针光照信息和光照探针3处的探针光照信息,确定出对象A的对象光照信息,并根据对象A的对象光照信息对目标场景中的对象A进行全局光照渲染。
[0109] 如图5为一个实施例中光线充足、空间狭小的目标场景的实时光照渲染效果,图6为另一个实施例中光线充足的目标场景的实时光照渲染效果,图7为一个实施例中光线较少的目标场景的实时光照效果,结合图5、图6和图7可以看出,采用本申请的全局光照渲染方法对光线充足、光线较少、空间宽敞或者空间狭小的目标场景均能够有较好的渲染效果。
[0110] 上述全局光照渲染方法中,通过生成与目标场景中各对象对应的面元,并获取目标场景中的光照探针,以及获取与光照探针之间的距离满足预设条件的目标面元的面元光照信息,其中,目标面元为各对象对应的面元中的至少一个,面元光照信息包括直接光照信息和间接光照信息,间接光照信息是对目标面元的投射光进行累积得到的,从而可以根据面元光照信息对目标场景中的对象进行全局光照渲染,以面元为单位进行光线追踪,并以面元为单位进行光照的收集,在达到接近现实的渲染效果的同时,还提高了计算效率,从而实现了高效的实时全局光照渲染。
[0111] 在一个实施例中,终端在得到目标场景的场景画面之后,还可以生成目标场景的深度阴影贴图,并基于所生成的深度阴影贴图生成目标场景中各对象的面元,可以确保目标场景在屏幕空间所展示的场景画面中每个像素点都被面元覆盖,进而可以基于面元实现对目标场景高效的实时全局光照渲染。
[0112] 其中,深度阴影贴图,是从光源视角记录目标场景的场景深度的贴图,通常用于阴影计算、物体剔除和遮蔽计算。深度阴影贴图是一种使用深度纹理来为渲染阴影提供解决方案的多通道计算,其原理为,用光源代替相机来观察目标场景,通过移动相机到光源位置,可以观察到这个位置每个对象都是明亮的,因为从光的角度来看是没有阴影的,从光源的角度将目标场景的深度渲染到一张贴图中,可以在目标场景中获得阴影贴图。
[0113] 在一个实施例中,终端还可以获取相机视角下的目标场景的场景画面,并基于该场景画面生成目标场景中各对象的面元,从而可以确保目标场景在屏幕空间所展示的场景画面中每个像素点都被面元覆盖,进而可以基于面元实现对目标场景高效的实时全局光照渲染。
[0114] 在一个实施例中,上述全局光照渲染方法中生成深度阴影贴图的过程具体包括以下步骤:获取目标场景中的光源信息;基于光源信息生成目标场景的深度阴影贴图,以便后续基于所生成的深度阴影贴图生成面元,进而基于面元对目标场景中的对象进行高效的实时全局光照渲染。
[0115] 其中,光源信息是指目标场景中光源的相关信息,具体包括光源的位置和光照参数,光照参数包括光照传输向量、光照强度等参数。
[0116] 具体的,终端在获取到光源信息中光源的位置之后,从光源视角下观测目标场景,得到各对象的表面中到光源的最近表面距离,并将得到的最近表面距离存储在贴图上,然后确定相机视角下所观测到的目标场景中的各对象表面到光源的距离,从而判断出各对象的表面是否处于阴影中,生成目标场景的深度阴影贴图,以便后续基于所生成的深度阴影贴图生成面元,进而基于面元对目标场景中的对象进行高效的实时全局光照渲染。其中,最近表面距离是指光源发出的光线与对象表面的交点到光源的距离。
[0117] 在一个实施例中,终端基于深度阴影贴图所生成的面元包括初始面元和目标面元,终端基于所生成的深度阴影贴图生成面元的过程具体包括以下步骤:对深度阴影贴图进行分块处理,得到各深度阴影贴图块;在各深度阴影贴图块中选取初始像素点,并在初始像素点的位置处生成初始面元;在各深度阴影贴图块中,确定各像素点被初始面元覆盖的第一覆盖率;当目标深度阴影贴图块中存在第一覆盖率小于覆盖率阈值的第一目标像素点时,在第一目标像素点的位置处生成目标面元,可以确保目标场景在屏幕空间所展示的场景画面中每个像素点都被面元覆盖,进而基于面元对目标场景中的对象进行高效的实时全局光照渲染。
[0118] 其中,像素点,可以是指一个像素的中心位置,像素可以是一个小方格形式的区域,一个小方格可以对应代表一个像素,像素的中心即像素点。图像通常由多个像素组成,本申请中所生成的深度阴影贴图也由多个像素组成。第一覆盖率是指深度阴影贴图块中像素点被面元覆盖的覆盖率。可以理解的是,面元具有一定的面积,每个面元至少可以覆盖1个像素点,例如,某个像素点被三个初始面元同时覆盖,则该像素点的第一覆盖率为3,该三个初始面元位置不同的三个面元。
[0119] 具体的,终端在得到深度阴影贴图之后,获取预设的图块尺寸,并按照预设的图块尺寸对深度阴影贴图进行分块处理,得到多个深度阴影贴图块,针对任意一个深度阴影贴图块,在初始时刻从该深度阴影贴图块中选取至少一个初始像素点,并在所选取的至少一个初始像素点处生成初始面元,然后遍历该深度阴影贴图块上的各个像素点,以确定各个像素点的被初始面元覆盖的第一覆盖率,并将所获取的各个第一覆盖率与预设的覆盖率阈值进行对比,判断是否存在第一覆盖率小于覆盖率阈值的第一目标像素点,若存在,则在该第一目标像素点的位置处生成目标面元,可以确保深度阴影贴图中的每个像素点都被一定数量的面元覆盖,进而确保目标场景在屏幕空间所展示的场景画面中每个像素点都被一定数量的面元覆盖,进而基于面元对目标场景中的对象进行渲染时,可以基于面元的面元光照信息确定出对象各个像素点的光照信息,从而实现对各对象的进行光照渲染,且避免了对象存在某些像素点由于面元覆盖率较低,而导致最终的渲染效果不好。
[0120] 在一个实施例中,终端将所获取的各个第一覆盖率与预设的覆盖率阈值进行对比,确定存在第一覆盖率小于覆盖率阈值的第一目标像素点,当第一目标像素点为两个以上时,还可以进一步将各个第一目标像素点的第一覆盖率进行对比,并将第一覆盖率的值最小的第一目标像素点所在位置确定为目标位置,在目标位置处生成目标面元,可以确保深度阴影贴图中的每个像素点都被一定数量的面元覆盖的同时,避免生成过多冗余的面元,提高光照渲染过程中的计算效率。
[0121] 例如,终端所生成的目标场景的深度阴影贴图为m×m,m大于8,所获取的预设的图块尺寸为8×8,则终端将深度阴影贴图中的每8×8个像素划分为一个深度阴影贴图块,得到a个深度阴影贴图块,针对任意一个深度阴影贴图块,初始时刻从该深度阴影贴图块中随机选取10个初始像素点,并在该10个初始像素点处生成初始面元,然后分别确定64个像素点中每个像素点被面元覆盖的第一覆盖率,将每个像素点的面元覆盖率与预设的面元覆盖率阈值进行对比,确定存在第一覆盖率小于覆盖率阈值的第一目标像素点,并在第一目标像素点处生成目标面元。此外,终端分别确定64个像素点中每个像素点被面元覆盖的第一覆盖率之后,也可以直接将64个像素点的第一覆盖率进行排序,然后将确定出第一阈值覆盖率的最小值,并将该最小值与预设的面元覆盖率阈值进行对比,若该最小值小于预设的面元覆盖率阈值,则在最小值对应第一目标像素点处生成目标面元;若该最小值不小于预设的面元覆盖率阈值,则停止生成目标面元,可以确保深度阴影贴图中的每个像素点都被一定数量的面元覆盖的同时,避免生成过多冗余的面元,提高光照渲染过程中的计算效率。
[0122] 在一个实施例中,终端在第一目标像素点的位置处生成目标面元之后,还可以进一步确定是否需要继续生成目标面元,具体过程如下:在各深度阴影贴图块中,确定各像素点被面元覆盖的第二覆盖率;当目标深度阴影贴图块中存在第二覆盖率小于覆盖率阈值的第二目标像素点时,在第二目标像素点的位置处生成新的目标面元;当目标深度阴影贴图块中不存在第二覆盖率小于覆盖率阈值的第二目标像素点时,停止生成新的目标面元,可以确保深度阴影贴图中的每个像素点都被一定数量的面元覆盖的同时,避免生成过多冗余的面元,提高光照渲染过程中的计算效率。
[0123] 其中,第二面元覆盖率是指像素点被初始面元和目标面元覆盖的覆盖率。
[0124] 具体的,针对任意一个深度阴影贴图块,遍历该深度阴影贴图块上的各个像素点,以确定各个像素点的被初始面元和目标面元覆盖的第二面元覆盖率,并将所获取的各个第二面元覆盖率与预设的覆盖率阈值进行对比,判断是否存在第二覆盖率小于覆盖率阈值的第二目标像素点,若存在,则在该第二目标像素点的位置处生成新的目标面元,可以确保深度阴影贴图中的每个像素点都被一定数量的面元覆盖的同时,避免生成过多冗余的面元,提高光照渲染过程中的计算效率。
[0125] 在一个实施例中,终端基于相机视角下的场景画面生成目标场景中各对象的面元包括初始面元和目标面元,为了与终端基于深度阴影贴图块所生成的初始面元和目标面元进行区分,将基于深度阴影贴图块所生成的初始面元称为第一初始面元,基于深度阴影贴图块所生成的目标面元称为第一目标面元,将基于相机视角下的场景画面生成的初始面元称为第二初始面元,将基于相机视角下的场景画面生成的目标面元称为第二目标面元;终端基于相机视角下的场景画面生成目标场景中各对象的面元的过程包括以下步骤:对场景画面进行分块处理,得到各场景画面块;在各场景画面块中选取初始像素点,并在各初始像素点的位置处生成第二初始面元;在各场景画面块中,确定各像素点被第二初始面元覆盖的第三覆盖率;当目标场景画面块中存在第三覆盖率小于覆盖率阈值的第三目标像素点时,在第三目标像素点的位置处生成第二目标面元,可以确保目标场景在屏幕空间所展示的场景画面中每个像素点都被一定数量的面元覆盖,进而基于面元对目标场景中的对象进行渲染时,可以基于面元的面元光照信息确定出对象各个像素点的光照信息,从而实现对各对象的进行光照渲染,且避免了对象存在某些像素点由于面元覆盖率较低,而导致最终的渲染效果不好。
[0126] 在一个实施例中,终端将所获取的各个第三覆盖率与预设的覆盖率阈值进行对比,确定存在第三覆盖率小于覆盖率阈值的第三目标像素点,当第三目标像素点为两个以上时,还可以进一步将各个第三目标像素点的第三覆盖率进行对比,并将第三覆盖率的值最小的第三目标像素点所在位置确定为目标位置,在目标位置处生成第二目标面元,可以确保场景画面中的每个像素点都被一定数量的面元覆盖的同时,避免生成过多冗余的面元,提高光照渲染过程中的计算效率。
[0127] 在一个实施例中,终端在第三目标像素点的位置处生成第二目标面元之后,还可以进一步确定是否需要继续生成新的第二目标面元,具体过程如下:在各场景画面块中,确定各像素点被面元覆盖的第四覆盖率;当目标场景画面块中存在第四覆盖率小于覆盖率阈值的第四目标像素点时,在第四目标像素点的位置处生成第二目标面元;当目标场景画面块中不存在第四覆盖率小于覆盖率阈值的第四目标像素点时,停止生成新的第二目标面元,可以确保场景画面中的每个像素点都被一定数量的面元覆盖的同时,避免生成过多冗余的面元,提高光照渲染过程中的计算效率。其中,第四覆盖率是指像素点被第二初始面元和第二目标面元覆盖的覆盖率。
[0128] 在一个实施例中,终端在生成面元之后,还可以确定各个面元的面元光照信息并存储,以便通过光照探针对目标面元的面元光照信息进行采集,其中确定各个面元的面元光照信息的过程包括:确定各面元的面元参数;基于目标场景中的光源信息生成深度阴影贴图;基于深度阴影贴图和面元参数,确定各面元的面元光照信息,从而可以基于各面元的面元光照信息,实现对目标场景高效的实时全局光照渲染。
[0129] 其中,面元参数包括面元位置、法线、反照率等,反照率(又称反射率)是表示物体表面对光的反射程度的物理量,它是光在物体表面反射的能量与光在物体表面入射的能量之比,反照率可以用来表示物体表面的光学特性,如物体的颜色、漫反射程度和镜面反射程度等。面元位置具体可以是面元的坐标。
[0130] 具体的,终端在生成面元之后,针对任意一个面元,确定该面元所依附的表面,确定面元与该表面的相对位置以及法线,并根据该相对位置和该表面所属对象的位置确定出面元的位置,获取该表面的材质,根据材质确定反照率,从而得到面元的面元位置、法线、反照率,并根据目标场景中的光源信息生成目标场景的深度阴影贴图,根据所生成的深度阴影贴图和各个面元的面元位置、法线、反照率,确定各个面元的面元光照信息,从而可以基于各面元的面元光照信息,实现对目标场景高效的实时全局光照渲染。
[0131] 在一个实施例中,面元光照信息包括直接光照信息和间接光照信息,终端基于深度阴影贴图和面元参数,确定各面元的面元光照信息的过程具体包括以下步骤:根据深度阴影贴图,确定各面元的直接光照信息;基于直接光照信息和面元参数,确定各面元的投射光;对各面元的投射光进行光照累积,得到各面元的间接光照信息;将直接光照信息和间接光照信息进行叠加,得到各面元的面元光照信息,得到的面元光照信息是接近真实场景的面元光照信息,从而可以基于各面元的接近真实场景的面元光照信息,实现对目标场景高效的实时全局光照渲染。
[0132] 其中,面元的投射光是指面元向外部的投射光线,可以理解的是,面元向外的投射光线可以照射到其他对象的表面,投射光线可以有多条,被投射光线照射到的表面也可以有多处。本申请实施例中,对投射光进行光照累积是指对面元的各条投射光线进行采样,并将采样得到的光照信息近似为该面元的间接光照信息。
[0133] 具体的,终端基于深度阴影贴图,对光源进行重要性采样,确定各个面元是否被光源直接照射,得到各个面元的直接光照信息,针对任意一个面元,基于其直接光照信息和该面元的面元位置、法线和反照率,确定该面元自身的颜色方差,并基于自身的颜色方差确定该面元的投射光,通过对各投射光进行光照累积,得到该面元的间接光照信息,然后将面元的直接光照信息和间接光照信息进行叠加,得到各面元的面元光照信息,得到的面元光照信息是接近真实场景的面元光照信息,从而可以基于各面元的接近真实场景的面元光照信息,实现对目标场景高效的实时全局光照渲染。
[0134] 需要说明的是,面元的颜色方差是指面元的颜色可能的变化范围。它可以用来表示物体表面的粗糙度、漫反射能力和直接光照强度的综合影响,也就是说,面元自身的颜色方差越大,其表面的粗糙度、漫反射能力和直接光照强度的综合影响越大,则面元向外投射的投射光线越多,本申请实施例中,也可以在预设时间段内对面元产生的投射光线进行累积,具体的,在第一时刻确定出面元的第一投射光线后,对第一投射光线进行累积得到该面元的第一间接光照信息,然后基于面元的直接光照信息、第一间接光照信息和该面元的面元位置、法线和反照率重新计算面元的颜色方差,并基于重新得到的颜色方差在第二时刻确定出面元的第二投射光线,对第二投射光线进行累积得到该面元的第二间接光照信息,进而基于直接光照信息、第一间接光照信息、第二间接光照信息和该面元的面元位置、法线和反照率重新计算面元的颜色方差,依次类推随着时间推移,面元的颜色方差越来越小,向外投射的投射光线也越来越少,最终将多次投射的投射光线对应的多次间接光照信息进行累积,得到面元的间接光照信息。
[0135] 在一个实施例中,终端对各面元的投射光进行光照累积,得到各面元的间接光照信息的过程具体包括以下步骤:确定投射光到达的投射点;在各面元中确定投射点所对应的面元,得到投射面元;选取投射面元的至少一种光照信息;至少一种光照信息为直接光照信息或间接光照信息中的至少一种信息;基于至少一种光照信息,确定投射点所处区域的区域光照信息;对投射点所处区域的区域光照信息进行光照累积,得到间接光照信息,得到的间接光照信息是接近真实场景的间接光照信息,进而得到面元的接近真实场景的面元光照信息,从而可以基于各面元的接近真实场景的面元光照信息,实现对目标场景高效的实时全局光照渲染。
[0136] 其中,投射点是指投射光线到达对象表面的点,即投射光线与对象表面的交点,投射点所对应的投射面元,具体可以是指覆盖了投射点的面元,也可以将目标场景进行网格化,将投射点所在的网格确定为投射网格,将覆盖了投射网格的面元确定为投射面元。投射点所处区域也就是各投射面元对应区域的累加。
[0137] 需要说明的是,在模拟真实的光照效果时,本申请中所要确定的间接光照信息是模拟光线经过一次以上弹射所产生的光照信息,因此可以仅模拟光线的一次弹射,也可以模拟光线的两次弹射,或者模拟光线的多次弹射,所模拟的光线的弹射次数越多,最终渲染出的光照效果越好,仅模拟光线的一次弹射时,本申请中待确定的间接光照信息仅需包含一次间接光照信息,模拟光线的两次弹射时,本申请中待确定的间接光照信息包含一次间接光照信息和二次间接光照信息,以此类推,模拟光线的多次弹射时,本申请中待确定的间接光照信息包含一次到多次的各间接光照信息。可以理解的是,模拟光线的弹射次数越多,所需要的计算量越大,由于光线在场景中弹射后快速衰减,一次弹射能近似大部分的多次弹射全局光照效果,本申请实施例中,为了提高计算效率,可以仅模拟光线的一次弹射,也可以模拟光线的两次弹射。
[0138] 如图8所示,图中面元A接收到光源的直接照射,并对接收到的光线进行弹射,当面元A为非光滑的平面时,则基于所接收的一条光线可以产生多条反射光线,因此在基于面元模拟光线传播时,面元A向外的投射光线可以有多条,面元投射出的光线中的至少一部分可以照射到其他对象的表面,其他对象表面可以继续对所接收到的来自于面元A的光线进行弹射,如图8所示,面元A的某条投射光线照射到了依附于另一表面的面元B,通过对面元A的投射光线进行累积,可以将累积得到的光照信息近似为该面元的间接光照信息。
[0139] 具体的,当待确定的间接光照信息仅需包含一次间接光照信息时,终端可以获取投射面元的直接光照信息,并根据各投射面元的直接光照信息,确定投射点所处区域的区域光照信息;当待确定的间接光照信息包含一次间接光照信息和二次间接光照信息时,则根据各投射面元的直接光照信息和一次间接光照信息,确定投射点所处区域的区域光照信息,或者仅根据各投射面元的一次间接光照信息确定投射点所处区域的区域光照信息。针对任意一个面元,终端在得到该面元所对应的各个投射点的区域光照信息之后,对各个投射点的区域光照信息进行光照累积,得到该面元的间接光照信息,得到的间接光照信息是接近真实场景的间接光照信息,进而得到面元的接近真实场景的面元光照信息,从而可以基于各面元的接近真实场景的面元光照信息,实现对目标场景高效的实时全局光照渲染。
[0140] 其中,投射点所处区域具体可以投射点所处网格,相应的投射点所处区域的区域光照信息是指投射点所处网格的网格光照信息,网格的网格光照信息可以通过对覆盖该网格的面元的直接光照信息和间接光照信息中的至少一种,进行加权求和而得到,覆盖该网格的每个面元的权重可以通过下式进行确定:
[0141]
[0142] 上式中,Contribution是指面元贡献率,也即面元的权重,N为面元的法线,D为光线方向, Dist为面元中心与光线击中点之间的距离,光线击中点即投射点,radius为面元的半径,smoothstep为平滑函数,saturate为归一化函数。
[0143] 如图8所示,面元A向面元B投射光线,此外面元A还向面元C和面D投射光线,图8中未示出面元C和面元D,若待确定的面元A的间接光照信息仅包含一次间接光照信息,则分别确定面元B所在的网格B、面元C所在的网格C和面元D所在的网格D,然后获取覆盖网格B的面元的直接光照信息,获取覆盖网格C的面元的直接光照信息,获取覆盖网格C的面元的直接光照信息,并对覆盖网格B的面元的直接光照信息进行加权求和,得到网格B的网格光照信息,对覆盖网格C的面元的直接光照信息进行加权求和,得到网格C的网格光照信息,对覆盖网格D的面元的直接光照信息进行加权求和,得到网格D的网格光照信息,然后基于网格B的网格光照信息、网格C的网格光照信息和网格D的网格光照信息确定出面元A的一次间接光照信息,并将该一次间接光照信息确定为面元A的间接光照信息,同理,分别基于任一面元向外的投射光线,确定出各面元的一次间接光照信息;若待确定的面元A的间接光照信息包含一次间接光照信息和二次间接光照信息,则先采用前述方式分别确出目标场景中各个面元的一次间接光照信息,并对覆盖网格B的面元的一次间接光照信息进行加权求和,得到网格B的网格光照信息,对覆盖网格C的面元的一次间接光照信息进行加权求和,得到网格C的网格光照信息,对覆盖网格D的面元的一次间接光照信息进行加权求和,得到网格D的网格光照信息,然后基于网格B的网格光照信息、网格C的网格光照信息和网格D的网格光照信息确定出面元A的二次间接光照信息,将面元A的一次间接光照信息和二次间接光照信息进行加权求和,并将该加权求和的结果确定为面元A的间接光照信息,同理,分别基于任一面元向外的投射光线,确定出各面元的二次间接光照信息,进而得到各个面元包含一次间接光照信息和二次间接光照信息的间接光照信息。
[0144] 在一个实施例中,目标场景是视频帧中的虚拟场景,终端在生成面元之后,当目标场景中的视频帧发生更新时,还可以对所生成的面元进行更新,其中对面元进行更新的过程具体包括以下步骤:在生成各面元后,确定各面元的坐标;当视频帧发生更新时,确定各面元的新坐标;若新坐标与坐标的差值大于预设阈值,将差值对应的面元进行回收处理,从而可以避免使用脱离目标场景中的对象表面的面元来进行光照渲染,提高了目标场景的实时全局光照渲染的渲染效果。
[0145] 其中,视频帧发生更新是指视频帧对应的场景画面发生更新。回收处理是指对不再使用的面元进行删除,以及该面元的面元标识所关联的对应关系进行删除,并将该面元的面元标识保留以便后续生成新的面元时可以重新使用。不再使用的面元可以是脱离目标场景中的对象表面的面元。
[0146] 具体的,终端在生成各面元后,针对任意一个面元,确定该面元所依附的表面,确定该面元与该表面的相对位置,并根据该相对位置和该表面所属对象的位置确定出面元的位置,面元的位置具体可以是面元的坐标,当目标场景的场景画面的内容发生变化时,则重新获取各个面元所依附表面所属对象的位置,并根据所属对象的位置和面元与该表面的相对位置,重新确定面元的新坐标,并判断同一个面元新坐标与所记录的坐标之间的差值,并将差值与预设阈值进行比较,若新坐标与坐标的差值大于预设阈值,则将差值对应的面元进行回收处理。内容具体可以是场景画面中的对象以及对象的位置和姿态,判断新坐标与坐标之间的差值,具体可以是根据新坐标和坐标计算二者之间的距离,若距离大于预设阈值,则将该距离所对应的面元进行回收处理,从而可以避免使用脱离目标场景中的对象表面的面元来进行光照渲染,提高了目标场景的实时全局光照渲染的渲染效果。
[0147] 在一个实施例中,终端判断同一个面元的新坐标与所记录的坐标之间的差值,并将差值与预设阈值进行比较,若新坐标与坐标的差值不大于预设阈值,则重新确定该差值对应面元的面元参数,具体包括重新确定该面元的面元位置、法线和反照率,通过对差值不大于预设阈值的面元的面元参数进行更新,提高了面元的利用率,避免重复生成面元,从而在基于面元对目标场景进行实时全局光照渲染时,提高了渲染效率。
[0148] 在一个实施例中,当视频帧发生更新后,终端可以确定各面元中未出现在更新后场景画面中的视野外面元,并开始计时,若在计时时长达到预设时长阈值时,该视野外面元仍未再次出现在更新后场景画面中,则对该视野外面元进行回收处理,通过对长时间未使用的面元进行回收,避免了无用的面元反复被遍历,占用计算资源,从而在基于面元对目标场景进行实时全局光照渲染时,提高了渲染效率。
[0149] 在一个实施例中,当视频帧发生更新后,终端还可以获取在目标场景中被删除的对象的待回收对象标识,并基于预存的对象标识与面元标识之间的对应关系,获取该待回收对象标识对应的待回收面元标识,并对待回收面元标识对应的面元进行回收处理,避免了无用的面元反复被遍历,占用计算资源,从而在基于面元对目标场景进行实时全局光照渲染时,提高了渲染效率。
[0150] 在一个实施例中,视频帧发生更新后,终端还可以确定各面元到相机所在虚拟位置的相机距离,当存在某个面元的相机距离大于预设的相机距离阈值时,对该面元进行回收处理,避免了无用的面元反复被遍历,占用计算资源,从而在基于面元对目标场景进行实时全局光照渲染时,提高了渲染效率。
[0151] 在一个实施例中,终端还可以获取目标场景中各个网格被面元覆盖的网格面元覆盖率,当存在目标网格的网格面元覆盖率大于预设的网格面元覆盖率阈值时,对该覆盖该目标网格的至少一部分面元进行回收处理,使得回收处理后的该目标网格的面元覆盖率不大于预设的网格面元覆盖率,从而避免目标场景中存在面元过于集中的区域,减少了计算量,从而在基于面元对目标场景进行实时全局光照渲染时,提高了渲染效率。
[0152] 在一个实施例中,终端对面元进行回收处理具体过程包括以下步骤:将待回收面元的半径设置为0,此外,还可以进一步将面元所对应的面元索引进行回收,以便后续生成新的面元时进行取用,避免重复生成面元索引,减少计算量,提高了对目标场景的实时全局光照渲染的渲染效率。
[0153] 在一个实施例中,在当前场景画面的面元进行面元更新以及面元回收处理之后,重新生成当前场景画面的深度阴影贴图,并重新确定深度阴影贴图中各像素点的面元覆盖率,并基于面元覆盖率重新确定是否需要生成新的面元,以便以面元为单位进行光线追踪,并以面元为单位进行光照的收集,在达到接近现实的渲染效果的同时,还提高了计算效率,从而实现了高效的实时全局光照渲染。
[0154] 在一个实施例中,终端根据面元光照信息对目标场景中的对象进行全局光照渲染的过程具体包括以下步骤:基于面元光照信息确定目标场景中各对象的对象光照信息;基于对象光照信息确定各对象中的像素点的光照数据;根据光照数据对各对象的像素点进行光照渲染,从而在达到接近现实的渲染效果的同时,提高了计算效率,实现了高效的实时全局光照渲染。
[0155] 具体的,终端在通过光照探针采集到各目标面元处的面元光照信息之后,针对任意一个光照探针,基于该光照探针所采集的目标面元的面元光照信息,确定该光照探针处的探针光照信息,从而得到各个光照探针处的探针光照信息,针对目标场景中的任一对象,确定与该对象面元之间的距离满足预设距离的目标光照探针,并根据各目标光照探针处的探针光照信息确定该对象的对象光照信息,基于对象光照信息确定各该对象中的各个像素点的光照数据,根据光照数据对该对象的各像素点进行光照渲染,从而在达到接近现实的渲染效果的同时,提高了计算效率,实现了高效的实时全局光照渲染。
[0156] 在一个实施例中,如图9所示,提供了一种全局光照渲染方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:
[0157] S902,获取目标场景中的光源信息,基于光源信息生成目标场景的深度阴影贴图,对深度阴影贴图进行分块处理,得到各深度阴影贴图块。
[0158] S904,在各深度阴影贴图块中选取初始像素点,并在初始像素点的位置处生成第一初始面元,在各深度阴影贴图块中,确定各像素点被第一初始面元覆盖的第一覆盖率,当目标深度阴影贴图块中存在第一覆盖率小于覆盖率阈值的第一目标像素点时,在第一目标像素点的位置处生成第一目标面元。
[0159] S906,在各深度阴影贴图块中,确定各像素点被第一初始面元和第一目标面元覆盖的第二覆盖率,当目标深度阴影贴图块中存在第二覆盖率小于覆盖率阈值的第二目标像素点时,在第二目标像素点的位置处生成新的第一目标面元;当目标深度阴影贴图块中不存在第二覆盖率小于覆盖率阈值的第二目标像素点时,停止生成新的第一目标面元。
[0160] S908,获取目标场景的场景画面,对场景画面进行分块处理,得到各场景画面块;在各场景画面块中选取初始像素点,并在初始像素点的位置处生成第二初始面元;在各场景画面块中,确定各像素点被第二初始面元覆盖的第三覆盖率;当目标场景画面块中存在第三覆盖率小于覆盖率阈值的第三目标像素点时,在第三目标像素点的位置处生成新的第二目标面元。
[0161] S910,在各场景画面块中,确定各像素点被第二初始面元和第二目标面元覆盖的第四覆盖率;当目标场景画面块中存在第四覆盖率小于覆盖率阈值的第四目标像素点时,在第四目标像素点的位置处生成新的第二目标面元;当目标场景画面块中不存在第四覆盖率小于覆盖率阈值的第四目标像素点时,停止生成新的第二目标面元。
[0162] S912,确定各面元的面元参数,并根据深度阴影贴图,确定各面元的直接光照信息。
[0163] S914,基于直接光照信息和面元参数,确定各面元的投射光到达的投射点。
[0164] S916,在各面元中确定投射点所对应的面元,得到投射面元。
[0165] S918,选取投射面元的至少一种光照信息,基于至少一种光照信息,确定投射点所处区域的区域光照信息;至少一种光照信息为直接光照信息或间接光照信息中的至少一种信息。
[0166] S920,对投射点所处区域的区域光照信息进行光照累积,得到间接光照信息。
[0167] S922,将直接光照信息和间接光照信息进行叠加,得到各面元的面元光照信息并存储。
[0168] S924,获取目标场景中的光照探针,以及获取与光照探针之间的距离满足预设条件的目标面元的面元光照信息。
[0169] S926,基于目标面元的面元光照信息确定目标场景中各对象的对象光照信息。
[0170] S928,基于对象光照信息确定各对象中的像素点的光照数据,根据光照数据对各对象的像素点进行光照渲染。
[0171] 本申请还提供一种应用场景,该应用场景应用上述全局光照渲染方法,该全局光照渲染方法可通过运行于终端上的渲染引擎进行实现,该渲染引擎可以提供多种光源场景、多种渲染材质、以及多种动态照明渲染管线,该全局光照渲染方法具体包括以下步骤:通过渲染引擎的控制台设置开始Surfel Lighting(面元光照),终端获取Surfel Lighting指令,并基于该Surfel Lighting指令开始获取目标场景中的光源信息,基于光源信息生成目标场景的深度阴影贴图,对深度阴影贴图进行分块处理,得到各深度阴影贴图块,在各深度阴影贴图块中,确定各像素点被面元覆盖的面元覆盖率,并基于面元覆盖率生成面元,直至各像素点的面元覆盖率均大于预设的覆盖率阈值时,停止生成面元,并确定各面元的面元参数,并根据深度阴影贴图,确定各面元的直接光照信息,基于直接光照信息和面元参数,确定各面元的投射光,通过对投射光进行光照累积,得到各个面元的间接光照信息,将直接光照信息和间接光照信息进行叠加,得到各面元的面元光照信息并存储;通过渲染引擎的控制台设置开启光照探针的Surfel Traces(面元追踪),终端基于Surfel Traces指令,获取目标场景中的光照探针,获取与光照探针之间的距离满足预设条件的目标面元的面元光照信息,基于目标面元的面元光照信息确定目标场景中各对象的对象光照信息,基于对象光照信息确定各对象中的像素点的光照数据,根据光照数据对各对象的像素点进行光照渲染。
[0172] 将本申请的全局光照渲染方法和常用的其他算法进行对比,参考图10中的(a)、图10中的(b)和图10中的(c),其中,图10中的(a)为基于体素的全局光照实时照明算法(Voxel Lighting)对光线较弱的目标场景的渲染效果、图10中的(b)为本申请的全局光照渲染方法对光线较弱的目标场景的渲染效果、图10中的(c)为基于硬件追踪烘焙的全局光照渲染对光线较弱的目标场景的渲染效果,从图中可以看出,基于体素的全局光照实时照明算法对光线较弱的目标场景的渲染过暗,而本申请的全局光照渲染方法对光线较弱的目标场景的渲染效果,接近基于硬件追踪烘焙的全局光照渲染的效果,对暗处细节还原更真实,更符合真实世界的光照,而基于硬件追踪烘焙的全局光照渲染不能够对目标场景进行实时渲染,且渲染时需要消耗较多的资源。
[0173] 参考图11中的(a)、图11中的(b)和图11中的(c),其中,图11中的(a)为基于体素的全局光照实时照明算法(Voxel Lighting)对光线较亮的目标场景的渲染效果、图11中的(b)为本申请的全局光照渲染方法对光线较亮的目标场景的渲染效果、图11中的(c)为基于硬件追踪烘焙的全局光照渲染对光线较亮的目标场景的渲染效果,从图中可以看出,基于体素的全局光照实时照明算法对光线较亮的目标场景的渲染过亮,而本申请的全局光照渲染方法对光线较亮的目标场景的渲染效果,接近基于硬件追踪烘焙的全局光照渲染的效果,对亮处细节还原更真实,更符合真实世界的光照,而基于硬件追踪烘焙的全局光照渲染不能够对目标场景进行实时渲染,且渲染时需要消耗较多的资源。
[0174] 应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0175] 基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的全局光照渲染方法的全局光照渲染装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个全局光照渲染装置实施例中的具体限定可以参见上文中对于全局光照渲染方法的限定,在此不再赘述。
[0176] 在一个实施例中,如图12所示,提供了一种全局光照渲染装置,包括:面元生成模块1202、光照信息获取模块1204和光照渲染模块1206,其中:
[0177] 面元生成模块1202,用于生成与目标场景中各对象对应的面元。
[0178] 光照信息获取模块1204,用于获取目标场景中的光照探针,以及获取与光照探针之间的距离满足预设条件的目标面元的面元光照信息;目标面元为各对象对应的面元中的至少一个,面元光照信息包括直接光照信息和间接光照信息,间接光照信息是对目标面元的投射光进行累积得到的。
[0179] 光照渲染模块1206,用于根据面元光照信息对目标场景中的对象进行全局光照渲染。
[0180] 上述实施例中,通过生成与目标场景中各对象对应的面元,并获取目标场景中的光照探针,以及获取与光照探针之间的距离满足预设条件的目标面元的面元光照信息,其中,目标面元为各对象对应的面元中的至少一个,面元光照信息包括直接光照信息和间接光照信息,间接光照信息是对目标面元的投射光进行累积得到的,从而可以根据面元光照信息对目标场景中的对象进行全局光照渲染,以面元为单位进行光线追踪,并以面元为单位进行光照的收集,在达到接近现实的渲染效果的同时,还提高了计算效率,从而实现了高效的实时全局光照渲染。
[0181] 在其中一个实施例中,如图13所示,该装置还包括:光源信息获取模块1208,用于获取目标场景中的光源信息;阴影贴图生成模块,用于基于光源信息生成目标场景的深度阴影贴图;面元生成模块1202还用于:根据深度阴影贴图生成与目标场景中各对象对应的面元。
[0182] 在其中一个实施例中,面元包括初始面元和目标面元,面元生成模块1202还用于:对深度阴影贴图进行分块处理,得到各深度阴影贴图块;在各深度阴影贴图块中选取初始像素点,并在初始像素点的位置处生成初始面元;在各深度阴影贴图块中,确定各像素点被初始面元覆盖的第一覆盖率;当目标深度阴影贴图块中存在第一覆盖率小于覆盖率阈值的第一目标像素点时,在第一目标像素点的位置处生成目标面元。
[0183] 在其中一个实施例中,面元生成模块1202还用于:在各深度阴影贴图块中,确定各像素点被面元覆盖的第二覆盖率;当目标深度阴影贴图块中存在第二覆盖率小于覆盖率阈值的第二目标像素点时,在第二目标像素点的位置处生成新的目标面元;当目标深度阴影贴图块中不存在第二覆盖率小于覆盖率阈值的第二目标像素点时,停止生成新的目标面元。
[0184] 在其中一个实施例中,面元生成模块1202还用于:确定各面元的面元参数;基于目标场景中的光源信息生成深度阴影贴图;该装置还包括:面元光照信息确定模块1210,用于基于深度阴影贴图和面元参数,确定各面元的面元光照信息。
[0185] 在其中一个实施例中,面元光照信息确定模块1210还用于:根据深度阴影贴图,确定各面元的直接光照信息;基于直接光照信息和面元参数,确定各面元的投射光;对各面元的投射光进行光照累积,得到各面元的间接光照信息;将直接光照信息和间接光照信息进行叠加,得到各面元的面元光照信息。
[0186] 在其中一个实施例中,面元光照信息确定模块1210还用于:确定投射光到达的投射点;在各面元中确定投射点所对应的面元,得到投射面元;选取投射面元的至少一种光照信息;至少一种光照信息为直接光照信息或间接光照信息中的至少一种信息;基于至少一种光照信息,确定投射点所处区域的区域光照信息;对投射点所处区域的区域光照信息进行光照累积,得到间接光照信息。
[0187] 在其中一个实施例中,目标场景是视频帧中的虚拟场景;面元生成模块1202还用于:在生成各面元后,确定各面元的坐标;当视频帧发生更新时,确定各面元的新坐标;若新坐标与坐标的差值大于预设阈值,将差值对应的面元进行回收处理。
[0188] 在其中一个实施例中,面元生成模块1202还用于:若新坐标与坐标的差值不大于预设阈值,重新确定差值对应面元的面元参数。
[0189] 在其中一个实施例中,光照渲染模块1206还用于:基于面元光照信息确定目标场景中各对象的对象光照信息;基于对象光照信息确定各对象中的像素点的光照数据;根据光照数据对各对象的像素点进行光照渲染。
[0190] 上述实时光照渲染装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0191] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图14所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储三维场景数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种实时光照渲染方法。
[0192] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图15所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种实时光照渲染方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0193] 本领域技术人员可以理解,图14或图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0194] 在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0195] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0196] 在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0197] 需要说明的是,本申请所涉及的数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
[0198] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
[0199] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0200] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。