CN117788677A - 全局光照确定方法、装置及存储介质 - Google Patents

全局光照确定方法、装置及存储介质 Download PDF

Info

Publication number
CN117788677A
CN117788677A CN202311869789.XA CN202311869789A CN117788677A CN 117788677 A CN117788677 A CN 117788677A CN 202311869789 A CN202311869789 A CN 202311869789A CN 117788677 A CN117788677 A CN 117788677A
Authority
CN
China
Prior art keywords
illumination value
target object
specular reflection
emitted
probe
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
CN202311869789.XA
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.)
Moore Thread Intelligence Technology Shanghai Co ltd
Original Assignee
Moore Thread Intelligence Technology Shanghai 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 Moore Thread Intelligence Technology Shanghai Co ltd filed Critical Moore Thread Intelligence Technology Shanghai Co ltd
Priority to CN202311869789.XA priority Critical patent/CN117788677A/zh
Publication of CN117788677A publication Critical patent/CN117788677A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Abstract

本公开涉及计算机图像处理领域,尤其涉及一种全局光照确定方法、装置及存储介质。所述方法包括:获取目标对象的漫反射光照值和镜面反射光照值,漫反射光照值为发射光线相对于目标对象的漫反射的光照值,镜面反射光照值为发射光线相对于目标对象的镜面反射的光照值;根据漫反射光照值和镜面反射光照值,确定目标对象的全局光照值,全局光照值用于对目标对象进行渲染。本公开实施例通过根据漫反射光照值和镜面反射光照值确定全局光照值,弥补了相关方案中只能计算漫反射光照值的局限性,使得确定出的全局光照值更加完整准确,提高了全局光照的计算精度,从而提高了基于该全局光照值的渲染效果。

Description

