点光源的光照阴影生成方法、装置、电子设备及存储介质与流程

未命名 10-09 阅读:128 评论:0


1.本发明涉及渲染技术领域,特别是涉及一种点光源的光照阴影生成方法、一种点光源的光照阴影生成装置、相应的一种电子设备以及相应的一种计算机可读存储介质。


背景技术:

2.在游戏中,光照阴影是一个很常见的技术需求,可以使得游戏世界更加真实。而egret作为一个常见的开源引擎却没有配置光照系统,需要针对egret(白鹭引擎,一款开源h5游戏引擎,可以指的是egret2d)设计相关的光照系统,以实现在游戏世界中能够提供光照阴影的需求,在光照系统的设计过程中侧重于点光源阴影系统的设计。
3.在相关点光源阴影系统的设计中,主要是依赖射线实现,表现为以点光源为起点向四周发射射线,然后通过计算射线和障碍物的碰撞点,将碰撞点后方的区域视为阴影区,对点光源的光照阴影进行生成,但该依赖射线的光照阴影生成方式其光照阴影效果的精准度受射线数量的影响,且基于射线的高计算开销容易影响cpu(centralprocessingunit,中央处理器)性能。


技术实现要素:

4.鉴于上述问题,本公开提供一种克服上述问题或者至少部分地解决上述问题的一种点光源的光照阴影生成方法、一种点光源的光照阴影生成装置、相应的一种电子设备以及相应的一种计算机可读存储介质。
5.本发明实施例公开了一种点光源的光照阴影生成方法,所述方法包括:
6.获取原始深度图;所述原始深度图包括以点光源为中心,以所述点光源的辐射长度为半径的辐射范围;
7.基于所述原始深度图得到第一目标深度图;所述第一目标深度图内包含的片元用于存储重叠的障碍物像素在同一点光源的辐射方向上距离所述点光源的像素间距信息;
8.根据所述第一目标深度图确定在所述点光源的当前辐射方向上的最小像素间距,并根据所述最小像素间距确定最大深度图;
9.根据所述原始深度图和所述最大深度图,在所述辐射范围生成光照阴影。
10.本发明实施例还公开了一种点光源的光照阴影生成装置,所述装置包括:
11.原始深度图获取模块,用于获取原始深度图;所述原始深度图包括以点光源为中心,以所述点光源的辐射长度为半径的辐射范围;
12.目标深度图生成模块,用于基于所述原始深度图得到第一目标深度图;所述第一目标深度图内包含的片元用于存储重叠的障碍物像素在同一点光源的辐射方向上距离所述点光源的像素间距信息;
13.最大深度图生成模块,用于根据所述第一目标深度图确定在所述点光源的当前辐射方向上的最小像素间距,并根据所述最小像素间距确定最大深度图;
14.光照阴影生成模块,用于根据所述原始深度图和所述最大深度图,在所述辐射范
围生成光照阴影。
15.本发明实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述点光源的光照阴影生成方法。
16.本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述点光源的光照阴影生成方法
17.本发明实施例包括以下优点:
18.在本发明实施例中,通过原始深度图和基于点光源的当前辐射方向上距离点光源的最小像素间距信息所生成的最大深度图,对点光源在其辐射范围内的光照阴影进行生成,在基于深度图的阴影生成方式中,通过采用深度图中的片元确定在点光源的当前辐射方向上的最小像素间距,从而生成最大深度图以作用于原始深度图实现光照阴影的生成,其对于片元的使用使得该阴影生成方式在任何情况下,不受障碍物数量以及形状的影响,能够适配所有形状障碍物的点光源阴影,且基于不影响cpu性能的片元处理方式提升cpu性能。
附图说明
19.图1a至图1c是相关技术中点光源阴影系统的设计示意图;
20.图2是本发明的一种点光源的光照阴影生成方法实施例的步骤流程图;
21.图3是本发明的另一种点光源的光照阴影生成方法实施例的步骤流程图;
22.图4a至图4b是本发明实施例提供的所生成的深度图的示意图;
23.图5是本发明实施例提供的光照系统的框架示意图;
24.图6是本发明的一种点光源的光照阴影生成装置实施例的结构框图。
具体实施方式
25.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
26.为便于本领域技术人员理解本技术,下面对本发明下述各实施例中涉及的术语或名词做出解释:
27.shader:着色器,指的是在渲染管线中用于渲染可见图像的程序,用场运行在gpu(graphicprocessingunit,图形处理器)上,善于并行进行简单计算。
28.深度图:指的是用于记录每个像素点到指定位置距离的图像。
29.mesh:一种由大量三角形拼凑起来可以组合成各种形状的多边形网格。
30.点光源:指的是类似电灯泡从一个点向四周扩散发射光线的光源。
31.软阴影:指的是在非理想光源的情况下,由于光源体积产生的阴影区域外的半影区域。
32.高斯模糊:指的是通过采集周围像素的颜色,并通过一定比例进行混合以使得边缘区域变得更加平滑的技术。
33.shadowmap:阴影贴图,是3d光照系统中常用的阴影技术,主要可以通过所记录的
深度图中与像素对应的深度比,对该像素进行判断是否处于光源的可视范围内。
34.片元:深度图的最小单元,是与像素同样大小的基本单位,具有大量信息。
35.rgba通道:指的是记录在片元或像素中的颜色信息,有四个通道,表示四个数据分别存储在r、g、b、a通道中,rgba即为red、green、blue、alpha混色的简称。
36.作为常见的开源引擎egret并未配置光照系统,对于2d游戏而言光照渲染系统不太需要考虑物理,平行光的阴影系统相对简单而聚焦光的阴影系统可以视为点光源的扩展,那么对于2d游戏的光照阴影生成而言,侧重于点光源阴影系统的设计。
37.在相关点光源阴影系统的设计中,具体参照图1a所示,主要是依赖射线实现,表现为以点光源为起点向四周发射射线,然后通过计算射线和障碍物的碰撞点,将碰撞点后方的区域视为阴影区,对点光源的光照阴影进行生成。
38.然后,这种依赖射线的光照阴影生成方式,如图1a所示,其需要使用大量射线,而射线的计算开销很高,在egret中又只能通过cpu进行计算,大量的射线在cpu中计算对性能的影响很大,而且射线计算的开销和最终阴影生成的效果挂钩,如果射线数量不够可能将会出现类似如图1b所示的偏差,例如区域a、区域b,由于射线数量的减少,导致射线与障碍物的碰撞点减少,从而降低对阴影区域确定的准确性,生成不太准确的阴影区域。即其光照阴影效果的精准度受射线数量的影响,而基于射线的高计算开销容易影响cpu性能。
39.进一步的,如果在前述依赖射线的光照阴影生成方式的基础上,对性能进行机型优化,如图1c所示,使得只对多边形的边角做连线,达到性能得到一定提升的目的,然而这种优化后的方式无法作用于圆形,即对于圆形障碍物无法应用该方式实现点光源的光照阴影生成,即不适用于所有类型障碍物。
40.此外,这种依赖射线的光照阴影生成方式,性能开销与障碍物数量成正比,即随着障碍物数量的增加,性能开销也会逐渐上升;以及,这种依赖射线的光照阴影生成方式无法生成软阴影。
41.本发明实施例可以将核心计算内容交给shader,并且不再依赖于射线,而是将现在成熟的3d光照系统中使用的深度图概念移植过来,做一个2d的shadowmap,其中2d的shadowmap和3d的shadowmap不同,在2d系统中,摄像机和光源的位置可以视为同一个,所以在后续计算深度信息时,可以直接由点光源的光源位置为中心去计算深度即可。具体可以通过基于原始深度图和基于点光源的当前辐射方向上距离点光源的最小像素间距信息所生成的最大深度图,对点光源在其辐射范围内的光照阴影进行生成,在基于深度图的阴影生成方式中,通过采用深度图中的片元确定在点光源的当前辐射方向上的最小像素间距,从而生成最大深度图以作用于原始深度图实现光照阴影的生成,其对于片元的使用使得该阴影生成方式在任何情况下,不受障碍物数量以及形状的影响,能够适配所有形状障碍物的点光源阴影。进一步的,以片元为单位的计算是在shader中进行的,而shader本身运行在gpu,基于gpu的并行计算实现,基本不影响cpu的性能,那么基于该不影响cpu性能的片元处理方式能够提升cpu性能。此外,基于对原始深度图进行处理得到的第一目标深度图,其所包含的片元可以存储有重叠的障碍物像素在同一点光源的辐射方向上距离点光源的像素间距信息,以便于后续在对某个片元进行深度比对的同时,能够实现对在点光源的当前辐射方向上多个重叠的障碍物像素所距离的像素间距对比,以确定当前辐射方向上的最小像素间距,达到优化比对开销的目的,在基于不影响cpu性能的片元处理方式的基础上,进一
步提升cpu的性能。
42.参照图2,示出了本发明的一种点光源的光照阴影生成方法实施例的步骤流程图,具体可以包括如下步骤:
43.步骤201,获取原始深度图;在相关技术中,依赖射线的光照阴影生成方式,其光照阴影效果的精准度受射线数量的影响,以及基于射线的高计算开销容易影响cpu性能,而本发明实施例中所采用的基于深度图的阴影生成方式,深度图的最小单位为片元,虽然在光照阴影的生成过程中在进行深度比对时,所使用到的片元数量可能会大大超过射线数量,但深度比对过程中对片元的深度信息的计算主要是在shader中进行的,而shader本身是基于gpu运行实现的,特别善于并行计算,并不影响cpu的性能,即基于深度图的阴影生成方式能够保证性能效果。
44.其中,由于是以片元为单位进行计算,所以无论如何都会遍历深度图中所有的片元,障碍物数量的多少都和性能无关;并且由于片元的范围特别小,相当于非常高精度的扫描,障碍物相当于被拆分成很细小的碎片,障碍物形状不影响基于深度图的阴影生成方式的应用,即对于任何情况下,其不受障碍物数量以及形状的影响,适配所有形状障碍物的点光源阴影。
45.在本发明的一种实施例中,此时可以获取原始深度图,该原始深度图为二维的原始深度图,其可以包含用于存储深度信息的若干个片元,所存储的深度信息可以指的是二维图像中像素距离点光源的像素间距/间隔。
46.在实际应用中,原始深度图可以基于障碍物贴图进行生成。障碍物贴图可以用于维护所有障碍物,所维护的障碍物可以指的是在游戏场景或者游戏环境中位于点光源的辐射范围内的所有障碍物,那么对于二维的障碍物贴图中,所维护的障碍物存在对应的像素,即障碍物贴图包括障碍物像素。此时可以获取点光源的光源位置,计算二维图像中像素距离点光源的像素间距/间隔,具体表现为障碍物像素距离光源位置的像素间距,以便采用障碍物像素距离光源位置的像素间距对原始深度图进行生成,使得所生成的原始深度图可以存储有所计算得到的像素间距。
47.基于障碍物贴图生成原始深度图,具体的,首先可以基于点光源的辐射范围从障碍物贴图中获取障碍物图,所获取的障碍物图可以包括障碍物区域的障碍物像素和无障碍物区域的非障碍物像素,此时可以计算障碍物图中障碍物像素和非障碍物像素距离光源位置的像素间距,然后通过采用障碍物像素和非障碍物像素距离光源位置的像素间距生成原始深度图。
48.其中,障碍物贴图可以包括以点光源为中心,以点光源的辐射长度为半径的辐射范围,那么所获取的障碍物图也可以包括以点光源为中心,以点光源的辐射长度为半径的辐射范围,进而基于障碍物图所生成的原始深度图也可以包括以点光源为中心,以点光源的辐射长度为半径的辐射范围。
49.点光源的辐射范围主要可以基于中心点和辐射长度确定,辐射范围所呈现的形状可以包括但不限于圆形、矩形、正方形,正多边形等,基于点光源的辐射范围从障碍物贴图中获取障碍物图,可以表现为从障碍物贴图中提取或者截取与辐射范围所呈现形状相应的图像,或者能够包含辐射范围所呈现形状的相应图像,作为障碍物图,以便后续只对辐射范围内的像素进行计算与比对,降低数据的计算量。
50.示例性地,假设辐射范围所呈现的形状为圆形,即为以点光源为中心,以点光源的辐射长度为半径的圆形,此时可以基于该圆形从障碍物贴图中得到预设形状的障碍物图,预设形状可以为一个以光源位置为中心,并以辐射长度(即点光源辐射范围直径)为边长的能够包含前述圆形的正方形,本发明实施例对此不加以限制。
51.步骤202,基于原始深度图得到第一目标深度图;
52.深度信息,即二维图像中像素距离点光源的像素间距/间隔,可以用于确定在同一辐射方向上的最小深度,其为障碍物像素在相应辐射方向上到点光源的最小像素间距,即最短距离。其中,在同一辐射方向上大于该最小像素间距的像素点将会被视为被遮挡,被遮挡的像素通常可以被认定为属于阴影区域。
53.原始深度图中包含的片元,可以记录在障碍物区域内所有障碍物像素距离点光源的像素间距/间隔,以及记录在无障碍物区域内所有非障碍物像素距离点光源的像素间距/间隔。其中,由于在同一辐射方向上大于该辐射方向上的最小像素间距所对应的像素点可以视为被遮挡,而非障碍物像素通常对光照阴影的生成提供的帮助较小,此时为了避免基于深度图的阴影生成方式受非障碍物像素的影响,通常可以将非障碍物像素的深度信息,即非障碍物像素的像素间距默认设置为预设最大深度,假设为预设第一像素间距,该预设第一像素间距可以是预设最大间距阈值,对于阈值的具体取值,本发明实施例对此不加以限制。
54.在本发明的一种实施例中,为了便于后续在对某个片元进行深度比对的同时,能够实现对在点光源的当前辐射方向上多个重叠的障碍物像素所距离的像素间距对比,以确定当前辐射方向上的最小像素间距,达到优化比对开销的目的,此时可以基于原始深度图得到第一目标深度图,所得到的第一目标深度图内包含的片元,可以用于存储重叠的障碍物像素在同一点光源的辐射方向上距离点光源的像素间距信息。
55.具体的,可以基于对原始深度图进行的若干次预设处理操作,使得点光源的辐射方向能够在若干个重叠区域中保持平行,便于后续在进行一次深度比对的过程中间接实现多次深度比对,得到包含若干个重叠区域的第一目标深度图。需要说明的是,预设处理操作可以包括至少一项:分割、拉伸以及折叠操作,对此,本发明实施例不加以限制。
56.步骤203,根据第一目标深度图确定在点光源的当前辐射方向上的最小像素间距,并根据最小像素间距确定最大深度图;
57.第一目标深度图为经过若干次预设处理操作后得到的深度图,其所进行的预设处理操作主要是确定点光源在指定或者预设辐射方向(例如当前辐射方向)上的最小深度,从而确定最大深度图。
58.最小深度,也可以称为最大可视深度,可以指的是障碍物像素在相应辐射方向上到点光源的最小像素间距,即最短距离。其中,在同一辐射方向上大于该最小像素间距的像素点将会被视为被遮挡,被遮挡的像素通常可以被认定为属于阴影区域。
59.在实际应用中,对于最小像素间距的确定,可以基于对第一目标深度图进行深度比对实现,其所对比的可以对在同一辐射方向上像素距离点光源的多个像素间距进行对比,以得到在各个辐射方向上的最小像素间距。其中,由于处理后得到的第一目标深度图中的若干个重叠区域可以包含重叠的障碍物像素在同一点光源的辐射方向上距离点光源的像素间距信息,此时在对第一目标深度图进行对比时,可以对重叠区域内的各个所重叠像
素的像素间距信息进行对比,从而实现对同一辐射方向上的像素间距对比,进而确定各个辐射方向上的最小像素间距。
60.需要说明的是,像素是贴图的基本单位,在深度图中片元是与像素同样大小的基本单位,位于同一辐射方向上的障碍物像素的深度比对,具体可以表现为在深度图中位于同一重叠区域内同一直线上的片元的深度比对。
61.在本发明的一种实施例中,在确定各个辐射方向上的最小像素间距以后,可以根据最小像素间距确定最大深度图,即在最大深度图中,任一片元均可以记录从点光源的光源位置到自身像素位置的辐射方向上的最大可视深度。
62.需要说明的是,虽然点光源的辐射方向上存在多个障碍物像素,但在深度比对过程中,基于最小像素间距所生成的最大深度图只会保留像素间距最小的障碍物像素,不需要考虑间距更远的障碍物像素,能够使得后续所生成的阴影区域中无需考虑去除辐射方向上存在的多个障碍物像素的问题。
63.步骤204,根据原始深度图和最大深度图,在辐射范围生成光照阴影。
64.在本发明实施例中,通过基于原始深度图,和基于点光源的当前辐射方向上距离点光源的最小像素间距信息所生成的最大深度图,对点光源在其辐射范围内的光照阴影进行生成。
65.原始深度图中的任一片元可以记录有相应像素距离点光源的像素间距信息,而最大深度图中的任一片元记录有从点光源的光源位置到自身像素位置方向上的最大可视深度,即最小像素间距,其中,在同一辐射方向上大于该方向上最小像素间距的像素点可以视为被遮挡,被遮挡的像素通常属于阴影区域,此时可以根据原始深度图和最大深度图的深度比对,确定被遮挡的像素,进而确定原始深度图中的阴影区域,从而基于阴影区域生成在点光源的辐射范围内的光照阴影。
66.需要说明的是,虽然为了避免基于深度图的阴影生成方式受非障碍物像素的影响,在进行各个辐射方向上最小像素间距的计算过程中,将非障碍物像素的像素间距默认设置为预设最大间距值,但其所进行的赋值并不是真正赋值,而是视为预设最大间距阈值的操作,在步骤204采用原始深度图与最大深度图进行深度比对时,所采用的是一个并没有特殊处理过的深度图,即所有深度都是正常深度的图,即用于与最大深度图中片元所存储的最小像素间距进行对比是原始深度图中最原始的各个片元所存储的像素间距信息。
67.在本发明一种优选的实施例中,在辐射范围生成光照阴影以外,还可以生成软阴影,以在非理想光源的情况下,由于光源体积产生的阴影区域外的半影区域,增加所生成阴影区域的真实性,其中,软阴影也可以通过简单的高斯模糊实现或者在深度图上进行额外处理实现,对此,本发明实施例不加以限制。
68.在本发明实施例中,通过原始深度图和基于点光源的当前辐射方向上距离点光源的最小像素间距信息所生成的最大深度图,对点光源在其辐射范围内的光照阴影进行生成,在基于深度图的阴影生成方式中,通过采用深度图中的片元确定在点光源的当前辐射方向上的最小像素间距,从而生成最大深度图以作用于原始深度图实现光照阴影的生成,其对于片元的使用使得该阴影生成方式在任何情况下,不受障碍物数量以及形状的影响,能够适配所有形状障碍物的点光源阴影,且基于不影响cpu性能的片元处理方式提升cpu性能。
69.参照图3,示出了本发明的另一种点光源的光照阴影生成方法实施例的步骤流程图,具体可以包括如下步骤:
70.步骤301,响应点光源创建指令,获取障碍物贴图和点光源的光源位置;
71.本发明实施例提出的点光源的光照阴影生成方法,可以是光照系统框架所执行的一部分,具体可以表现为在用户调用引擎创建点光源后,便会自动进行应用,在点光源的辐射范围内生成阴影。
72.在实际应用中,可以基于用户所作用的点光源创建操作生成点光源创建指令,当引擎接收到点光源创建指令时,可以响应点光源创建指令,获取障碍物贴图以及点光源的光源位置,具体的,障碍物贴图可以维护所有障碍物,所维护的障碍物可以指的是在游戏场景或者游戏环境中位于点光源的辐射范围内的所有障碍物;点光源的光源位置以及辐射范围可以基于用户进行的点光源创建操作得到,即具体可以从点光源创建指令中进行获取。
73.在本发明的一种实施例中,所获取的障碍物贴图以及点光源的光源位置,可以用于后续障碍物像素距离光源位置的深度信息的计算,以便基于深度信息对深度图进行生成。
74.其中,深度信息可以指的是二维图像中像素距离点光源的像素间距/间隔。
75.需要说明的是,像素是贴图的基本单位,在深度图中片元是与像素同样大小的基本单位,由于深度图以片元为单位进行计算,所以无论如何都会遍历深度图中所有的片元,障碍物数量的多少都和性能无关;并且由于片元的范围特别小,相当于非常高精度的扫描,障碍物相当于被拆分成很细小的碎片,障碍物形状不影响基于深度图的阴影生成方式的应用,即对于任何情况下,其不受障碍物数量以及形状的影响,适配所有形状障碍物的点光源阴影。
76.步骤302,基于点光源的辐射范围从障碍物贴图中获取障碍物图;
77.在具体实现中,可以对维护所有障碍物的障碍物贴图进行预处理,其预处理主要是考虑到在维护所有障碍物的障碍物贴图中,只需要对点光源所能够影响到的障碍物像素进行判断即可,例如障碍物贴图中明显位于点光源辐射范围之外的障碍物像素必定落入阴影区域,可以不进行是否被遮挡与否的考虑,此时基于对障碍物贴图的预处理可以进一步降低后续深度信息的计算量。
78.具体的,可以基于点光源的辐射范围从障碍物贴图中获取障碍物图,具体可以以光源位置为中心,并以辐射长度(即点光源辐射范围直径)为边长,从障碍物贴图中得到预设形状的障碍物图,所得到的预设形状的障碍物图即为经过预处理之后的障碍物贴图,可以对预设形状的障碍物图中所包含的障碍物像素到点光源的深度信息,即像素间距进行计算。
79.在实际应用中,点光源的辐射范围通常为圆形,而一个以点光源的辐射范围直径为边长的正方形通常可以包含这个圆,那么预设形状可以是正方形形状,具体可以表现为从障碍物贴图中,以光源位置为中心,并以辐射长度,具体以其直径为边长,裁剪出对应正方形形状的障碍物图。
80.在本发明的一些实施例中,用于维护所有障碍物的障碍物贴图中,可以进行相应标识,具体可以对其障碍物区域进行第一标识,以及对障碍物贴图中无障碍物区域进行第二标识,其中,第一标识和第二标识不同,便于后续在读取障碍物图时,能够基于第一标识
确定障碍物像素。
81.障碍物贴图中的标识可以通过颜色通道实现,具体表现为在颜色通道中存储的值不同用于标识不同情况。示例性的,用于进行标识的颜色通道可以是alpha通道,将障碍物区域的障碍物像素相应的alpha通道记为1,其他区域的其他像素相应的alpha通道记为0。
82.其中,由于障碍物贴图已经对障碍物区域和无障碍物区域进行标识,在基于障碍物贴图的基础上得到的障碍物图也具有前述标识,即所得到的障碍物图也可以包括障碍物区域的障碍物像素和无障碍物区域的非障碍物像素,其中,障碍区域可以具有第一标识,无障碍物区域可以具有第二标识,第一标识和第二标识不同。
83.步骤303,采用障碍物图中障碍物像素和非障碍物像素距离光源位置的像素间距生成原始深度图;
84.在本发明的一种实施例中,可以计算障碍物像素距离光源位置的深度信息,具体可以计算障碍物图中障碍物区域的障碍物像素以及无障碍物区域的非障碍物像素分别距离点光源的光源位置的像素间距,以便基于所计算得到的像素间距对原始深度图进行生成,即可以采用障碍物像素和非障碍物像素距离光源位置的像素间距生成原始深度图,使得所生成的原始深度图可以存储有所计算得到的像素间距。
85.所生成的原始深度图中包含的片元,可以记录在障碍物区域内所有障碍物像素的深度信息,以及记录在无障碍物区域内所有非障碍物像素的深度信息。在实际应用中,深度信息指的是像素距离点光源的像素间距/间隔,通常可以用于确定在同一辐射方向上的最小像素间距,即最短距离,此时可以基于第一标识获取障碍物区域的障碍物像素,并计算障碍物像素距离光源位置的像素间距。
86.具体的,在计算障碍物图中障碍物像素和非障碍物像素距离光源位置的像素间距之前,可以将障碍物图输入至预设着色器中,即可以将障碍物图交给shader,然后通过采用shader计算障碍物图中障碍物像素和非障碍物像素距离光源位置的像素间距,其中,shader本身基于gpu运行,特别善于并行计算,并不影响cpu的性能,即能够保证cpu的性能效果。
87.在本发明的一些实施例中,由于在同一个辐射方向上大于当前辐射方向的最小像素间距的像素点可以视为被遮挡,而非障碍物像素通常对光照阴影的生成提供的帮助较小,此时为了避免基于深度图的阴影生成方式受非障碍物像素的影响,通常可以将非障碍物像素的深度信息,即非障碍物像素的像素间距默认设置为预设最大深度,假设为预设第一像素间距,该预设第一像素间距可以是预设最大间距阈值,对于阈值的具体取值,本发明实施例对此不加以限制。具体地,可以基于第二标识获取无障碍物区域的非障碍物像素,将预设第一像素间距作为非障碍物像素距离光源位置的像素间距。
88.步骤304,将原始深度图进行若干次预设处理操作,得到包含若干个重叠区域的第一目标深度图;
89.为了便于后续在对某个片元进行深度比对的同时,能够实现对在点光源的当前辐射方向上多个重叠的障碍物像素所距离的像素间距对比,以确定当前辐射方向上的最小像素间距,达到优化比对开销的目的,此时可以基于原始深度图得到第一目标深度图,所得到的第一目标深度图内包含的片元,可以用于存储重叠的障碍物像素在同一点光源的辐射方向上距离点光源的像素间距信息。
90.在本发明实施例中,原始深度图中辐射范围相应区域内包含的片元用于存储不同点光源的辐射方向上各个像素距离点光源的像素间距,对于第一目标深度图的生成过程,可以表现为将原始深度图的辐射范围相应区域进行若干次预设处理操作,得到若干个重叠区域;其中,点光源的辐射方向在若干个重叠区域中保持平行,此时可以获取若干个重叠区域中障碍物像素和非障碍物像素在同一点光源的辐射方向上距离点光源的像素间距信息,基于若干个重叠区域以及重叠区域携带的像素间距信息生成第一目标深度图。
91.其中,基于对原始深度图进行的若干次预设处理操作,能够使得点光源的辐射方向能够在若干个重叠区域中保持平行,便于后续在进行一次深度比对的过程中间接实现多次深度比对,得到包含若干个重叠区域的第一目标深度图。其中,若干个重叠区域内包含的片元可以用于存储在同一辐射方向上的若干个障碍物像素和非障碍物像素的深度信息,其中,辐射方向可以指的是从点光源到障碍物像素点和/或非障碍物像素的方向,即可以理解为光照方向或者光照辐射方向。
92.需要说明的是,预设处理操作可以包括至少一项:分割、拉伸以及折叠操作,对此,本发明实施例不加以限制。
93.在实际应用中,预设处理操作主要是确定点光源在指定或者预设辐射方向(例如当前辐射方向)上的最小深度,从而确定最大深度图。由于进行遮挡判定需要对同一辐射方向上的像素间距信息进行判定,通常可以对原始深度图中位于同一直线上的区域进行对折,其得到的重叠区域可以表现为在同一半区内的对折得到,以加速位于同一辐射方向上重叠的障碍物像素的深度比对,快速得到从光源位置到各个片元自身位置方向上的最大可视深度,便于后续进行像素点在当前辐射方向上被遮挡或者不被遮挡的判定。
94.具体的,可以在shader中将原始深度图按照斜对角线进行分割,得到包含多个三角形区域的第一深度图,然后将第一深度图的多个三角形区域进行拉伸,得到第二深度图,再将第二深度图进行若干次折叠处理,得到包含若干个从跌区域的第一目标深度图。
95.其中,由于进行遮挡判定时需要对同一辐射方向上的像素间距进行对比,为了便于后续的斜向比对,所进行的分割操作可以表现为斜对角线的切割操作,该对角线切割的目的可以便于后续拉伸成矩形进行深度比对,以基于所拉伸的矩形使得点光源的辐射方向保持平行,方便比对同一辐射方向上的像素间距。需要说明的是,由于在计算的时候可以额外进行转换,所拉伸的形状也可以是除了矩形以外的其他任意形状,但本发明实施例出于直观、简便以及便于高效计算的考虑,通常采用将三角形区域拉伸成矩形的方案。
96.对原始深度图按照斜对角线分割后得到的第一深度图,可以如图4a所示,其包含有多个三角形区域,其中各个三角形区域可以对应为相应的半区,即以划分为四个三角形的深度图而言,每个三角形可以相当于一个半区,例如上半区、下半区、左半区以及右半区,此时可以将第一深度图的多个三角形区域进行拉伸得到相应的矩形区域,使得原本作为方向判定的方向线从向四方辐射变成平行线,并通过旋转将多个半区中的至少两个半区相互合并,得到至少两组合并后的半区,其中,不同组合并后的半区中相互存在同一辐射方向上的半区,例如通过旋转将图4a所示的上半区和左半区,以及下半区和右半区分开合并,此时可以采用至少两组合并后的半区生成第二深度图。
97.在本发明一种优选的实施例中,在将原始深度图按照斜对角线进行分割的过程中,可以获取所分割得到的多个三角形区域相应半区的深度信息,即像素间距信息,其中,
在多个三角形区域中,可以包括多组基于斜对角线进行分割后在同一辐射方向上的两个三角形区域,即相对的两个三角形区域,例如图4a所示的上半区和下半区,以及左半区和右半区,此时可以将不同组三角形区域相应半区的深度信息存储至不同的预设颜色通道中。
98.记录在不同通道是方便将两个分区合并进行对比,提供一倍的效率,例如将如图4a所示的上、下半区的深度信息记录在r通道,左、右半区的深度信息记录在g通道,那么在后续将上半区和左半区,以及下半区和右半区进行分开合并时,由于在同一组合并的半区中不同半区用于存储深度信息的颜色通道不同,其在进行合并之后也不影响原来不同半区的深度信息的确认,即能够实现合并后在进行深度比对的时候对一个片元进行遍历比对就相当于同时比对两个片元的深度数值,
99.在采用至少两组合并后的半区生成第二深度图的过程中,可以通过获取至少两组合并后的半区存储在不同的预设颜色通道的深度信息,然后采用存储在不同的预设颜色通道的深度信息分别生成包含不同组合并后的半区的第二深度图,示例性地,基于如图4a所示的第一深度图,其所生成的第二深度图可以表现为具有相互平行线的两个矩形,具体可以如图4b所示,即在如图4b所示的第二深度图中,分开合并得到的一组半区中可以通过不同的颜色通道获取相应片元在不同半区的深度信息,例如可以在合并后的半区的r通道中获取相应片元在上半区的深度信息,在合并后的半区的g通道获取相应片元在左半区的深度信息,以便后续在进行深度比对时,能够基于颜色通道中所存储的深度信息对相同半区中的最大可视深度进行确定。
100.第二深度图包括至少两组合并后的半区,对包含若干个平行区域的目标深度图的生成过程,为了能够在对一个片元进行深度比对的同时,实现对多个片元的深度比对,优化比对开销,在基于片元处理的不影响cpu性能的基础上进一步提升gpu的性能,可以基于对深度图的若干次折叠处理,便于对折叠后得到的深度图进行对比,具体可以表现为在同一组合并后的半区中将半区进行若干次反复对折处理,得到包含若干个平行区域的目标深度图。
101.步骤305,根据第一目标深度图确定在点光源的当前辐射方向上的最小像素间距,并根据最小像素间距确定最大深度图;
102.第一目标深度图为经过若干次预设处理操作后得到的深度图,其所进行的预设处理操作主要是确定点光源在指定或者预设辐射方向(例如当前辐射方向)上的最小深度,从而确定最大深度图。
103.最小深度,也可以称为最大可视深度,可以指的是障碍物像素在相应辐射方向上到点光源的最小像素间距,即最短距离。其中,在同一辐射方向上大于该最小像素间距的像素点将会被视为被遮挡,被遮挡的像素通常可以被认定为属于阴影区域。在实际应用中,对于最小像素间距的确定,可以基于对第一目标深度图进行深度比对实现,其所对比的可以对在同一辐射方向上像素距离点光源的多个像素间距进行对比,以得到在各个辐射方向上的最小像素间距。其中,由于处理后得到的第一目标深度图中的若干个重叠区域可以包含重叠的障碍物像素在同一点光源的辐射方向上距离点光源的像素间距信息,此时在对第一目标深度图进行对比时,可以对重叠区域内的各个所重叠像素的像素间距信息进行对比,从而实现对同一辐射方向上的像素间距对比,进而确定各个辐射方向上的最小像素间距。
104.需要说明的是,像素是贴图的基本单位,在深度图中片元是与像素同样大小的基
本单位,位于同一辐射方向上的障碍物像素的深度比对,具体可以表现为在深度图中位于同一重叠区域内同一直线上的片元的深度比对。在本发明的一种实施例中,目标深度图基于对原始深度图的若干次折叠处理得到,对折叠后得到的目标深度图所进行的深度比对,表现为在进行深度比对时每次折叠只在同一半区内,将折叠后重叠的片元进行深度比对,折叠多次后就可以找出最小深度,相当于将比对的开销从n优化成了log(n),实现在对一个片元进行的遍历对比时,可以相当于同时比对多个片元的深度数值。
105.由于在同一直线(用于表示同一辐射方向)上大于最小像素间距,即最短距离的像素点视为被遮挡,被遮挡的像素通常属于阴影区域,为了对像素点遮挡与否进行判断,在实际应用中,深度比对所进行的具体操作可以是对折叠后重叠的片元进行像素间距信息的对比,基于反复折叠的次数反复确定比对中较小的像素间距,最终确定得到从光源位置到所判定片元自身位置方向(即辐射方向)上的最小像素间距,从而确定最小深度。
106.具体的,可以对第一目标深度图内包含的片元所存储的重叠的障碍物像素在同一点光源的辐射方向上距离点光源的像素间距进行深度比对,确定在点光源的当前辐射方向上的最小像素间距,然后将最小像素间距存储在第一目标深度图中与重叠的障碍物像素的相应片元中,得到第二目标深度图,以便将第二目标深度图进行与预设处理操作逆向的处理操作,还原得到最大深度图。其中,最大深度图中任一片元可以记录从点光源的光源位置到像素位置的辐射方向上距离点光源的最小像素间距。
107.示例性地,可以获取反复对折处理后得到的半区中重叠的片元,所获取的重叠的片元可以包括与片元相应的重叠的障碍物像素和/或重叠的非障碍物像素,此时可以在重叠区域中,将重叠的片元进行深度比对,得到在任一片元的当前辐射方向上距离光源位置最近的最小深度,然后将最小深度作为在任一片元的当前辐射方向上的最大可视深度。
108.在实际应用中,第一目标深度图基于对折处理后的深度图体现,重叠的片元可以包括每次对第二深度图进行对折处理后重叠的片元,具体可以在每次折叠后顺便进行一次深度比对,并保留最小深度,然后再进行下次折叠。即可以在每进行一次对折处理时,将在对折处理后的深度图中重叠的片元进行深度比对,保留本次深度比对的最小深度,将最小深度作为在当前半区的平行区域中同一辐射方向上距离光源位置最近的最小深度;然后可以按照预设次数,继续对上一次对折处理后得到的半区进行对折处理,以及将在对折处理后的第一目标深度图中重叠的片元进行深度比对,保留本次深度比对的最小深度。
109.需要说明的是,预设次数的具体值可以基于实际需求中所要满足开销优化目的,即log(n)中的n进行确定,对于具体的确定方式,本发明实施例对此不加以限制。
110.示例性的,对于如图4b所示的第二深度图,可以在shader中通过横向反复折叠多次后,让折叠得到的贴图进行深度比对,保留最小的深度,具体可以计算各个平行线内的最小深度,则可以得出当前辐射方向的最大可视深度。最大可视深度即为最小深度,最小深度可以用于指示在当前辐射方向上距离点光源最近的障碍物点,在这个点之后的同一辐射方向上的像素点可以确定为不可视,即属于被遮挡的阴影区域。
111.在本发明的一种实施例中,可以将最小像素间距存储在第一目标深度图中与重叠的障碍物像素的相应片元中,得到第二目标深度图,然后将存储有最大可视深度的第二目标深度图进行与预设处理操作逆向的处理操作,还原得到最大深度图。其中,逆向处理操作可以包括将第二目标深度图的反复展开、基于平行线将矩形区域压缩为三角形区域,以及
取消用于分割为三角形区域的斜对角线操作等操作,即用于将目标深度图合并后的上下左右半区逆变换回原本的位置(如图4a所示)。
112.步骤306,根据原始深度图和最大深度图,在辐射范围生成光照阴影。
113.在本发明实施例中,通过基于原始深度图,和基于点光源的当前辐射方向上距离点光源的最小像素间距信息所生成的最大深度图,对点光源在其辐射范围内的光照阴影进行生成。
114.原始深度图中的任一片元可以记录有相应像素距离点光源的像素间距信息,而最大深度图中的任一片元记录有从点光源的光源位置到自身像素位置方向上的最大可视深度,即最小像素间距,其中,在同一辐射方向上大于该方向上最小像素间距的像素点可以视为被遮挡,被遮挡的像素通常属于阴影区域,此时可以根据原始深度图和最大深度图的深度比对,确定被遮挡的像素,进而确定原始深度图中的阴影区域,从而基于阴影区域生成在点光源的辐射范围内的光照阴影。
115.具体可以表现为将原始深度图中像素间距信息高于最大深度图中最小像素间距的第一目标片元所组成的区域,判定为阴影区域,然后在原始深度图的辐射范围对阴影区域生成光照阴影。
116.在本发明一种优选的实施例中,在辐射范围生成光照阴影以外,还可以生成软阴影,以在非理想光源的情况下,由于光源体积产生的阴影区域外的半影区域,增加所生成阴影区域的真实性。
117.其中,软阴影也可以通过在深度图上进行额外处理实现。额外的处理过程,可以表现为将原始深度图中像素间距信息大于预设像素间距且小于最小像素间距的第二目标片元所组成的区域,判定为半影区域,然后对半影区域生成软阴影。示例性地,预设像素间距的值可以为最小像素间距的值的预设比例,例如一半,本发明实施例对此不加以限制。
118.在实际应用中,对于存在软阴影的情况,在折叠时可以获取上下平行片元中的深度,也进行比对,对于上下半区和左右半区可以分别存在g和a通道中,记作半影深度。即半影深度,可用于指示高于此深度但是低于最小深度的像素点为半影区域,即软阴影的边缘半影是为了形成软阴影存在的。
119.其中,对于软阴影的生成方式,还可以通过高斯模糊实现,具体可以表现为对于最后生成的阴影图,在边缘做高斯模糊,产生软阴影效果;对于软阴影的生成方式,还可以利用mesh实现,主要可以在egret中实现mesh功能,通过mesh模拟辐射范围,其可以保证不错的性能和表现,适用于所有形状,也可以有软阴影,但是精度和性能还是会有一定程度的挂钩,计算过程基本还是基于cpu,即可能会影响cpu的性能。对此,本发明实施例不加以限制。
120.需要说明的是,虽然为了避免基于深度图的阴影生成方式受非障碍物像素的影响,在进行各个辐射方向上最小像素间距的计算过程中,将非障碍物像素的像素间距默认设置为预设最大间距值,但其所进行的赋值并不是真正赋值,而是视为预设最大间距阈值的操作,在步骤306采用原始深度图与最大深度图进行深度比对时,所采用的是一个并没有特殊处理过的深度图,即所有深度都是正常深度的图,即用于与最大深度图中片元所存储的最小像素间距进行对比是原始深度图中最原始的各个片元所存储的像素间距信息。
121.在本发明实施例中,通过原始深度图和基于点光源的当前辐射方向上距离点光源的最小像素间距信息所生成的最大深度图,对点光源在其辐射范围内的光照阴影进行生
成,在基于深度图的阴影生成方式中,通过采用深度图中的片元确定在点光源的当前辐射方向上的最小像素间距,从而生成最大深度图以作用于原始深度图实现光照阴影的生成,其对于片元的使用使得该阴影生成方式在任何情况下,不受障碍物数量以及形状的影响,能够适配所有形状障碍物的点光源阴影,且基于不影响cpu性能的片元处理方式提升cpu性能。
122.参照图5,示出了本发明实施例提供的光照系统的框架示意图,光照系统510可以应用于引擎,其可以包括光照渲染系统51和点光源阴影系统52,其中,光照渲染系统51不太需要考虑物理,可以负责对光源进行渲染,点光源阴影系统52上存储计算机程序,计算机程序被点光源阴影系统执行时实现本发明实施例提出的任一项点光源的光照阴影生成方法。
123.具体的,本发明实施例提出的点光源的光照阴影生成方法,可以是光照系统框架所执行的一部分,具体可以表现为在用户调用引擎创建点光源后,便会自动进行应用,在点光源的辐射范围内生成阴影。
124.在实际应用中,可以基于用户所作用的点光源创建操作生成点光源创建指令,当引擎接收到点光源创建指令时,可以响应点光源创建指令,获取障碍物贴图以及点光源的光源位置,具体的,障碍物贴图可以维护所有障碍物,所维护的障碍物可以指的是在游戏场景或者游戏环境中位于点光源的辐射范围内的所有障碍物;点光源的光源位置以及辐射范围可以基于用户进行的点光源创建操作得到,此时在对点光源进行创建之后,可以通过光照渲染系统51进行光照渲染,然后点光源阴影系统52可以从点光源创建指令中对光源位置以及辐射范围进行获取。
125.所获取的障碍物贴图以及点光源的光源位置,可以用于后续障碍物像素距离光源位置的深度信息的计算,以便基于深度信息对深度图进行生成。
126.具体的,可以基于点光源的辐射范围从障碍物贴图中获取障碍物图,此时可以计算障碍物图中障碍物区域的障碍物像素以及无障碍物区域的非障碍物像素距离光源位置的深度信息。
127.深度信息指的是障二维图像中像素距离点光源的像素间距/间隔,通常可以确定在同一辐射方向上的最小像素间距,为像素到光源位置的最短距离,此时可以基于第一标识获取障碍物图中障碍物区域的障碍物像素,并计算障碍物像素距离光源位置的像素间距信息;由于在同一个直线(用于指示同一辐射方向)上大于最小像素间距的像素点可以视为被遮挡,而非障碍物像素通常对光照阴影的生成提供的帮助较小,为了避免基于深度图的阴影生成方式受非障碍物像素的影响,可以基于第二标识获取无障碍物区域的非障碍物像素,将非障碍物像素的像素间距信息默认设置为预设最大深度,假设为预设第一像素间距,该预设第一像素间距可以是预设最大间距阈值。
128.在基于前述深度信息生成原始深度图之后,可以将原始深度图进行若干次预设处理操作,得到包含若干个重叠区域的第一目标深度图。点光源的辐射方向在若干个重叠区域中保持平行,此时在对第一目标深度图进行对比时,可以对重叠区域内的各个所重叠像素的像素间距信息进行对比,从而实现对同一辐射方向上的像素间距对比,进而确定各个辐射方向上的最小像素间距,基于最小像素间距生成最大深度图。
129.最大可视深度为在任一片元的当前辐射方向上的最大可视深度,在最大深度图中,任一片元均可以记录从点光源的光源位置到自身像素位置方向(即辐射方向)上的最小
像素间距。可以将在任一片元的当前辐射方向上最小像素间距存储至第一目标深度图中的相应片元中得到第二目标深度图,然后将第二目标深度图进行与预设处理操作逆向的处理操作,还原得到最大深度图。此时可以根据原始深度图和最大深度图的深度比对,确定被遮挡的像素,进而确定原始深度图中的阴影区域,从而基于阴影区域生成在点光源的辐射范围内的光照阴影。
130.在本发明一种优选的实施例中,软阴影也可以通过简单的高斯模糊实现或者在深度图上进行额外处理实现。
131.需要说明的是,点光源阴影系统上所存储的计算机程序被行时实现的点光源的光照阴影生成方法,其具体实现过程可以参照前述步骤流程实施例所示,本发明实施例在此不加以赘述。
132.在本发明实施例中,通过原始深度图和基于点光源的当前辐射方向上距离点光源的最小像素间距信息所生成的最大深度图,对点光源在其辐射范围内的光照阴影进行生成,在基于深度图的阴影生成方式中,通过采用深度图中的片元确定在点光源的当前辐射方向上的最小像素间距,从而生成最大深度图以作用于原始深度图实现光照阴影的生成,其对于片元的使用使得该阴影生成方式在任何情况下,不受障碍物数量以及形状的影响,能够适配所有形状障碍物的点光源阴影。进一步的,以片元为单位的计算是在shader中进行的,而shader本身运行在gpu,基于gpu的并行计算实现,基本不影响cpu的性能,那么基于该不影响cpu性能的片元处理方式能够提升cpu性能。此外,基于对原始深度图进行处理得到的第一目标深度图,其所包含的片元可以存储有重叠的障碍物像素在同一点光源的辐射方向上距离点光源的像素间距信息,以便于后续在对某个片元进行深度比对的同时,能够实现对在点光源的当前辐射方向上多个重叠的障碍物像素所距离的像素间距对比,以确定当前辐射方向上的最小像素间距,达到优化比对开销的目的,在基于不影响cpu性能的片元处理方式的基础上,进一步提升cpu的性能。
133.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
134.参照图6,示出了本发明的一种点光源的光照阴影生成装置实施例的结构框图,具体可以包括如下模块:
135.原始深度图获取模块601,用于获取原始深度图;所述原始深度图包括以点光源为中心,以所述点光源的辐射长度为半径的辐射范围;
136.目标深度图生成模块602,用于基于所述原始深度图得到第一目标深度图;所述第一目标深度图内包含的片元用于存储重叠的障碍物像素在同一点光源的辐射方向上距离所述点光源的像素间距信息;
137.最大深度图生成模块603,用于根据所述第一目标深度图确定在所述点光源的当前辐射方向上的最小像素间距,并根据所述最小像素间距确定最大深度图;
138.光照阴影生成模块604,用于根据所述原始深度图和所述最大深度图,在所述辐射范围生成光照阴影。
139.在本发明的一种实施例中,原始深度图获取模块601可以包括如下子模块:
140.原始深度图获取子模块,用于获取障碍物贴图和所述点光源的光源位置;所述障碍物贴图包括障碍物像素;计算所述障碍物像素距离所述光源位置的像素间距,采用所述障碍物像素距离所述光源位置的像素间距生成原始深度图。
141.在本发明的一种实施例中,原始深度图获取子模块可以包括如下单元:
142.原始深度图获取单元,用于基于所述点光源的辐射范围从所述障碍物贴图中获取障碍物图;所述障碍物图包括障碍物区域的障碍物像素和无障碍物区域的非障碍物像素;计算所述障碍物图中障碍物像素和非障碍物像素距离所述光源位置的像素间距;采用所述障碍物像素和所述非障碍物像素距离所述光源位置的像素间距生成原始深度图。
143.在本发明的一种实施例中,所述障碍区域具有第一标识,所述无障碍物区域具有第二标识;原始深度图获取单元可以包括如下子单元:
144.像素间距计算子单元,用于基于第一标识获取所述障碍物区域的障碍物像素,并计算所述障碍物像素距离所述光源位置的像素间距;基于第二标识获取所述无障碍物区域的非障碍物像素,将预设第一像素间距作为所述非障碍物像素距离所述光源位置的像素间距。
145.在本发明的一种实施例中,在所述计算所述障碍物图中障碍物像素和非障碍物像素距离所述光源位置的像素间距之前,原始深度图获取子模块还可以包括如下单元:
146.障碍物图输入单元,用于将所述障碍物图输入至预设着色器中,所述预设着色器用于计算所述障碍物图中障碍物像素和非障碍物像素距离所述光源位置的像素间距。
147.在本发明的一种实施例中,所述原始深度图中辐射范围相应区域内包含的片元用于存储不同点光源的辐射方向上各个像素距离所述点光源的像素间距;
148.目标深度图生成模块602可以包括如下子模块:
149.目标深度图生成子模块,用于将所述原始深度图的辐射范围相应区域进行若干次预设处理操作,得到若干个重叠区域;其中,所述点光源的辐射方向在所述若干个重叠区域中保持平行,所述预设处理操作包括至少一项:分割、拉伸以及折叠操作;获取所述若干个重叠区域中障碍物像素和非障碍物像素在同一点光源的辐射方向上距离所述点光源的像素间距信息,基于所述若干个重叠区域以及所述重叠区域携带的像素间距信息生成所述第一目标深度图。
150.在本发明的一种实施例中,最大深度图生成模块603可以包括如下子模块:
151.最大深度图生成子模块,用于对所述第一目标深度图内包含的片元所存储的重叠的障碍物像素在同一点光源的辐射方向上距离所述点光源的像素间距进行深度比对,确定在所述点光源的当前辐射方向上的最小像素间距;将所述最小像素间距存储在所述第一目标深度图中与重叠的障碍物像素的相应片元中,得到第二目标深度图;将所述第二目标深度图进行与预设处理操作逆向的处理操作,还原得到最大深度图;其中,所述最大深度图中任一片元记录从点光源的光源位置到像素位置的辐射方向上距离所述点光源的最小像素间距。
152.在本发明的一种实施例中,光照阴影生成模块604可以包括如下子模块:
153.光照阴影生成子模块,用于将所述原始深度图中像素间距信息高于所述最大深度图中最小像素间距的第一目标片元所组成的区域,判定为阴影区域;在所述原始深度图的
辐射范围对所述阴影区域生成光照阴影。
154.在本发明的一种实施例中,本发明实施例提供的装置还可以包括如下模块:
155.软阴影生成模块,用于将所述原始深度图中像素间距信息大于预设像素间距且小于所述最小像素间距的第二目标片元所组成的区域,判定为半影区域;其中,所述预设像素间距的值为所述最小像素间距的值的预设比例;对所述半影区域生成软阴影。
156.在本发明实施例中,本发明实施例提供的点光源的光照阴影生成装置,通过原始深度图和基于点光源的当前辐射方向上距离点光源的最小像素间距信息所生成的最大深度图,对点光源在其辐射范围内的光照阴影进行生成,在基于深度图的阴影生成方式中,通过采用深度图中的片元确定在点光源的当前辐射方向上的最小像素间距,从而生成最大深度图以作用于原始深度图实现光照阴影的生成,其对于片元的使用使得该阴影生成方式在任何情况下,不受障碍物数量以及形状的影响,能够适配所有形状障碍物的点光源阴影,且基于不影响cpu性能的片元处理方式提升cpu性能。
157.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
158.本发明实施例还提供了一种电子设备,包括:
159.包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述点光源的光照阴影生成方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
160.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述点光源的光照阴影生成方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
161.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
162.本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
163.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
164.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
165.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
166.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
167.最后,需要说明的是,本发明所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。以及,本发明实施例所提供的相关实施例,是在遵守相关国家和地区的相关法律法规和标准的基础上实现的。
168.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
169.以上对本发明所提供的一种点光源的光照阴影生成方法、一种点光源的光照阴影生成装置、相应的一种电子设备以及相应的一种计算机可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

技术特征:
1.一种点光源的光照阴影生成方法,其特征在于,所述方法包括:获取原始深度图;所述原始深度图包括以点光源为中心,以所述点光源的辐射长度为半径的辐射范围;基于所述原始深度图得到第一目标深度图;所述第一目标深度图内包含的片元用于存储重叠的障碍物像素在同一点光源的辐射方向上距离所述点光源的像素间距信息;根据所述第一目标深度图确定在所述点光源的当前辐射方向上的最小像素间距,并根据所述最小像素间距确定最大深度图;根据所述原始深度图和所述最大深度图,在所述辐射范围生成光照阴影。2.根据权利要求1所述的方法,其特征在于,所述获取原始深度图,包括:获取障碍物贴图和所述点光源的光源位置;所述障碍物贴图包括障碍物像素;计算所述障碍物像素距离所述光源位置的像素间距,采用所述障碍物像素距离所述光源位置的像素间距生成原始深度图。3.根据权利要求2所述的方法,其特征在于,所述计算所述障碍物像素距离所述光源位置的像素间距,采用所述障碍物像素距离所述光源位置的像素间距生成原始深度图,包括:基于所述点光源的辐射范围从所述障碍物贴图中获取障碍物图;所述障碍物图包括障碍物区域的障碍物像素和无障碍物区域的非障碍物像素;计算所述障碍物图中障碍物像素和非障碍物像素距离所述光源位置的像素间距;采用所述障碍物像素和所述非障碍物像素距离所述光源位置的像素间距生成原始深度图。4.根据权利要求3所述的方法,其特征在于,所述障碍区域具有第一标识,所述无障碍物区域具有第二标识;所述计算所述障碍物图中障碍物像素和非障碍物像素距离所述光源位置的像素间距,包括:基于第一标识获取所述障碍物区域的障碍物像素,并计算所述障碍物像素距离所述光源位置的像素间距;基于第二标识获取所述无障碍物区域的非障碍物像素,将预设第一像素间距作为所述非障碍物像素距离所述光源位置的像素间距。5.根据权利要求3或4所述的方法,其特征在于,在所述计算所述障碍物图中障碍物像素和非障碍物像素距离所述光源位置的像素间距之前,还包括:将所述障碍物图输入至预设着色器中,所述预设着色器用于计算所述障碍物图中障碍物像素和非障碍物像素距离所述光源位置的像素间距。6.根据权利要求1所述的方法,其特征在于,所述原始深度图中辐射范围相应区域内包含的片元用于存储不同点光源的辐射方向上各个像素距离所述点光源的像素间距;所述基于所述原始深度图得到第一目标深度图,包括:将所述原始深度图的辐射范围相应区域进行若干次预设处理操作,得到若干个重叠区域;其中,所述点光源的辐射方向在所述若干个重叠区域中保持平行,所述预设处理操作包括至少一项:分割、拉伸以及折叠操作;获取所述若干个重叠区域中障碍物像素和非障碍物像素在同一点光源的辐射方向上距离所述点光源的像素间距信息,基于所述若干个重叠区域以及所述重叠区域携带的像素间距信息生成所述第一目标深度图。
7.根据权利要求1或6所述的方法,其特征在于,所述根据所述第一目标深度图确定在所述点光源的当前辐射方向上的最小像素间距,并根据所述最小像素间距确定最大深度图,包括:对所述第一目标深度图内包含的片元所存储的重叠的障碍物像素在同一点光源的辐射方向上距离所述点光源的像素间距进行深度比对,确定在所述点光源的当前辐射方向上的最小像素间距;将所述最小像素间距存储在所述第一目标深度图中与重叠的障碍物像素的相应片元中,得到第二目标深度图;将所述第二目标深度图进行与预设处理操作逆向的处理操作,还原得到最大深度图;其中,所述最大深度图中任一片元记录从点光源的光源位置到像素位置的辐射方向上距离所述点光源的最小像素间距。8.根据权利要求1所述的方法,其特征在于,所述根据所述原始深度图和所述最大深度图,在所述辐射范围生成光照阴影,包括:将所述原始深度图中像素间距信息高于所述最大深度图中最小像素间距的第一目标片元所组成的区域,判定为阴影区域;在所述原始深度图的辐射范围对所述阴影区域生成光照阴影。9.根据权利要求8所述的方法,其特征在于,所述在所述辐射范围生成光照阴影,还包括:将所述原始深度图中像素间距信息大于预设像素间距且小于所述最小像素间距的第二目标片元所组成的区域,判定为半影区域;其中,所述预设像素间距的值为所述最小像素间距的值的预设比例;对所述半影区域生成软阴影。10.一种点光源的光照阴影生成装置,其特征在于,所述装置包括:原始深度图获取模块,用于获取原始深度图;所述原始深度图包括以点光源为中心,以所述点光源的辐射长度为半径的辐射范围;目标深度图生成模块,用于基于所述原始深度图得到第一目标深度图;所述第一目标深度图内包含的片元用于存储重叠的障碍物像素在同一点光源的辐射方向上距离所述点光源的像素间距信息;最大深度图生成模块,用于根据所述第一目标深度图确定在所述点光源的当前辐射方向上的最小像素间距,并根据所述最小像素间距确定最大深度图;光照阴影生成模块,用于根据所述原始深度图和所述最大深度图,在所述辐射范围生成光照阴影。11.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至9中任一项所述点光源的光照阴影生成方法。12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述点光源的光照阴影生成方法。

技术总结
本发明实施例提供了点光源的光照阴影生成方法、装置、电子设备及存储介质,所述方法包括:获取原始深度图;基于原始深度图得到第一目标深度图;根据第一目标深度图确定在点光源的当前辐射方向上的最小像素间距,并根据最小像素间距确定最大深度图;根据原始深度图和最大深度图,在辐射范围生成光照阴影。在基于深度图的阴影生成方式中,通过采用深度图中的片元确定在点光源的当前辐射方向上的最小像素间距,从而生成最大深度图以作用于原始深度图实现光照阴影的生成,其对于片元的使用使得该阴影生成方式在任何情况下,不受障碍物数量以及形状的影响,能够适配所有形状障碍物的点光源阴影。源阴影。源阴影。


技术研发人员:伍子鸣 张光俊
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2023.07.05
技术公布日:2023/10/7
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