掌桥专利:专业的专利平台
掌桥专利
首页

阴影渲染方法、装置及电子设备

文献发布时间:2023-06-19 12:10:19


阴影渲染方法、装置及电子设备

技术领域

本公开涉及图形渲染技术领域,具体而言,涉及一种阴影渲染方法、装置、电子设备和存储介质。

背景技术

在光照世界中,光线在传播过程中被不透明物体遮挡时,在遮挡物体背面形成暗区,暗区投射到另一物体上即形成阴影。阴影可以体现出场景中物体间的空间关系以及光源的位置等信息,因此,在三维场景渲染中,为增加场景的真实感和层次感,丰富场景的表现效果,需要模拟真实的光照效果,对阴影进行渲染。

现有技术中一些通用的阴影算法,如阴影图(Shadowmap)算法等,可以绘制出阴影,但在对远距离物体的阴影进行渲染时,会导致渲染的精度降低,只能得到模糊的阴影轮廓,且该对设备的性能要求较高。

发明内容

本公开实施例至少提供一种阴影渲染方法、装置、电子设备及存储介质。

第一方面,本公开实施例提供了一种阴影渲染方法,包括:

获取成影物体的深度信息,所述成影物体是指产生阴影的物体;

判断所述深度信息是否符合预设条件;

在所述深度信息符合所述预设条件的情况下,采用第一渲染方法对所述成影物体所产生的阴影进行渲染,得到第一渲染阴影;

在所述深度信息不符合所述预设条件的情况下,采用第二渲染方法对所述成影物体所产生的阴影进行渲染,得到第二渲染阴影;所述第二渲染方法与所述第一渲染方法不同。

本公开实施例中,由于根据成影物体的深度信息是否符合预设条件来确定不同的渲染方法,如此可以根据成影物体的不同深度信息确定适合的渲染方法,进而不仅能够保证不同深度信息的成影物体的渲染效果,还可以在保证渲染效果的同时提高渲染的效率。

根据第一方面,在一种可能的实施方式中,在所述深度信息大于预设阈值的情况下,确定所述深度信息符合所述预设条件;所述第一渲染方法的渲染精度小于所述第二渲染方法的渲染精度。

本公开实施例中,深度信息大于预设阈值的情况下,也即,在成影物体距离屏幕较远的情况下,采用渲染精度较低的方法类渲染,由于成影物体具体屏幕较远,因此即使渲染精度较低,也不会影响视觉效果,但是能够提高渲染效率。

根据第一方面,在一种可能的实施方式中,所述判断所述深度信息是否符合预设条件,包括:

基于所述深度信息,确定所述成影物体的多层次细节;

基于所述深度信息以及所述多层次细节,判断所述深度信息是否符合所述预设条件。

本公开实施例中,在判断深度信息是否符合预设条件时不仅仅考虑深度信息,还将与深度信息相关的LOD一起来综合考量,如此,可以使得所确认的渲染方法更加符合当前的深度信息,进一步提高渲染精度及渲染效率。

根据第一方面,在一种可能的实施方式中,所述采用第一渲染方法对所述成影物体所产生的阴影进行渲染,得到第一渲染阴影,包括:

获取当前时间信息以及预设的基础阴影模型;所述基础阴影模型用于指示所述成影物体所产生的阴影;

基于所述当前时间信息,确定光源参数信息;

基于所述光源参数信息对预设的基础阴影模型进行变形处理,得到空间阴影模型;

将所述空间阴影模型进行坐标转换,得到目标阴影贴图;

基于所述目标阴影贴图对所述成影物体所产生的阴影进行渲染,得到所述第一渲染阴影。

本公开实施例中,由于根据当前时间信息确定光源参数信息,并基于所述光源参数信息对预设的基础阴影模型进行变形处理,得到最终的阴影贴图,使得所得到的阴影贴图与当前时间相符合,也即,随着时间的变化,阴影贴图的形态也会发生改变,进而实现了阴影的动态效果。

根据第一方面,在一种可能的实施方式中,所述光源为太阳或者月亮;所述基于所述当前时间信息,确定光源参数信息,包括:

基于所述当前时间信息以及预设的时间信息与光源参数信息对应表,确定所述光源参数信息。

本公开实施例中,通过预设的时间信息与光源参数信息对应表,确定所述光源参数信息,可以提高光源参数信息的获取效率。