全局光照确定方法、装置及存储介质
技术领域
本公开涉及计算机图像处理领域,尤其涉及一种全局光照确定方法、装置及存储介质。
背景技术
近年来,随着计算机技术的发展,游戏、影视及虚拟现实等产业呈现出蓬勃发展的趋势,全局光照算法被广泛应用于上述场景的高真实感渲染,其渲染的画面不仅需要考虑场景光源发出的光直接照射在考量表面(即物体表面)的效果,而且还需要考虑从光源出发的光线经过其他表面反射后再击中考量表面的光照效果。全局光照对于物件光照真实感和周围环境的融合发挥着巨大的作用。
考虑到精确全局光照算法的计算量十分庞大,通常所采用的光线追踪技术可以分为离线光线追踪和实时光线追踪两大类。对于离线光线追踪,由于没有性能要求,目前通过物理光照相关的算法已经能达到照片级的渲染,而在实时领域,即使目前已有硬件的支持,仍然受限于算力,针对大部分复杂场景仅能支持每个像素的样点数(Sample Per Pixel,SPP)为1进行渲染,而受限于极小采样数,画面噪点严重,需辅助高效的滤波或者基于人工智能的降噪器,最终在效果和性能间折中。
全局光照的计算遵循渲染方程,由于存在多次迭代积分,难以直接求出解析解。相关技术中尚未提供一种合理且有效的全局光照的计算方案。
目前相对主流的光线追踪计算方案是蒙特卡洛路径追踪,这是一种利用蒙特卡洛近似计算渲染方程求出数值解的方法,缺点是需要递归的计算积分式,收敛往往需要大量样本,在实际计算中为了减少爆炸增长的计算量常用一些辅助手段来加快收敛速度。且在实时领域,由于算力受限,仅能以1SPP采样,计算消耗较大。
发明内容
有鉴于此,本公开提出了一种全局光照确定方法、装置及存储介质。所述技术方案包括:
根据本公开的一方面,提供了一种全局光照确定方法,所述方法包括:
获取目标对象的漫反射光照值和镜面反射光照值,所述漫反射光照值为发射光线相对于所述目标对象的漫反射的光照值,所述镜面反射光照值为所述发射光线相对于所述目标对象的镜面反射的光照值;
根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,所述全局光照值用于对所述目标对象进行渲染。
在一种可能的实现方式中,所述目标对象所在的虚拟场景中预先设置有多个探针,所述多个探针用于向所述虚拟场景发射多条发射光,所述获取目标对象的漫反射光照值,包括:
对所述多条发射光线进行光线追踪,得到所述目标对象表面接收到的辐照度;
根据所述目标对象表面接收到的辐照度,确定所述目标物体的所述漫反射光照值。
在另一种可能的实现方式中,所述对所述多个探针发射的多条发射光线进行光线追踪,得到所述目标对象表面接收到的辐照度,包括:
对所述多个探针发射的所述多条发射光线进行光线追踪,得到所述虚拟场景的漫反射光照信息,所述漫反射光照信息用于指示所述目标对象表面接收到的辐照度;
将所述虚拟场景的漫反射光照信息存储在纹理图中;
通过采样所述纹理图获取所述目标对象表面接收到的辐照度。
在另一种可能的实现方式中,所述方法还包括:
对于所述多个探针中的至少一个探针,根据所述探针的目标信息确定所述探针的位置偏移量,所述目标信息包括所述发射光线的光线方向、标志位、上一帧偏移量、距离和探针偏移长度中的至少一种;
根据所述探针的位置偏移量对所述探针的位置进行更新;
其中,所述标志位用于指示是否出现所述目标对象被所述发射光线背面击中的情况,所述上一帧偏移量为时间域上所述探针的上一帧的位置偏移量,所述距离为所述探针与所述目标对象之间的距离,所述探针偏移长度是每次更新时按照预设值进行递减的变量。
在另一种可能的实现方式中,所述探针的位置偏移量具有上限值,所述上限值是根据探针间距确定的,所述探针间距为预先设置的值或者是所述探针与距离所述探针最近的另一个探针之间的距离。
在另一种可能的实现方式中,所述对所述多个探针所发射的多条发射光线进行光线追踪之前,还包括:
对所述多条发射光线进行光线重排,重排后的所述多条发射光线之间的相干性高于预设相干性阈值。
在另一种可能的实现方式中,屏幕中的多个像素用于向虚拟场景发射多条发射光线,所述获取目标对象的镜面反射光照值,包括:
对所述多条发射光线进行光线追踪得到所述目标对象的镜面反射结果;
根据所述镜面反射结果,确定所述目标对象的镜面反射光照值。
在另一种可能的实现方式中,所述镜面反射结果包括一级反射结果和二级反射结果,所述对所述多条发射光线进行光线追踪得到所述目标对象的镜面反射结果,包括:
对所述多条发射光线进行光线追踪得到所述一级反射结果,所述一级反射结果为所述发射光线不经过弹射而直接击中所述目标对象时所计算的反射结果;
根据存储的所述目标对象表面接收到的辐照度确定所述二级反射结果,所述二级反射结果为所述发射光线经过周围物体弹射后击中所述目标对象时所计算的反射结果。
在另一种可能的实现方式中,所述多条发射光线是以预设分辨率采样的,所述预设分辨率为非全屏幕的分辨率。
在另一种可能的实现方式中,所述采样的函数为可见法线分布函数(VisibleNormal Distribution Function,VNDF)。
在另一种可能的实现方式中,所述根据所述镜面反射结果,确定所述目标对象的镜面反射光照值,包括:
将所述镜面反射结果进行降噪;
根据降噪后的所述镜面反射结果,得到所述目标对象的镜面反射光照值。
在另一种可能的实现方式中,所述根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,包括:
将所述漫反射光照值和所述镜面反射光照值相加,得到所述目标对象的间接光光照值;
根据所述目标对象的所述间接光光照值和直接光光照值,确定所述目标对象的全局光照值。
根据本公开的另一方面,提供了一种全局光照确定装置,所述装置包括:
获取模块,用于获取目标对象的漫反射光照值和镜面反射光照值,所述漫反射光照值为发射光线相对于所述目标对象的漫反射的光照值,所述镜面反射光照值为所述发射光线相对于所述目标对象的镜面反射的光照值;
确定模块,用于根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,所述全局光照值用于对所述目标对象进行渲染。
在一种可能的实现方式中,所述目标对象所在的虚拟场景中预先设置有多个探针,所述多个探针用于向所述虚拟场景发射多条发射光,所述获取模块,还用于:
对所述多条发射光线进行光线追踪,得到所述目标对象表面接收到的辐照度;
根据所述目标对象表面接收到的辐照度,确定所述目标物体的所述漫反射光照值。
在另一种可能的实现方式中,所述获取模块,还用于:
对所述多个探针发射的所述多条发射光线进行光线追踪,得到所述虚拟场景的漫反射光照信息,所述漫反射光照信息用于指示所述目标对象表面接收到的辐照度;
将所述虚拟场景的漫反射光照信息存储在纹理图中;
通过采样所述纹理图获取所述目标对象表面接收到的辐照度。
在另一种可能的实现方式中,所述装置还包括:更新模块,所述更新模块,用于:
对于所述多个探针中的至少一个探针,根据所述探针的目标信息确定所述探针的位置偏移量,所述目标信息包括所述发射光线的光线方向、标志位、上一帧偏移量、距离和探针偏移长度中的至少一种;
根据所述探针的位置偏移量对所述探针的位置进行更新;
其中,所述标志位用于指示是否出现所述目标对象被所述发射光线背面击中的情况,所述上一帧偏移量为时间域上所述探针的上一帧的位置偏移量,所述距离为所述探针与所述目标对象之间的距离,所述探针偏移长度是每次更新时按照预设值进行递减的变量。
在另一种可能的实现方式中,所述探针的位置偏移量具有上限值,所述上限值是根据探针间距确定的,所述探针间距为预先设置的值或者是所述探针与距离所述探针最近的另一个探针之间的距离。
在另一种可能的实现方式中,所述装置还包括:重排模块,所述重排模块,用于:
对所述多条发射光线进行光线重排,重排后的所述多条发射光线之间的相干性高于预设相干性阈值。
在另一种可能的实现方式中,屏幕中的多个像素用于向虚拟场景发射多条发射光线,所述获取模块,还用于:
对所述多条发射光线进行光线追踪得到所述目标对象的镜面反射结果;
根据所述镜面反射结果,确定所述目标对象的镜面反射光照值。
在另一种可能的实现方式中,所述镜面反射结果包括一级反射结果和二级反射结果,所述获取模块,还用于:
对所述多条发射光线进行光线追踪得到所述一级反射结果,所述一级反射结果为所述发射光线不经过弹射而直接击中所述目标对象时所计算的反射结果;
根据存储的所述目标对象表面接收到的辐照度确定所述二级反射结果,所述二级反射结果为所述发射光线经过周围物体弹射后击中所述目标对象时所计算的反射结果。
在另一种可能的实现方式中,所述多条发射光线是以预设分辨率采样的,所述预设分辨率为非全屏幕的分辨率。
在另一种可能的实现方式中,所述采样的函数为VNDF。
在另一种可能的实现方式中,所述获取模块,还用于:
将所述镜面反射结果进行降噪;
根据降噪后的所述镜面反射结果,得到所述目标对象的镜面反射光照值。
在另一种可能的实现方式中,所述确定模块,还用于:
将所述漫反射光照值和所述镜面反射光照值相加,得到所述目标对象的间接光光照值;
根据所述目标对象的所述间接光光照值和直接光光照值,确定所述目标对象的全局光照值。
根据本公开的另一方面,提供了一种计算设备,所述计算设备包括:处理器;用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取目标对象的漫反射光照值和镜面反射光照值,所述漫反射光照值为发射光线相对于所述目标对象的漫反射的光照值,所述镜面反射光照值为所述发射光线相对于所述目标对象的镜面反射的光照值;
根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,所述全局光照值用于对所述目标对象进行渲染。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述第一方面或第一方面的任意一种可能的实现方式提供的方法。
本公开实施例通过获取目标对象的漫反射光照值和镜面反射光照值,漫反射光照值为发射光线相对于目标对象的漫反射的光照值,镜面反射光照值为发射光线相对于目标对象的镜面反射的光照值;根据漫反射光照值和镜面反射光照值,确定目标对象的全局光照值,全局光照值用于对目标对象进行渲染;即通过叠加计算镜面反射光照值,弥补了相关方案中只能计算漫反射光照值的局限性,使得根据漫反射光照值和镜面反射光照值所确定的全局光照值更加完整准确,提高了全局光照的计算精度,从而提高了基于该全局光照值的渲染效果。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出了本公开一个示例性实施例提供的计算设备的结构示意图。
图2示出了本公开一个示例性实施例提供的全局光照确定方法的流程图。
图3示出了本公开一个示例性实施例提供的管线描述的示意图。
图4示出了本公开一个示例性实施例提供的漫反射光照值的计算方法的流程图。
图5示出了本公开一个示例性实施例提供的镜面反射光照值的计算方法的流程图。
图6示出了本公开一个示例性实施例提供的全局光照确定装置的结构示意图。
图7是根据一示例性实施例示出的一种装置的框图。
图8是根据另一示例性实施例示出的一种装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
相关技术中,对于空间中的任何一个点,若要计算该点上的光照,遵循渲染方程来计算,即L(wo)=Le(wo)+∫f(p,wi,wo)*L(wi)*cosθdwi,其中wi为入射方向,wo为观察方向,Le(wo)是该点p的自发光项,∫f(p,wi,wo)*L(wi)*cosθdwi计算p点在观察方向上被反射出来的辐射率的总和,f(p,wi,wo)为双向反射分布函数(Bidirectional ReflectanceDistribution Function,BRDF),L(wi)为入射光照,入射光照包括由光源发射的直接光照和空间中经过其他物体弹射的间接光照,θ为光线方向与着色面之间的夹角。由于实际空间中具有自发光的物体较少,因此对Le(wo)不多做研究。由于∫f(p,wi,wo)*L(wi)*cosθdwi是半球积分,因此可以直接将该积分转换成求和,即 N为着色点处接收到的光线数,考虑到有限的计算资源,直接光的计算可以沿用目前成熟的解决方案,通过延迟管线记录所需的空间中的信息,如法线,基色,纹理坐标等,在计算着色器中根据光照公式计算出直接光。而间接光照的计算采用积分式∫f(p,wi,wo)*L(wi)*cosθdwi。由于无法直接求出该积分项的解析解,考虑首先对该项根据式中BRDF项进行拆解,即f(p,wi,wo)=fd(p,wi,wo)+fr(p,wi,wo)并代入上式,将上述积分项拆解漫反射积分项fd(p,wi,wo)和镜面反射积分项fr(p,wi,wo)并分别计算,对于漫反射积分项,考虑到性能优化,可以采样动态漫反射全局光照(英文:Dynamic Diffuse Global Illumination)方法,并在实现上对该方法进行优化。
由于上述方法只处理漫反射项,缺失计算镜面反射的方向信息而无法直接处理镜面反射项,因此本公开实施例提供了一种全局光照确定方法、装置及存储介质,通过获取目标对象的漫反射光照值和镜面反射光照值,漫反射光照值为发射光线相对于目标对象的漫反射的光照值,镜面反射光照值为发射光线相对于目标对象的镜面反射的光照值;根据漫反射光照值和镜面反射光照值,确定目标对象的全局光照值;即通过叠加计算镜面反射光照值,弥补了相关方案中只能计算漫反射光照值的局限性,使得根据漫反射光照值和镜面反射光照值所确定的全局光照值更加完整准确,提高了全局光照的计算精度,从而提高了基于该全局光照值的渲染效果。
本公开实施例的全局光照确定方法可以由计算设备执行。请参考图1,其示出了本公开一个示例性实施例提供的计算设备的结构示意图。
该计算设备可以是终端或者服务器。终端包括移动终端或者固定终端,比如终端可以是智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机(PersonalComputer,PC)、智能机器人、车载电脑等终端设备。服务器可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。
如图1所示,计算设备包括处理器10、存储器20以及通信接口30。本领域技术人员可以理解,图1中示出的结构并不构成对该计算设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中:
处理器10是计算设备的控制中心,利用各种接口和线路连接整个计算设备的各个部分,通过运行或执行存储在存储器20内的软件程序和/或模块,以及调用存储在存储器20内的数据,执行计算设备的各种功能和处理数据,从而对计算设备进行整体控制。处理器10可以由中央处理器(Central Processing Unit,CPU)实现,也可以由图形处理器(GraphicsProcessing Unit,GPU)实现。
存储器20可用于存储软件程序以及模块。处理器10通过运行存储在存储器20的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统21、获取模块22、确定模块23和至少一个功能所需的应用程序24等;存储数据区可存储根据计算设备的使用所创建的数据等。存储器20可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable Read-Only Memory,PROM),只读存储器(Read Only Memory,ROM),磁存储器,快闪存储器,磁盘或光盘。相应地,存储器20还可以包括存储器控制器,以提供处理器10对存储器20的访问。
其中,处理器20通过运行获取模块22执行以下功能:获取目标对象的漫反射光照值和镜面反射光照值,漫反射光照值为发射光线相对于目标对象的漫反射的光照值,镜面反射光照值为发射光线相对于目标对象的镜面反射的光照值。处理器20通过运行确定模块23执行以下功能:根据漫反射光照值和镜面反射光照值,确定目标对象的全局光光照值,全局光照值用于对目标对象进行渲染。
下面,采用几个示例性实施例对本公开实施例提供的全局光照确定方法进行介绍。
请参考图2,其示出了本公开一个示例性实施例提供的全局光照确定方法的流程图,本实施例以该方法用于图1所示的计算设备中来举例说明。该方法包括以下几个步骤。
步骤201,获取目标对象的漫反射光照值和镜面反射光照值,漫反射光照值为发射光线相对于目标对象的漫反射的光照值,镜面反射光照值为发射光线相对于目标对象的镜面反射的光照值。
漫反射是指光线投射在粗糙表面光向各处散射的现象,镜面反射是指光线投射到光滑表面沿反射方向反射的现象。根据微表面模型,通常将一个点处受到的光照值根据其表面的BRDF项分为漫反射分量(即漫反射光照值)和镜面反射分量(即镜面反射光照值)。漫反射光照值为虚拟场景中发射光线相对于目标对象的漫反射的光照值,镜面反射光照值为虚拟场景中发射光线相对于目标对象的镜面反射的光照值。
可选的,虚拟场景为虚拟的空间场景,如室内虚拟场景、卖场虚拟场景等。在该虚拟场景中可以具有光源以及虚拟对象。虚拟对象可以根据不同的虚拟空间设置不同的虚拟对象。
可选的,虚拟场景为应用程序在计算设备上运行时显示(或提供)的虚拟场景。虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟场景,还可以是纯虚构的虚拟场景。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种。虚拟场景例如可以是游戏场景、虚拟现实(Virtual Reality,VR)场景或动漫场景等。
本案中的漫反射光照值和镜面反射光照值均属于间接光照值,漫反射光照值也可以称为漫反射间接光照值,镜面反射光照值也可以称为镜面反射间接光照值。漫反射光照中,光子碰撞到一个粗糙表面后被随机地向各个方向散射出去。镜面反射光照中,当光子击中一个强烈的反射表面如镜子,则向一个可预测的方向反弹。间接光照中,光线经过一次或者多次物体表面的反弹,多次是指至少两次。
虚拟场景中可以包括至少一个虚拟对象。每个虚拟对象在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。虚拟对象可以是无生命的物体,无生命的物体包括但不限于建筑、植被、天空、道路、山石或水体等,虚拟对象还可以是有生命的物体,有生命的物体包括但不限于是虚拟的动物或数字人。
可选的,目标对象为虚拟场景中的任意一个虚拟对象。
本公开实施例中将间接光的漫反射处理和镜面反射处理完全分开来进行,将漫反射光照值的计算和镜面反射光照值的计算完全解耦。可选的,基于光线追踪的全局光照计算管线包括漫反射间接光计算管线与镜面反射间接光计算管线。计算设备通过漫反射间接光计算管线计算得到漫反射光照值,通过镜面反射间接光计算管线计算得到镜面反射光照值。
需要说明的是,计算设备通过漫反射间接光计算管线计算得到漫反射光照值,并通过镜面反射间接光计算管线计算得到镜面反射光照值的过程可参考下面实施例中的相关细节描述,在此先不介绍。
步骤202,根据漫反射光照值和镜面反射光照值,确定目标对象的全局光照值,全局光照值用于对目标对象进行渲染。
其中,计算设备可以直接将漫反射光照值和镜面反射光照值相加得到的光照值确定为用于对目标对象进行渲染的全局光照值,计算设备也可以将漫反射光照值和镜面反射光照值相加得到目标对象的间接光光照值,并基于间接光光照值和直接光光照值确定目标对象的全局光照值,本公开不限制根据漫反射光照值和镜面反射光照值,确定用于对目标对象进行渲染的全局光照值的方式。
可选的,计算设备将漫反射光照值和镜面反射光照值相加,得到目标对象的间接光光照值;根据目标对象的间接光光照值和直接光光照值,确定目标对象的全局光照值。
漫反射光照值和镜面反射光照值的相加可以是直接相加,也可以是根据预设的权重值进行加权相加。本公开实施例对此不加以限定。
可选的,根据目标对象的间接光光照值和直接光光照值,确定目标对象的全局光照值,包括:将目标对象的间接光光照值和直接光光照值相加,得到目标对象的全局光照值;或者,将目标对象的间接光光照值和直接光光照值相加后进行后处理,得到目标对象的全局光照值。
考虑到有限的计算资源,直接光光照值的计算可以沿用目前成熟的解决方案,通过延迟管线记录所需的空间中的信息,如法线,基色,纹理坐标等,根据上述记录的信息采用预设光照公式计算得到直接光光照值。
目标对象的间接光光照值和直接光光照值相加可以是直接相加,也可以是根据预设的权重值进行加权相加。本公开实施例对此不加以限定。
示意性的,后处理包括屏幕空间环境光屏蔽(Screen Space Ambient Occlusion,SSAO)、色调映射(英文:Tome Mapping)、时域抗锯齿(Temporal Anti-Aliasing,TAA)中的至少一种。
可选的,计算设备可根据确定出的全局光照值对目标对象进行渲染。示意性的,计算设备根据全局光照值和目标对象的材质信息计算目标对象的每个像素点的颜色值,将计算得到的每个像素点的颜色值转化为最终的二维图形,完成渲染过程。
在一个示意性的例子中,管线描述的示意图如图3所示。图中包括常规的光栅化过程和本公开实施例提供的基于光线追踪的全局光照计算管线。常规的光栅化过程包括延迟渲染,直接光及阴影贴图的计算以及后处理,后处理包括屏幕空间环境光屏蔽,色调映射等,在此不多做介绍。本公开实施例提供的基于光线追踪的全局光照计算管线,包括漫反射间接光计算管线与镜面反射间接光计算管线,其中漫反射光照值的计算过程包括:探针位置生成和光线追踪,探针信息更新,探针状态更新,探针位置更新,存储光照信息和计算漫反射光照值。镜面反射光照值的计算过程包括:镜面反射光线生成和光线追踪,二级反射,降噪,上采样还原信号。计算设备将漫反射光照值和镜面反射光照值相加得到目标对象的间接光光照值,将目标对象的间接光光照值和直接光光照值相加后进行后处理,得到目标对象的全局光照值。需要说明的是,漫反射光照值的计算过程和镜面反射光照值的计算过程可参考下面实施例中的相关细节描述,在此先不介绍。
综上所述,对比目前的全局光照计算方案,本公开实施例提供的全局光照确定方法提高了光线间的一致性,增进了光线追踪的效率,同时能进一步解决缺光、漏光的现象,并且补充增加了镜面反射光照值的计算,没有明显增长的性能开销,同时补充得到更完整的全局光照结果。
本公开实施例中将间接光的漫反射处理和镜面反射处理完全分开来进行,即将漫反射光照值的计算和镜面反射光照值的计算完全解耦。下述分别对漫反射光照值的计算与镜面反射光照值的计算进行描述。请参考图4,其示出了本公开一个示例性实施例提供的漫反射光照值的计算方法的流程图,本实施例以该方法用于图1所示的计算设备中来举例说明。该方法包括以下几个步骤。
步骤401,通过多个探针向虚拟场景发射多条发射光线。
目标对象所在的虚拟场景中预先设置有多个探针,多个探针用于向目标对象所在的虚拟场景随机发射多条发射光线。
在虚拟场景中确定一个范围为m*n*t的长方体,使得该长方体尽量覆盖所需计算的空间,在该长方体中均匀放置p*q*w个探针,以探针圆心的世界空间坐标为光线起点,根据重要性采样随机生成光线方向,从每一个探针处按照随机生成的光线方向发射多条发射光线。其中,m、n、t、p、q、w均为正整数。
步骤402,对多条发射光线进行光线重排。
由于GPU是一种并行度很好的器件,如果光线与其周围的光线相干性较高(一致性较高),那么GPU可以一起运算这一批光线,从而提高运算效率。而漫反射BRDF采样方向是半球面随机的,为了增强光线一致性,减少缓存未命中率,对多条发射光线按照光线的方向进行重新排序,重排后的多条发射光线之间的相干性较高(比如高于预设相干性阈值),以便后续GPU可以对重排后的多条发射光线一起进行运算,提高光线追踪效率。
可选的,预设相干性阈值是默认设置的,或者是自定义设置的。本公开实施例对此不加以限定。
不同于相关技术的方案,相关技术的方案中光线方向采用斐波那契螺旋采样算法,均匀的向球面上发射光线,同时因为这是一组伪随机序列,还需要每帧生成一个随机的旋转矩阵,用于打乱光线。而本公开实施例通过对多条发射光线按照光线的方向进行重新排序,使得重排后的多条发射光线之间的相干性较高,从而使得GPU可以一起运算这一批光线,从而提高运算效率。
步骤403,对多条发射光线进行追踪,得到目标物体的漫反射光照值。
可选的,在虚拟场景中对多条发射光线进行追踪,得到目标对象表面接收到的辐照度;根据所述目标对象表面接收到的辐照度,确定所述目标物体的所述漫反射光照值。漫反射光照值与观察方向无关。
进一步的,根据所述目标对象表面接收到的辐照度,确定所述目标物体的所述漫反射光照值,包括:对所述多个探针发射的所述多条发射光线进行光线追踪,得到所述虚拟场景的漫反射光照信息,所述漫反射光照信息用于指示所述目标对象表面接收到的辐照度;将所述虚拟场景的漫反射光照信息存储在纹理图中;通过采样所述纹理图获取所述目标对象表面接收到的辐照度。
可选的,在虚拟场景中对多条发射光线进行追踪,确定以物体为起点,发射光线在空间场景中形成的光线路径。光线路径是指由光线组成的光路,可以是光线在空间场景中传播的过程中形成的。光线路径可以与光线所击中的物体有关,如光线击中一个物体,可以根据该物体的材质信息,来进行反射或者折射等进行传播,从而形成光线路径。
可选的,计算设备将虚拟场景的漫反射光照信息和几何信息存储在该虚拟场景中预先设置的至少一个探针中,示意性的,将虚拟场景的漫反射光照信息和几何信息存储在探针的纹理图中。
可选的,为漫反射的BRDF项选择兰伯特模型,将漫反射积分项fd项提出积分,即漫反射光照值Ld(wo)可以通过如下公式计算得到:
其中π表示反射率,可以是一个常数,∫L(wi)*cosθdwi积分项表示为目标对象表面接收到的辐照度,所计算的漫反射光照值与观察方向无关,而虚拟场景中的辐照度通过上述管线已经被存储在纹理图中,通过采样纹理图即可获取目标对象表面接收到的辐照度,漫反射光照值通过上述公式就可以计算得出。
步骤404,对探针信息、探针状态和探针的位置进行更新。
探针信息为探针收集到的虚拟场景中的光照信息,探针信息包括虚拟场景中的多个点的辐照度和距离。探针信息是后续计算中首先要得到的结果,换句话说,探针就是连续空间离散化的典型代表,探针信息收集探针所处的空间中的光照信息(辐照度和距离)。最终这部分光照信息用于计算虚拟场景中任何一个点的漫反射光照值。探针状态包括激活状态和非激活状态,只有处于激活状态的探针才会参与计算。
可选的,统计正面击中,背面击中的概率和距离,人为设计最小击中距离的阈值,通过统计这些信息,挑选出需要微调的探针,往反方向移动某一极小值从而达到微调的目的。在本公开实施例中,可以简化背面击中挑选的策略,并同时考虑其自身的影响,每一次探针移动都同时受限于时间域上其上一帧的位置偏移量,通过这样的方式阻止它无限期的移动。即本公开实施例提供的探针的位置偏移量是根据探针的目标信息确定的,也就是说,对于多个探针中的至少一个探针,根据探针的目标信息确定探针的位置偏移量,根据探针的位置偏移量对探针的位置进行更新。其中,目标信息包括发射光线的光线方向、标志位、上一帧偏移量、距离和探针偏移长度中的至少一种。
可选的,探针的位置偏移量是通过如下公式计算得到的:探针的位置偏移量-=光线方向*(标志位*上一帧偏移量–距离)*0.1*探针偏移长度。其中,光线在物理上可以模拟为一个射线模型,该模型包括两个元素即原点和射线方向,原点代表光线起点,射线方向代表光线(光照)方向。
其中,标志位用于指示是否出现目标对象被发射光线背面击中的情况。目标对象分正反面,光线与目标对象相交称为击中,光线与目标对象相交于背面原则上不能将目标对象打亮,这种情况称为目标对象被发射光线背面击中。
可选的,标志位是在光线追踪阶段确定的,示意性的,当标志位为第一数值时用于指示出现目标对象被发射光线背面击中的情况,当标志位为第二数值时用于指示未出现目标对象被发射光线背面击中的情况。比如,第一数值为-1,第二数值为1。本公开实施例对此不加以限定。
其中,上一帧偏移量为时间域上探针的上一帧的位置偏移量。
其中,距离为探针与目标对象之间的距离。
其中,探针偏移长度是一个全局变量,探针偏移长度是每次更新时按照预设值进行递减的变量。比如,预设值为0.01。
同时为了保证不会计算出过大的偏移影响探针的空间信息收集,我们还会对计算出的探针偏移结果进行钳制,即探针的位置偏移量具有上限值,上限值是根据探针间距确定的,探针间距为预先设置的值或者是探针与距离探针最近的另一个探针之间的距离。比如,探针的位置偏移量的上限值为0.5倍的探针间距。
需要说明的是,镜面反射光照值则不同于漫反射光照值的计算,镜面反射部分是一个高频信号,入射光的计算取决于观察方向,只有入射方向附近的间接光源才有贡献,前文方法无法直接解决镜面反射的计算,因此,针对镜面反射光照值的计算,本公开实施例设计了一条完整光线追踪管线。请参考图5,其示出了本公开一个示例性实施例提供的镜面反射光照值的计算方法的流程图,本实施例以该方法用于图1所示的计算设备中来举例说明。该方法包括以下几个步骤。
步骤501,通过屏幕中的多个像素向虚拟场景发射多条发射光线。
由于在本方案中分离了漫反射分量和镜面反射分量,同时在这两部分管线中都进行了光线追踪,考虑到实时的性能要求,若镜面光线追踪还是以全屏幕分辨率发射光线,计算量较高性能开销大,因此本公开实施例在管线初始阶段为了减少光线的数量,对几何缓冲(英文:Geometry Buffer)进行下采样处理,几何缓冲为渲染中用于存储光照需要的数据的结构,生成发射光线的几何信息,几何缓冲为渲染中用于存储光照需要的数据的结构,发射光线的几何信息包括发射光线的原点和光线方向;根据发射光线的几何信息,发射多条发射光线。这样做的好处是理论上性能会有2倍提升。其中,下采样处理包括降分辨率和采样,下采样处理用于指示以预设分辨率采样多条发射光线,预设分辨率为非全屏幕的分辨率,通过下采样处理得到的光线数量少于全屏幕的分辨率的光线数量。比如,预设分辨率为1/4的屏幕分辨率,即1/2宽且1/2高的屏幕分辨率。可选的,根据镜面反射的BRDF项的重要性采样,得到发射光线的光线方向。即光线方向是由镜面反射的BRDF项的重要性采样得到的,镜面反射的BRDF项的采样函数可以有多种分布。目前的镜面反射追踪中反射方向通常是根据镜面高光BRDF或者说是高光GGX分布,但这样的分布不能很好的处理一些很低入射角的光线,采样的法线与光线方向的夹角大于90度,这就造成了样本浪费,本公开实施例可以根据VNDF对发射光线进行采样,即采样函数为VNDF(VNDF是一种数学上的概率函数),减少了无效样本数。
步骤502,对多条发射光线进行光线追踪,得到一级反射结果。
计算设备在虚拟场景中对多条发射光线进行基于VNDF的光线追踪,得到一级反射结果。其中,一级反射结果为发射光线不经过弹射而直接击中目标对象时所计算的反射结果。
步骤503,根据存储的目标对象表面接收到的辐照度,确定二级反射结果。
可选的,计算设备复用漫反射计算过程中存储的虚拟场景的漫反射光照信息,该漫反射光照信息包括目标对象表面接收到的辐照度,计算设备根据该辐照度计算虚拟场景中的二级反射结果,二级反射结果为发射光线经过周围物体弹射后击中目标对象时所计算的反射结果,用于补充发射光线的一级反射结果带来的效果丢失。
实际计算中,模拟真实物理的多次弹射难度很大,计算量很高,因此复用上述漫反射计算时用过的探针,探针收集到的虚拟场景中的辐照度图,图上每一点用于指示该点的辐照度,通过采样图上的点模拟真实空间中的多次弹射,来计算二级反射结果,最终的镜面反射结果包括一级反射结果和二级反射结果。
步骤504,对一级反射结果和二级反射结果进行降噪,得到降噪后的镜面反射结果。
计算设备通过降噪器对镜面反射结果(即一级反射结果和二级反射结果)进行降噪,得到降噪后的镜面反射结果。其中,降噪器可以为基于时空域滤波的降噪器,降噪器用于通过时空域的滤波消除噪声还原信号。
由于是以1/4SPP采样多条发射光线,镜面反射结果会充满噪声,因此采用降噪器对镜面反射结果进行降噪。可选的,镜面反射结果包括镜面反射光照信息和目标对象的材质信息,由于滤波器可能会带来材质上的模糊,在送入滤波器之前可以对镜面反射结果中的镜面反射光照信息和目标对象的材质信息进行分离,也就是说只将镜面反射结果的镜面反射光照信息送入滤波器,滤波后重新将降噪后的镜面反射光照信息乘以材质信息,最后通过双线性插值恢复到原始的分辨率(即下采样处理前的分辨率)。可选的,对镜面反射结果进行降噪,包括:将镜面反射结果中的镜面反射光照信息进行降噪。
步骤505,对降噪后的镜面反射结果进行上采样处理,得到目标对象的镜面反射光照值。
由于镜面反射结果是进行下采样处理后得到的,也就是说计算得到的镜面反射结果是在一张小分辨率的图上完成的,那么最终结果需要还原到目标分辨率上,因此需要还原信号,即对降噪后的镜面反射结果进行上采样处理。
可选的,对降噪后的镜面反射结果进行上采样处理,得到目标对象的镜面反射光照值,包括:将降噪后的镜面反射光照信息与目标对象的材质信息相乘,得到矫正后的镜面反射光照信息;对矫正后的镜面反射光照信息进行上采样处理,得到目标对象的镜面反射光照值,上采样处理用于指示通过双线性插值将镜面反射光照信息对应的屏幕分辨率恢复到原始的分辨率。
综上所述,本公开实施例以更少的资源计算完整的全局光照,通过对目前的动态全局光计算方案进行优化,并结合空间中的光线追踪计算出光路上完整的全局光照值。一方面,漫反射光照值的计算是通过基于探针的全局光方案计算得到,将空间中离散的光线简化为取空间中若干个点放置探针,以该点为起点,通过重要性采样发射若干条光线,通过光线重排增加光线间的相干性,提高光线追踪的效率,通过简化的探针偏移计算策略在不影响效果的同时减少过程中计算量;另一方面,通过叠加镜面反射间接光计算管线计算镜面反射光照值,弥补了相关技术中只能计算漫反射光照值的局限性,获得一个更完整的全局光照值,且叠加的镜面反射间接光计算管线所增加的计算开销不大。
以下为本公开实施例的装置实施例,对于装置实施例中未详细阐述的部分,可以参考上述方法实施例中公开的技术细节。
请参考图6,其示出了本公开一个示例性实施例提供的全局光照确定装置的结构示意图。该装置可以通过软件、硬件以及两者的组合实现成为计算设备的全部或一部分。该装置包括:获取模块22和确定模块23。
获取模块22,用于获取目标对象的漫反射光照值和镜面反射光照值,漫反射光照值为发射光线相对于目标对象的漫反射的光照值,镜面反射光照值为发射光线相对于目标对象的镜面反射的光照值;
确定模块23,用于根据漫反射光照值和镜面反射光照值,确定目标对象的全局光照值,全局光照值用于对目标对象进行渲染。
在一种可能的实现方式中,目标对象所在的虚拟场景中预先设置有多个探针,多个探针用于向虚拟场景发射多条发射光,获取模块22,还用于:
对多条发射光线进行光线追踪,得到目标对象表面接收到的辐照度;
根据目标对象表面接收到的辐照度,确定目标物体的漫反射光照值。
在另一种可能的实现方式中,获取模块22,还用于:
对多个探针发射的多条发射光线进行光线追踪,得到虚拟场景的漫反射光照信息,漫反射光照信息用于指示目标对象表面接收到的辐照度;
将虚拟场景的漫反射光照信息存储在纹理图中;
通过采样纹理图获取目标对象表面接收到的辐照度。
在另一种可能的实现方式中,装置还包括:更新模块,更新模块,用于:
对于多个探针中的至少一个探针,根据探针的目标信息确定探针的位置偏移量,目标信息包括发射光线的光线方向、标志位、上一帧偏移量、距离和探针偏移长度中的至少一种;
根据探针的位置偏移量对探针的位置进行更新;
其中,标志位用于指示是否出现目标对象被发射光线背面击中的情况,上一帧偏移量为时间域上探针的上一帧的位置偏移量,距离为探针与目标对象之间的距离,探针偏移长度是每次更新时按照预设值进行递减的变量。
在另一种可能的实现方式中,探针的位置偏移量具有上限值,上限值是根据探针间距确定的,探针间距为预先设置的值或者是探针与距离探针最近的另一个探针之间的距离。
在另一种可能的实现方式中,装置还包括:重排模块,重排模块,用于:
对多条发射光线进行光线重排,重排后的多条发射光线之间的相干性高于预设相干性阈值。
在另一种可能的实现方式中,屏幕中的多个像素用于向虚拟场景发射多条发射光线,获取模块22,还用于:
对多条发射光线进行光线追踪得到目标对象的镜面反射结果;
根据镜面反射结果,确定目标对象的镜面反射光照值。
在另一种可能的实现方式中,镜面反射结果包括一级反射结果和二级反射结果,获取模块22,还用于:
对多条发射光线进行光线追踪得到一级反射结果,一级反射结果为发射光线不经过弹射而直接击中目标对象时所计算的反射结果;
根据存储的目标对象表面接收到的辐照度确定二级反射结果,二级反射结果为发射光线经过周围物体弹射后击中目标对象时所计算的反射结果。
在另一种可能的实现方式中,多条发射光线是以预设分辨率采样的,预设分辨率为非全屏幕的分辨率。
在另一种可能的实现方式中,采样的函数为VNDF。
在另一种可能的实现方式中,获取模块22,还用于:
将镜面反射结果进行降噪;
根据降噪后的镜面反射结果,得到目标对象的镜面反射光照值。
在另一种可能的实现方式中,确定模块23,还用于:
将漫反射光照值和镜面反射光照值相加,得到目标对象的间接光光照值;
根据目标对象的间接光光照值和直接光光照值,确定目标对象的全局光照值。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各个功能模块的划分进行举例说明,实际应用中,可以根据实际需要而将上述功能分配由不同的功能模块完成,即将设备的内容结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开实施例还提供了一种计算设备,计算设备包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为:实现上述各个方法实施例中由计算设备执行的步骤。
本公开实施例还提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述各个方法实施例中由计算设备执行的方法。
图7是根据一示例性实施例示出的一种装置700的框图。例如,装置700可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图7,装置700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(I/O)的接口712,传感器组件714,以及通信组件716。
处理组件702通常控制装置700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
存储器704被配置为存储各种类型的数据以支持在装置700的操作。这些数据的示例包括用于在装置700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件706为装置700的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为装置700生成、管理和分配电力相关联的组件。
多媒体组件708包括在所述装置700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当装置700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(MIC),当装置700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
I/O接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件714包括一个或多个传感器,用于为装置700提供各个方面的状态评估。例如,传感器组件714可以检测到装置700的打开/关闭状态,组件的相对定位,例如所述组件为装置700的显示器和小键盘,传感器组件714还可以检测装置700或装置700一个组件的位置改变,用户与装置700接触的存在或不存在,装置700方位或加速/减速和装置700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件716被配置为便于装置700和其他设备之间有线或无线方式的通信。装置700可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件716还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置700可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器704,上述计算机程序指令可由装置700的处理器720执行以完成上述方法。
图8是根据另一示例性实施例示出的一种装置800的框图。例如,装置800可以被提供为一服务器。参照图8,装置800包括处理组件822,其进一步包括一个或多个处理器,以及由存储器832所代表的存储器资源,用于存储可由处理组件822的执行的指令,例如应用程序。存储器832中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件822被配置为执行指令,以执行上述方法。
装置800还可以包括一个电源组件826被配置为执行装置800的电源管理,一个有线或无线网络接口850被配置为将装置800连接到网络,和一个输入输出(I/O)接口858。装置800可以操作基于存储在存储器832的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器832,上述计算机程序指令可由装置800的处理组件822执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (15)

