首页> 中国专利> 支持昼夜交替的全局光照方法及计算机可读存储介质

支持昼夜交替的全局光照方法及计算机可读存储介质

摘要

本发明公开了支持昼夜交替的全局光照方法及计算机可读存储介质,获取静态场景的静态部分的传输向量;基于获取的静态场景的静态部分的传输向量获取动态部分的传输矩阵;将动态部分的传输矩阵中各元素插值并保存到设定数量的3D贴图中;动态生成一个天空球,将生成的天空球投影到球谐函数上,利用球谐函数对设定数量的3D贴图中静态场景中的动态部分的传输矩阵进行再光照获得再光照结果,对再光照结果统一处理得到一张代表场景中天光直接和间接再光照后的3D贴图;采样再光照后的3D贴图,得到相应的光照信息作为环境光贡献。本发明实现在特定区域上,静态场景能够对动态物体产生间接光照贡献,即实现类似颜色扩散效果。

著录项

  • 公开/公告号CN112884876A

    专利类型发明专利

  • 公开/公告日2021-06-01

    原文格式PDF

  • 申请/专利权人 镇江领通互动信息科技有限公司;

    申请/专利号CN202110232392.4

  • 发明设计人 韦懿乘;金小刚;

    申请日2021-03-01

  • 分类号G06T15/06(20110101);G06T15/00(20110101);

  • 代理机构32224 南京纵横知识产权代理有限公司;

  • 代理人朱远枫

  • 地址 212014 江苏省镇江市京口区学府路118号

  • 入库时间 2023-06-19 11:11:32

说明书

技术领域

本发明涉及一种支持昼夜交替的全局光照方法及计算机可读存储介质,属于计算机图形技术领域。

背景技术

随着移动端GPU的不断发展,利用全局光照算法提升手机游戏画面的可行性逐渐提升,特别是随着开放世界类游戏逐渐登上移动平台,利用全局光照算法对昼夜交替时的光照变化进行真实地模拟变得越发的必要。

利用光线追踪等相关技术在主机、PC平台上实现完全动态的实时光照计算已经有了许多可行的实践方案,然而对于移动端上性能不足,无法实现类似颜色扩散(ColorBleeding)效果,因此无法进行应用。

发明内容

本发明针对现有技术全局光照方法对于移动端上性能不足,无法实现类似颜色扩散(Color Bleeding)效果的技术问题,提供支持昼夜交替的全局光照方法及计算机可读存储介质。

本发明采用以下技术方案。

提供一种支持昼夜交替的全局光照方法,包括:获取静态场景的静态部分的传输向量t

基于获取的静态场景的静态部分的传输向量t

将动态部分的传输矩阵T

动态生成一个天空球,将生成的天空球投影到球谐函数上,利用球谐函数对设定数量的3D贴图中静态场景中的动态部分的传输矩阵进行再光照获得再光照结果,对再光照结果统一处理得到一张代表场景中天光直接和间接再光照后的3D贴图;

采样再光照后的3D贴图,得到相应的光照信息作为环境光贡献。

进一步地,获取静态场景的静态部分的传输向量t

对静态场景中的每个静态物体的三角形网格,以设定精度作为参数进行uv展开得到一张贴图,将贴图的纹素作为静态物体的采样点;

对于每个静态物体的采样点,计算静态部分的直接光照传输向量t

以设定的光照弹射次数B为参数进行迭代,每一次迭代计算第b次弹射静态物体的间接光照传输向量t

将直接光照传输向量t

进一步地,基于获取的静态场景的静态部分的传输向量t

步骤1:将静态场景均匀划分设定个数的区域,对于划分得到的各区域的中心点放置一个动态采样点;

步骤2:对于每个采样点,计算动态部分的直接光照部分的传输矩阵,具体方法为:

计算动态部分的间接光照部分的传输矩阵时,具体方法为:

其中

最后累加得到总的传输矩阵,其具体方法为:

T

其中

进一步地,将静态场景均匀划分设定个数的区域之后还包括:

评估每个采样点与相邻采样点的传输矩阵的差异,对与相邻采样点差异大于等于阈值的采样点对应的区域进行再细分,即重复步骤1和步骤2直到差异小于阈值;其中评估每个采样点与相邻采样点的传输矩阵的差异的表达式如下:

其中p代表当前评估的采样点,q代表其相邻采样点,

进一步地,将传输矩阵各元素插值并保存到设定数量的3D贴图中的具体方法为:

以场景细分的最小粒度作为划分标准,对于场景进行均匀划分;

对于划分后的每个采样点中在设定的影响半径内且没有被物体遮挡的采样点,利用其相邻采样点的传输矩阵的系数进行插值:

其中R为用户设定的影响半径,M为累加的传输矩阵总数,dist(p

进一步地,将生成的天空球投影到球谐函数上具体方法为:

利用蒙特卡洛方法进行均匀采样得到天光球谐系数,其具体方法如下:

其中:

进一步地,利用球谐函数对设定数量的3D贴图中静态场景中的动态部分的传输矩阵进行再光照具体方法为:

其中,l表示采样得到的天光球谐系数;T

进一步地,采样再光照后的3D贴图,得到相应的光照信息作为环境光贡献包括:将辐射率变换为辐照度,其具体方法为:

其中:

进一步地,利用片元着色器采样再光照后的3D贴图。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如以上技术方案任意一种可能的实施例所提供的所述昼夜交替的全局光照方法的步骤。

本发明所取得的有益技术效果:本发明提供的昼夜交替的全局光照方法,在离线烘焙时得到静态部分的传输向量并基于静态部分的传输向量获取动态部分的传输向量,将动态部分的传输矩阵中各元素插值并保存到设定数量的3D贴图中;利用球谐函数对设定数量的3D贴图中静态场景中的动态部分的传输矩阵进行再光照获得再光照结果,对再光照结果统一处理得到一张代表场景中天光直接和间接再光照后的3D贴图;采样再光照后的3D贴图,得到相应的光照信息作为环境光贡献。本发明实现在特定区域上,静态场景能够对动态物体产生间接光照贡献,即实现类似颜色扩散(Color Bleeding)效果,能够实现在移动端平台上的昼夜交替效果。

本发明中将静态场景以三角形网格的形式导入、进行光栅化得到三角形上的均匀采样点、对于每个采样点计算传输向量并累加,得到静态部分的传输向量t

附图说明

图1为具体实施例提供的昼夜交替的全局光照方法的流程示意图。

具体实施方式

以下结合说明书附图和具体实施例对本发明做进一步说明。

实施例1:一种昼夜交替的全局光照方法,如图1所示,包括以下步骤:(1)离线烘焙时,用户将静态场景以三角形网格的形式导入;这部分场景物体将作为静态物体,对场景中的其他静态、动态物体进行间接光照的贡献。首先获取静态场景的静态部分的传输向量,包括以下步骤:

对场景中的每个物体的三角形网格,以设定的精度(具体实施例中可以为用户设定的精度)作为参数进行uv展开得到一张贴图,将贴图的纹素作为静态物体的采样点;

对于每个采样点,计算静态部分的直接光照部分传输向量t

利用蒙特卡洛方法对半球积分进行计算,其具体过程如下:

其中:

对于每个均匀采样点,参考其法线进行一个半球积分,利用蒙特卡洛方法进行半球上的均匀采样。对于每个采样方向,发射一条射线于场景中的静态物体进行求交。如果与场景中的物体没有相交,累加来自天光直接光照的贡献;如果有相交,则不累加贡献。最后将t

以用户输入的光照弹射次数B为参数迭代多次,计算静态物体的间接光照传输向量t

利用蒙特卡洛方法对半球积分进行计算,其具体方法如下:

其中:

对于每个均匀采样点,参考其法线进行一个半球积分,利用蒙特卡洛方法进行半球上的均匀采样。对于每个采样方向,发射一条射线于场景中的静态物体进行求交。如果与场景中的物体有相交,累加来自物体间接光照的贡献,其贡献

t

将B个传输向量累加,得到静态部分的传输向量t

其中

(2)基于获取的静态场景的静态部分的传输向量t

计算场景的AABB包围盒以及其中心点,按照中心点对包围盒进行划分,并取细分后的区域中心点作为动态部分的采样点。利用这个采样点采样的全局光照信息,即传输矩阵,可以用来对与此区域相交的物体的全局光照信息进行近似。

对于动态部分的每个采样点,计算传输矩阵作为动态部分的传输矩阵T

对于直接光照部分的传输矩阵T

对于间接光照部分的传输矩阵T

最后累加得到动态部分的传输矩阵:

T

该传输矩阵代表的是天光球谐到局部入射辐射率的一个线性变换,即一个矩阵。

其中

评估其与相邻采样点的传输函数的差异,对变化剧烈的部分进行细分,然后重复本步骤中的以上步骤直到差异足够小;其具体方法如下:

其中p代表当前评估的采样点,q代表其相邻采样点。若D(p,q)<∈,其中∈为用户设定的阈值,则不对该子分区做处理;否则,对该子分区做再一次细分,即将子分区再均匀划分为一定数量的分区,即将场景均匀划分为S个区域(具体实施例例中可以均匀划分为8个区域),对于划分得到的区域中心点P,放置一个动态采样点;之后再用以上方法对于动态部分的每个采样点,计算动态部分的传输矩阵T

至此,计算得到了可以代表场景中某一点光照信息的传输矩阵。

(3)将传输矩阵系数插值,保存到多张3D贴图中,即将动态部分的传输矩阵T

R为用户设定的影响半径,M为累加的传输矩阵总数。

生成3D贴图时,以场景细分的最小粒度作为划分标准,在场景中均匀分布贴图采样点,每个贴图采样点对应最终生成的3D贴图的一个纹素。对于采样点s,与每个动态采样点p

以上3D贴图的数量取决于所用于在光照的球谐阶数n,3D贴图数目为n*n,亦可以根据硬件特性自行选择贴图数目,但需要对3D贴图进行合并。

至此离线烘焙部分的流程结束,最终得到的是多张记录了传输矩阵的3D贴图。采用3D贴图形式进行保存是因为后续实时渲染中可以利用GPU的三线性插值来快速采样相应位置的传输矩阵。

(4)实时渲染时,利用大气散射相关方法(如瑞利散射),每帧或每几帧动态生成一个天空球,将生成的天空球投影到球谐函数上,作为变化天光的输入;

其具体方法如下:

利用蒙特卡洛方法进行均匀采样得到天光球谐系数,其具体方法如下:

在Compute Shader或者CPU上,利用变化天光的球谐对场景中的传输函数进行再光照,统一处理得到一张代表场景中天光直接、间接光照的3D贴图;其具体方法如下:

其中:l表示采样得到的天光球谐系数;T

该步骤是利用离线烘焙过程中烘焙的传输矩阵,应用到实时生成的变化天光上,以重建出物体局部的光照信息,这些信息以2、3阶球谐函数的形式保存在3D光照贴图中。

(12)为了进行漫反射环境光照的计算,将辐射率变换为辐照度。在物体渲染的片元着色器中,采样再光照后的张3D贴图,得到相应的光照信息作为环境光贡献;其具体方法如下:

其中

本步骤在物体进行光照计算的Pixel Shader中,采样再光照后的3D光照贴图,得到相应的光照信息作为环境光贡献。

至此整个流程结束,最终得到了实时变化天光对于场景的直接、间接光照贡献。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号