CN115984449A - 一种光照渲染方法、装置、电子设备及存储介质 - Google Patents
一种光照渲染方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115984449A CN115984449A CN202211667828.3A CN202211667828A CN115984449A CN 115984449 A CN115984449 A CN 115984449A CN 202211667828 A CN202211667828 A CN 202211667828A CN 115984449 A CN115984449 A CN 115984449A
- Authority
- CN
- China
- Prior art keywords
- illumination
- information
- local
- preset
- rendering
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02B—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
- Y02B20/00—Energy efficient lighting technologies, e.g. halogen lamps or gas discharge lamps
- Y02B20/40—Control techniques providing energy savings, e.g. smart controller or presence detection
Landscapes
- Image Generation (AREA)
Abstract
本公开涉及一种光照渲染方法、装置、电子设备及存储介质,该方法包括获取三维虚拟场景中的光照传输信息;光照传输信息包括三维虚拟场景中多个预设位置中每个预设位置处的局部光照传输信息和每个预设位置处的全局光照传输信息;根据待渲染画面对应的局部三维虚拟场景,从多个预设位置中确定目标位置;基于全局光源的实时光照参数、目标位置处的局部光照传输信息和目标位置处的全局光照传输信息,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。本公开的光照渲染方法,实时渲染过程中不仅所需内存小、计算量小,且在全局光源光照的基础上考虑了局部静态光源对其周围物体的光照影响,从而可以极大地增强渲染画面的真实感,在提高渲染效率的同时提升光照渲染效果。
Description
技术领域
本公开涉及互联网技术领域,尤其涉及一种光照渲染方法、装置、电子设备及存储介质。
背景技术
近年来,随着互联网技术的发展、个人终端的普及以及流量成本的降低,游戏产业呈现出蓬勃发展的趋势。其中,3D游戏以其画面表现力强,光影效果好等优势逐渐成为了当今游戏市场的主流。人们在体验游戏的同时,对游戏的视觉效果也提出了更高的要求。
因此,如何更好的在游戏过程中对游戏画面的光照进行渲染,以展现出更为真实的场景,是亟待解决的问题。
发明内容
本公开提供一种光照渲染方法、装置、电子设备及存储介质,本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种光照渲染方法,包括:
获取三维虚拟场景中的光照传输信息;光照传输信息包括三维虚拟场景中多个预设位置中每个预设位置处的局部光照传输信息和每个预设位置处的全局光照传输信息;局部光照传输信息基于三维虚拟场景中的局部静态光源确定,全局光照传输信息基于三维虚拟场景中的全局光源确定;
根据待渲染画面对应的局部三维虚拟场景,从多个预设位置中确定目标位置;
基于全局光源的实时光照参数、目标位置处的局部光照传输信息和目标位置处的全局光照传输信息,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
在一些可能的实施例中,每个预设位置处的光照传输信息基于光照探针的方式预先烘焙得到;局部静态光源来自三维虚拟场景中的静态发光对象;方法还包括:
在三维虚拟场景中布置多个光照探针;
将多个光照探针中每个光照探针所处的位置确定为多个预设位置中每个预设位置;
在静态发光对象处于发光状态的情况下,确定每个光照探针在多个预设方向中每个预设方向上的局部光照亮度信息;局部光照亮度信息包括红绿蓝三个通道的颜色信息和光照强度信息;
将每个光照探针的局部光照亮度信息,作为每个光照探针对应的预设位置处的局部光照传输信息。
在一些可能的实施例中,方法还包括:
在静态发光对象处于不发光状态的情况下,确定每个光照探针在每个预设方向上的球谐系数和每个光照探针在每个预设方向上的天光可见性信息;
将每个光照探针在每个预设方向的球谐系数和每个光照探针在每个预设方向上的天光可见性信息,作为每个光照探针对应的预设位置处的全局光照传输信息。
在一些可能的实施例中,确定每个光照探针在每个预设方向上的球谐系数和每个光照探针在每个预设方向上的天光可见性信息,包括:
针对每个光照探针,以光照探针的中心为起始点,确定多条第一射线;多条第一射线的方向均匀分布在光照探针周围的各个方向;
针对多条第一射线中的每条第一射线,若第一射线与三维虚拟场景中的对象存在第一撞击点,确定第一撞击点的位置信息和第一撞击点的颜色信息,确定第一射线的天光可见性信息为天光不可见;
以第一撞击点的位置信息为起始点,确定多条第二射线;多条第二射线中每条第二射线与三维虚拟场景中的对象存在第二撞击点;
基于第一射线的方向球谐系数、第一撞击点的颜色信息、第一射线与多条第二射线中每条第二射线之间的夹角和第二射线的数量,确定光照探针在第一射线的第一射线方向上的球谐系数;
基于光照探针在多条第一射线中每条第一射线的第一射线方向上的球谐系数,确定光照探针在每个预设方向上的球谐系数;
基于光照探针在多条第一射线中每条第一射线的第一射线方向上的天光可见性信息,确定光照探针在每个预设方向上的天光可见性信息。
在一些可能的实施例中,基于光照探针在多条第一射线中每条第一射线的第一射线方向上的球谐系数,确定光照探针在每个预设方向上的球谐系数,包括:
针对每个预设方向,确定预设方向与每条第一射线的第一射线方向之间的余弦值;
基于每条第一射线对应的余弦值,对光照探针在每条第一射线的第一射线方向上的球谐系数进行加权求和,得到求和结果;
将求和结果除以多条第一射线中第一射线的数量,得到光照探针在预设方向上的球谐系数。
在一些可能的实施例中,目标位置包括多个目标位置;基于全局光源的实时光照参数、目标位置处的局部光照传输信息和目标位置处的全局光照传输信息,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面,包括:
基于多个目标位置中每个目标位置处的局部光照传输信息,生成第一体纹理图;第一体纹理图中每个第一大像素与每个目标位置一一对应;每个第一大像素包括四个第一小像素,四个第一小像素分别存储每个第一大像素对应的目标位置在每个预设方向上的红绿蓝三个通道的颜色信息和光照强度信息;
基于每个目标位置处的全局光照传输信息,生成第二体纹理图和第三体纹理图;第二体纹理图中每个第二大像素与每个目标位置一一对应;每个第二大像素包括四个第二小像素,四个第二小像素分别存储每个第二大像素对应的目标位置在四个预设方向中每个预设方向上的二阶球谐系数;第三体纹理图中每个像素与每个目标位置一一对应,每个像素存储每个像素对应的目标位置在每个预设方向上的天光可见性信息;
基于第一体纹理图、第二体纹理图、第三体纹理图和全局光源的实时光照参数,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
在一些可能的实施例中,实时光照参数包括实时颜色信息和实时方向信息;基于第一体纹理图、第二体纹理图、第三体纹理图和全局光源的实时光照参数,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面,包括:
针对待渲染画面中每个待渲染像素,在第一体纹理图中确定待渲染像素对应的第一目标大像素,在第二体纹理图中确定渲染像素对应的第二目标大像素,在第三体纹理图中确定渲染像素对应的第三目标像素;
基于实时颜色信息、实时方向信息、第二目标大像素存储的四个预设方向中每个预设方向上的二阶球谐系数和第三目标像素存储的每个预设方向上的天光可见性信息,确定初始光照渲染参数;
将第一目标大像素存储的每个预设方向上的红绿蓝三个通道的颜色信息和光照强度信息,与初始光照渲染参数进行叠加,得到待渲染像素的目标光照渲染参数;
基于每个待渲染像素的目标光照渲染参数,对每个待渲染像素进行光照渲染,得到渲染后的渲染画面。
根据本公开实施例的第二方面,提供一种光照渲染装置,包括:
获取模块,被配置为执行获取三维虚拟场景中的光照传输信息;光照传输信息包括三维虚拟场景中多个预设位置中每个预设位置处的局部光照传输信息和每个预设位置处的全局光照传输信息;局部光照传输信息基于三维虚拟场景中的局部静态光源确定,全局光照传输信息基于三维虚拟场景中的全局光源确定;
确定模块,被配置为执行根据待渲染画面对应的局部三维虚拟场景,从多个预设位置中确定目标位置;
渲染模块,被配置为执行基于全局光源的实时光照参数、目标位置处的局部光照传输信息和目标位置处的全局光照传输信息,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
根据本公开实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为执行指令,以实现本公开实施例第一方面的光照渲染方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本公开实施例第一方面的光照渲染方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
通过离线烘焙好三维虚拟场景中的光照传输信息,光照传输信息包括三维虚拟场景中的多个预设位置中每个预设位置处的局部光照传输信息和每个预设位置处的全局光照传输信息;在实时渲染的过程中,动态加载目标位置处的局部光照传输信息和全局光照传输信息,对待渲染像素进行渲染,如此,实时渲染过程中不仅所需内存小、计算量小,且在全局光源光照的基础上考虑了局部静态光源对其周围物体的光照影响,从而可以极大地增强渲染画面的真实感,在提高渲染效率的同时提升光照渲染效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种应用环境的示意图;
图2是根据一示例性实施例示出的一种光照渲染方法的流程图;
图3是根据一示例性实施例示出的一种确定每个预设位置处的光照传输信息的流程图;
图4是根据一示例性实施例示出的一种光照模型的示意图;
图5是根据一示例性实施例示出的一种确定每个光照探针的球谐系数和天光可见性信息的示意图;
图6是根据一示例性实施例示出的一种确定光照探针在每个预设方向上的球谐系数的流程图;
图7是根据一示例性实施例示出的一种生成渲染后的渲染画面的流程图;
图8是根据一示例性实施例示出的一种生成渲染后的渲染画面的流程图;
图9是根据一示例性实施例示出的一种光照渲染装置的框图;
图10是根据一示例性实施例示出的一种用于光照渲染的电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的第一对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
目前,在游戏开发、动画制作、视频处理等领域,各种美术场景的呈现越来越精细、美观。为了进一步优化美术场景的制作效果,增强美术场景的真实感,需要对美术场景的光照效果进行处理。
相关技术中,通过离线烘焙光照贴图(lightmap)的方式来实现美术场景中的光影效果,但光照贴图的方式存在局限性,比如场景和光照都必须是静态的,要想实现同一个场景在不同时段和光照条件下的逼真效果,就必须烘焙多套光照贴图,这就为存储量本有限的移动端设备带来了更多挑战。
基于此,本公开实施例的光照渲染方案中,基于预计算光照传输(PrecomputedRadiance Transfer,PRT)技术,同时针对实现细节进行了优化,无需烘焙多套光照贴图,可以在移动端实现高性能、高质量的动态全局光照。
请参阅图1,图1根据一示例性实施例示出的一种光照渲染方法的应用环境的示意图,如图1所示,包括服务器01和终端02。可选的,服务器01和终端02可以通过无线链路连接,也可以通过有线链路连接,本公开在此不做限定。
参照图1,终端02运行有3D游戏,服务器01为终端02提供3D游戏的后台服务,包括描绘3D游戏对应三维虚拟场景时所需要的各种数据服务。具体的,3D游戏中可能设计一个或多个三维虚拟场景,服务器01预先针对某三维虚拟场景中的光照传输信息进行了预计算,从而在终端02实时渲染过程中,可以直接获取三维虚拟场景中的光照传输信息,然后基于实际的光照参数,对当前待渲染画面进行渲染,生成渲染后的渲染画面。
在一些可能的实施例中,服务器01可以包括是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。服务器上运行的操作系统可以包括但不限于安卓系统、IOS系统、linux、windows、Unix等。
在一些可能的实施例中,上述的终端02可以包括但不限于智能手机、台式计算机、平板电脑、笔记本电脑、智能音箱、数字助理、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、智能可穿戴设备等类型的客户端。也可以为运行于上述客户端的软体,例如应用程序、小程序等。可选的,客户端上运行的操作系统可以包括但不限于安卓系统、IOS系统、linux、windows、Unix等。
此外,需要说明的是,图1所示的应用环境仅为示例。在实际应用中,可以由终端和服务器配合执行本公开实施例的光照渲染方法,也可以由终端或者服务器独立执行本公开实施例的光照渲染方法,本公开实施例对具体的应用环境不作限定。
图2是根据一示例性实施例示出的一种光照渲染方法的流程图,如图2所示,光照渲染方法可以应用于终端,包括以下步骤:
在步骤S201中,获取三维虚拟场景中的光照传输信息;光照传输信息包括三维虚拟场景中多个预设位置中每个预设位置处的局部光照传输信息和每个预设位置处的全局光照传输信息;局部光照传输信息基于三维虚拟场景中的局部静态光源确定,全局光照传输信息基于三维虚拟场景中的全局光源确定。
本公开实施例中,三维虚拟场景是指用计算机生成的一种虚拟的场景环境,它能够提供一个多媒体的虚拟世界,用户可通过操作设备或操作界面对三维虚拟场景中可操作的虚拟对象进行控制,以虚拟对象的视角观察三维虚拟场景中的物体、动物、人物、风景等虚拟物,或通过虚拟对象和虚拟场景中的物体、动物、人物、风景等虚拟物或者其它虚拟对象等进行互动。三维虚拟场景通常由终端等计算机设备中的应用程序生成基于终端中的硬件(比如屏幕)进行展示。具体的,三维虚拟场景可以指游戏场景、动画场景等。
本公开实施例中,三维虚拟场景中的光照传输信息是预先烘焙好并存储在终端或者服务端的,从而终端在生成三维虚拟场景时,直接从本地或者服务端获取进行使用。光照传输信息包括三维虚拟场景中多个预设位置中每个预设位置处的局部光照传输信息和每个预设位置处的全局光照传输信息;其中,每个预设位置处的局部光照传输信息基于三维虚拟场景中的局部静态光源确定,这里,局部静态光源指的是该光源的照射范围固定且仅照射到其附近的对象;每个预设位置处的全局光照传输信息基于三维虚拟场景中的全局光源确定,这里,全局光源指的是大辐射范围的光源,比如太阳。其中,多个预设位置在预先烘焙时确定,主要位于三维虚拟场景中各个虚拟物之间的空隙之处。
在一些可能的实施例中,每个预设位置处的光照传输信息基于光照探针的方式预先烘焙得到;从而,本公开实施例的光照渲染方法还包括:基于光照探针的方式,离线烘焙确定每个预设位置处的光照传输信息;具体可以包括如图3所示的以下步骤:
在步骤S301中,在三维虚拟场景中布置多个光照探针。
具体的,在离线烘焙时,通过在三维虚拟场景中布置多个光照探针(lightprobe,可以简称为probe),其中每个光照探针可以收集其周围各个方向接收到的光照传输信息,在实时渲染时,将被渲染物体附近的光照探针所接收的光照传输信息作用到被渲染物体上,从而影响被渲染物体的光照效果。
在一个具体的实施例中,可以基于体素技术在三维虚拟场景中各虚拟物周围分布光照探针;体素是体积元素(Volume Pixel)的简称,类似二维中的像素,是三维中具有单位长度的一个空间,体素化可以将不规则三维物体简化为单位网格状的体素对象。具体的,将三维虚拟场景中各虚拟物的阴影区域进行体素化得到体素对象,在该体素对象的顶点位置布置光照探针。
在步骤S303中,将多个光照探针中每个光照探针所处的位置确定为多个预设位置中每个预设位置。
具体的,在三维虚拟场景中布置多个光照探针时,可以将每个光照探针所处的位置作为预设位置,经过后续步骤的烘焙处理后,即可得到每个光照探针对应预设位置处的光照传输信息。
在步骤S305中,在静态发光对象处于发光状态的情况下,确定每个光照探针在多个预设方向中每个预设方向上的局部光照亮度信息;局部光照亮度信息包括红绿蓝三个通道的颜色信息和光照强度信息。
其中,静态发光对象指的是三维虚拟场景中自身能够发光且位置固定不变的虚拟物,比如,电灯、路灯等,静态发光对象可以照亮其周围附近的其他虚拟物;上述局部静态光源即来源于三维虚拟场景中的静态发光对象。该实施例中,最终确定光照探针在四个预设方向上的局部光照亮度信息,该四个预设方向为正四面体每个面的法线方向。
具体的,当三维虚拟场景中存在多个静态发光对象时,将三维虚拟场景中所有静态发光对象打开,使得所有静态发光对象均处于发光状态;在所有静态发光对象均处于发光状态的情况下,确定每个光照探针在每个预设方向上的局部光照亮度信息,这里,每个光照探针在每个预设方向上的局部光照亮度信息即静态发光对象的局部静态光源对该光照探针在盖预设方向上的光照影响,局部光照亮度信息具体可以包括红色通道颜色信息、绿色通道颜色信息、蓝色通道颜色信息和光照强度信息。
在步骤S307中,将每个光照探针在每个预设方向上的局部光照亮度信息,作为每个光照探针对应的预设位置处的局部光照传输信息。
具体的,在确定出局部静态光源对每个光照探针的光照影响,得到每个光照探针在每个预设方向上的局部光照亮度信息后,将每个光照探针在每个预设方向上的局部光照亮度信息作为该光照探针对应预设位置处的局部光照传输信息;从而,预设位置处的局部光照传输信息,可以理解为该预设位置在不同预设方向上所接收到的来自局部静态光源照射的红色通道颜色信息、绿色通道颜色信息、蓝色通道颜色信息和光照强度信息。
上述实施例中,通过对每个光照探针进行局部静态光照的烘焙,确定每个光照探针对应预设位置处的局部光照传输信息,从而,在实时渲染的过程中,可以根据被渲染物体的位置,将其周围的预设位置处的局部光照传输信息,作用在该被渲染物体上,即在该被渲染物体上叠加其受到的来自静态发光对象的光照,如此,利用三维虚拟场景中静态发光对象的局部光照作用,影响被渲染物体的光照效果,使得光照效果更加贴合现实世界,从而可以极大地增强渲染画面的真实感。
本公开实施例中,每个预设位置处的光照传输信息,即每个光照探针的光照传输信息除了包括该光照探针的局部光照传输信息,还包括该光照探针的全局光照传输信息;这里,全局光照传输信息不仅考虑来自全局光源的直接光照,还考虑从其他可见点反射过来的光照。
在一些可能的实施例中,光照探针的全局光照传输信息,可以利用球谐光照(Spherical Harmonic Lighting)来捕捉;球谐光照,是一种光照算法,其算法的内核是定义在球面上的特殊函数,它可以对光照进行捕捉并在之后进行重新光照并且可以实时展示全局光照风格的区域光源与软阴影。
下面简单介绍下球谐光照的相关理论知识。首先,如下所示的光照公式:
参照图4所示,基于物理模型中我们认为从一个表面点反射到眼睛的不是一条光线,而是一小块球面的光锥。上述表示w0方向的光照在点x处所反射出来的光的强度;表示点x处的自发光,后面的是在这个点附近的这个小球面上的积分;积分的内容有四项,表示点x处的双向反射分布函数(Bidirectional ReflectanceDistribution Function,BRDF);表示从另一个物体上的点x′传递过来对点x有影响的光,并且这道光的入射角度为wi;G(x,x′)表示点x与点x′之间的几何关系;V(x,x′)表示点x到点x′的可见性,点x能看见x′就返回1,否则返回0。
其次,在做光照计算的时候,要考虑入射光的强度乘以表面反射项,以此来获得最终的反射光;其中,描述表面反射的函数叫传输函数(transfer function);并且需要对整个半球面的入射光与传输函数的乘积进行积分。也就是我们要计算:
∫SL(S)t(s)ds……(2)
其中,L(s)为入射光;t(s)为传输函数;
然后,将入射光和传输函数都分别投影成球谐系数,那么球谐函数的标准正交性就可以保证有:
即,两个函数乘积的积分等于他们两个球谐系数的乘积的和;其中,n代表多少基底函数系数;
于是,原本上述光照公式中无法实时计算的球面积分项,就可以快速计算了。积分项中是在描述入射光函数即剩下的则是传输函数分别用蒙特卡洛积分法近似得出原函数表达式后做投影,得出一堆球谐系数后两两相乘再求和,结果就近似是上述积分项的结果。考虑到实际运行的计算量,n一般都取3~6之间的数,这样可以快速得出结果。
基于以上的理论,在实际算法实现时,即在基于光照探针的方式,确定每个预设位置处的光照传输信息的过程中,具体的在步骤S307之后,或者在步骤S303之后S305之前,本公开实施例的光照渲染方法还包括以下步骤:
在步骤S309中,在静态发光对象处于不发光状态的情况下,确定每个光照探针在多个预设方向中每个预设方向上的球谐系数和每个光照探针在每个预设方向上的天光可见性信息。
该步骤中,从每个光照探针的位置出发,烘焙多个预设方向上的光照过程的传输信息,使用球谐系数储存该传输过程的信息。具体过程将在下文展开介绍,此处暂不赘述。
在步骤S311中,将每个光照探针在每个预设方向的球谐系数和每个光照探针在每个预设方向上的天光可见性信息,作为每个光照探针对应的预设位置处的全局光照传输信息。
该步骤中,将烘焙得到的每个光照探针在每个预设方向的球谐系数和每个光照探针在每个预设方向上的天光可见性信息,作为每个光照探针对应的预设位置处的全局光照传输信息。
在一个具体的实施例中,上述确定每个光照探针在多个预设方向中每个预设方向上的球谐系数和每个光照探针在每个预设方向上的天光可见性信息,具体可以包括如图5所示的以下步骤:
在步骤S501中,针对每个光照探针,以光照探针的中心为起始点,确定多条第一射线;多条第一射线的方向均匀分布在光照探针周围的各个方向。
具体的,终端针对每个光照探针,分别执行步骤S501~S511,以得到每个光照探针的全局光照传输信息,下面以其中一个光照探针为例进行说明。
以光照探针的中心为起始点,从光照探针的中心出发发射多条第一射线,为方便说明,这里,记光照探针的中心点为Pos,记第一射线的条数为Num;Num条第一射线的方向均匀分布在该光照探针周围的各个方向,记每个第一射线的方向为Dir。
在步骤S503中,针对多条第一射线中的每条第一射线,若第一射线与三维虚拟场景中的对象存在第一撞击点,确定第一撞击点的位置信息和第一撞击点的颜色信息,确定第一射线的天光可见性信息为天光不可见。
该步骤中,以Num条第一射线中的某一条第一射线为例进行说明,其余第一射线按照同样的方式执行;若该第一射线没有撞击到任何位置,即与三维虚拟场景中任一对象均不存在撞击点,则,确定该第一射线的天光可见性信息为天光可见;若该第一射线撞击到了任何位置,即与三维虚拟场景中的对象存在第一撞击点,则确定该第一射线的天光可见性信息为天光不可见,记该第一射线的第一射线方向为Dir1,确定该第一撞击点的位置信息,记为Pos1,以及确定第一撞击点的颜色信息,记为color0。
在步骤S505中,以第一撞击点的位置信息为起始点,确定多条第二射线;多条第二射线中每条第二射线与三维虚拟场景中的对象存在第二撞击点。
该步骤中,以第一撞击点的位置信息为起始点,从第一撞击点出发再发射多条第二射线,这里,记第二射线的数量为Num1;Num1条第二射线中每条第二射线与三维虚拟场景中的对象存在第二撞击点。
在步骤S507中,基于第一射线的方向球谐系数、第一撞击点的颜色信息、第一射线与多条第二射线中每条第二射线之间的夹角和第二射线的数量,确定光照探针在第一射线的第一射线方向上的球谐系数。
具体的,可以参照下述公式(4)确定光照探针在第一射线的第一射线方向上的球谐系数:
其中,SHDiffuse表示Pos点的光照探针在第一射线方向Dir1上的球谐系数;SHDir1表示第一射线的方向球谐系数,可以直接根据第一射线方向上的光照函数投影得到;
color0表示第一撞击点的颜色信息;cos(Dir1,Dir2(i))表示第一射线与Num1条中第i条第二射线中之间夹角的余弦值;Num1表示第二射线的总条数。
需要说明的是,如果光照探针的所有第一射线的撞击点都是物体的反面,那么该光照探针在物体内部,需要对光照探针的位置进行调整。具体的,遍历该光照探针的所有第一撞击点,确定每个第一撞击点与光照探针之间的距离,找到一个最小的距离,判断该最小的距离是否小于阈值,阈值可以是光照探针最大偏移值,若该最小的距离小于该最大偏移值,则按照该最小的距离对应的第一撞击点的方向,偏移光照探针,偏移后再次执行上述步骤S501~S507,计算偏移后光照探针在重新发射的所有第一射线上的SHDiffuse。
在步骤S509中,基于光照探针在多条第一射线中每条第一射线的第一射线方向上的球谐系数,确定光照探针在每个预设方向上的球谐系数。
该步骤中,终端对光照探针在多条第一射线中每条第一射线的第一射线方向上的球谐系数,进行缩减,将其缩减至光照探针在几个预设方向上的球谐系数;该实施例中,最终确定光照探针在四个预设方向上的球谐系数,该四个预设方向为正四面体每个面的法线方向。
在一个具体的实施例中,该步骤S509具体可以包括如图6所示的以下步骤:
在步骤S601中,针对每个预设方向,确定预设方向与每条第一射线的第一射线方向之间的余弦值。
以四个预设方向中任一预设方向为例进行说明,记该预设方向为DirectionBasis0。首先,终端计算该预设方向DirectionBasis0与每条第一射线的第一射线方向(Dir)之间的余弦值,记为CosinValue。
在步骤S603中,基于每条第一射线对应的余弦值,对光照探针在每条第一射线的第一射线方向上的球谐系数进行加权求和,得到求和结果。
该步骤中,将每条第一射线对应的余弦值CosinValue作为权重值,对光照探针在该第一射线对应第一射线方向上的球谐系数(SHDiffuse)进行加权,然后将加权后的各第一射线对应的球谐系数进行求和,得到求和结果。
在步骤S605中,将求和结果除以多条第一射线中第一射线的数量,得到光照探针在预设方向上的球谐系数。
该步骤中,将求和结果除以第一射线的数量即Num,即可得到光照探针在该预设方向上DirectionBasis0的球谐系数;其余预设方向同理,不再赘述。
在步骤S511中,基于光照探针在多条第一射线中每条第一射线的第一射线方向上的天光可见性信息,确定光照探针在每个预设方向上的天光可见性信息。
该步骤中,在确定光照探针,在多条第一射线中每条第一射线的第一射线方向上的天光可见性信息后,相应的,终端基于每条第一射线的第一射线方向上的天光可见性信息最终确定四个预设方向上天光可见性信息。
在一个具体的实施例中,该步骤S511具体可以包括以下步骤:针对每个预设方向,确定预设方向与每条第一射线的第一射线方向之间的余弦值,这里参照步骤S601的方式,此处不再赘述;然后,基于每条第一射线对应的余弦值,对光照探针在每条第一射线的第一射线方向上的天光可见性信息进行加权求和,得到求和结果;这里,若光照探针在第一射线方向上的天光可见性信息为天光可见,则记为“1”,否则记为“0”;然后,将求和结果除以多条第一射线中第一射线的数量,即可得到光照探针在预设方向上的天光可见性信息。
此外,在进一步可能的实施例中,在计算出每个光照探针在各个预设方向上的球谐系数后,终端还可以计算每个光照探针的二次反弹;具体的,与上文类似,针对每个光照探针,从该光照探针的中心出发发射Num条射线,根据每条射线击中的点,记为NextPos,根据NextPos的位置确定其周围的光照探针,这里考虑NextPos的位置周围最近的四个光照探针,基于四个光照探针中每个光照探针在四个预设方向上的球谐系数,计算出该NextPos对应的球谐系数,记为Next SH,累加每条射线对应NextPos的球谐系数Next SH,累加的结果再除以Num*4π,即可得到该光照探针的二次反弹值。
上述实施例中,利用球谐光照,快速模拟复杂的全局光照,在离线时预先计算好三维虚拟场景中各光照探针位置处的光照过程中的传输信息,并以球谐系数的形式保存该传输信息,从而,在实时渲染时,针对被渲染物体,将其周围的光照探针存储的传输球谐系数与实际光照的球谐系数进行运算,即可得到该被渲染物体实际所受全局光源的影响,计算量小,可以快速实现实时的全局光照效果。
在步骤S203中,根据待渲染画面对应的局部三维虚拟场景,从多个预设位置中确定目标位置。
本公开实施例中,待渲染画面是当前终端所需要的进行渲染的画面,具体可以是游戏画面,终端在对待渲染画面进行光照渲染后,在终端的显示界面上呈现渲染好的画面。可以理解的,根据终端用户的操作,每帧游戏画面可能仅展示三维虚拟场景中的局部场景,即,待渲染画面主要是针对局部三维虚拟场景的二维呈现,从而,终端在对待渲染画面进行渲染时,可以根据待渲染画面对应的局部三维虚拟场景,从覆盖整个三维虚拟场景的多个预设位置中确定目标位置,该目标位置的数量根据局部三维虚拟场景确定,即根据游戏视角位置来动态加载;由于当前游戏画面的复杂性,预设位置是密密麻麻分布在三维虚拟场景中的,即使是局部三维虚拟场景中,目标位置的数量也是庞大的。
在步骤S205中,基于全局光源的实时光照参数、目标位置处的局部光照传输信息和目标位置处的全局光照传输信息,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
本公开实施例中,步骤S201、S203和S205均是实时计算的;从而,在实时对局部三维虚拟场景进行渲染时,还需获得全局光源的实时光照参数,如上文所述,该实时光照参数用于与以球谐系数形式存储的光照传输信息一起进行运算,以确定被渲染物体受全局光源影响的光照效果;然后,叠加被渲染物体周围目标位置处的局部光照传输信息,得到最终的光照效果,实现对局部三维虚拟场景的光照渲染,最后,生成渲染后的渲染画面。
在一些可能的实施例中,目标位置即局部三维虚拟场景中的预设位置,目标位置包括多个目标位置;从而,上述基于全局光源的实时光照参数、目标位置处的局部光照传输信息和目标位置处的全局光照传输信息,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面,具体可以包括如图7所示的以下步骤:
在步骤S701中,基于多个目标位置中每个目标位置处的局部光照传输信息,生成第一体纹理图。
该步骤中,终端确定局部三维虚拟场景对应的多个目标位置后,基于每个目标位置处的局部光照传输信息,生成该局部三维虚拟场景对应的第一体纹理图(3D texture),具体的,第一体纹理图中每个第一大像素与每个目标位置一一对应;每个第一大像素包括四个第一小像素,四个第一小像素分别用于存储每个第一大像素对应的目标位置在四个预设方向中每个预设方向上的红色通道颜色信息、绿色通道颜色信息、蓝色通道颜色信息和光照强度信息。
在步骤S703中,基于每个目标位置处的全局光照传输信息,生成第二体纹理图和第三体纹理图。
该步骤中,由于每个目标位置处的全局光照传输信息包括该目标位置在预设方向的球谐系数以及该预设方向上的天光可见性信息,因此终端分别基于各目标位置在各预设方向的球谐系数生成第二体纹理图,基于各目标位置在各预设方向的天光可见性信息生成第三体纹理图。其中,第二体纹理图中每个第二大像素与每个目标位置一一对应;每个第二大像素包括一定数量的第二小像素,这里数量根据各预设方向的球谐系数的阶数确定;第三体纹理图中每个像素与每个目标位置一一对应,每个像素存储每个像素对应的目标位置在四个预设方向中每个预设方向上的天光可见性信息。
具体的,球谐系数可以采用二阶球谐系数,即每个预设方向对应四个球谐系数;从而,上述每个第二大像素包括四个第二小像素,四个第二小像素分别存储每个第二大像素对应的目标位置在四个预设方向中每个预设方向上的二阶球谐系数。
在步骤S705中,基于第一体纹理图、第二体纹理图、第三体纹理图和全局光源的实时光照参数,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
该步骤中,终端生成第一体纹理图、第二体纹理图、第三体纹理图后,基于全局光源的实时光照参数,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
在一个具体的实施例中,实时光照参数包括实时颜色信息和实时方向信息;从而,上述步骤S705具体可以包括如图8所示的以下步骤:
在步骤S801中,针对待渲染画面中每个待渲染像素,在第一体纹理图中确定待渲染像素对应的第一目标大像素,在第二体纹理图中确定渲染像素对应的第二目标大像素,在第三体纹理图中确定渲染像素对应的第三目标像素。
该步骤中,终端在实时渲染过程中,针对待渲染画面中每个待渲染像素进行光照渲染,具体的待渲染像素可以是对应到局部三维虚拟场景中的虚拟物体,该虚拟物体即为被渲染物体,针对每个待渲染像素进行渲染时,确定该待渲染像素对应被渲染物体在三维场景中的位置,根据被渲染物体的位置,确定其周围的目标位置,这里,被渲染物体周围的目标位置数量可以根据实际情况确定;然后,在第一体纹理图中找到目标位置对应的第一目标大像素,同理,在第二体纹理图中确定目标位置对应的第二目标大像素,以及在第三体纹理图中确定目标位置对应的第三目标像素。
在步骤S803中,基于实时颜色信息、实时方向信息、第二目标大像素存储的四个预设方向中每个预设方向上的二阶球谐系数和第三目标像素存储的每个预设方向上的天光可见性信息,确定初始光照渲染参数。
该步骤中,全局光照的实时方向信息是以球谐系数表示的;终端将全局光照的实时颜色信息、以球谐系数表示的实时方向信息、第二目标大像素存储的四个预设方向中每个预设方向上的二阶球谐系数和第三目标像素存储的每个预设方向上的天光可见性信息直接相乘,即可得到初始光照渲染参数;该初始光照渲染参数表征终端模拟的被渲染物体受实际全局光照照射的光照效果。
在步骤S805中,将第一目标大像素存储的每个预设方向上的红绿蓝三个通道的颜色信息和光照强度信息,与初始光照渲染参数进行叠加,得到待渲染像素的目标光照渲染参数。
该步骤中,终端将计算出初始光照渲染参数后,将第一目标大像素存储的每个预设方向上的红绿蓝三个通道的颜色信息和光照强度信息,与初始光照渲染参数进行叠加,得到最终被渲染物体对应待渲染像素的目标光照渲染参数;该目标光照渲染参数表征终端模拟的该待渲染像素受实际全局光照照射以及局部光照照射的融合光照效果。
在进一步可选的实施例中,由于所有的目标位置处的全局光照传输信息和局部光照传输信息都会映射到跟空间1:1对应的体纹理图上,从而,终端在实际渲染时,还可以利用硬件的线性插值的特性来做每个像素级别的插值,达到最后的光照效果平滑。
在步骤S807中,基于每个待渲染像素的目标光照渲染参数,对每个待渲染像素进行光照渲染,得到渲染后的渲染画面。
该步骤中,终端针对每个待渲染像素,计算出对应的目标光照渲染参数后,利用每个待渲染像素对应的目标光照渲染参数对该待渲染像素进行光照渲染,从而得到渲染后的渲染画面。
上述实施例中,终端在实时渲染的过程中,首先确定待渲染画面对应局部三维虚拟场景中的目标位置,在将预先烘焙好的各个目标位置处的全局光照传输信息和局部光照传输信息取出,生成对应的第一体纹理图、第二体纹理图和第三体纹理图;由于各个目标位置处的全局光照传输信息和局部光照传输信息都是预先烘焙好的,且根据视角动态加载,从而在实时计算时,所需内存小且效果好,整体效率高;终端基于第一体纹理图、第二体纹理图和第三体纹理图,然后结合实际光照参数,对待渲染画面中每个待渲染像素进行光照渲染,当实际光照的方向发生改变的时候,也能够根据实时方向信息的球谐系数进行渲染,实现动态实时光照的目的;同时,终端不仅模拟各个像素受实际全局光照照射的光照效果,还考虑局部三维虚拟场景中静态发光对象的局部光照照射的影响,从而可以增加三维虚拟场景的真实度。
综上,本公开实施例提供的一种光照渲染方法,通过离线烘焙好三维虚拟场景中的光照传输信息,包括多个预设位置中每个预设位置处的局部光照传输信息和每个预设位置处的全局光照传输信息;从而,在实时渲染的过程中,动态加载预先烘焙好的目标位置处的局部光照传输信息和全局光照传输信息,对待渲染像素进行渲染,如此,实时渲染过程中不仅所需内存小、计算量小,且在全局光源光照的基础上考虑了局部静态光源对其周围物体的光照影响,从而可以极大地增强渲染画面的真实感,在提高渲染效率的同时提升光照渲染效果。
图9是根据一示例性实施例示出的一种光照渲染装置框图。参照图9,该装置包括获取模块901、确定模块902和渲染模块903;
获取模块901,被配置为执行获取三维虚拟场景中的光照传输信息;光照传输信息包括三维虚拟场景中多个预设位置中每个预设位置处的局部光照传输信息和每个预设位置处的全局光照传输信息;局部光照传输信息基于三维虚拟场景中的局部静态光源确定,全局光照传输信息基于三维虚拟场景中的全局光源确定;
确定模块902,被配置为执行根据待渲染画面对应的局部三维虚拟场景,从多个预设位置中确定目标位置;
渲染模块903,被配置为执行基于全局光源的实时光照参数、目标位置处的局部光照传输信息和目标位置处的全局光照传输信息,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
在一些可能的实施例中,每个预设位置处的光照传输信息基于光照探针的方式预先烘焙得到;局部静态光源来自三维虚拟场景中的静态发光对象;装置还包括:
离线处理模块,被配置为执行在三维虚拟场景中布置多个光照探针;将多个光照探针中每个光照探针所处的位置确定为多个预设位置中每个预设位置;在静态发光对象处于发光状态的情况下,确定每个光照探针在多个预设方向中每个预设方向上的局部光照亮度信息;局部光照亮度信息包括红绿蓝三个通道的颜色信息和光照强度信息;将每个光照探针的局部光照亮度信息,作为每个光照探针对应的预设位置处的局部光照传输信息。
在一些可能的实施例中,离线处理模块,还被配置为执行在静态发光对象处于不发光状态的情况下,确定每个光照探针在每个预设方向上的球谐系数和每个光照探针在每个预设方向上的天光可见性信息;将每个光照探针在每个预设方向的球谐系数和每个光照探针在每个预设方向上的天光可见性信息,作为每个光照探针对应的预设位置处的全局光照传输信息。
在一些可能的实施例中,离线处理模块,还被配置为执行针对每个光照探针,以光照探针的中心为起始点,确定多条第一射线;多条第一射线的方向均匀分布在光照探针周围的各个方向;针对多条第一射线中的每条第一射线,若第一射线与三维虚拟场景中的对象存在第一撞击点,确定第一撞击点的位置信息和第一撞击点的颜色信息,确定第一射线的天光可见性信息为天光不可见;以第一撞击点的位置信息为起始点,确定多条第二射线;多条第二射线中每条第二射线与三维虚拟场景中的对象存在第二撞击点;基于第一射线的方向球谐系数、第一撞击点的颜色信息、第一射线与多条第二射线中每条第二射线之间的夹角和第二射线的数量,确定光照探针在第一射线的第一射线方向上的球谐系数;基于光照探针在多条第一射线中每条第一射线的第一射线方向上的球谐系数,确定光照探针在每个预设方向上的球谐系数;基于光照探针在多条第一射线中每条第一射线的第一射线方向上的天光可见性信息,确定光照探针在每个预设方向上的天光可见性信息。
在一些可能的实施例中,离线处理模块,还被配置为执行针对每个预设方向,确定预设方向与每条第一射线的第一射线方向之间的余弦值;基于每条第一射线对应的余弦值,对光照探针在每条第一射线的第一射线方向上的球谐系数进行加权求和,得到求和结果;将求和结果除以多条第一射线中第一射线的数量,得到光照探针在预设方向上的球谐系数。
在一些可能的实施例中,目标位置包括多个目标位置;渲染模块903,还被配置为执行基于多个目标位置中每个目标位置处的局部光照传输信息,生成第一体纹理图;第一体纹理图中每个第一大像素与每个目标位置一一对应;每个第一大像素包括四个第一小像素,四个第一小像素分别存储每个第一大像素对应的目标位置在每个预设方向上的红绿蓝三个通道的颜色信息和光照强度信息;基于每个目标位置处的全局光照传输信息,生成第二体纹理图和第三体纹理图;第二体纹理图中每个第二大像素与每个目标位置一一对应;每个第二大像素包括四个第二小像素,四个第二小像素分别存储每个第二大像素对应的目标位置在四个预设方向中每个预设方向上的二阶球谐系数;第三体纹理图中每个像素与每个目标位置一一对应,每个像素存储每个像素对应的目标位置在每个预设方向上的天光可见性信息;基于第一体纹理图、第二体纹理图、第三体纹理图和全局光源的实时光照参数,对局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
在一些可能的实施例中,实时光照参数包括实时颜色信息和实时方向信息;渲染模块903,还被配置为执行针对待渲染画面中每个待渲染像素,在第一体纹理图中确定待渲染像素对应的第一目标大像素,在第二体纹理图中确定渲染像素对应的第二目标大像素,在第三体纹理图中确定渲染像素对应的第三目标像素;基于实时颜色信息、实时方向信息、第二目标大像素存储的四个预设方向中每个预设方向上的二阶球谐系数和第三目标像素存储的每个预设方向上的天光可见性信息,确定初始光照渲染参数;将第一目标大像素存储的每个预设方向上的红绿蓝三个通道的颜色信息和光照强度信息,与初始光照渲染参数进行叠加,得到待渲染像素的目标光照渲染参数;基于每个待渲染像素的目标光照渲染参数,对每个待渲染像素进行光照渲染,得到渲染后的渲染画面。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图10是根据一示例性实施例示出的一种用于光照渲染的电子设备的框图,该电子设备可以是终端,其内部结构图可以如图10所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种光照渲染方法。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在示例性实施例中,还提供了一种电子设备,包括:处理器;用于存储该处理器可执行指令的存储器;其中,该处理器被配置为执行该指令,以实现如本公开实施例中的光照渲染方法。
在示例性实施例中,还提供了一种计算机可读存储介质,当该存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本公开实施例中的光照渲染方法。
在示例性实施例中,还提供了一种包含指令的计算机程序产品,计算机程序产品包括计算机程序,计算机程序存储在可读存储介质中,计算机设备的至少一个处理器从可读存储介质读取并执行计算机程序,使得计算机设备执行本公开实施例的光照渲染方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种光照渲染方法,其特征在于,包括:
获取三维虚拟场景中的光照传输信息;所述光照传输信息包括所述三维虚拟场景中多个预设位置中每个预设位置处的局部光照传输信息和所述每个预设位置处的全局光照传输信息;所述局部光照传输信息基于所述三维虚拟场景中的局部静态光源确定,所述全局光照传输信息基于所述三维虚拟场景中的全局光源确定;
根据待渲染画面对应的局部三维虚拟场景,从所述多个预设位置中确定目标位置;
基于所述全局光源的实时光照参数、所述目标位置处的局部光照传输信息和所述目标位置处的全局光照传输信息,对所述局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
2.根据权利要求1所述的光照渲染方法,其特征在于,所述每个预设位置处的光照传输信息基于光照探针的方式预先烘焙得到;所述局部静态光源来自所述三维虚拟场景中的静态发光对象;所述方法还包括:
在所述三维虚拟场景中布置多个光照探针;
将所述多个光照探针中每个光照探针所处的位置确定为所述多个预设位置中每个预设位置;
在所述静态发光对象处于发光状态的情况下,确定所述每个光照探针在多个预设方向中每个预设方向上的局部光照亮度信息;所述局部光照亮度信息包括红绿蓝三个通道的颜色信息和光照强度信息;
将所述每个光照探针在所述每个预设方向上的局部光照亮度信息,作为所述每个光照探针对应的预设位置处的局部光照传输信息。
3.根据权利要求2所述的光照渲染方法,其特征在于,所述方法还包括:
在所述静态发光对象处于不发光状态的情况下,确定所述每个光照探针在所述每个预设方向上的球谐系数和所述每个光照探针在所述每个预设方向上的天光可见性信息;
将所述每个光照探针在所述每个预设方向的球谐系数和所述每个光照探针在所述每个预设方向上的天光可见性信息,作为所述每个光照探针对应的预设位置处的全局光照传输信息。
4.根据权利要求3所述的光照渲染方法,其特征在于,所述确定所述每个光照探针在所述每个预设方向上的球谐系数和所述每个光照探针在所述每个预设方向上的天光可见性信息,包括:
针对所述每个光照探针,以所述光照探针的中心为起始点,确定多条第一射线;所述多条第一射线的方向均匀分布在所述光照探针周围的各个方向;
针对所述多条第一射线中的每条第一射线,若所述第一射线与所述三维虚拟场景中的对象存在第一撞击点,确定所述第一撞击点的位置信息和所述第一撞击点的颜色信息,确定所述第一射线的天光可见性信息为天光不可见;
以所述第一撞击点的位置信息为起始点,确定多条第二射线;所述多条第二射线中每条第二射线与所述三维虚拟场景中的对象存在第二撞击点;
基于所述第一射线的方向球谐系数、所述第一撞击点的颜色信息、所述第一射线与所述多条第二射线中每条第二射线之间的夹角和所述第二射线的数量,确定所述光照探针在所述第一射线的第一射线方向上的球谐系数;
基于所述光照探针在所述多条第一射线中每条第一射线的第一射线方向上的球谐系数,确定所述光照探针在所述每个预设方向上的球谐系数;
基于所述光照探针在所述多条第一射线中每条第一射线的第一射线方向上的天光可见性信息,确定所述光照探针在所述每个预设方向上的天光可见性信息。
5.根据权利要求4所述的光照渲染方法,其特征在于,所述基于所述光照探针在所述多条第一射线中每条第一射线的第一射线方向上的球谐系数,确定所述光照探针在所述每个预设方向上的球谐系数,包括:
针对所述每个预设方向,确定所述预设方向与所述每条第一射线的第一射线方向之间的余弦值;
基于所述每条第一射线对应的余弦值,对所述光照探针在所述每条第一射线的第一射线方向上的球谐系数进行加权求和,得到求和结果;
将所述求和结果除以所述多条第一射线中第一射线的数量,得到所述光照探针在所述预设方向上的球谐系数。
6.根据权利要求3所述的光照渲染方法,其特征在于,所述目标位置包括多个目标位置;所述基于所述全局光源的实时光照参数、所述目标位置处的局部光照传输信息和所述目标位置处的全局光照传输信息,对所述局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面,包括:
基于所述多个目标位置中每个目标位置处的局部光照传输信息,生成第一体纹理图;所述第一体纹理图中每个第一大像素与所述每个目标位置一一对应;所述每个第一大像素包括四个第一小像素,所述四个第一小像素分别存储所述每个第一大像素对应的目标位置在所述每个预设方向上的红绿蓝三个通道的颜色信息和光照强度信息;
基于所述每个目标位置处的全局光照传输信息,生成第二体纹理图和第三体纹理图;所述第二体纹理图中每个第二大像素与所述每个目标位置一一对应;所述每个第二大像素包括四个第二小像素,所述四个第二小像素分别存储所述每个第二大像素对应的目标位置在四个预设方向中每个预设方向上的二阶球谐系数;所述第三体纹理图中每个像素与所述每个目标位置一一对应,所述每个像素存储所述每个像素对应的目标位置在所述每个预设方向上的天光可见性信息;
基于所述第一体纹理图、所述第二体纹理图、所述第三体纹理图和所述全局光源的实时光照参数,对所述局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
7.根据权利要求6所述的光照渲染方法,其特征在于,所述实时光照参数包括实时颜色信息和实时方向信息;所述基于所述第一体纹理图、所述第二体纹理图、所述第三体纹理图和所述全局光源的实时光照参数,对所述局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面,包括:
针对所述待渲染画面中每个待渲染像素,在所述第一体纹理图中确定所述待渲染像素对应的第一目标大像素,在所述第二体纹理图中确定所述渲染像素对应的第二目标大像素,在所述第三体纹理图中确定所述渲染像素对应的第三目标像素;
基于所述实时颜色信息、所述实时方向信息、所述第二目标大像素存储的四个预设方向中每个预设方向上的二阶球谐系数和所述第三目标像素存储的每个预设方向上的天光可见性信息,确定初始光照渲染参数;
将所述第一目标大像素存储的每个预设方向上的红绿蓝三个通道的颜色信息和光照强度信息,与所述初始光照渲染参数进行叠加,得到所述待渲染像素的目标光照渲染参数;
基于所述每个待渲染像素的目标光照渲染参数,对所述每个待渲染像素进行光照渲染,得到渲染后的渲染画面。
8.一种光照渲染装置,其特征在于,包括:
获取模块,被配置为执行获取三维虚拟场景中的光照传输信息;所述光照传输信息包括所述三维虚拟场景中多个预设位置中每个预设位置处的局部光照传输信息和所述每个预设位置处的全局光照传输信息;所述局部光照传输信息基于所述三维虚拟场景中的局部静态光源确定,所述全局光照传输信息基于所述三维虚拟场景中的全局光源确定;
确定模块,被配置为执行根据待渲染画面对应的局部三维虚拟场景,从所述多个预设位置中确定目标位置;
渲染模块,被配置为执行基于所述全局光源的实时光照参数、所述目标位置处的局部光照传输信息和所述目标位置处的全局光照传输信息,对所述局部三维虚拟场景进行光照渲染,生成渲染后的渲染画面。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-7中任一项所述的光照渲染方法。
10.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-7中任一项所述的光照渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211667828.3A CN115984449A (zh) | 2022-12-23 | 2022-12-23 | 一种光照渲染方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211667828.3A CN115984449A (zh) | 2022-12-23 | 2022-12-23 | 一种光照渲染方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115984449A true CN115984449A (zh) | 2023-04-18 |
Family
ID=85964265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211667828.3A Pending CN115984449A (zh) | 2022-12-23 | 2022-12-23 | 一种光照渲染方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115984449A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116310061A (zh) * | 2023-05-18 | 2023-06-23 | 腾讯科技(深圳)有限公司 | 一种数据的处理方法、装置以及存储介质 |
CN116612223A (zh) * | 2023-07-17 | 2023-08-18 | 金锐同创(北京)科技股份有限公司 | 数字孪生模拟空间的生成方法、装置、计算机设备和介质 |
-
2022
- 2022-12-23 CN CN202211667828.3A patent/CN115984449A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116310061A (zh) * | 2023-05-18 | 2023-06-23 | 腾讯科技(深圳)有限公司 | 一种数据的处理方法、装置以及存储介质 |
CN116310061B (zh) * | 2023-05-18 | 2023-08-08 | 腾讯科技(深圳)有限公司 | 一种数据的处理方法、装置以及存储介质 |
CN116612223A (zh) * | 2023-07-17 | 2023-08-18 | 金锐同创(北京)科技股份有限公司 | 数字孪生模拟空间的生成方法、装置、计算机设备和介质 |
CN116612223B (zh) * | 2023-07-17 | 2023-10-17 | 金锐同创(北京)科技股份有限公司 | 数字孪生模拟空间的生成方法、装置、计算机设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10665011B1 (en) | Dynamically estimating lighting parameters for positions within augmented-reality scenes based on global and local features | |
US11158117B2 (en) | Estimating lighting parameters for positions within augmented-reality scenes | |
US7212207B2 (en) | Method and apparatus for real-time global illumination incorporating stream processor based hybrid ray tracing | |
CN111968215B (zh) | 一种体积光渲染方法、装置、电子设备及存储介质 | |
CN115984449A (zh) | 一种光照渲染方法、装置、电子设备及存储介质 | |
CN112927341A (zh) | 光照渲染方法、装置、计算机设备和存储介质 | |
US7212206B2 (en) | Method and apparatus for self shadowing and self interreflection light capture | |
EP2973425B1 (en) | System and method for remote generation indirect illumination sources in three-dimensional graphics | |
CN112755535B (zh) | 光照渲染方法、装置、存储介质及计算机设备 | |
US11386613B2 (en) | Methods and systems for using dynamic lightmaps to present 3D graphics | |
Fender et al. | Optispace: Automated placement of interactive 3d projection mapping content | |
US11238572B2 (en) | Device and method for dynamic range expansion in a virtual reality scene | |
CN114419240B (zh) | 光照渲染方法、装置、计算机设备和存储介质 | |
Widmer et al. | An adaptive acceleration structure for screen-space ray tracing | |
CN114119853B (zh) | 图像渲染方法、装置、设备和介质 | |
CN111784817B (zh) | 阴影的展示方法和装置、存储介质、电子装置 | |
Cheng et al. | Quad‐fisheye Image Stitching for Monoscopic Panorama Reconstruction | |
CN108230430B (zh) | 云层遮罩图的处理方法及装置 | |
CN116012520B (zh) | 阴影渲染方法、装置、计算机设备和存储介质 | |
JP2024508457A (ja) | 3dモデリングを強化するために一時的なテクスチャアプリケーションを提供する方法及びシステム | |
CN115761105A (zh) | 光照渲染方法、装置、电子设备及存储介质 | |
CN112446944B (zh) | 一种在ar场景中模拟真实环境光的方法和系统 | |
CN115035231A (zh) | 阴影烘焙方法、装置、电子设备和存储介质 | |
KR20230013099A (ko) | 실시간 깊이 맵을 사용한 지오메트리 인식 증강 현실 효과 | |
JP2001052208A (ja) | 画像処理方法、画像処理装置および記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |