一种阴影渲染方法、装置、设备及存储介质与流程
未命名
08-15
阅读:208
评论:0
1.本公开涉及计算机图形技术领域,具体而言,涉及一种阴影渲染方法、装置、设备及存储介质。
背景技术:
2.光线在传播过程中被不透明的物体遮挡时,在遮挡物体背面形成暗区,暗区投射到另一物体上即形成阴影,阴影可以体现出场景中各物体之间的空间关系以及光源的位置等信息,在三维场景渲染应用中,为了增加渲染的逼真效果,提升场景的层次感,通常都会使用阴影渲染技术来为场景中的物体绘制阴影。
3.在进行阴影渲染时,通常将各像素点在阴影空间下的深度和在光源空间下的深度进行比对,得到像素点对应的阴影信息,然而,上述方式只能确定出被遮挡的物体,针对物体不同表面的遮挡情况区分度低,从而影响阴影渲染的准确性。
技术实现要素:
4.本公开实施例至少提供一种阴影渲染方法、装置、设备及存储介质。
5.本公开实施例提供了一种阴影渲染方法,所述方法包括:
6.获取渲染图像、与所述渲染图像对应的深度贴图以及与所述渲染图像对应的阴影贴图;所述渲染图像通过对目标场景进行颜色渲染得到,所述阴影贴图中的各个像素点的阴影信息通过将每个像素点在阴影空间下的深度和在光源空间下的深度进行比对得到;
7.基于所述阴影贴图中每个像素点对应的阴影信息,从所述渲染图像中确定多个第一像素点,所述第一像素点是指阴影信息指示需要进行阴影渲染的像素点;
8.基于所述深度贴图确定每个所述第一像素点对应的深度信息,并基于每个所述第一像素点对应的深度信息,确定每个所述第一像素点的法线方向;
9.获取所述目标场景中的光照方向,基于每个所述第一像素点的法线方向以及所述光照方向,从所述多个第一像素点中确定目标像素点,其中,所述目标像素点为所述多个第一像素点中不需要进行阴影渲染的像素点;
10.对所述阴影贴图中所述目标像素点对应的阴影信息进行调整,得到调整后的阴影贴图,并基于所述调整后的阴影贴图对所述渲染图像进行阴影渲染,得到绘制有阴影的目标图像。
11.本公开实施例中,在使用阴影贴图对渲染图像进行阴影渲染之前,先根据阴影贴图中每个像素点对应的阴影信息,从渲染图像中确定阴影信息指示需要进行阴影渲染的多个第一像素点,并基于深度信息确定每个第一像素点的法线方向,从而可以通过第一像素点的法线方向和目标场景中的光照方向对第一像素点是否需要进行阴影渲染进行判断,筛选出不需要进行阴影渲染的目标像素点,进而将阴影贴图中目标像素点原本对应的指示为需要进行阴影渲染的阴影信息进行调整,得到调整后的阴影贴图,并基于调整后的阴影贴图对渲染图像进行阴影渲染,得到绘制有阴影的目标图像,从而可以筛选出虽然处于其他
物体的遮挡范围内,但是并不需要进行阴影渲染的目标像素点,并对目标像素点的阴影信息进行调整,有助于提升阴影渲染的准确性和真实性,提升目标场景的层次感。
12.一种可选的实施方式中,所述对所述阴影贴图中所述目标像素点对应的阴影信息进行调整,得到调整后的阴影贴图,包括:
13.将所述阴影贴图中所述目标像素点对应的原本指示需要进行阴影渲染的阴影信息调整为指示不需要进行阴影渲染的阴影信息,得到调整后的阴影贴图。
14.本公开实施例中,可以针对虽然处于其他物体的遮挡范围内,但是并不需要进行阴影渲染的目标像素点,将其原本需要进行阴影渲染的阴影信息调整为不需要进行阴影渲染的阴影信息,从而有助于提升阴影渲染的准确性和真实性。
15.一种可选的实施方式中,所述基于每个所述第一像素点对应的深度信息,确定每个所述第一像素点的法线方向,包括:
16.针对每个所述第一像素点,获取所述第一像素点在屏幕空间下的二维坐标;
17.基于所述第一像素点对应的深度信息,将所述第一像素点的二维坐标转换到世界空间下,得到所述第一像素点在所述世界空间下的三维坐标;
18.基于所述第一像素点在所述世界空间下的三维坐标,确定所述第一像素点的法线方向。
19.本公开实施例中,可以将第一像素点在屏幕空间下的二维坐标转换为世界空间下的三维坐标,通过坐标的转换,实现使用深度信息反算法线,从而可以在不引入额外的渲染纹理的情况下,得到第一像素点的法线信息,从而有助于消减调制阴影。
20.一种可选的实施方式中,所述基于所述第一像素点在所述世界空间下的三维坐标,确定所述第一像素点的法线方向,包括:
21.确定所述第一像素点在所述世界空间下的三维坐标的偏导数,得到偏导结果,并基于所述偏导结果,确定所述第一像素点的法线方向。
22.本公开实施例中,可以直接通过偏导数来得到第一像素点的法线方向,有效提升确定法线方向的速度和效率,从而有助于消减调制阴影。
23.一种可选的实施方式中,所述基于每个所述第一像素点的法线方向以及所述光照方向,从所述多个第一像素点中确定目标像素点,包括:
24.针对每个所述第一像素点,在所述法线方向与所述光照方向相同的情况下,将该第一像素点确定为所述目标像素点。
25.本公开实施例中,若法线方向和光照方向相同,说明该第一像素点位于物体的背光面,而处于背光面的像素点不受阴影影响,因此该第一像素点无需进行阴影渲染,从而可以确定出不需要进行阴影渲染的目标像素点。
26.一种可选的实施方式中,所述基于每个所述第一像素点的法线方向以及所述光照方向,从所述多个第一像素点中确定目标像素点,包括:
27.针对每个所述第一像素点,在所述第一像素点的法线方向与所述第一像素点对应的拍摄方向符合预设条件的情况下,将所述第一像素点确定为第二像素点;
28.在所述第二像素点的法线方向与所述光照方向相同的情况下,将所述第二像素点确定为所述目标像素点。
29.本公开实施例中,可以将第一像素点的法线方向与第一像素点对应的拍摄方向进
行比较,从多个第一像素点中筛选出第二像素点,再对第二像素点进行目标像素点的判定,降低在深度跳变的情况下,错误的法线信息对目标像素点筛选造成的影响,从而有助于减小屏幕空间法线误差的影响,提升阴影渲染的准确性。
30.一种可选的实施方式中,在所述第一像素点的法线方向与所述第一像素点对应的拍摄方向之间的夹角呈钝角的情况下,确定所述第一像素点的法线方向与所述第一像素点对应的拍摄方向符合预设条件。
31.本公开实施例中,可以通过第一像素点的法线方向和对应的拍摄方向之间的夹角,确定出渲染贴图中不位于深度跳变区域的第二像素点,从而减少存在深度跳变的物体边缘处被误消除阴影的情况,有助于提升阴影渲染的准确性。
32.本公开实施例还提供一种阴影渲染装置,所述装置包括:
33.数据获取模块,用于获取渲染图像、与所述渲染图像对应的深度贴图以及与所述渲染图像对应的阴影贴图;所述渲染图像为通过对目标场景进行颜色渲染得到,所述阴影贴图中的各个像素点的阴影信息通过将每个像素点在阴影空间下的深度和在光源空间下的深度进行比对得到;
34.像素筛选模块,用于基于所述阴影贴图中每个像素点对应的阴影信息,从所述渲染图像中确定多个第一像素点,所述第一像素点是指阴影信息指示需要进行阴影渲染的像素点;
35.法线确定模块,用于基于所述深度贴图确定每个所述第一像素点对应的深度信息,并基于每个所述第一像素点对应的深度信息,确定每个所述第一像素点的法线方向;
36.阴影检测模块,用于获取所述目标场景中的光照方向,基于每个所述第一像素点的法线方向以及所述光照方向,从所述多个第一像素点中确定目标像素点,其中,所述目标像素点为所述多个第一像素点中不需要进行阴影渲染的像素点;
37.阴影渲染模块,用于对所述阴影贴图中所述目标像素点对应的阴影信息进行调整,得到调整后的阴影贴图,并基于所述调整后的阴影贴图对所述渲染图像进行阴影渲染,得到绘制有阴影的目标图像。
38.一种可选的实施方式中,所述阴影渲染模块具体用于:
39.将所述阴影贴图中所述目标像素点对应的原本指示需要进行阴影渲染的阴影信息调整为指示不需要进行阴影渲染的阴影信息,得到调整后的阴影贴图。
40.一种可选的实施方式中,所述法线确定模块具体用于:
41.针对每个所述第一像素点,获取所述第一像素点在屏幕空间下的二维坐标;
42.基于所述第一像素点对应的深度信息,将所述第一像素点的二维坐标转换到世界空间下,得到所述第一像素点在所述世界空间下的三维坐标;
43.基于所述第一像素点在所述世界空间下的三维坐标,确定所述第一像素点的法线方向。
44.一种可选的实施方式中,所述法线确定模块具体用于:
45.确定所述第一像素点在所述世界空间下的三维坐标的偏导数,得到偏导结果,并基于所述偏导结果,确定所述第一像素点的法线方向。
46.一种可选的实施方式中,所述阴影检测模块具体用于:
47.针对每个所述第一像素点,在所述法线方向与所述光照方向相同的情况下,将该
第一像素点确定为所述目标像素点。
48.一种可选的实施方式中,所述阴影检测模块具体用于:
49.针对每个所述第一像素点,在所述第一像素点的法线方向与所述第一像素点对应的拍摄方向符合预设条件的情况下,将所述第一像素点确定为第二像素点;
50.在所述第二像素点的法线方向与所述光照方向相同的情况下,将所述第二像素点确定为所述目标像素点。
51.一种可选的实施方式中,在所述第一像素点的法线方向与所述第一像素点对应的拍摄方向之间的夹角呈钝角的情况下,确定所述第一像素点的法线方向与所述第一像素点对应的拍摄方向符合预设条件。
52.本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述任一种可能的阴影渲染方法的步骤。
53.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述任一种可能的阴影渲染方法的步骤。
54.关于上述阴影渲染装置、电子设备及计算机可读存储介质的效果描述参见上述阴影渲染方法的说明,这里不再赘述。
55.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
56.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
57.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
58.图1示出了传统的阴影渲染结果的示意图;
59.图2示出了本公开一些实施例所提供的阴影渲染方法的流程图;
60.图3示出了本公开一些实施例所提供的阴影渲染结果的示意图之一;
61.图4示出了本公开一些实施例所提供的阴影渲染结果的示意图之二;
62.图5示出了本公开一些实施例所提供的符合预设条件的示意图;
63.图6示出了本公开一些实施例所提供的第二像素点的示意图;
64.图7示出了本公开一些实施例所提供的阴影渲染结果的示意图之三;
65.图8示出了本公开一些实施例所提供的阴影渲染装置的示意图;
66.图9示出了本公开一些实施例所提供的电子设备的结构示意图。
具体实施方式
67.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
68.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
69.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
70.经研究发现,在进行阴影渲染时,通常将各像素点在阴影空间下的深度和在光源空间下的深度进行比对,得到像素点对应的阴影信息,然而,上述方式只能确定出被遮挡的物体,无法针对物体的不同表面进行区分。
71.具体地,参见图1,图1为传统的阴影渲染结果的示意图。如图1中所示,目标场景下设置有物体10、物体20和物体30,可以看到,光线在照射至物体30表面的过程中被物体10和物体20遮挡,从而在物体30表面形成阴影,这里,物体30的背光面也被绘制有阴影(301所指区域和302所指区域),可见,通过深度比对的方式确定出的阴影信息,无法针对物体的背光面进行区分,使得阴影信息指示物体30的背光面也被绘制有阴影,然而,根据阴影形成效果可以知道,物体的背光面不会形成阴影,因此传统的阴影渲染方式极大的影响阴影渲染的准确性和真实性。
72.基于上述研究,本公开提供了一种阴影渲染方法,可以在使用阴影贴图对渲染图像进行阴影渲染之前,先根据阴影贴图中每个像素点对应的阴影信息,从渲染图像中确定阴影信息指示需要进行阴影渲染的多个第一像素点,并基于深度信息确定每个第一像素点的法线方向,从而可以通过第一像素点的法线方向和目标场景中的光照方向对第一像素点是否需要进行阴影渲染进行判断,筛选出不需要进行阴影渲染的目标像素点,进而将阴影贴图中目标像素点原本对应的指示为需要进行阴影渲染的阴影信息进行调整,得到调整后的阴影贴图,并基于调整后的阴影贴图对渲染图像进行阴影渲染,得到绘制有阴影的目标图像,从而可以筛选出虽然处于其他物体的遮挡范围内,但是并不需要进行阴影渲染的目标像素点,并对目标像素点的阴影信息进行调整,有助于提升阴影渲染的准确性和真实性,提升目标场景的层次感。
73.为便于对本实施例进行理解,首先对本公开实施例所公开的一种阴影渲染方法进行详细介绍,本公开实施例所提供的阴影渲染方法的执行主体一般为具有一定计算能力的电子设备,该电子设备可以为服务器。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云存储、大数据和人工智能平台等基础云计算服务的云服务器。
74.其他实施方式中,该电子设备还可以为终端设备或其它处理设备,终端设备可以为移动设备、终端、计算设备等,其它处理设备可以是包括处理器和存储器的设备,在此不做限定。在一些可能的实现方式中,该阴影渲染方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
75.下面对本公开实施例提供的一种阴影渲染方法加以说明。
76.参见图2所示,图2为本公开一些实施例提供的阴影渲染方法的流程图。如图2中所示,本公开实施例提供的阴影渲染方法包括步骤s201~s205,其中:
77.s201:获取渲染图像、与所述渲染图像对应的深度贴图以及与所述渲染图像对应的阴影贴图;所述渲染图像通过对目标场景进行颜色渲染得到,所述阴影贴图中的各个像素点的阴影信息通过将每个像素点在阴影空间下的深度和在光源空间下的深度进行比对得到。
78.这里,所述阴影贴图中包括各个像素点的阴影信息,每个所述像素点对应的阴影信息指示有该像素点是否需要进行阴影渲染。
79.具体的,在forward管线下的调制阴影的过程中,在basspass之前,会对目标场景下的投影物体绘制逐物体的深度信息,并保存每个物体的投影边界范围,在basspass之后,可以得到目标场景对应的颜色贴图和深度贴图,从而可以基于颜色贴图对目标场景进行颜色渲染,得到渲染图像,进而确定与渲染图像对应的深度贴图,对于目标场景下的每个物体,它的边界范围可以投影到屏幕空间,其覆盖的区域都是可能形成阴影的,对于被覆盖区域的像素点,都可以转换到光照空间下,利用光照空间采样阴影贴图得到第一深度,并且可以获取像素点在阴影空间下的第二深度,在第二深度大于第一深度的情况下,认为该像素点当前处于阴影内,从而可以将第二深度的数值与对应的颜色贴图下的颜色数值做乘法,得到表示阴影信息的阴影数值,从而生成渲染图像对应的阴影贴图。
80.s202:基于所述阴影贴图中每个像素点对应的阴影信息,从所述渲染图像中确定多个第一像素点,所述第一像素点是指阴影信息指示需要进行阴影渲染的像素点。
81.上述步骤中,由于阴影贴图中每个所述像素点对应的阴影信息指示有该像素点是否需要进行阴影渲染,因此可以从所述阴影贴图中确定出阴影信息指示需要进行阴影渲染的像素点,再结合所述渲染图像和所述阴影贴图的对应关系,可以从所述渲染图像中确定出多个第一像素点。
82.s203:基于所述深度贴图确定每个所述第一像素点对应的深度信息,并基于每个所述第一像素点对应的深度信息,确定每个所述第一像素点的法线方向。
83.针对物体表面的每一个点,只要能找到以它为端点,且在物体表面上的两条向量,就可以得到这个点的法线信息。通过渲染贴图可以确定各个所述第一像素点的在屏幕空间下的二维坐标,为了确定所述第一像素点的法线方向,需要对所述第一像素点进行坐标系转换,将所述第一像素点的二维坐标转换为世界空间下的三维坐标,进而确定所述第一像素点的法线方向。
84.具体的,在一些可能的实施方式中,针对每个所述第一像素点,获取所述第一像素点在屏幕空间下的二维坐标;基于所述第一像素点对应的深度信息,将所述第一像素点的二维坐标转换到世界空间下,得到所述第一像素点在所述世界空间下的三维坐标;基于所述第一像素点在所述世界空间下的三维坐标,确定所述第一像素点的法线方向。
85.这样,可以将第一像素点在屏幕空间下的二维坐标转换为世界空间下的三维坐标,通过坐标的转换,实现使用深度信息反算法线,从而可以在不引入额外的渲染纹理的情况下,得到第一像素点的法线信息,从而有助于消减调制阴影。
86.其中,在获取所述第一像素点在屏幕空间下的二维坐标后,可以将该二维坐标和所述第一像素点对应的深度信息组成三维向量,从而可以变换得到所述第一像素点在所述世界空间下的三维坐标。
87.可选地,在获取所述第一像素点在屏幕空间下的二维坐标后,还可以将将所述第一像素点的二维坐标转换到光照空间下,得到所述第一像素点在所述光照空间下的三维坐标,进而基于所述第一像素点在所述光照空间下的三维坐标,确定所述第一像素点的法线方向。
88.像素点的偏导数可以表示该像素点的邻近点在单位距离内相对于该像素点的变化,为了快速确定所述第一像素点的法线方向,在一些可能的实施方式中,可以确定所述第一像素点在所述世界空间下的三维坐标的偏导数,得到偏导结果,并基于所述偏导结果,确定所述第一像素点的法线方向。
89.这样,可以直接通过偏导数来得到第一像素点的法线方向,有效提升确定法线方向的速度和效率,从而有助于消减调制阴影。
90.具体的,可以确定所述第一像素点在所述世界空间下的三维坐标在所述世界空间下横轴方向上的第一偏导结果,以及在所述世界空间下纵轴方向上的第二偏导结果,进而基于所述第一偏导结果和所述第二偏导结果,确定所述第一像素的法线方向。
91.其中,所述第一偏导结果和所述第二偏导结果可以表示以所述第一像素点为端点,且在所述第一像素点所在的物体表面上的两条向量。
92.所述第一像素点的法线必然垂直于该物体表面,两个向量的叉积可以得到垂直于两向量的第三向量,因此,可以确定所述第一偏导结果和所述第二偏导结果的叉积,该叉积可以表示所述第一像素点的法向向量,从而可以确定所述第一像素的法线方向。
93.在上述实施方式中,在确定所述第一像素点在所述光照空间下的三维坐标后,是通过对所述第一像素点进行偏导数求取的方式来反算出所述第一像素点的法线方向,在其他实施方式中,还可以是确定在所述世界空间下横轴方向上与所述第一像素点相邻的第一相邻点在所述世界空间下的三维坐标,同时确定在所述世界空间下纵轴方向上与所述第一像素点相邻的第二相邻点在所述世界空间下的三维坐标,进而分别确定所述第一相邻点与所述第一像素点的第一坐标差、以及所述第二相邻点与所述第一像素点的第二坐标差,这里,所述第一坐标差与所述第一偏导结果同向,所述第二坐标差与所述第二偏导结果同向,进而可以基于所述第一坐标差和所述第二坐标差,确定所述第一像素的法线方向,具体的,可以确定所述第一坐标差和所述第二坐标差的叉积,该叉积可以表示所述第一像素点的法向向量,从而可以确定所述第一像素的法线方向。
94.其中,所述第一相邻点在所述世界空间下的三维坐标以及所述第二相邻点在所述世界空间下的三维坐标的确定过程与前述第一像素点在所述光照空间下的三维坐标的确定过程相似,在此不再赘述。
95.s204:获取所述目标场景中的光照方向,基于每个所述第一像素点的法线方向以及所述光照方向,从所述多个第一像素点中确定目标像素点,其中,所述目标像素点为所述
多个第一像素点中不需要进行阴影渲染的像素点。
96.其中,所述光照方向可以采用平行光光照方向,以此提升对于目标像素点判别的准确性。
97.在一些可能的实施方式中,针对每个所述第一像素点,在所述法线方向与所述光照方向相同的情况下,将该第一像素点确定为所述目标像素点。
98.上述步骤中,若法线方向和光照方向相同,说明该第一像素点位于物体的背光面,而处于背光面的第一像素点不受阴影影响,因此该第一像素点无需进行阴影渲染,从而可以将该第一像素点确定为不需要进行阴影渲染的目标像素点。
99.s205:对所述阴影贴图中所述目标像素点对应的阴影信息进行调整,得到调整后的阴影贴图,并基于所述调整后的阴影贴图对所述渲染图像进行阴影渲染,得到绘制有阴影的目标图像。
100.相应的,在一些可能的实施方式中,可以将所述阴影贴图中所述目标像素点对应的原本指示需要进行阴影渲染的阴影信息调整为指示不需要进行阴影渲染的阴影信息,得到调整后的阴影贴图,进而基于所述调整后的阴影贴图对所述渲染图像进行阴影渲染,得到绘制有阴影的目标图像,这样可以针对虽然处于其他物体的遮挡范围内,但是并不需要进行阴影渲染的目标像素点,将其原本需要进行阴影渲染的阴影信息调整为不需要进行阴影渲染的阴影信息,从而使得渲染图像中位于物体背光面的像素点不会被绘制阴影,有助于提升阴影渲染的准确性和真实性。
101.示例性的,请参阅图3,图3为本公开一些实施例提供的阴影渲染结果的示意图之一,如图3中所示,通过本公开实施例的阴影渲染方法的实施,与图1相比,物体30的背光面(301所指区域和302所指区域)不再绘制有阴影,有效提升阴影渲染的准确性和真实性,提升目标场景的层次感。
102.在一些可能的实施方式中,如图4所示,由于在物体边缘(41、42所指的边),深度可能会发生跳变,导致通过深度信息确定出的法线信息可能会存在偏差,进而导致对原本需要进行阴影渲染的像素点进行了调整,导致阴影误调整,使得人物和地面的交界处(41、42所指的边)被错误的消除了阴影。
103.为了减小法线误差带来的影响,在一些可能的实施方式中,针对每个所述第一像素点,在所述第一像素点的法线方向与所述第一像素点对应的拍摄方向符合预设条件的情况下,将所述第一像素点确定为第二像素点;在所述第二像素点的法线方向与所述光照方向相同的情况下,将所述第二像素点确定为所述目标像素点。
104.这样,可以将第一像素点的法线方向与第一像素点对应的拍摄方向进行比较,从多个第一像素点中筛选出第二像素点,再对第二像素点进行目标像素点的判定,降低在深度跳变的情况下,错误的法线信息对目标像素点筛选造成的影响,从而有助于减小屏幕空间法线误差的影响,提升阴影渲染的准确性。
105.上述步骤中,通过所述预设条件的限定,从所述多个第一像素点中筛选出符合所述预设条件的第二像素点,进而再针对第二像素点进行法线方向和光照方向的比较。如此,可以将可能存在法线误差的像素点排除掉,只保留位于物体边缘以外的第二像素点,进而根据所述第二像素点的法线方向与所述光照方向,对所述第二像素点进行是否需要进行阴影渲染的判断。
106.其中,所述第一像素点对应的拍摄方向是指目标场景下以摄像机所在位置为起点,以所述第一像素点为终点的连线方向。
107.在一些可能的实施方式中,在所述第一像素点的法线方向与所述第一像素点对应的拍摄方向之间的夹角呈钝角的情况下,确定所述第一像素点的法线方向与所述第一像素点对应的拍摄方向符合预设条件。
108.这样,可以通过第一像素点的法线方向和对应的拍摄方向之间的夹角,确定出渲染贴图中不位于深度跳变区域的第二像素点,从而减少存在深度跳变的物体边缘处被误消除阴影的情况,有助于提升阴影渲染的准确性。
109.针对位于深度突变位置的像素点,其法线方向与对应的拍摄方向之间的夹角都为锐角或直角,因此,为了减低法线误差带来的影响,需要从多个第一像素点中筛选出法线方向与对应的拍摄方向之间的夹角呈钝角的第一像素点,将这种第一像素点确定为符合所述预设条件的第二像素点。
110.两个向量的点积与它们夹角的余弦成正比,因此,在一些可能的实施方式中,可以对所述第一像素点的法线向量和所述第一像素点对应的连线向量进行点积求取,这里,所述连线向量为以摄像机所在位置为起点、以所述第一像素点为终点的连线向量,进而根据点积结果,可以确定所述第一像素点的法线方向与所述第一像素点对应的拍摄方向之间的夹角。
111.具体的,点积如果为负,则两个向量形成的夹角为钝角;点积如果为零,那么两个向量垂直;点积如果为正,那么两个向量形成的夹角为锐角。这里,可以同时参阅图5,如图5中所示,为所述目标场景下的视锥截面,点o为所述目标场景下的摄像机所在位置,物体a为视锥内的可见物体,点a1为物体a表面上的第一像素点,向量n为该第一像素点a1的法线向量,向量oa为以摄像机所在位置点o为起点、以第一像素点a1为终点的连线向量,此时可以计算向量oa和向量n的点积dot(oa,n),得到dot(oa,n)《0,这表示两个向量形成的夹角为钝角,因此第一像素点a1为符合所述预设条件的第二像素点。
112.同时参阅图6所示,如图6中所示,图像中60所示的黑线,是符合所述预设条件的像素点,这些像素点是渲染图像中不希望错误消除阴影的位置,也即第二像素点所在的位置。
113.如此,参见图7所示,通过本公开实施例的先从所述第一像素点中筛选出符合所述预设条件的所述第二像素点,在所述第二像素点的法线方向与所述光照方向相同的情况下,将所述第二像素点确定为所述目标像素点的方法的实施,与图4相比,人物和地面的交界处(71、72所指的边)已经没有被错误消除阴影的地方,从而减小法线误差带来的影响,有效提升阴影渲染的准确性和真实性,提升目标场景的层次感。
114.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
115.本公开实施例提供的阴影渲染方法,在使用阴影贴图对渲染图像进行阴影渲染之前,先根据阴影贴图中每个像素点对应的阴影信息,从渲染图像中确定阴影信息指示需要进行阴影渲染的多个第一像素点,并基于深度信息确定每个第一像素点的法线方向,从而可以通过第一像素点的法线方向和目标场景中的光照方向对第一像素点是否需要进行阴影渲染进行判断,筛选出不需要进行阴影渲染的目标像素点,进而将阴影贴图中目标像素
点原本对应的指示为需要进行阴影渲染的阴影信息进行调整,得到调整后的阴影贴图,并基于调整后的阴影贴图对渲染图像进行阴影渲染,得到绘制有阴影的目标图像,从而可以筛选出虽然处于其他物体的遮挡范围内,但是并不需要进行阴影渲染的目标像素点,并对目标像素点的阴影信息进行调整,有助于提升阴影渲染的准确性和真实性,提升目标场景的层次感。
116.基于同一发明构思,本公开实施例中还提供了与阴影渲染方法对应的阴影渲染装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述阴影渲染方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
117.请参阅图8,图8为本公开实施例提供的一种阴影渲染装置的示意图。如图8中所示,本公开实施例提供的阴影渲染装置800包括:
118.数据获取模块810,用于获取渲染图像、与所述渲染图像对应的深度贴图以及与所述渲染图像对应的阴影贴图;所述渲染图像为通过对目标场景进行颜色渲染得到,所述阴影贴图中的各个像素点的阴影信息通过将每个像素点在阴影空间下的深度和在光源空间下的深度进行比对得到;
119.像素筛选模块820,用于基于所述阴影贴图中每个像素点对应的阴影信息,从所述渲染图像中确定多个第一像素点,所述第一像素点是指阴影信息指示需要进行阴影渲染的像素点;
120.法线确定模块830,用于基于所述深度贴图确定每个所述第一像素点对应的深度信息,并基于每个所述第一像素点对应的深度信息,确定每个所述第一像素点的法线方向;
121.阴影检测模块840,用于获取所述目标场景中的光照方向,基于每个所述第一像素点的法线方向以及所述光照方向,从所述多个第一像素点中确定目标像素点,其中,所述目标像素点为所述多个第一像素点中不需要进行阴影渲染的像素点;
122.阴影渲染模块850,用于对所述阴影贴图中所述目标像素点对应的阴影信息进行调整,得到调整后的阴影贴图,并基于所述调整后的阴影贴图对所述渲染图像进行阴影渲染,得到绘制有阴影的目标图像。
123.一种可选的实施方式中,所述阴影渲染模块850具体用于:
124.将所述阴影贴图中所述目标像素点对应的原本指示需要进行阴影渲染的阴影信息调整为指示不需要进行阴影渲染的阴影信息,得到调整后的阴影贴图。
125.一种可选的实施方式中,所述法线确定模块830具体用于:
126.针对每个所述第一像素点,获取所述第一像素点在屏幕空间下的二维坐标;
127.基于所述第一像素点对应的深度信息,将所述第一像素点的二维坐标转换到世界空间下,得到所述第一像素点在所述世界空间下的三维坐标;
128.基于所述第一像素点在所述世界空间下的三维坐标,确定所述第一像素点的法线方向。
129.一种可选的实施方式中,所述法线确定模块830具体用于:
130.确定所述第一像素点在所述世界空间下的三维坐标的偏导数,得到偏导结果,并基于所述偏导结果,确定所述第一像素点的法线方向。
131.一种可选的实施方式中,所述阴影检测模块840具体用于:
132.针对每个所述第一像素点,在所述法线方向与所述光照方向相同的情况下,将该
第一像素点确定为所述目标像素点。
133.一种可选的实施方式中,所述阴影检测模块840具体用于:
134.针对每个所述第一像素点,在所述第一像素点的法线方向与所述第一像素点对应的拍摄方向符合预设条件的情况下,将所述第一像素点确定为第二像素点;
135.在所述第二像素点的法线方向与所述光照方向相同的情况下,将所述第二像素点确定为所述目标像素点。
136.一种可选的实施方式中,在所述第一像素点的法线方向与所述第一像素点对应的拍摄方向之间的夹角呈钝角的情况下,确定所述第一像素点的法线方向与所述第一像素点对应的拍摄方向符合预设条件。
137.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
138.本公开实施例提供的阴影渲染装置,在使用阴影贴图对渲染图像进行阴影渲染之前,先根据阴影贴图中每个像素点对应的阴影信息,从渲染图像中确定阴影信息指示需要进行阴影渲染的多个第一像素点,并基于深度信息确定每个第一像素点的法线方向,从而可以通过第一像素点的法线方向和目标场景中的光照方向对第一像素点是否需要进行阴影渲染进行判断,筛选出不需要进行阴影渲染的目标像素点,进而将阴影贴图中目标像素点原本对应的指示为需要进行阴影渲染的阴影信息进行调整,得到调整后的阴影贴图,并基于调整后的阴影贴图对渲染图像进行阴影渲染,得到绘制有阴影的目标图像,从而可以筛选出虽然处于其他物体额遮挡范围内,但是并不需要进行阴影渲染的目标像素点,并对目标像素点的阴影信息进行调整,有助于提升阴影渲染的准确性和真实性,提升目标场景的层次感。
139.对应于图2中的阴影渲染方法,本公开实施例还提供了一种电子设备900,如图9所示,为本公开实施例提供的电子设备900的结构示意图,包括:
140.处理器910、存储器920、和总线930。其中,存储器920用于存储执行指令,包括内存921和外部存储器922;这里的内存921也称内存储器,用于暂时存放处理器910中的运算数据,以及与硬盘等外部存储器922交换的数据,处理器910通过内存921与外部存储器922进行数据交换。
141.本技术实施例中,存储器920具体用于存储执行本技术方案的应用程序代码,并由处理器910来控制执行。也即,当电子设备900运行时,处理器910与存储器920之间通过总线930通信,使得处理器910执行存储器920中存储的应用程序代码,进而执行前述任一实施例中所述的阴影渲染方法。
142.其中,存储器920可以是,但不限于,随机存取存储器(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)等。
143.处理器910可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成
电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
144.可以理解的是,本技术实施例示意的结构并不构成对电子设备900的具体限定。在本技术另一些实施例中,电子设备900可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
145.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的阴影渲染方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
146.本公开实施例还提供一种计算机程序产品,该计算机程序产品包括有计算机指令,所述计算机指令被处理器执行时可以执行上述方法实施例中所述的阴影渲染方法的步骤,具体可参见上述方法实施例,在此不再赘述。
147.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
148.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
149.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
150.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
151.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存
储程序代码的介质。
152.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
技术特征:
1.一种阴影渲染方法,其特征在于,所述方法包括:获取渲染图像、与所述渲染图像对应的深度贴图以及与所述渲染图像对应的阴影贴图;所述渲染图像通过对目标场景进行颜色渲染得到,所述阴影贴图中的各个像素点的阴影信息通过将每个像素点在阴影空间下的深度和在光源空间下的深度进行比对得到;基于所述阴影贴图中每个像素点对应的阴影信息,从所述渲染图像中确定多个第一像素点,所述第一像素点是指阴影信息指示需要进行阴影渲染的像素点;基于所述深度贴图确定每个所述第一像素点对应的深度信息,并基于每个所述第一像素点对应的深度信息,确定每个所述第一像素点的法线方向;获取所述目标场景中的光照方向,基于每个所述第一像素点的法线方向以及所述光照方向,从所述多个第一像素点中确定目标像素点,其中,所述目标像素点为所述多个第一像素点中不需要进行阴影渲染的像素点;对所述阴影贴图中所述目标像素点对应的阴影信息进行调整,得到调整后的阴影贴图,并基于所述调整后的阴影贴图对所述渲染图像进行阴影渲染,得到绘制有阴影的目标图像。2.根据权利要求1所述的方法,其特征在于,所述对所述阴影贴图中所述目标像素点对应的阴影信息进行调整,得到调整后的阴影贴图,包括:将所述阴影贴图中所述目标像素点对应的原本指示需要进行阴影渲染的阴影信息调整为指示不需要进行阴影渲染的阴影信息,得到调整后的阴影贴图。3.根据权利要求1所述的方法,其特征在于,所述基于每个所述第一像素点对应的深度信息,确定每个所述第一像素点的法线方向,包括:针对每个所述第一像素点,获取所述第一像素点在屏幕空间下的二维坐标;基于所述第一像素点对应的深度信息,将所述第一像素点的二维坐标转换到世界空间下,得到所述第一像素点在所述世界空间下的三维坐标;基于所述第一像素点在所述世界空间下的三维坐标,确定所述第一像素点的法线方向。4.根据权利要求3所述的方法,其特征在于,所述基于所述第一像素点在所述世界空间下的三维坐标,确定所述第一像素点的法线方向,包括:确定所述第一像素点在所述世界空间下的三维坐标的偏导数,得到偏导结果,并基于所述偏导结果,确定所述第一像素点的法线方向。5.根据权利要求1所述的方法,其特征在于,所述基于每个所述第一像素点的法线方向以及所述光照方向,从所述多个第一像素点中确定目标像素点,包括:针对每个所述第一像素点,在所述法线方向与所述光照方向相同的情况下,将该第一像素点确定为所述目标像素点。6.根据权利要求1所述的方法,其特征在于,所述基于每个所述第一像素点的法线方向以及所述光照方向,从所述多个第一像素点中确定目标像素点,包括:针对每个所述第一像素点,在所述第一像素点的法线方向与所述第一像素点对应的拍摄方向符合预设条件的情况下,将所述第一像素点确定为第二像素点;在所述第二像素点的法线方向与所述光照方向相同的情况下,将所述第二像素点确定为所述目标像素点。
7.根据权利要求6所述的方法,其特征在于,在所述第一像素点的法线方向与所述第一像素点对应的拍摄方向之间的夹角呈钝角的情况下,确定所述第一像素点的法线方向与所述第一像素点对应的拍摄方向符合预设条件。8.一种阴影渲染装置,其特征在于,所述装置包括:数据获取模块,用于获取渲染图像、与所述渲染图像对应的深度贴图以及与所述渲染图像对应的阴影贴图;所述渲染图像为通过对目标场景进行颜色渲染得到,所述阴影贴图中的各个像素点的阴影信息通过将每个像素点在阴影空间下的深度和在光源空间下的深度进行比对得到;像素筛选模块,用于基于所述阴影贴图中每个像素点对应的阴影信息,从所述渲染图像中确定多个第一像素点,所述第一像素点是指阴影信息指示需要进行阴影渲染的像素点;法线确定模块,用于基于所述深度贴图确定每个所述第一像素点对应的深度信息,并基于每个所述第一像素点对应的深度信息,确定每个所述第一像素点的法线方向;阴影检测模块,用于获取所述目标场景中的光照方向,基于每个所述第一像素点的法线方向以及所述光照方向,从所述多个第一像素点中确定目标像素点,其中,所述目标像素点为所述多个第一像素点中不需要进行阴影渲染的像素点;阴影渲染模块,用于对所述阴影贴图中所述目标像素点对应的阴影信息进行调整,得到调整后的阴影贴图,并基于所述调整后的阴影贴图对所述渲染图像进行阴影渲染,得到绘制有阴影的目标图像。9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至7中任一项所述的阴影渲染方法的步骤。10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7中任一项所述的阴影渲染方法的步骤。
技术总结
本公开提供了一种阴影渲染方法、装置、设备及存储介质,其中,该方法包括:获取渲染图像、与渲染图像对应的深度贴图以及与渲染图像对应的阴影贴图,基于阴影贴图中每个像素点对应的阴影信息,从渲染图像中确定阴影信息指示需要进行阴影渲染的多个第一像素点,基于深度贴图确定每个第一像素点对应的深度信息,并基于每个第一像素点对应的深度信息,确定每个第一像素点的法线方向,基于每个第一像素点的法线方向以及目标场景中的光照方向,从多个第一像素点中确定不需要进行阴影渲染的目标像素点,对阴影贴图中目标像素点对应的阴影信息进行调整,得到调整后的阴影贴图,并基于调整后的阴影贴图对渲染图像进行阴影渲染,得到绘制有阴影的目标图像。有阴影的目标图像。有阴影的目标图像。
技术研发人员:赵浏哲
受保护的技术使用者:北京字跳网络技术有限公司
技术研发日:2023.05.23
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种植物多肽载药体系及其制备方法 下一篇:一种WO3光催化制备铂黑的方法与流程