根据第一方面,在一种可能的实施方式中,所述光源参数信息包括光源位置及光照方向;所述基于所述光源参数信息对预设的基础阴影模型进行变形处理,得到空间阴影模型,包括:

根据所述光源位置,确定拉伸变形比率;

根据所述光照方向,确定所述基础阴影模型的顶点的位移方向;所述顶点包括所述基础阴影模型的端面的边缘上多个预设点;

基于所述拉伸变形比率以及所述位移方向,对所述基础阴影模型进行变形处理,得到所述空间阴影模型。

本公开实施例中,根据所述光源位置,确定拉伸变形比率,并根据所述光照方向,确定所述基础阴影模型的顶点的位移方向,使得处理后的空间阴影模型更加贴合当前光源所产生的阴影效果,提高了阴影渲染效果的真实性。

根据第一方面,在一种可能的实施方式中,所述光源位置越高,所述拉伸变形比率越小,所述光源位置越低,所述拉伸变形比率越大;和/或,与所述光照方向越接近的顶点的位移方向外凸,越接近于所述光源的顶点的位移方向内凹。

根据第一方面,在一种可能的实施方式中,所述将所述空间阴影模型进行坐标转换,得到目标阴影贴图,包括:

读取所述空间阴影模型的每个像素点在屏幕空间下深度信息;

将所述每个像素点的深度信息转换为实际空间下的位置坐标;

根据所述光照方向与水平方向的正向之间的夹角,对所述位置坐标中的水平坐标进行旋转,得到所述目标阴影贴图。

本公开实施例中,通过坐标以及光照方向的结合,实现了从空间阴影模型到目标阴影贴图的转换,并使得所获得的阴影贴图符合真实的阴影效果。

根据第一方面,在一种可能的实施方式中,所述光源参数还包括光照强度、光源颜色及环境颜色;所述基于所述目标阴影贴图对所述成影物体所产生的阴影进行渲染,包括:

基于所述目标阴影贴图以及所述光照强度、光源颜色及环境颜色,对所述成影物体所产生的阴影进行渲染。

本公开实施例中,由于在渲染过程中还结合了光照强度、光源颜色及环境颜色,使得渲染出的阴影及场景效果,更加真实逼真。

第二方面,本公开实施例提供了一种阴影渲染装置,包括:

获取模块,用于获取成影物体的深度信息,所述成影物体是指产生阴影的物体;

判断模块,用于判断所述深度信息是否符合预设条件;

第一渲染模块,用于在所述深度信息符合所述预设条件的情况下,采用第一渲染方法对所述成影物体所产生的阴影进行渲染,得到第一渲染阴影;

第二渲染模块,用于在所述深度信息不符合所述预设条件的情况下,采用第二渲染方法对所述成影物体所产生的阴影进行渲染,得到第二渲染阴影;所述第二渲染方法与所述第一渲染方法不同。

根据第二方面,在一种可能的实施方式中,在所述深度信息大于预设阈值的情况下,确定所述深度信息符合所述预设条件;所述第一渲染方法的渲染精度小于所述第二渲染方法的渲染精度。

根据第二方面,在一种可能的实施方式中,所述判断模块具体用于:

基于所述深度信息,确定所述成影物体的多层次细节;

基于所述深度信息以及所述多层次细节,判断所述深度信息是否符合所述预设条件。

根据第二方面,在一种可能的实施方式中,第一渲染模块具体用于:

获取当前时间信息以及预设的基础阴影模型;所述基础阴影模型用于指示所述成影物体所产生的阴影;

基于所述当前时间信息,确定光源参数信息;

基于所述光源参数信息对预设的基础阴影模型进行变形处理,得到空间阴影模型;

将所述空间阴影模型进行坐标转换,得到目标阴影贴图;

基于所述目标阴影贴图对所述成影物体所产生的阴影进行渲染,得到所述第一渲染阴影。

根据第二方面,在一种可能的实施方式中,所述光源为太阳或者月亮;第一渲染模块具体用于:

基于所述当前时间信息以及预设的时间信息与光源参数信息对应表,确定所述光源参数信息。

根据第二方面,在一种可能的实施方式中,所述光源参数信息包括光源位置及光照方向;所述第一渲染模块具体用于:

根据所述光源位置,确定拉伸变形比率;

根据所述光照方向,确定所述基础阴影模型的顶点的位移方向;所述顶点包括所述基础阴影模型的端面的边缘上多个预设点;

基于所述拉伸变形比率以及所述位移方向,对所述基础阴影模型进行变形处理,得到所述空间阴影模型。

根据第二方面,在一种可能的实施方式中,所述光源位置越高,所述拉伸变形比率越小,所述光源位置越低,所述拉伸变形比率越大;和/或,与所述光照方向越接近的顶点的位移方向外凸,越接近于所述光源的顶点的位移方向内凹。

根据第二方面,在一种可能的实施方式中,所述第一渲染模块具体用于:

读取所述空间阴影模型的每个像素点在屏幕空间下深度信息;

将所述每个像素点的深度信息转换为实际空间下的位置坐标;

根据所述光照方向与水平方向的正向之间的夹角,对所述位置坐标中的水平坐标进行旋转,得到所述目标阴影贴图。

根据第二方面,在一种可能的实施方式中,所述光源参数还包括光照强度、光源颜色及环境颜色;所述第一渲染模块具体用于:

基于所述目标阴影贴图以及所述光照强度、光源颜色及环境颜色,对所述成影物体所产生的阴影进行渲染。

第三方面,本公开实施例提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如第一方面所述的阴影渲染方法。

第四方面,本公开实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面所述的阴影渲染方法。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开实施例所提供的一种阴影渲染方法的执行主体的示意图;

图2示出了本公开实施例所提供的一种阴影渲染方法的流程图;

图3示出了本公开实施例所提供的一种采用第一渲染方法对所述成影物体所产生的阴影进行渲染的方法流程图;

图4示出了本公开实施例所提供的一种光源与影子之间关系的示意图;

图5示出了本公开实施例所提供的一种影子的空间渲染模型的示意图;

图6示出了本公开实施例所提供的一种基础阴影模型的示意图;

图7示出了本公开实施例所提供的一种太阳在苍穹中的位置的示意图;

图8示出了本公开实施例所提供的一种对预设的基础阴影模型进行变形处理的方法流程图;

图9示出了本公开实施例所提供的一种对预设的基础阴影模型进行变形处理的示意图;

图10示出了本公开实施例所提供的一种将所述空间阴影模型进行坐标转换的方法流程图;

图11示出了本公开实施例所提供的一种渲染好的场景示意图;

图12示出了本公开实施例所提供的一种阴影渲染装置的结构示意图;

图13示出了本公开实施例所提供的一种电子设备的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。

在光照世界中,光线在传播过程中被不透明物体遮挡时,在遮挡物体背面形成暗区,暗区投射到另一物体上即形成阴影。阴影可以体现出场景中物体间的空间关系以及光源的位置等信息,因此,在三维场景渲染中,为增加场景的真实感和层次感,丰富场景的表现效果,需要模拟真实的光照效果,对阴影进行渲染。

经研究发现,现有技术中一些通用的阴影算法,如Shadowmap算法等,可以绘制出阴影,但在对远距离物体的阴影进行渲染时,会导致渲染的精度降低,只能得到模糊的阴影轮廓,且该对设备的性能要求较高。

本公开提供了一种阴影渲染方法,包括:获取成影物体的深度信息,所述成影物体是指产生阴影的物体;判断所述深度信息是否符合预设条件;在所述深度信息符合所述预设条件的情况下,采用第一渲染方法对所述成影物体所产生的阴影进行渲染,得到第一渲染阴影;在所述深度信息不符合所述预设条件的情况下,采用第二渲染方法对所述成影物体所产生的阴影进行渲染,得到第二渲染阴影;所述第二渲染方法与所述第一渲染方法不同。

本公开实施例中,由于根据成影物体的深度信息是否符合预设条件来确定不同的渲染方法,如此可以根据成影物体的不同深度信息确定适合的渲染方法,进而不仅能够保证不同深度信息的成影物体的渲染效果,还可以在保证渲染效果的同时提高渲染的效率。

请参阅图1,为本公开实施例所提供的阴影渲染方法的执行主体的示意图,该方法的执行主体为电子设备100,其中电子设备100可以包括终端和服务器。例如,该方法可应用于终端中,终端可以是图1中所示智能手机10、台式计算机20、笔记本电脑30等,还可以是图1中未示出的智能音箱、智能手表、平板电脑等,并不限定。该方法还可应用于服务器40,或者可应用于由终端和服务器40所组成的实施环境中。服务器40可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云存储、大数据和人工智能平台等基础云计算服务的云服务器。

在另一些实施方式中,电子设备100还可以包括AR(Augmented Reality,增强现实)设备、VR(Virtual Reality,虚拟现实)设备、MR(Mixed Reality,混合现实)设备等。比如,AR设备可以是具有AR功能的手机或平板电脑,也可以是AR眼镜,在此不做限定。

需要说明的是,在一些实施方式中,服务器40可以通网络50分别与智能手机10、台式计算机20及笔记本电脑30进行通信。网络50可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

此外,该阴影渲染方法还可以是运行于终端或服务器中的软体,例如具有阴影渲染功能的应用程序等。在一些可能的实现方式中,该阴影渲染方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。

参见图2所示,为本公开实施例提供的阴影渲染方法的流程图,该阴影渲染方法包括以下S101~S104:

S101,获取成影物体的深度信息,所述成影物体是指产生阴影的物体。

其中,成影物体是指产生阴影的物体。比如,该物体可以是树木、房屋以及场景(如游戏场景)中的任何不透明物体,在此不做限定。本申请实施例中的成影物体以树木为例,进行说明。

深度信息也即屏幕距离,是指成影物体与屏幕之间的距离。可以理解,由于成影物体由多个像素点构成,因此,获取成影物体的深度信息是指获取成影物体的每个像素点的深度信息。

S102,判断所述深度信息是否符合预设条件;若是,则执行步骤S103;若否,则执行步骤S104。

在一些实施方式中,若所述深度信息大于预设阈值,确定所述深度信息符合预设条件,若所述深度信息不大于所述预设阈值,则确定所述深度信息不符合预设条件。也即,将场景中的成影物体根据屏幕距离进行划分,将距离屏幕较近的成影物体的阴影采用一种渲染方法来渲染,而将距离屏幕较远的成影物体的阴影采用另一种渲染方法来渲染。

可以理解,上述实施方式中,仅仅以深度信息作为依据来进行考量,而在另一些实施方式中,深度信息是否符合预设条件还可以和多层次细节(Levels of Detail,LOD)有关。其中,LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

例如,在游戏开发中,LOD是减少面数(面数或者顶点数是衡量图像处理器压力的重要指标)的常用方法,其根本目的在于实现游戏内容与性能的平衡,既要让游戏内容尽量丰富,又要保证游戏运行的效率。通过LOD可以按照模型的位置和重要程度决定游戏画面中物体渲染的资源分配,LOD越高(LOD0、1、2…),模型的细节、面数和顶点数越少,从而获得高效率的渲染运算。一般来说,游戏画面中的远景(对细节要求程度不高)LOD较高,细节丰富的近景LOD较低。因此,LOD的高低与深度信息相关。

因此,在在另一些实施方式中,判断深度信息是否符合预设条件,可以包括:基于所述深度信息,确定所述成影物体的多层次细节(LOD);基于所述深度信息以及所述多层次细节,判断所述深度信息是否符合所述预设条件。例如,若当前深度信息大于预设阈值,还要确定该成影物体的LOD等级是否大于预设LOD等级,比如可以在LOD为2级以上时,确定当前深度信息符合预设条件。

也即,在本实施方式中,在判断深度信息是否符合预设条件时不仅仅考虑深度信息,还将与深度信息相关的LOD一起来综合考量,如此,可以使得所确认的渲染方法更加符合当前的深度信息,进一步提高渲染精度及渲染效率。

S103,采用第一渲染方法对所述成影物体所产生的阴影进行渲染,得到第一渲染阴影。

可以理解,若深度信息符合所述预设条件,则说明待渲染的阴影距离屏幕较远,可以采用与该条件相匹配的第一渲染方法进行渲染即可。在一些实施方式中,该第一渲染方法的渲染精度小于所述第二渲染方法的渲染精度,如此不仅可以保证近距离物体的渲染效果,还可以提高渲染效率。

S104,采用第二渲染方法对所述成影物体所产生的阴影进行渲染,得到第二渲染阴影;所述第二渲染方法与所述第一渲染方法不同。

可以理解,若深度信息不符合所述预设条件,则说明待渲染的阴影距离屏幕较近,此时为了保证渲染效果,可以采用渲染精度的较高的第二渲染方法进行渲染。其中,该第二渲染方法可以是常用的shadowmap算法、面片阴影法、额外渲染阴影RT(Render Texture)等。

针对上述步骤S103,在采用第一渲染方法对所述成影物体所产生的阴影进行渲染,得到第一渲染阴影时,可以包括以下S1031~S1035:

S1031,获取当前时间信息以及预设的基础阴影模型;所述基础阴影模型用于指示所述成影物体所产生的阴影。

在三维场景渲染中,为增加场景的真实感和层次感,丰富场景的表现效果,需要模拟真实的光照效果,对阴影进行渲染,而在室外自然场景中,光源为太阳或者月亮,光照效果会随着时间的不同而不同,不同时间的阴影效果也不同,因此,为了使得渲染出的阴影具有随时间的动态效果,首先需要获取当前时间信息。在一些实施方式中,可以通过电子设备的系统时钟(比如日历和时间)来获取当前时间信息,也可以响应用户的输入而获取当前时间信息,在此不做限定。

另外,对于一些需要渲染大量相同物体的特定场景(如丛林),可以采用GPUInstancing来批量大规模渲染影子,其中GPU Instancing用于减少渲染大量相同物体时的Draw Call。而该技术的限制条件是所有成影物体的影子需要同一个模型,因此,本实施方式中,可以将需要渲染的成影物体设置一个通用的基础阴影模型,然后在渲染是直接调用该基础阴影模型即可,进而提高渲染效率。其中,该基础阴影模型可以视为每个成影物体的影子的分布空间渲染模型。

下面结合图4、图5及图6,对该基础阴影模型的确定过程进行详细说明。参见图4所示,为影子与光源之间关系的示意图。从图4中可以看出,忽略光源(太阳或者月亮)接近水平方向造成的无限长的投影,可见水平方向上,成影物体的影子Y旋转缩放后轨迹是一个变形的椭圆,因为地表不一定平坦,影子Y会分布在垂直方向内一定距离。因此,如图5所示,最终抽象出来阴影的空间渲染模型是一个变形的圆柱体。然后对该圆柱体进行进一步处理,可以抽象得到单位化标准基础阴影模型,如图6所示,在一些实施方式中,该基础阴影模型可以是一个直径、高度为1的标准圆柱体。

S1032,基于所述当前时间信息,确定光源参数信息。

示例性地,可以预先建立时间信息与光源参数信息对应表,然后基于所述当前时间信息以及预设的时间信息与光源参数信息对应表,即可确定所述光源参数信息。如此,可以提高光源参数信息的获取效率。

在一些实施方式中,该时间信息与光源参数信息对应表可以通过如下步骤获得:

(1)分别获取多个不同的时间信息以及经纬度信息;

(2)基于所述时间信息以及所述经纬度信息,确定所述时间信息所对应的光源参数信息;

(3)根据所述多个不同的时间信息以及所述多个不同的时间信息分别对应的光源参数信息,构建所述时间与光源参数信息对应表。

示例性地,可以基于TOD(Time Of Day)模拟计算公式以及日历和时间,计算天穹中太阳和/或月亮的方向坐标以及光照强弱信息。

参见图7所示,假设太阳S处于一个单位圆球的天穹球面上运动,使用时间点和经纬度信息,最终可计算得到太阳的天穹位置R,设定此位置太阳始终朝向球心O,即可得到太阳方向RO。由于得到了24小时时间点对应的太阳位置将此时间映射到设定的太阳强度和颜色变化曲线上,从而得到24小时太阳的光照强度变化数值,因此,可以得到光源位置、光照的方向、光照强度、及光照颜色等基础数据,而这些数据会影响阴影的效果和形态。同理,也可以得到月亮的方向和光照数值,进而得到时间与光源参数信息对应表。

S1033,基于所述光源参数信息对预设的基础阴影模型进行变形处理,得到空间阴影模型。

参见图8所示,在一些实施方式中,所述光源参数信息包括光源位置及光照方向,在基于所述光源参数信息对预设的基础阴影模型进行变形处理,得到空间阴影模型时可以包括以下S10331~S10333:

S10331,根据所述光源位置,确定拉伸变形比率。

S10332,根据所述光照方向,确定所述基础阴影模型的顶点的位移方向;所述顶点包括所述基础阴影模型的端面的边缘上多个预设点。

S10333,基于所述拉伸变形比率以及所述位移方向,对所述基础阴影模型进行变形处理,得到所述空间阴影模型。

示例性地,参见图9所示,可以根据所述光源位置(如太阳在天穹中的高度),确定拉伸变形比率。其中,所述光源位置越高,所述拉伸变形比率越小,所述光源位置越低(接近水平线),所述拉伸变形比率越大,模拟影子的伸缩性。其中,图9中a为基础阴影模型的顶面,b为对基础阴影模型拉伸后的效果;然后基于光照方向(光源的与水平方向的夹角),确定所述基础阴影模型的顶点的位移方向。其中,与所述光照方向越接近的顶点的位移方向外凸,越接近于所述光源的顶点的位移方向内凹,图9中c为对基础阴影模型的顶点进行处理后的效果,最终得到一个水平为“梨”形的变形圆柱体。

S1034,将所述空间阴影模型进行坐标转换,得到目标阴影贴图。

示例性地,参见图10所示,在一些实施方式中,在将所述空间阴影模型进行坐标转换,得到目标阴影贴图时,可以包括以下S10341~S10343:

S10341,读取所述空间阴影模型的每个像素点在屏幕空间下深度信息。

S10342,将所述每个像素点的深度信息转换为实际空间下的位置坐标。

S10343,根据所述光照方向与水平方向的正向之间的夹角,对所述位置坐标中的水平坐标进行旋转,得到所述目标阴影贴图。

示例性地,可以先将屏幕空间中步骤S10333中得到的梨形模型体内的像素深度读出,逐像素转化为最终物体空间内的位置坐标。由于使用的是标准圆柱体,因此可以直接把水平方向的坐标范围(-0.5,0.5)偏移到(0,1)作为原始的UV坐标。然后计算2D平面内的UV分布。假设水平方向阴影方向为(1,0)即朝向X方向。用前述步骤中光源水平方向与X正向求夹角delta,将位置坐标中的水平坐标从原始方向旋转delta角度,再根据光源垂直高度映射UV缩放(映射缩放比例可以参数控制),即可得到最终的目标阴影贴图的最终采样UV。

其中,UV坐标是指所有的图象文件都是二维的一个平面。水平方向是U,垂直方向是V,通过这个平面的,二维的UV坐标系,可以定位图象上的任意一个象素。

S1035,基于所述目标阴影贴图对所述成影物体所产生的阴影进行渲染,得到所述第一渲染阴影。

在一些实施方式中,所述光源参数还包括光照强度、光源颜色及环境颜色;所述基于所述目标阴影贴图对所述成影物体所产生的阴影进行渲染,包括:基于所述目标阴影贴图以及所述光照强度、光源颜色及环境颜色,对所述成影物体所产生的阴影进行渲染。如此,可以使得渲染好的影子更加符合当前的自然环境信息,使得渲染好的场景更加真实和生动,提高了用户体验。

需要说明的是,由于圆柱贴花阴影的精度较低(第一渲染方法),比较适合做远景计算,因此可以在近景采用普通的shadowmap阴影(第二渲染方法),超过一定距离后切换到圆柱贴花阴影,最终可以得到近处高精度,远程超远视距的植物阴影。此外,此方案可以应用到需要大量渲染的中小规则模型阴影上面,如远距离房屋的动态阴影。

参见图11所示,为本申请实施例提供的一种渲染好的场景示意图。如图11所示,在该场景中包括了大量相同的成影物体(树木)A,基于前述阴影渲染方法,对距离屏幕远的树木采用第一渲染方法进行渲染得到阴影B1,对距离屏幕近的树木采用第二渲染方法进行渲染得到阴影B2,也即,该场景中的深度信息不同的树木的影子采用不同的渲染方法来渲染,如此,不仅可以保证该场景的渲染效果,还可以提高渲染效率。此外,由于光照参数随时间变化而变化,阴影随着光照参数的不同而不同,实现了植被树木随时间变化的动态阴影效果,如此解决了普通动态shadowmap算法难以在移动平台超远距离显示的问题。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一技术构思,本公开实施例中还提供了与阴影渲染方法对应的阴影渲染装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述阴影渲染方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参照图12所示,为本公开实施例提供的一种阴影渲染装置500的示意图,所述装置包括:

获取模块501,用于获取成影物体的深度信息,所述成影物体是指产生阴影的物体;

判断模块502,用于判断所述深度信息是否符合预设条件;

第一渲染模块503,用于在所述深度信息符合所述预设条件的情况下,采用第一渲染方法对所述成影物体所产生的阴影进行渲染,得到第一渲染阴影;

第二渲染模块504,用于在所述深度信息不符合所述预设条件的情况下,采用第二渲染方法对所述成影物体所产生的阴影进行渲染,得到第二渲染阴影;所述第二渲染方法与所述第一渲染方法不同。

在一种可能的实施方式中,在所述深度信息大于预设阈值的情况下,确定所述深度信息符合所述预设条件;所述第一渲染方法的渲染精度小于所述第二渲染方法的渲染精度。

在一种可能的实施方式中,所述判断模块502具体用于:

基于所述深度信息,确定所述成影物体的多层次细节;

基于所述深度信息以及所述多层次细节,判断所述深度信息是否符合所述预设条件。

在一种可能的实施方式中,第一渲染模块503具体用于:

获取当前时间信息以及预设的基础阴影模型;所述基础阴影模型用于指示所述成影物体所产生的阴影;

基于所述当前时间信息,确定光源参数信息;

基于所述光源参数信息对预设的基础阴影模型进行变形处理,得到空间阴影模型;

将所述空间阴影模型进行坐标转换,得到目标阴影贴图;

基于所述目标阴影贴图对所述成影物体所产生的阴影进行渲染,得到所述第一渲染阴影。

在一种可能的实施方式中,所述光源为太阳或者月亮;第一渲染模块503具体用于:

基于所述当前时间信息以及预设的时间信息与光源参数信息对应表,确定所述光源参数信息。

在一种可能的实施方式中,所述光源参数信息包括光源位置及光照方向;所述第一渲染模块503具体用于:

根据所述光源位置,确定拉伸变形比率;

根据所述光照方向,确定所述基础阴影模型的顶点的位移方向;所述顶点包括所述基础阴影模型的端面的边缘上多个预设点;

基于所述拉伸变形比率以及所述位移方向,对所述基础阴影模型进行变形处理,得到所述空间阴影模型。

在一种可能的实施方式中,所述光源位置越高,所述拉伸变形比率越小,所述光源位置越低,所述拉伸变形比率越大;和/或,与所述光照方向越接近的顶点的位移方向外凸,越接近于所述光源的顶点的位移方向内凹。

在一种可能的实施方式中,所述第一渲染模块503具体用于:

读取所述空间阴影模型的每个像素点在屏幕空间下深度信息;

将所述每个像素点的深度信息转换为实际空间下的位置坐标;

根据所述光照方向与水平方向的正向之间的夹角,对所述位置坐标中的水平坐标进行旋转,得到所述目标阴影贴图。

在一种可能的实施方式中,所述光源参数还包括光照强度、光源颜色及环境颜色;所述第一渲染模块503具体用于:

基于所述目标阴影贴图以及所述光照强度、光源颜色及环境颜色,对所述成影物体所产生的阴影进行渲染。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

基于同一技术构思,本公开实施例还提供了一种电子设备。参照图13所示,为本公开实施例提供的电子设备700的结构示意图,包括处理器701、存储器702、和总线703。其中,存储器702用于存储执行指令,包括内存7021和外部存储器7022;这里的内存7021也称内存储器,用于暂时存放处理器701中的运算数据,以及与硬盘等外部存储器7022交换的数据,处理器701通过内存7021与外部存储器7022进行数据交换。

本申请实施例中,存储器702具体用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。也即,当电子设备700运行时,处理器701与存储器702之间通过总线703通信,使得处理器701执行存储器702中存储的应用程序代码,进而执行前述任一实施例中所述的方法。

其中,存储器702可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。

处理器701可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

可以理解的是,本申请实施例示意的结构并不构成对电子设备700的具体限定。在本申请另一些实施例中,电子设备700可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中的阴影渲染方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中的阴影渲染方法的步骤,具体可参见上述方法实施例,在此不再赘述。

其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

相关技术
  • 一种阴影渲染的方法、装置以及电子设备
  • 一种阴影渲染的方法及装置、电子设备、存储介质
技术分类

06120113193791