1.一种全局光照确定方法,其特征在于,所述方法包括:
获取目标对象的漫反射光照值和镜面反射光照值,所述漫反射光照值为发射光线相对于所述目标对象的漫反射的光照值,所述镜面反射光照值为所述发射光线相对于所述目标对象的镜面反射的光照值;
根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,所述全局光照值用于对所述目标对象进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述目标对象所在的虚拟场景中预先设置有多个探针,所述多个探针用于向所述虚拟场景发射多条发射光线,所述获取目标对象的漫反射光照值,包括:
对所述多条发射光线进行光线追踪,得到所述目标对象表面接收到的辐照度;
根据所述目标对象表面接收到的辐照度,确定所述目标物体的所述漫反射光照值。
3.根据权利要求2所述的方法,其特征在于,所述对所述多个探针发射的多条发射光线进行光线追踪,得到所述目标对象表面接收到的辐照度,包括:
对所述多个探针发射的所述多条发射光线进行光线追踪,得到所述虚拟场景的漫反射光照信息,所述漫反射光照信息用于指示所述目标对象表面接收到的辐照度;
将所述虚拟场景的漫反射光照信息存储在纹理图中;
通过采样所述纹理图获取所述目标对象表面接收到的辐照度。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对于所述多个探针中的至少一个探针,根据所述探针的目标信息确定所述探针的位置偏移量,所述目标信息包括所述发射光线的光线方向、标志位、上一帧偏移量、距离和探针偏移长度中的至少一种;
根据所述探针的位置偏移量对所述探针的位置进行更新;
其中,所述标志位用于指示是否出现所述目标对象被所述发射光线背面击中的情况,所述上一帧偏移量为时间域上所述探针的上一帧的位置偏移量,所述距离为所述探针与所述目标对象之间的距离,所述探针偏移长度是每次更新时按照预设值进行递减的变量。
5.根据权利要求4所述的方法,其特征在于,所述探针的位置偏移量具有上限值,所述上限值是根据探针间距确定的,所述探针间距为预先设置的值或者是所述探针与距离所述探针最近的另一个探针之间的距离。
6.根据权利要求2所述的方法,其特征在于,所述对所述多个探针所发射的多条发射光线进行光线追踪之前,还包括:
对所述多条发射光线进行光线重排,重排后的所述多条发射光线之间的相干性高于预设相干性阈值。
7.根据权利要求1所述的方法,其特征在于,屏幕中的多个像素用于向虚拟场景发射多条发射光线,所述获取目标对象的镜面反射光照值,包括:
对所述多条发射光线进行光线追踪得到所述目标对象的镜面反射结果;
根据所述镜面反射结果,确定所述目标对象的镜面反射光照值。
8.根据权利要求7所述的方法,其特征在于,所述镜面反射结果包括一级反射结果和二级反射结果,所述对所述多条发射光线进行光线追踪得到所述目标对象的镜面反射结果,包括:
对所述多条发射光线进行光线追踪得到所述一级反射结果,所述一级反射结果为所述发射光线不经过弹射而直接击中所述目标对象时所计算的反射结果;
根据存储的所述目标对象表面接收到的辐照度确定所述二级反射结果,所述二级反射结果为所述发射光线经过周围物体弹射后击中所述目标对象时所计算的反射结果。
9.根据权利要求7所述的方法,其特征在于,所述多条发射光线是以预设分辨率采样的,所述预设分辨率为非全屏幕的分辨率。
10.根据权利要求9所述的方法,其特征在于,所述采样的函数为可见法线分布函数VNDF。
11.根据权利要求7所述的方法,其特征在于,所述根据所述镜面反射结果,确定所述目标对象的镜面反射光照值,包括:
将所述镜面反射结果进行降噪;
根据降噪后的所述镜面反射结果,得到所述目标对象的镜面反射光照值。
12.根据权利要求1至11任一所述的方法,其特征在于,所述根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,包括:
将所述漫反射光照值和所述镜面反射光照值相加,得到所述目标对象的间接光光照值;
根据所述目标对象的所述间接光光照值和直接光光照值,确定所述目标对象的全局光照值。
13.一种全局光照确定装置,其特征在于,所述装置包括:
获取模块,用于获取目标对象的漫反射光照值和镜面反射光照值,所述漫反射光照值为发射光线相对于所述目标对象的漫反射的光照值,所述镜面反射光照值为所述发射光线相对于所述目标对象的镜面反射的光照值;
确定模块,用于根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,所述全局光照值用于对所述目标对象进行渲染。
14.一种计算设备,其特征在于,所述计算设备包括:处理器;用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取目标对象的漫反射光照值和镜面反射光照值,所述漫反射光照值为发射光线相对于所述目标对象的漫反射的光照值,所述镜面反射光照值为所述发射光线相对于所述目标对象的镜面反射的光照值;
根据所述漫反射光照值和所述镜面反射光照值,确定所述目标对象的全局光照值,所述全局光照值用于对所述目标对象进行渲染。
15.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至12中任意一项所述的方法。
CN202311869789.XA 2023-12-29 2023-12-29 全局光照确定方法、装置及存储介质 Pending CN117788677A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311869789.XA CN117788677A (zh) 2023-12-29 2023-12-29 全局光照确定方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311869789.XA CN117788677A (zh) 2023-12-29 2023-12-29 全局光照确定方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN117788677A true CN117788677A (zh) 2024-03-29

