本公开涉及计算机图像处理领域,尤其涉及一种全局光照确定方法、装置及存储介质。
背景技术:
1、近年来,随着计算机技术的发展,游戏、影视及虚拟现实等产业呈现出蓬勃发展的趋势,全局光照算法被广泛应用于上述场景的高真实感渲染,其渲染的画面不仅需要考虑场景光源发出的光直接照射在考量表面(即物体表面)的效果,而且还需要考虑从光源出发的光线经过其他表面反射后再击中考量表面的光照效果。全局光照对于物件光照真实感和周围环境的融合发挥着巨大的作用。
2、考虑到精确全局光照算法的计算量十分庞大,通常所采用的光线追踪技术可以分为离线光线追踪和实时光线追踪两大类。对于离线光线追踪,由于没有性能要求,目前通过物理光照相关的算法已经能达到照片级的渲染,而在实时领域,即使目前已有硬件的支持,仍然受限于算力,针对大部分复杂场景仅能支持每个像素的样点数(sample per pixel,spp)为1进行渲染,而受限于极小采样数,画面噪点严重,需辅助高效的滤波或者基于人工智能的降噪器,最终在效果和性能间折中。
3、全局光照的计算遵循渲染方程,由于存在多次迭代积分,难以直接求出解析解。相关技术中尚未提供一种合理且有效的全局光照的计算方案。
4、目前相对主流的光线追踪计算方案是蒙特卡洛路径追踪,这是一种利用蒙特卡洛近似计算渲染方程求出数值解的方法,缺点是需要递归的计算积分式,收敛往往需要大量样本,在实际计算中为了减少爆炸增长的计算量常用一些辅助手段来加快收敛速度。且在实时领域,由于算力受限,仅能以1spp采样,计算消耗较大。
技术实现思路
1、有鉴于此,本公开提出了一种全局光照确定方法、装置及存储介质。所述技术方案包括:
2、根据本公开的一方面,提供了一种全局光照确定方法,所述方法包括:
3、获取目标对象的漫反射光照值和镜面反射光照值,所述漫反射光照值为发射光线相对于所述目标对象的漫反射的光照值,所述镜面反射光照值为所述发射光线相对于所述目标对象的镜面反射的光照值;
4、根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,所述全局光照值用于对所述目标对象进行渲染。
5、在一种可能的实现方式中,所述目标对象所在的虚拟场景中预先设置有多个探针,所述多个探针用于向所述虚拟场景发射多条发射光,所述获取目标对象的漫反射光照值,包括:
6、对所述多条发射光线进行光线追踪,得到所述目标对象表面接收到的辐照度;
7、根据所述目标对象表面接收到的辐照度,确定所述目标物体的所述漫反射光照值。
8、在另一种可能的实现方式中,所述对所述多个探针发射的多条发射光线进行光线追踪,得到所述目标对象表面接收到的辐照度,包括:
9、对所述多个探针发射的所述多条发射光线进行光线追踪,得到所述虚拟场景的漫反射光照信息,所述漫反射光照信息用于指示所述目标对象表面接收到的辐照度;
10、将所述虚拟场景的漫反射光照信息存储在纹理图中;
11、通过采样所述纹理图获取所述目标对象表面接收到的辐照度。
12、在另一种可能的实现方式中,所述方法还包括:
13、对于所述多个探针中的至少一个探针,根据所述探针的目标信息确定所述探针的位置偏移量,所述目标信息包括所述发射光线的光线方向、标志位、上一帧偏移量、距离和探针偏移长度中的至少一种;
14、根据所述探针的位置偏移量对所述探针的位置进行更新;
15、其中,所述标志位用于指示是否出现所述目标对象被所述发射光线背面击中的情况,所述上一帧偏移量为时间域上所述探针的上一帧的位置偏移量,所述距离为所述探针与所述目标对象之间的距离,所述探针偏移长度是每次更新时按照预设值进行递减的变量。
16、在另一种可能的实现方式中,所述探针的位置偏移量具有上限值,所述上限值是根据探针间距确定的,所述探针间距为预先设置的值或者是所述探针与距离所述探针最近的另一个探针之间的距离。
17、在另一种可能的实现方式中,所述对所述多个探针所发射的多条发射光线进行光线追踪之前,还包括:
18、对所述多条发射光线进行光线重排,重排后的所述多条发射光线之间的相干性高于预设相干性阈值。
19、在另一种可能的实现方式中,屏幕中的多个像素用于向虚拟场景发射多条发射光线,所述获取目标对象的镜面反射光照值,包括:
20、对所述多条发射光线进行光线追踪得到所述目标对象的镜面反射结果;
21、根据所述镜面反射结果,确定所述目标对象的镜面反射光照值。
22、在另一种可能的实现方式中,所述镜面反射结果包括一级反射结果和二级反射结果,所述对所述多条发射光线进行光线追踪得到所述目标对象的镜面反射结果,包括:
23、对所述多条发射光线进行光线追踪得到所述一级反射结果,所述一级反射结果为所述发射光线不经过弹射而直接击中所述目标对象时所计算的反射结果;
24、根据存储的所述目标对象表面接收到的辐照度确定所述二级反射结果,所述二级反射结果为所述发射光线经过周围物体弹射后击中所述目标对象时所计算的反射结果。
25、在另一种可能的实现方式中,所述多条发射光线是以预设分辨率采样的,所述预设分辨率为非全屏幕的分辨率。
26、在另一种可能的实现方式中,所述采样的函数为可见法线分布函数(visiblenormal distribution function,vndf)。
27、在另一种可能的实现方式中,所述根据所述镜面反射结果,确定所述目标对象的镜面反射光照值,包括:
28、将所述镜面反射结果进行降噪;
29、根据降噪后的所述镜面反射结果,得到所述目标对象的镜面反射光照值。
30、在另一种可能的实现方式中,所述根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,包括:
31、将所述漫反射光照值和所述镜面反射光照值相加,得到所述目标对象的间接光光照值;
32、根据所述目标对象的所述间接光光照值和直接光光照值,确定所述目标对象的全局光照值。
33、根据本公开的另一方面,提供了一种全局光照确定装置,所述装置包括:
34、获取模块,用于获取目标对象的漫反射光照值和镜面反射光照值,所述漫反射光照值为发射光线相对于所述目标对象的漫反射的光照值,所述镜面反射光照值为所述发射光线相对于所述目标对象的镜面反射的光照值;
35、确定模块,用于根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,所述全局光照值用于对所述目标对象进行渲染。
36、在一种可能的实现方式中,所述目标对象所在的虚拟场景中预先设置有多个探针,所述多个探针用于向所述虚拟场景发射多条发射光,所述获取模块,还用于:
37、对所述多条发射光线进行光线追踪,得到所述目标对象表面接收到的辐照度;
38、根据所述目标对象表面接收到的辐照度,确定所述目标物体的所述漫反射光照值。
39、在另一种可能的实现方式中,所述获取模块,还用于:
40、对所述多个探针发射的所述多条发射光线进行光线追踪,得到所述虚拟场景的漫反射光照信息,所述漫反射光照信息用于指示所述目标对象表面接收到的辐照度;
41、将所述虚拟场景的漫反射光照信息存储在纹理图中;
42、通过采样所述纹理图获取所述目标对象表面接收到的辐照度。
43、在另一种可能的实现方式中,所述装置还包括:更新模块,所述更新模块,用于:
44、对于所述多个探针中的至少一个探针,根据所述探针的目标信息确定所述探针的位置偏移量,所述目标信息包括所述发射光线的光线方向、标志位、上一帧偏移量、距离和探针偏移长度中的至少一种;
45、根据所述探针的位置偏移量对所述探针的位置进行更新;
46、其中,所述标志位用于指示是否出现所述目标对象被所述发射光线背面击中的情况,所述上一帧偏移量为时间域上所述探针的上一帧的位置偏移量,所述距离为所述探针与所述目标对象之间的距离,所述探针偏移长度是每次更新时按照预设值进行递减的变量。
47、在另一种可能的实现方式中,所述探针的位置偏移量具有上限值,所述上限值是根据探针间距确定的,所述探针间距为预先设置的值或者是所述探针与距离所述探针最近的另一个探针之间的距离。
48、在另一种可能的实现方式中,所述装置还包括:重排模块,所述重排模块,用于:
49、对所述多条发射光线进行光线重排,重排后的所述多条发射光线之间的相干性高于预设相干性阈值。
50、在另一种可能的实现方式中,屏幕中的多个像素用于向虚拟场景发射多条发射光线,所述获取模块,还用于:
51、对所述多条发射光线进行光线追踪得到所述目标对象的镜面反射结果;
52、根据所述镜面反射结果,确定所述目标对象的镜面反射光照值。
53、在另一种可能的实现方式中,所述镜面反射结果包括一级反射结果和二级反射结果,所述获取模块,还用于:
54、对所述多条发射光线进行光线追踪得到所述一级反射结果,所述一级反射结果为所述发射光线不经过弹射而直接击中所述目标对象时所计算的反射结果;
55、根据存储的所述目标对象表面接收到的辐照度确定所述二级反射结果,所述二级反射结果为所述发射光线经过周围物体弹射后击中所述目标对象时所计算的反射结果。
56、在另一种可能的实现方式中,所述多条发射光线是以预设分辨率采样的,所述预设分辨率为非全屏幕的分辨率。
57、在另一种可能的实现方式中,所述采样的函数为vndf。
58、在另一种可能的实现方式中,所述获取模块,还用于:
59、将所述镜面反射结果进行降噪;
60、根据降噪后的所述镜面反射结果,得到所述目标对象的镜面反射光照值。
61、在另一种可能的实现方式中,所述确定模块,还用于:
62、将所述漫反射光照值和所述镜面反射光照值相加,得到所述目标对象的间接光光照值;
63、根据所述目标对象的所述间接光光照值和直接光光照值,确定所述目标对象的全局光照值。
64、根据本公开的另一方面,提供了一种计算设备,所述计算设备包括:处理器;用于存储处理器可执行指令的存储器;
65、其中,所述处理器被配置为:
66、获取目标对象的漫反射光照值和镜面反射光照值,所述漫反射光照值为发射光线相对于所述目标对象的漫反射的光照值,所述镜面反射光照值为所述发射光线相对于所述目标对象的镜面反射的光照值;
67、根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,所述全局光照值用于对所述目标对象进行渲染。
68、根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述第一方面或第一方面的任意一种可能的实现方式提供的方法。
69、本公开实施例通过获取目标对象的漫反射光照值和镜面反射光照值,漫反射光照值为发射光线相对于目标对象的漫反射的光照值,镜面反射光照值为发射光线相对于目标对象的镜面反射的光照值;根据漫反射光照值和镜面反射光照值,确定目标对象的全局光照值,全局光照值用于对目标对象进行渲染;即通过叠加计算镜面反射光照值,弥补了相关方案中只能计算漫反射光照值的局限性,使得根据漫反射光照值和镜面反射光照值所确定的全局光照值更加完整准确,提高了全局光照的计算精度,从而提高了基于该全局光照值的渲染效果。