Family

ID=90401591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311869789.XA Pending CN117788677A (zh) 2023-12-29 2023-12-29 全局光照确定方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN117788677A (zh)

Similar Documents

Publication Publication Date Title
US20210225067A1 (en) Game screen rendering method and apparatus, terminal, and storage medium
US20230334761A1 (en) Foveated Rendering
CN110276840B (zh) 多虚拟角色的控制方法、装置、设备及存储介质
KR20220044587A (ko) 이미지 렌더링 방법 및 관련 기기
US20230052585A1 (en) Importance sampling for determining a light map
US20240029338A1 (en) Ray-tracing with irradiance caches
CN104067318B (zh) 使用三维光栅化的时间连续碰撞检测
WO2022156150A1 (zh) 图像处理方法及装置、电子设备、存储介质及计算机程序
CN112489179B (zh) 目标模型的处理方法、装置、存储介质及计算机设备
CN113888392A (zh) 一种图像渲染方法、装置、电子设备及存储介质
EP4027302A1 (en) Light importance caching using spatial hashing in real-time ray tracing applications
US8314797B1 (en) Method and apparatus for irradiance computation in 3-D computer graphics
US9483873B2 (en) Easy selection threshold
CN116672706B (zh) 光照渲染方法、装置、终端和存储介质
CN112884873B (zh) 虚拟环境中虚拟物体的渲染方法、装置、设备及介质
US11836844B2 (en) Motion vector optimization for multiple refractive and reflective interfaces
CN117788677A (zh) 全局光照确定方法、装置及存储介质
CN114245907A (zh) 自动曝光的光线追踪
CN116740253B (zh) 一种光线追踪方法和电子设备
US11508119B2 (en) Inverse path tracing for material and lighting estimation
CN117496033A (zh) 贴图处理方法、装置、计算机可读存储介质及电子装置
CN117036577A (zh) 场景的渲染方法、装置、存储介质和电子设备
CN117582661A (zh) 虚拟模型渲染方法、装置、介质及设备
CN115439595A (zh) 一种面向ar的室内场景动态光照在线估计方法与装置
CN115797226A (zh) 图像降噪方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination