首页> 中国专利> 阴影贴图的烘焙方法、装置、设备及计算机可读存储介质

阴影贴图的烘焙方法、装置、设备及计算机可读存储介质

摘要

本申请提供了一种阴影贴图的烘焙方法、装置、设备及计算机可读存储介质;该方法包括:获取虚拟场景中的至少一个物体信息、光源信息和第一分辨率;第一分辨率为指定的贴图分辨率;根据至少一个物体信息,确定出至少一个第二分辨率,第二分辨率表征依据虚拟场景中的物体信息计算出的贴图分辨率;基于光源信息、至少一个物体信息、第一分辨率和至少一个第二分辨率,计算出至少一个物体信息对应的至少一个距离场阴影数据;将至少一个距离场阴影数据存储到第一分辨率的贴图上,得到至少一个物体信息中的每个物体信息对应的距离场阴影贴图。通过本申请,能够提高阴影贴图烘焙的效率。

著录项

  • 公开/公告号CN112734900A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 腾讯科技(深圳)有限公司;

    申请/专利号CN202110104608.9

  • 发明设计人 徐华兵;曹舜;李元亨;魏楠;

    申请日2021-01-26

  • 分类号G06T15/60(20060101);

  • 代理机构11270 北京派特恩知识产权代理有限公司;

  • 代理人王花丽;张颖玲

  • 地址 518000 广东省深圳市南山区高新区科技中一路腾讯大厦35层

  • 入库时间 2023-06-19 10:48:02

说明书

技术领域

本申请涉及图形处理技术,尤其涉及一种阴影贴图的烘焙方法、装置、设备及计算机可读存储介质。

背景技术

阴影效果能够大幅度提升虚拟场景画面的层次,增强虚拟场景的真实感。阴影效果都是通过对应虚拟场景进行阴影渲染得到的。相关技术中,大多是先将阴影预先烘焙到贴图上,在后续直接利用该阴影贴图来进行渲染。在实际应用中,通常都是针对虚拟场景烘焙出距离场阴影贴图。然而,相关技术中的距离场阴影贴图方式的计算耗时较长,从而使得阴影贴图烘焙的效率较低。

发明内容

本申请实施例提供一种阴影贴图的烘焙方法、装置、设备及计算机可读存储介质,能够提高阴影贴图烘焙的效率。

本申请实施例的技术方案是这样实现的:

本申请实施例提供一种阴影贴图的烘焙方法,包括:

获取虚拟场景中的至少一个物体信息、光源信息和第一分辨率;所述第一分辨率为指定的贴图分辨率;

根据所述至少一个物体信息,确定出至少一个第二分辨率,第二分辨率表征依据所述虚拟场景中的物体信息计算出的贴图分辨率;

基于所述光源信息、所述至少一个物体信息、所述第一分辨率和所述至少一个第二分辨率,计算出所述至少一个物体信息对应的至少一个距离场阴影数据;

将所述至少一个距离场阴影数据存储到所述第一分辨率的贴图上,得到所述至少一个物体信息中的每个物体信息对应的距离场阴影贴图。

本申请实施例提供一种阴影贴图的烘焙装置,包括:。

信息获取模块,用于获取虚拟场景中的至少一个物体信息、光源信息和第一分辨率;所述第一分辨率为指定的贴图分辨率;

分辨率确定模块,用于根据所述至少一个物体信息,确定出至少一个第二分辨率,第二分辨率表征依据所述虚拟场景中的物体信息计算出的贴图分辨率;

数据计算模块,用于基于所述光源信息、所述至少一个物体信息、所述第一分辨率和所述至少一个第二分辨率,计算出所述至少一个物体信息对应的至少一个距离场阴影数据;

贴图生成模块,用于将所述至少一个距离场阴影数据存储到所述第一分辨率的贴图上,得到所述至少一个物体信息中的每个物体信息对应的距离场阴影贴图。

在本申请的一些实施例中,所述数据计算模块,还用于对所述至少一个第二分辨率分别和所述第一分辨率进行比值计算,得到至少一个超采样参数;超采样参数表征了所述第一分辨率和第二分辨率之间的转换关系;利用所述光源信息、所述至少一个物体信息和所述至少一个第二分辨率,确定出所述至少一个物体信息对应的至少一个阴影边缘;基于所述至少一个超采样参数,对所述第一分辨率的像素中心到所述至少一个阴影边缘的距离进行计算,得到所述至少一个距离场阴影数据。

在本申请的一些实施例中,所述光源信息包括多个子光源信息;所述数据计算模块,还用于针对所述至少一个物体信息中的每个物体信息,从所述多个子光源信息中,筛选出对应的匹配光源信息;所述匹配光源信息表征给物体造成光照或阴影影响的子光源的信息;从所述至少一个第二分辨率中挑选出所述每个物体信息对应的目标第二分辨率,并将所述每个物体信息在所述目标第二分辨率下光栅化,得到所述每个物体信息的光栅化像素;依据所述光栅化像素对应的纹素的位置和所述匹配光源信息,在同一时刻提取所述每个物体信息对应的阴影边缘;所述纹素的位置是对所述每个物体信息进行纹理坐标展开得到的;当对所述至少一个物体信息均完成阴影边缘的提取时,得到所述至少一个物体信息对应的所述至少一个阴影边缘。

在本申请的一些实施例中,所述数据计算模块,还用于依据所述匹配光源信息和所述纹素的位置,在同一时刻对所述每个物体信息的光栅化像素所对应的纹素进行阴影覆盖判断,得到阴影覆盖信息;所述阴影覆盖信息表征所述纹素是否处于阴影之中;利用所述阴影覆盖信息,分别提取出所述每个物体信息对应的阴影边缘。

在本申请的一些实施例中,所述数据计算模块,还用于基于所述至少一个超采样参数,在同一时刻对第一分辨率的像素中心到所述至少一个阴影边缘中的每个阴影边缘的距离进行计算,得到所述每个阴影边缘对应的距离场阴影数据;当对所述至少一个阴影边缘均完成距离场阴影数据的计算时,得到所述至少一个距离场阴影数据。

在本申请的一些实施例中,所述数据计算模块,还用于从所述至少一个超采样参数中,提取出所述每个阴影边缘对应的目标超采样参数;在同一时刻,基于所述每个阴影边缘对应的目标超采样参数,计算所述第一分辨率的像素中心到所述每个阴影边缘的最小距离;将所述最小距离,作为所述每个阴影边缘对应的距离场阴影数据。

在本申请的一些实施例中,所述数据计算模块,还用于按照所述目标超采样系数,对所述第一分辨率的像素进行分块,得到至少一个子像素块;针对所述至少一个子像素块到当前阴影边缘的距离进行并行计算,得到所述至少一个子像素块对应的至少一个阴影距离;所述当前阴影边缘为所述至少一个阴影边缘中的任意一个;从所述至少一个子像素块对应的所述至少一个阴影距离中,挑选出最小的阴影距离,作为所述第一分辨率的像素中心到所述当前阴影边缘的所述最小距离;当针对所述每个阴影边缘均确定出最小距离时,得到所述第一分辨率的像素中心到所述每个阴影边缘的最小距离。

在本申请的一些实施例中,所述数据计算模块,还用于依据所述第一分辨率的像素,从所述第二分辨率的各个像素中,提取出所述至少一个子像素块中的每个子像素块对应的多个匹配像素;从所述多个匹配像素中,筛选出属于所述当前阴影边缘的阴影像素;分别对所述每个子像素块到所述阴影像素的距离进行计算,得到所述每个子像素块对应的阴影距离;当对所述至少一个子像素块均完成阴影距离的计算时,得到所述至少一个阴影距离。

在本申请的一些实施例中,所述数据计算模块,还用于针对所述第一分辨率的像素,挑选出相邻像素;从所述第二分辨率的各个像素中,提取出与所述相邻像素所对应的像素集合;将所述像素集合中,处于与所述每个子像素块在所述第一分辨率的像素相同位置的像素进行提取,得到所述每个子像素块对应的多个匹配像素。

在本申请的一些实施例中,所述第一分辨率包括多个第一子分辨率;所述阴影贴图的烘焙装置还包括:信息分类模块;

所述信息分类模块,用于利用所述多个第一子分辨率和所述至少一个第二分辨率,对所述至少一个物体信息分类,得到多个物体信息集合;

所述数据计算模块,还用于基于所述光源信息、每个物体信息集合中的物体信息、所述每个物体信息集合对应的第一子分辨率和所述每个物体信息集合中的各个物体信息对应的第二分辨率,在同一时刻对所述每个物体信息集合中的物体信息进行距离场阴影数据的计算,得到所述每个物体信息集合对应的距离场阴影数据集合;利用所述每个物体信息集合对应的距离场阴影数据集合中的距离场阴影数据,组成所述至少一个物体信息对应的所述至少一个距离场阴影数据。

在本申请的一些实施例中,所述数据计算模块,还用于利用所述多个第一子分辨率,对所述至少一个物体信息进行分类,得到多个初始物体信息集合;将当前初始物体信息集合中的各个物体信息对应的各个第二分辨率,与所述当前初始物体信息集合对应的第一分辨率相比,得到所述各个物体信息对应的分类系数;所述当前初始物体信息集合为所述多个初始物体信息集合中的任意一个;依据所述各个物体信息对应的分类系数,将所述当前初始物体信息集合中的各个物体信息进行分类,得到所述当前初始物体信息集合对应的一个或多个当前中间物体信息集合;当对每个初始物体信息集合均完成一个或多个中间物体信息集合的确定时,得到所述多个物体信息集合。

本申请实施例提供一种阴影贴图的烘焙设备,包括:

存储器,用于存储可执行阴影贴图的烘焙指令;

处理器,用于执行所述存储器中存储的可执行阴影贴图的烘焙指令时,实现本申请实施例提供的阴影贴图的烘焙方法。

本申请实施例提供一种计算机可读存储介质,存储有可执行阴影贴图的烘焙指令,用于引起处理器执行时,实现本申请实施例提供的阴影贴图的烘焙方法。

本申请实施例具有以下有益效果:阴影贴图的烘焙设备在获取到至少一个物体信息、光源信息、第一分辨率之后,会先依据至少一个物体信息,计算出至少一个第二分辨率,然后基于光源信息、物体信息、第一分辨率和至少一个第二分辨率,对至少一个物体信息对应的距离场阴影数据进行计算,并将计算出的至少一个距离场阴影数据存储在贴图上,从而实现了基于各个物体信息对应的贴图分辨率来计算距离场阴影场数据,提高计算密度,减少数据传输批次,最终提高阴影贴图烘焙的效率。

附图说明

图1是阴影图算法的阴影效果示意图;

图2是高分辨率贴图情况下的阴影图算法的阴影效果示意图;

图3是距离场阴影贴图的示意图;

图4是本申请实施例提供的阴影贴图的烘焙系统100的一个可选的架构示意图;

图5是本申请实施例提供的阴影贴图的烘焙设备的结构示意图;

图6是本申请实施例提供的阴影贴图的烘焙方法的一个可选的流程示意图一;

图7是本申请实施例提供的阴影贴图的烘焙方法的一个可选的流程示意图二;

图8是本申请实施例提供的第一分辨率和第二分辨率的对比示意图;

图9是本申请实施例提供的物体信息与子光源信息之间的索引关系的示意图;

图10是本申请实施例提供的第一分辨率的像素中心与阴影边缘的示意图;

图11是本申请实施例提供的分块示意图;

图12是本申请实施例提供的计算阴影距离的示意图;

图13是本申请实施例提供的对当前初始物体信息集合中的各个物体信息进行分类的示意图;

图14是本申请实施例的阴影的效果;

图15示出了相关技术中阴影贴图的烘焙方法的代码调试图;

图16示出了本申请实施例的阴影贴图的烘焙方法的代码调试图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

在以下的描述中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。

1)云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、存储、处理和共享的一种托管技术。

云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。

2)阴影贴图的烘焙,是指在虚拟场景的渲染之前,将复杂度较高的阴影数据进行预处理并存储,即烘焙到贴图上,以供虚拟场景渲染时直接使用。

3)光源,能够为虚拟场景中的物体造成的光照和阴影效果,是虚拟场景的渲染中的重要因素。在虚拟场景的渲染中,主要有平行光、点光源、聚光灯三种不同类型的光源。

4)光线追踪,是计算机图形学中用于渲染虚拟场景中的一种技术。在渲染时,从图像中的每一个像素,向虚拟场景发射光线,然后计算虚拟场景中的物体与虚拟场景的交点,并且进行着色渲染。通过光线追踪可以渲染出高真实感的虚拟场景,但是,光线追踪的计算开销也相对较高。

5)阴影图(Shadow Maps)算法,在虚拟场景的渲染中,阴影贴图常用于表现阴影。阴影图算法的主要流程如下:首先基于光源的视角,对虚拟场景进行渲染,得到距光源最近的表面距离,并存储在贴图上;之后,在正常渲染时,对于渲染的物体表面计算其到光源的距离,从而判断出物体是否处于阴影中。

6)距离场阴影贴图,即在贴图中存储的是距离场阴影数据。其中,距离场阴影数据描述的是像素中心到阴影边缘的距离。

7)有向距离场函数(Signed Distance Function),在度量控件中,存在一个集合A,有向距离场函数用于定义给定点X到集合A的边缘的最短距离。如果X处于集合A的内侧,则函数值大于0;随着X趋近边缘,函数值也趋近于0;当X处于A的外侧,函数值小于0。有向距离场函数可以用X处于内侧,函数值小于0,X处于外侧,函数值大于0来定义。

8)纹素(Texel),是纹理像素(Texture Pixel)的简称,是纹理贴图的基本组成单位。类比于一张图片由一组像素组成,在纹理空间中,纹理贴图由一组纹素组成。

9)数据传输批次(Batch),在虚拟场景渲染中,将渲染数据提交给图形处理器(Graphics Processing Unit,GPU)进行一次渲染为一个Batch。在应用中,无论是渲染一个点、一个三角形,还是一个面数较高的复杂模型,都是一个渲染Batch。由于驱动层的调用,Batch的数量与渲染的性能有很大的关系,例如,同样100万个三角形的面数的场景,按照100个Batch渲染的性能,是比按照10000个Batch的渲染性能高很多。因此,为了加速渲染性能,通常一次Batch需要提交足够多的三角形进行渲染。同理的,在利用通用并行计算架构进行烘焙或者是其他通用的GPU计算时,一次计算任务的提交也是一次Batch。

10)并行计算架构(Compute Unified Device Architecture,CUDA)是一种能够进行并行编程的模型。基于CUDA提供的一组应用程序编程接口(Application ProgrammingInterface,API),可以在GPU上利用并行单元来计算并行计算,从而实现计算加速。

CUDA的编程涉及两部分,即渲染核心代码(Kernel)和运行代码(Host代码)。Kernel用于在GPU上进行通用计算,Host代码用于准备Kernel运行数据,传递数据到显卡,并且调用Kernel进行计算,从而从GPU得到最终结果。

11)基于CUDA的光线追踪框架(Optix),通过将虚拟场景数据上传到GPU中,利用GPU的光线追踪(Ray Tracing)核心,来实现对光线追踪的硬件加速,从而大幅提升光线追踪的效率。

阴影效果能够大幅度提升虚拟场景画面的层次,增强虚拟场景的真实感。阴影效果都是通过对应虚拟场景进行阴影渲染得到的。然而,阴影渲染的复杂度较高,因而,相关技术中,大多是先将阴影预先烘焙到贴图上,在阴影渲染时直接利用纹理采样,得到虚拟场景中的物体的光照、阴影信息。这种方式计算开销较小,但是受限于文件体积限制,烘焙的贴图的分辨率通常都较低,从而有较大的锯齿感。

示例性的,图1是阴影图算法的阴影效果示意图,参见图1,当贴图的分辨率为128×128时,可以明显看到虚拟场景中的阴影具有较明显的锯齿感,例如图1中箭头所指的区域,都具有明显的锯齿,这些锯齿感难以通过滤波消除。

在这种情况下,可以通过提高贴图的分辨率,来降低阴影的锯齿感,但是,提高贴图的分辨率额外增加处理所需的显存,文件包的体积等。例如,当贴图的分辨率增加到256×256时,文件包的体积需要提高4倍,但是,虚拟场景中的阴影仍然存在可见的锯齿。示例性的,图2是高分辨率贴图情况下的阴影图算法的阴影效果示意图,可见,图2中箭头所指的区域,仍具有细密的锯齿,只不过相比于图1中的锯齿,图2中的锯齿的幅度虽然减小,但是仍旧未被消除。

距离场阴影算法与阴影图算法相比,能够实现在低分辨率贴图的情况下,大幅减少阴影的锯齿感。距离场阴影的贴图中存储的是距离场阴影数据,距离场阴影数据描述的是像素中心到阴影边缘的距离。示例性的,图3是距离场阴影贴图的示意图。参见图3,每一个方块(每个填充有黑点的方块)都代表了贴图中的一个像素,每个像素中存储编码好的距离场阴影数据。为了计算距离场阴影数据,需要将每一个像素细分为高分辨率的子像素(即对应图中的每个方块中的黑点)。图3中的三角形区域3-1代表阴影区域,对于图3中的像素3-2而言,其到阴影边缘的距离,就是像素3-2的中心(即点3-3)到三角形区域3-1左下边3-11的垂线长度。在实际应用中,由于阴影边缘通常是不规则形状,因此,将像素中心(即点3-3)到阴影边缘的子像素的最短距离来近似看作是像素中心到阴影边缘的距离,即将像素中心到阴影边缘的子像素的最短距离作为是距离场阴影数据,存储到贴图的每个像素中。对应于图3中,即是将像素中心(即点3-3)到阴影边缘的4个子像素的4个距离中,将最短的距离3-4选择出来,作为像素中心到阴影边缘的距离,从而得到距离场阴影数据。

由此可见,距离场阴影贴图的烘焙过程,包括以下几个步骤:

S1、将物体的模型数据按照纹理坐标展开,并且在高分辨率(高分辨率是进行对物体在物体空间内表示时的分辨率)下光栅化,得到至少一个纹素数据,每个纹素数据对应一个子像素,纹素数据中存储了物体的位置信息。

S2、在GPU中,对于每一个纹素,从其位置向光源发出射线,计算纹素是否处于阴影中。

S3、基于纹素以及周围的纹素是否在阴影中,确定出物体的阴影边缘。

S4、对于每一个像素,由其中心向外扩展,搜索高分辨率的阴影边缘子像素,并计算最短距离。

S5、将最短距离存储到贴图上对应的像素上。

在虚拟场景中,距离场阴影贴图的烘焙不止一次。例如,虚拟场景中有M个物体,平均每一个物体接收N个光源的阴影投影,那么虚拟场景需要进行M×N次烘焙,每一次距离场阴影贴图的烘焙,都需要调用4次CUDA的发起操作,从而最终的Batch数目为4×M×N。另外,距离场阴影贴图的分辨率通常很低(受限于文件包体积等,需要选取较低分辨率的贴图),从而使得GPU的计算密度较低。可见,相关技术中在为虚拟场景求取距离场阴影贴图时,计算密度较低,数据传输批次较多,从而使得距离场阴影贴图的计算耗时长,最终使得引用烘焙的效率较低。

本申请实施例提供一种阴影贴图的烘焙方法、装置、设备和计算机可读存储介质,能够提高阴影贴图烘焙的效率。下面说明本申请实施例提供的阴影贴图的烘焙设备的示例性应用,本申请实施例提供的阴影贴图的烘焙设备可以实施为终端,也可以实施为服务器。其中,服务器可以是独立的服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算的云服务器。终端可以是智能手机、平板电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不作限制。

需要说明的是,本申请实施例中,阴影贴图的烘焙设备可以单独实施为服务器或者单独实施为终端,从而,本申请实施例提供的阴影贴图的烘焙方法的所有步骤均在服务器或者是终端完成。本申请实施例中,阴影贴图的烘焙设备还可以同时实施为由服务器和终端所组成的设备集群,此时,本申请实施例提供的阴影贴图的烘焙方法中的一部分步骤在服务器侧实现,另一部分步骤在终端侧实现。下面,将说明阴影贴图的烘焙设备的示例性应用。

参见图4,图4是本申请实施例提供的阴影贴图的烘焙系统100的一个可选的架构示意图,为实现支撑一个阴影贴图的烘焙应用,终端200(示例性示出了终端200-1和终端200-2)通过网络300连接阴影贴图的烘焙设备400,网络300可以是广域网或者局域网,又或者是二者的组合。

终端200-1用于生成虚拟场景中的物体信息、光源信息(例如游戏场景中的人物、环境信息,光源信息等)和指定第一分辨率。也就是说,设计人员可以通过终端200-1的图形界面200-11上的设计工具,设计虚拟场景的参数,生成虚拟场景中的物体的模型数据,即生成物体信息,并指定了虚拟场景中的光源的参数,即生成光源信息,同时,指定用于进行阴影贴图烘焙的贴图的分辨率,即指定了距离场阴影贴图的分辨率,得到第一分辨率。然后,终端200-1将虚拟场景的至少一个物体信息、光源信息和第一分辨率发送给阴影贴图的烘焙设备400。阴影贴图的烘焙设备400将虚拟场景中的至少一个物体信息、光源信息和第一分辨率存储起来,以在阴影贴图的烘焙开始时使用。

当阴影贴图的烘焙过程开始之后,阴影贴图的烘焙设备400获取虚拟场景中的至少一个物体信息、光源信息和第一分辨率信息,其中,第一分辨率信息为指定的距离场阴影的贴图分辨率。阴影贴图的烘焙设备400根据至少一个物体信息,确定出第二分辨率,第二分辨率表征对虚拟场景中的物体的信息计算出来的贴图分辨率。阴影贴图的烘焙设备400基于光源信息、至少一个物体信息、第一分辨率和至少一个第二分辨率,计算出至少一个物体信息对应的至少一个距离场阴影数据,并将至少一个距离场阴影数据存储到第一分辨率的贴图上,得到至少一个物体中的每个物体对应的距离场阴影贴图,从而完成阴影贴图的烘焙过程。

之后,阴影贴图的烘焙设备400可以将距离场阴影贴图发送给终端200-2(例如通过游戏安装包的方式),终端200-2在启动虚拟场景的渲染时(例如启动游戏时),调用距离场阴影贴图,并将渲染结果展示在图形界面200-21上,从而实现虚拟场景的渲染。

参见图5,图5是本申请实施例提供的阴影贴图的烘焙设备的结构示意图,图5所示的阴影贴图的烘焙设备400包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。终端400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统440。

处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。

存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。

存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。

在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;

网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(USB,Universal Serial Bus)等;

呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);

输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。

在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图5示出了存储在存储器450中的阴影贴图的烘焙装置455,其可以是程序和插件等形式的软件,包括以下软件模块:信息获取模块4551、分辨率确定模块4552、数据计算模块4553、贴图生成模块4554和信息分类模块4555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。

在另一些实施例中,本申请实施例提供的阴影贴图的烘焙装置可以采用硬件方式实现,作为示例,本申请实施例提供的阴影贴图的烘焙装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的阴影贴图的烘焙方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application SpecificIntegrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。

示例性的,本申请实施例提供一种阴影贴图的烘焙设备,包括:

存储器,用于存储可执行阴影贴图的烘焙指令;

处理器,用于执行所述存储器中存储的可执行阴影贴图的烘焙指令时,实现本申请实施例提供的阴影贴图的烘焙方法。

下面,将结合本申请实施例提供的阴影贴图的烘焙设备的示例性应用和实施,说明本申请实施例提供的阴影贴图的烘焙方法。

参见图6,图6是本申请实施例提供的阴影贴图的烘焙方法的一个可选的流程示意图一,将结合图6示出的步骤进行说明。

S101、获取虚拟场景中的至少一个物体信息、光源信息和第一分辨率。

本申请实施例是在对虚拟场景进行阴影贴图的烘焙的场景实现的,更具体的,是在将距离场阴影数据烘焙到贴图的场景实现的。在开始阴影贴图的烘焙时,阴影贴图的烘焙设备会先获取虚拟场景中的各个物体的信息、得到至少一个物体信息,同时获取虚拟场景的光源信息和第一分辨率,以便于后续根据这些数据来开始阴影贴图的烘焙。其中,第一分辨率为指定的贴图分辨率。

需要说明的是,阴影贴图的烘焙设备所获取的虚拟场景的至少一个物体信息、光源信息和第一分辨率,可以是接收自终端,也可以是自身依据设计人员输入的需求条件自动生成的。在一些实施例中,阴影贴图的烘焙设备可以是在接收到终端发送的虚拟场景的至少一个物体信息、光源信息和第一分辨率之后,立即获取至少一个物体信息、光源信息和第一分辨率,以开始阴影贴图的烘焙过程,也可以是将接收到终端发送的虚拟场景的至少一个物体信息、光源信息和第一分辨率存储在存储空间中,在到达指定时间,或者是在接收到设计人员的指示之后,才开始获取至少一个物体信息、光源信息和第一分辨率,从而开始阴影贴图的烘焙过程。

可以理解的是,虚拟场景的至少一个物体信息,指的就是虚拟场景中的各个物体所对应的模型数据,每个物体信息囊括了物体的位置、法线、表面积、大小等信息。虚拟场景的光源信息,指的就是虚拟场景中的光源的参数,其囊括了光源的位置、强度、颜色、光照范围等信息。

需要说明的是,光源信息也不是特指一个光源的参数,而是虚拟场景中的所有光源的参数的统称,即光源信息中可以包括多个子光源信息,每个子光源信息对应了虚拟场景一个光源。

需要说明的是,第一分辨率是所指定的贴图分辨率的统称,并不是特指一个分辨率。也就是说,第一分辨率中其实可以包括一个或多个第一子分辨率,每个第一子分辨率都是指定好的,特别是对于一些虚拟场景,在设计时通常需要综合考虑不同分辨率下的效果,因而,指定的贴图分辨率就会是多个,即第一分辨率中会包含多个第一子分辨率。第一分辨率中的各个第一子分辨率可以是设计人员指定的分辨率,也可以是默认的分辨率。进一步的,第一子分辨率的取值可以为128×128,也可以为64×64,还可以依据实际需求设定成其他值,本申请在此不作限定。

本申请实施例中,虚拟场景可以为游戏场景,也可以为CG动画场景,还可以为其他需要进行渲染的场景,本申请实施例在此不作限定。

S102、根据至少一个物体信息,确定出至少一个第二分辨率。

阴影贴图的烘焙设备在获取到虚拟场景的物体信息之后,会先从每个物体信息中抽取出每个物体的表面积,然后依据物体空间的每平方米的分辨率表示要求,与物体的表面积相乘,从而得到将每个物体完全展开时所需要的贴图的分辨率了。阴影贴图的烘焙设备将针对每个物体所计算出的分辨率,记为第二分辨率,从而阴影贴图的烘焙设备可以得到至少一个第二分辨率。也就是说,本申请实施例中,第二分辨率表征依据虚拟场景中的物体信息计算出的贴图分辨率。

更进一步的,第二分辨率是依据物体的表面积计算出的。示例性的,假设物体空间中,每平方米需要100*100的像素来表示,而对于一个物体,表面积为2平方米,那么该物体在展开时所需要的贴图分辨率就为200*200。

需要说明的是,依据表面积所计算出的第二分辨率是烘焙、渲染时的最基础最底层的分辨率,一般会比较高,而第一分辨率受限于安装包的大小等因素,并不会太高,因而,第一分辨率是会小于第二分辨率,且和第二分辨率存在着一定的倍数关系,即第二分辨率可以通过对第一分辨率进行超采样得到,第一分辨率可以通过对第二分辨率进行采样得到。

S103、基于光源信息、至少一个物体信息、第一分辨率和至少一个第二分辨率,计算出至少一个物体信息对应的至少一个距离场阴影数据。

阴影贴图的烘焙设备在计算出至少一个第二分辨率之后,就会结合光源信息、每个物体信息、第一分辨率和每个第二分辨率,来并行地对虚拟场景中的每个物体进行距离场阴影数据的计算。也就是说,本申请实施例中,阴影贴图的烘焙设备是利用光源信息、至少一个物体信息、第一分辨率和至少一个第二分辨率,同时来对虚拟场景中的所有物体进行距离场阴影数据的计算。示例性的,当虚拟场景中有N个物体时,阴影贴图的烘焙设备就能够同时N个物体的距离场阴影数据进行并行计算,从而同时对N个物体的阴影进行烘焙,这样,并行度提高为原先的N倍,势必会使得计算密度提高,数据传输批次的数量降低,最终就会使得距离场阴影数据的搜索效率提高。

需要说明的是,在本申请的一些实施例中,当第一分辨率中仅包括一个第一子分辨率时,阴影贴图的烘焙设备可以仅对虚拟场景中的各个物体,进行距离场阴影数据的并行计算。当第一分辨率中包括了多个第一子分辨率时,阴影贴图的烘焙设备可以逐个针对每个第一子分辨率,来进行虚拟场景中的各个物体的距离场阴影数据的搜寻;阴影贴图的烘焙设备也可以是并行为每个第一子分辨率,来进行虚拟场景中的各个物体的距离场阴影数据的搜索(此时,是两层并行计算,一层是针对每个第一子分辨率的并行,一层是针对每个第一子分辨率中的各个物体的并行),从而进一步提高距离场阴影数据的计算效率。

也就是说,当第一分辨率中包括了N个第一子分辨率时,阴影贴图的烘焙设备实质上就是针对N个第一子分辨率,都需要烘焙出虚拟场景的距离场阴影贴图,从而得到N个距离场阴影贴图。此时,阴影贴图的烘焙设备可以是针对这N个第一子分辨率,逐个生成对应的距离场阴影贴图,也可以是为这N个第一子分辨率,同时生成对应的距离场阴影贴图。

S104、将至少一个距离场阴影数据存储到第一分辨率的贴图上,得到至少一个物体信息中的每个物体信息对应的距离场阴影贴图。

阴影贴图的烘焙设备在得到至少一个物体信息对应的至少一个距离场阴影数据之后,就可以将所求得的至少一个距离场阴影数据存储在第一分辨率的贴图上,从而将存储有虚拟场景中的各个物体的距离场阴影数据的贴图,作为是距离场阴影贴图。如此,阴影设备就能够得到虚拟场景中的各个物体所对应的距离场阴影贴图。

本申请实施例中,阴影贴图的烘焙设备在获取到至少一个物体信息、光源信息、第一分辨率之后,会先依据至少一个物体信息,计算出至少一个第二分辨率,然后基于光源信息、物体信息、第一分辨率和至少一个第二分辨率,对至少一个物体信息对应的距离场阴影数据进行并行搜索,并将并行搜索到的至少一个距离场阴影数据存储在贴图上,从而实现了同时对多个物体提高了虚拟场景中的各个物体对应的贴图分辨率来计算距离场阴影数据,提高计算密度,减少数据传输批次,最终提高阴影贴图烘焙的效率。

参见图7,图7是本申请实施例提供的阴影贴图的烘焙方法的一个可选的流程示意图二。在本申请的一些实施例中,基于光源信息、至少一个物体信息、第一分辨率和至少一个第二分辨率,计算出至少一个物体信息对应的至少一个距离场阴影数据,即S103的具体实现过程,可以包括:S1031-S1033,如下:

S1031、对至少一个第二分辨率分别和第一分辨率进行比值计算,得到至少一个超采样参数。

由于烘焙距离场阴影贴图时,是计算第一像素中心到阴影边缘的最短距离,而阴影边缘一般是根据第二分辨率,即根据物体表面积所计算出的贴图分辨率来计算的。阴影贴图的烘焙设备在并行搜索距离场阴影数据时,需要先将至少一个第二分辨率逐个作为分子,将第一分辨率作为分母进行相比,将所得到的比值即为超采样参数,从而得到与至少一个第二分辨率一一对应的至少一个超采样参数。需要说明的是,超采样参数表征了第一分辨率和第二分辨率之间的转换关系,即表明了第二分辨率可以通过对第一分辨率进行多少倍的超采样得到。

需要说明的是,由于第二分辨率和物体信息之间存在着对应关系,从而,依据第二分辨率计算出来的超采样参数,也与物体信息存在着对应关系,即至少一个超采样参数和至少一个物体信息也是一一对应的。

示例性的,本申请实施例提供了第一分辨率和第二分辨率的对比示意图,参见图8,三角形8-1为物体,黑色方格所组成的区域为物体对应的阴影,用3×3个小方格构成的大方格(例如方格8-2),是第一分辨率的像素,每个小方格(例如方格8-3)是第二分辨率的像素。由此可见,第一分辨率的像素和第二分辨率的像素之间存在着对应关系,即3×3个第二分辨率的像素,就可以组成一个第一分辨率的像素。

S1032、利用光源信息、至少一个物体信息和至少一个第二分辨率,确定出至少一个物体信息对应的至少一个阴影边缘。

并行搜索各个物体的距离场阴影数据,需要先并行确定各个物体对应的阴影边缘。阴影贴图的烘焙设备先同时将至少一个物体信息中的每个物体信息,在其所对应的第二分辨率下进行光栅化,然后依据光栅化后所得到的纹素数据,同时提取出每个物体信息所对应的阴影边缘。当阴影贴图的烘焙设备对所有的物体信息均确定出对应的阴影边缘时,就会得到与至少一个物体信息一一对应的至少一个阴影边缘。

S1033、基于至少一个超采样参数,对第一分辨率的像素中心到至少一个阴影边缘的距离进行计算,得到至少一个距离场阴影数据。

阴影贴图的烘焙设备接着同时依据每个物体信息所对应的超采样参数,来对第一像素中心到每个物体信息对应的阴影边缘进行搜索,然后计算出第一像素中心到每个物体信息对应的阴影边缘的距离,从而得到每个物体信息对应的距离场阴影数据。当对第一分辨率的像素中心到至少一个阴影边缘的距离并行计算完成时,阴影贴图的烘焙设备就能够得到至少一个距离场阴影数据。

本申请实施例中,阴影贴图的烘焙设备能够先利用至少一个第二分辨率和第一分辨率计算出至少一个超采样参数,利用光源信息、至少一个物体信息和至少一个第二分辨率,并行为每个物体信息确定出对应的阴影边缘,最后再利用每个物体信息对应的超采样参数,对第一分辨率的像素中心到每个阴影边缘的距离进行并行搜索,在并行搜索完成时,就可以得到至少一个距离场阴影数据,从而实现并行至少一个距离场阴影数据的并行搜索,提高并行度,从而提高阴影贴图烘焙的效率。

在本申请的一些实施例中,虚拟场景的光源信息包括多个子光源信息;利用光源信息、至少一个物体信息和至少一个第二分辨率,确定出至少一个物体信息对应的至少一个阴影边缘,即S1032的具体实现过程,可以包括:S1032a-S1032d,如下:

S1032a、针对至少一个物体信息中的每个物体信息,从多个子光源信息中,筛选出对应的匹配光源信息。

虚拟场景的光源信息中包括多个子光源信息,但是并不是每个物体都会受到所有光源的影响的,因而,阴影贴图的烘焙设备需要从多个子光源中,针对每个物体信息寻找出能够给其对应的物体造成影响的子光源信息,将这些光源信息,作为是每个物体信息对应的匹配光源信息。需要说明的是,子光源对物体造成的影响,是指给物体带来光照或者是使得物体出现阴影,因而,匹配光源信息表征给物体造成光照或阴影影响的子光源的信息。

可以理解的是,阴影贴图的烘焙设备在判断子光源是否对某个物体造成影响时,是结合子光源的类型来进行判断的。例如,当某个子光源是太阳光时,其就会对所有的物体都造成影响,从而,每个物体信息对应的匹配光源信息中,都会包括这个子光源。当某个子光源为点光源或者聚光灯时,阴影贴图的烘焙设备则会判断物体是否位于这个子光源的影响半径中,当物体处于影响半径时,该物体的对应的物体信息的匹配光源信息就会包含这个子光源对应的子光源信息,否则,则不会包含这个子光源信息。

需要说明的是,本申请实施例中,阴影贴图的烘焙设备为每个物体信息确定对应的匹配光源信息,实际上就是在建立物体信息与子光源之间的索引关系,以便于在确定阴影边缘时,能够快速地为每个物体信息索引到能够为其产生影响的子光源信息。

示例性的,图9是本申请实施例提供的物体信息与子光源信息之间的索引关系的示意图。参见图9,共有M个物体信息9-1,N个子光源,每个物体信息都用一层来表示,所有的子光源信息组成了一个N行的光源列表9-2。阴影贴图的烘焙设备针对每个物体信息,都提取出对其造成影响的子光源,从而得到匹配光源信息,例如,针对物体信息A,匹配光源信息为光源a的信息和子光源b的信息,针对物体信息B,匹配光源信息为子光源b的信息和子光源c的信息,针对物体信息C,匹配光源信息为子光源b的信息,针对物体信息D,匹配光源信息为子光源c的信息。依次类推,直到对所有的物体信息都确定出匹配光源信息,然后就可能生成物体信息和子光源信息之间的索引表9-3,其中,索引表共有P行。

S1032b、从至少一个第二分辨率中挑选出每个物体信息对应的目标第二分辨率,并将每个物体信息在目标第二分辨率下光栅化,得到每个物体信息的光栅化像素。

阴影贴图的烘焙设备依据物体信息和第二分辨率之间的对应关系,从至少一个第二分辨率中挑选出每个物体信息所对应的第二分辨率,将被挑选出的第二分辨率记为目标第二分辨率。之后,阴影贴图的烘焙设备物体的各个顶点映射到第一分辨率的贴图的像素上,然后各个顶点之间的像素光栅化出来,就得到了光栅化像素。

S1032c、依据光栅化像素对应的纹素的位置和匹配光源信息,在同一时刻提取每个物体信息对应的阴影边缘。

需要说明的是,光栅化像素和纹素之间存在着对应关系,并且该对应关系是在设计时就已经确定好的。阴影贴图的烘焙设备将物体信息按照纹理坐标展开,就能够得到纹素的位置,也就是说,纹素的位置是对每个物体信息进行纹理坐标展开得到的。

S1032d、当对至少一个物体信息均完成阴影边缘的提取时,得到至少一个物体信息对应的至少一个阴影边缘。

当阴影贴图的烘焙设备通过并行任务,对所有的物体信息均完成阴影边缘的提取之后,就可以得到与至少一个物体信息一一对应的至少一个阴影边缘。

本申请实施例中,阴影贴图的烘焙设备能够先为每个物体信息确定出匹配光源信息,将每个物体信息在对应的目标第二分辨率下光栅化,再依据光栅化所得到的光栅化像素所对应的纹素的位置和匹配光源信息,并行对每个物体进行阴影边缘的提取,从而增加阴影边缘提取时的并行度,提高计算密度,减少数据传输批次,从而提高阴影贴图烘焙的效率。

在本申请的一些实施例中,依据光栅化像素对应的纹素的位置和匹配光源信息,在同一时刻提取每个物体信息对应的阴影边缘,即S1032c的具体实现过程,可以包括:S201-S202,如下:

S201、依据匹配光源信息和纹素的位置,在同一时刻对每个物体信息的光栅化像素所对应的纹素进行阴影判断,得到阴影覆盖信息;

阴影贴图的烘焙设备从光栅化像素对应的纹素的位置,向匹配光源信息发射射线,从而计算物体和虚拟场景的交点,从而根据交点的位置,判断出纹素是否处于阴影之中,即判断出每个物体信息的光栅化像素所对应的纹素,是否被阴影覆盖,从而得到阴影覆盖信息。也就是说,阴影覆盖信息表征纹素是否处于阴影之中。

S202、利用阴影覆盖信息,分别提取出每个物体信息对应的阴影边缘。

阴影贴图的烘焙设备在确定出纹素的阴影覆盖信息之后,就能够根据哪些纹素处于阴影中,哪些纹素不处于阴影中,来确定出一个阴影的分界线,这个分界线,就是阴影边缘。阴影贴图的烘焙设备根据这种方式,就能够为每个物体信息,提取出其各自对应的阴影边缘了。

本申请实施例中,阴影贴图的烘焙设备能够根据匹配光源信息和纹素的位置,确定出每个物体信息的光栅化像素所对应的纹素是否处于阴影之中,然后根据纹素是否处于阴影的情况,提取出每个物体信息所对应的阴影边缘。这样,阴影贴图的烘焙设备就完成了对每个物体信息对应的阴影边缘的提取了。

在本申请的一些实施例中,基于至少一个超采样系数,对第一分辨率的像素中心到至少一个阴影边缘的距离进行计算,得到至少一个距离场阴影数据,即S1033的具体实现过程,可以包括:S1033a-S1033b,如下:

S1033a、基于至少一个超采样参数,在同一时刻对第一分辨率的像素中心到至少一个阴影边缘中的每个阴影边缘的距离进行计算,得到每个阴影边缘对应的距离场阴影数据。

S1033b、当对至少一个阴影边缘均完成距离场阴影数据的计算时,得到至少一个距离场阴影数据。

由于至少一个超采样参数和至少一个第二分辨率之间存在对应关系,而至少一个第二分辨率是依据至少一个物体信息确定出来的,因而,至少一个超采样参数和至少一个物体信息之间是存在对应的。同时,至少一个阴影边缘与至少一个物体信息之间存在着对应关系,从而,至少一个超采样参数和至少一个阴影边缘也会有对应关系。阴影贴图的烘焙设备根据这个对应关系,从至少一个超采样参数中,选取出与每个阴影边缘对应的超采样参数,然后基于每个阴影边缘对应的超采样参数,同时对第一分辨率的像素中心到每个阴影边缘的距离进行搜索,从而得到每个阴影边缘所对应的距离场阴影数据。当阴影贴图的烘焙设备对所有的阴影边缘均完成距离场阴影数据的搜索是,就会至少一个距离场阴影数据。

本申请实施例中,阴影贴图的烘焙设备能够基于至少一个超采样参数,同时针对每个阴影边缘来进行距离场阴影数据的搜寻,从而能够实现至少一个距离场阴影数据的并行提取,从而提升并行度,提高计算密度,减少数据传输批次,最终提高阴影贴图烘焙的效率。

在本申请的一些实施例中,基于至少一个超采样参数,在同一时刻对第一分辨率的像素中心到至少一个阴影边缘中的每个阴影边缘的距离进行计算,得到每个阴影边缘对应的距离场阴影数据,即S1033a的具体实现过程,可以包括:S301-S303,如下:

S301、从至少一个超采样参数中,提取出每个阴影边缘对应的目标超采样参数。

阴影贴图的烘焙设备先依据至少一个超采样参数和至少一个阴影边缘的对应关系,为每个阴影边缘确定出与其对应的超采样参数,将这个超采样参数,记为目标超采样参数。

S302、在同一时刻,基于每个阴影边缘对应的目标超采样参数,计算第一分辨率的像素中心到每个阴影边缘的最小距离。

示例性的,本申请实施例提供了第一分辨率的像素中心与阴影边缘的示意图。参见图10,阴影由黑色格子组成,点P是第一分辨率的像素中心,阴影贴图的烘焙设备实际上就是要求出点P到黑色格子所组成的阴影的边缘的最小距离。

S303、将最小距离,作为每个阴影边缘对应的距离场阴影数据。

阴影贴图的烘焙设备在同一时刻,基于每个阴影边缘所对应的目标超采样参数,开始对第一分辨率的像素中心到每个阴影边缘的最小距离进行计算。其中,单独一个阴影边缘对应的最小距离的计算,就是一个单独的计算任务,从而,当阴影贴图的烘焙设备对每个阴影边缘对应的最小距离进行计算时,就是并行进行了阴影边缘的数量个,也就是物体信息的数量个计算任务,从而,并行度会变为原先的物体信息的数量倍(即当物体信息为N个时,并行度变为N倍)。最后,阴影贴图的烘焙设备将搜索出来的最小距离,作为是距离场阴影数据,从而得到至少一个距离场阴影数据。

本申请实施例中,阴影贴图的烘焙设备能够从至少一个超采样参数中,提取出每个阴影边缘对应的目标超采样参数,然后在同一时刻,开始基于目标超采样参数,计算第一分辨率的像素中心到每个阴影边缘的最小距离,将最小距离作为每个阴影边缘的距离场阴影数据,这样,阴影贴图的烘焙设备就完成了距离场阴影数据的搜索过程。

在本申请的一些实施例中,基于每个阴影边缘对应的超采样系数,计算第一分辨率的像素中心到每个阴影边缘的最小距离,即S302的具体实现过程,可以包括:S3021-S3024,如下:

S3021、按照目标超采样系数,对第一分辨率的像素进行分块,得到至少一个子纹素块。

阴影贴图的烘焙设备按照目标超采样参数,将第一分辨率的像素进行均匀分块,将每一个子块都记为子像素块,从而会得到至少一个像素块。需要说明的是,阴影贴图的烘焙设备经过分块所得到的子像素块,和第二分辨率的像素的大小是相同的。

示例性的,图11是本申请实施例提供的分块示意图,阴影贴图的烘焙设备将第一分辨率的像素11-1,分解成为3×3个小块,从而得到9个子像素块,第一分辨率的像素中心,就位于9个子像素块中最中央的子像素块中。

S3022、针对至少一个子像素块到当前阴影边缘的距离进行并行计算,得到至少一个子像素块对应的至少一个阴影距离。

其中,当前阴影边缘为至少一个阴影边缘中的任意一个。

阴影贴图的烘焙设备从至少一个阴影边缘之中,任选出一个作为当前阴影边缘,然后同时分别计算每个子像素块到当前阴影边缘的距离,得到每个子像素块对应的阴影边缘。当对所有的子像素块均计算出阴影边缘之后,就会得到至少一个阴影距离。

S3023、从至少一个子像素块对应的至少一个阴影距离中,挑选出最小的阴影距离,作为第一分辨率的像素中心到当前阴影边缘的最小距离。

S3024、当针对每个阴影边缘均确定出最小距离时,得到第一分辨率的像素中心到每个阴影边缘的最小距离。

阴影贴图的烘焙设备在得到与至少一个子像素块一一对应的至少一个阴影距离之后,就会将至少一个阴影距互相进行比较,从而确定出最小的阴影距离,然后将这个最小的阴影距离挑选出来,作为当前阴影边缘对应的最小距离。当阴影贴图的烘焙设备对每个阴影边缘都确定出最小距离之后,就能够得到第一分辨率的像素中心到每个阴影边缘的最小距离了。

需要说明的是,本申请实施例中,计算子像素块到阴影边缘的阴影,其实就是将最小距离的搜寻过程,分担到了每个子像素块,然而,各个子纹素块所对应的搜寻过程,其实是可以并行进行的,从而提高阴影边缘的最小距离的搜寻并行度,进一步的提升阴影贴图烘焙的效率。

本申请实施例中,阴影贴图的烘焙设备能够对第一分辨率的像素进行分块,从而得到至少一个子像素块,然后针对至少一个子像素块到阴影边缘的距离并行进行计算,从而挑选出第一分辨率的像素中心到每个阴影边缘的最小距离,如此,可以提高最小距离搜寻时的并行度,进一步的提升阴影贴图烘焙的效率。

在本申请的一些实施例中,针对至少一个子像素块到当前子阴影边缘的距离进行并行计算,得到至少一个子像素块对应的至少一个阴影距离,即S2022的具体实现过程,可以包括:S3022a-S3022d,如下:

S3022a、依据第一分辨率的像素,从第二分辨率的各个像素中,提取出至少一个子像素块中的每个子像素块对应的多个匹配像素。

阴影贴图的烘焙设备依据第一分辨率的像素,先从第二分辨率的各个像素中,初步为每个子像素块筛选出一些像素,将这些像素作为匹配像素,从而得到多个匹配像素。

需要说明的是,阴影贴图的烘焙设备可以将在第二分辨率的各个像素中,确定出每个子像素块所对应的像素,然后将每个子像素块所对应的像素的相邻像素,作为匹配像素。阴影贴图的烘焙设备还可以先从第二分辨率的各个像素中,选取出一些与第一分辨率的像素存在特定规律的像素,然后从这些像素中,选取出多个匹配像素,例如,从第一分辨率的像素在第二分辨率的各个像素中所对应的像素集合中(像素集合中的像素拼接刚好可以组成第一分辨率的像素),选取出在像素集合中的位置与某个子像素块在第一分辨率的像素的位置相同的像素,作为匹配像素。

S3022b、从多个匹配像素中,筛选出当前阴影边缘所对应的阴影像素。

接着,阴影贴图的烘焙设备再判断每个匹配像素是否属于当前阴影边缘,将属于当前阴影边缘的匹配像素选取出来,作为阴影像素。

S3022c、分别对每个子像素块到阴影像素的距离进行计算,得到每个子像素块对应的阴影距离。

可以理解的是,每个子像素块到阴影像素的距离,可以利用每个子像素块在第二分辨率的各个像素中所对应的像素,与阴影像素之间间隔的像素数目来表示,还可利用每个子像素块在第二分辨率的各个像素中所对应的像素,与阴影像素之间的直线距离来表示。

S3022d、当对至少一个子像素块均完成阴影距离的计算时,得到至少一个阴影距离。

当阴影贴图的烘焙设备对所有的子像素块都计算出对应的阴影距离之后,就会得到与至少一个子像素块一一对应的至少一个阴影距离。

示例性的,图12是本申请实施例提供的计算阴影距离的示意图。如图12所示,黑色格子组成了阴影,而点云填充的格子是阴影贴图的烘焙设备为每个子像素块确定出的匹配像素,斜线填充的格子是一个子像素块,点P是第一分辨率的像素中心。阴影贴图的烘焙设备就是要当横线填充的格子在黑色格子所组成的阴影的边缘时,来计算出这个子像素块,即点云填充的格子12-1的距离,这个距离就是阴影距离。

本申请实施例中,阴影贴图的烘焙设备能够先依据第一分辨率的像素中心,从第二分辨率的各个像素中,为每个子像素块筛选出多个匹配像素,然后再将多个匹配像素中,属于当前阴影边缘的匹配像素筛选出来,得到阴影像素,从而计算每个子像素块到对应的阴影像素的距离,通过这种方式,就能够得到至少一个阴影距离,从而实现将距离搜寻分摊到各个子像素块上的过程,提高距离搜寻时的并行度。

在本申请的一些实施例中,依据第一分辨率的像素,从第二分辨率的各个像素中,提取出至少一个子像素块中的每个子像素块对应的多个匹配像素,即S3022a的具体实现过程,可以包括:S401-S403,如下:

S401、针对第一分辨率的像素,挑选出相邻像素。

阴影贴图的烘焙设备从第一分辨率的各个像素中,将某个第一分辨率的像素的周围的像素挑选出来,这些像素即为相邻像素。

可以理解的是,本申请实施例中,阴影贴图的烘焙设备可以是将第一分辨率的像素的上下左右的4个像素挑选出来,作为相邻像素,还可以是将第一分辨率的周围的8个像素全部挑选出来,作为相邻像素。

S402、从第二分辨率的各个像素中,提取出与相邻像素所对应的像素集合。

接着,阴影贴图的烘焙设备基于第一分辨的像素和第二分辨率的像素之间的对应关系,从第二分辨率的各个像素中,挑选出能够组成相邻像素的像素集合。

示例性的,继续参见图12,第一分辨率的像素的一个相邻像素为12-2,这个相邻像素对应的第二分辨率的像素集合,就是相邻像素12-2中的9小方格(这9个小方格都是第二分辨率中的像素),阴影贴图的烘焙设备就是将这些像素挑选出来,作为该相邻像素对应的像素结合。

S403、将像素集合中,处于与每个子像素块在第一分辨率的像素相同位置的像素进行提取,得到每个子像素块对应的多个匹配像素。

阴影贴图的烘焙设备先判断出每个子像素块在第一分辨率的像素的位置,然后将在像素集合中处于相同位置的像素进行提取,这个提取到的像素,就是每个子像素块对应的匹配像素。

示例性的,继续参见图12,斜线填充的小格子12-3(子像素块)处于第一分辨率的像素的左上角,相邻像素为第一分辨率的像素12-4周围的8个3×3的大格子,阴影贴图的烘焙设备就是将每个大格子中的左上角的像素挑选出来,作为匹配像素。

本申请实施例中,阴影贴图的烘焙设备能够先针对第一分辨率的像素,挑选出相邻像素,然后从第二分辨率的各个像素中,提取出相邻像素所对应的像素集合,再从像素集合中,提取出与每个像素块在第一分辨率的像素中的位置相同的像素,如此,阴影贴图的烘焙设备就能够完成匹配像素的提取,以便于后续从匹配像素中提取阴影像素。

在本申请的一些实施例中,第一分辨率包括多个第一子分辨率,在此情况下,阴影贴图的烘焙设备可以将至少一个物体信息分组,并行给各个物体信息的组别中的物体信息同时进行距离场阴影数据的搜寻,从而进一步的提升并行度。由此,基于光源信息、至少一个物体信息、第一分辨率和至少一个第二分辨率,计算出至少一个物体信息对应的至少一个距离场阴影数据,即S103的具体实现过程,可以包括S1034-S1036,如下:

S1034、利用多个第一子分辨率和所述至少一个第二分辨率,对至少一个物体信息分类,得到多个物体信息集合。

本申请实施例中,阴影贴图的烘焙设备可以依据多个第一子分辨率和至少一个第二分辨率,将至少一个物体信息划分到不同的物体信息集合中,其中,每个物体信息集合中的各个物体信息的第一子分辨率都是相同的,第二分辨率是相同的,从而第一子分辨率和第二分辨率之间的倍数关系也是相同的。也即,本申请实施例是先利用第一子分辨率来对至少一个物体信息进行初步的类别划分,然后再针对初步类别划分所得到的物体信息集合,进一步利用第二分辨率来进行类别划分,从而得到一个或多个物体信息集合。从而,每个物体信息集合,都有其对应的第一子分辨率和第二分辨率。

需要说明的是,本申请实施例中,物体信息集合的个数和第一子分辨率的个数并不一定是相同的。

S1035、基于光源信息、每个物体信息集合中的物体信息、每个物体信息集合对应的第一子分辨率和每个物体信息集合对应的第二分辨率,在同一时刻对每个物体信息集合中的各个物体信息进行距离场阴影数据的计算,得到每个物体信息集合对应的距离场阴影数据集合。

由于每个物体信息集合中的各个物体信息所对应的第一子分辨率都是相同的,第二分辨率也是相同的,因而,阴影贴图的烘焙设备基于光源信息、每个物体信息集合中的物体信息,每个物体信息集合所对应的第一子分辨率和第二分辨率,来针对每个物体信息集合并行进行距离场阴影数据的确定,将每个物体信息集合并行进行处理。需要说明的是,在将每个物体信息集合并行处理时,每个物体信息集合中的各个物体信息,可以是依次逐个处理的(此时仅有一层并行),也可以是并行处理的(此时具有两层并行)。

可以理解的是,本申请实施例中的对每个物体信息集合中的各个物体信息进行距离场阴影搜索的过程,可以按照S1031-S1033的步骤来实现,在此不再赘述,只不过是并行的是每个物体信息集合而已。

需要说明的是,每个物体信息集合中的各个物体信息进行距离场阴影搜索之后,都会确定出一个距离场阴影数据,阴影贴图的烘焙设备将每个物体信息集合中的各个物体信息所对应的距离场阴影数据集合在一起,就得到了每个物体信息集合对应的距离场阴影数据集合。也就是说,每个物体信息集合对应的距离场阴影数据集合中包括了每个物体信息集合中的各个物体信息所对应的距离场阴影数据。

S1036、利用每个物体信息集合对应的距离场阴影数据集合中的距离场阴影数据,组成至少一个物体信息对应的至少一个距离场阴影数据。

当阴影贴图的烘焙设备对所有的物体信息集合中的物体信息都完成距离场阴影的搜寻时,实际上就是完成了对至少一个物体信息的距离场阴影的搜寻,从而,阴影贴图的烘焙设备所得到的每个物体信息集合对应的距离场阴影数据集合中的距离场阴影数据,就可以组成至少一个距离场阴影数据。

本申请实施例中,当第一分辨率中包括多个第一子分辨率时,阴影贴图的烘焙设备可以基于多个第一子分辨率和至少一个第二分辨率,将至少一个物体信息分成一个或多个物体信息集合,从而对所有的物体信息集合并行进行物体信息的距离场阴影的搜索过程,进一步提高距离场阴影搜索时的并行度。

在本申请的一些实施例中,利用所述多个第一子分辨率和至少一个第二分辨率,对至少一个物体信息分类,得到多个物体信息集合,即S1034的具体实现过程,可以包括:S1034a-S1034d,如下:

S1034a、利用多个第一子分辨率,对至少一个子物体信息进行分类,得到多个初始物体信息集合。

阴影贴图的烘焙设备先按照多个第一子分辨率,对至少一个子物体信息进行初步的类别划分,从而得到与第一子分辨率的数量个初始物体信息集合。

需要说明的是,在本申请的一些实施例中,当阴影贴图的烘焙设备同时实施为终端和服务器时,该步骤可以在终端完成,从而服务器只需要接收每个初始物体信息集合中的物体信息就可以了。

S1034b、将当前初始物体信息集合中的各个物体信息对应的各个第二分辨率,与所述当前初始物体信息集合对应的第一子分辨率相比,得到各个物体信息对应的分类系数。

其中,当前初始物体信息集合为多个初始物体信息集合中的任意一个。

阴影贴图的烘焙设备从多个初始物体信息集合中任选一个作为当前初始信息集合,然后用当前初始物体信息集合中的各个物体信息所对应的第二分辨率,与第一子分辨率相比,从而计算出各个物体信息对应的分类系数。

可以理解的是,阴影贴图的烘焙设备可以将第二分辨率作为分母,将第一子分辨率作为分子相比,得到分类系数;阴影贴图的烘焙设备还可以将第二分辨率作为分子,将第一子分辨率作为分母进行相比,这时,比值其实就为超采样系数,即各个物体信息对应的分类系数还可以为各个物体信息对应的超采样系数。

S1034c、依据各个物体信息对应的分类系数,将当前初始物体信息集合中的各个物体信息进行分类,得到当前初始物体信息集合对应的一个或多个当前中间物体信息集合。

示例性的,本申请实施例提供了对当前初始物体信息集合中的各个物体信息进行分类的示意图,参见图13,分别有3个初始物体信息集合,分别为集合13-1、集合13-2和集合13-3。其中,集合13-1为当前初始物体信息集合,阴影贴图的烘焙设备再将这个物体信息集合中的各个物体信息的超采样系数作为分类系数,来对这个物体信息集合中的各个物体信息进行分类。从图13可以看出,可以依据3倍超采样系数、5倍超采样系数、7倍超采样数据、11倍超采样系数,将当前物体信息集合中的各个物体信息划分为4类,这时的每个类别,就是中间物体信息集合。

S1034d、当对每个初始物体信息集合均完成一个或多个中间物体信息集合的确定时,得到多个物体信息集合。

当阴影贴图的烘焙设备对每个初始物体信息集合均确定出一个或多个中间物体信息集合时,就能够每个初始物体信息结合对应的一个或多个中间物体信息集合整合在一起,得到多个物体信息集合。

本申请实施例中,阴影贴图的烘焙设备可以先利用多个第一子分辨率,初步对至少一个物体信息进行分类,然后再利用每个初始物体信息集合中的各个物体信息所对应的第二分辨率,来对每个初始物体信息集合中的各个物体信息进行分类,这样,阴影贴图的烘焙设备就能够得到一个或多个物体信息集合了。

下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。

本申请实施例是在将游戏场景中的阴影预先烘焙到贴图时实现的。阴影贴图的烘焙主要分为以下几个步骤:

步骤1、终端收集游戏场景中的所有物体的模型数据(至少一个物体信息),基于用户设置的低分辨率解析度(用户设置的可能有多个不同的低分辨率解析度,每个低分辨率解析度即为第一子分辨率),对物体进行分组(分组得到多个初始物体信息集合),同一组内的低分辨率解析度相同,按组传输到烘焙服务器(阴影贴图的烘焙设备同时实施为了终端和烘焙服务器,即对应于终端进行初步分类,服务器只接收每个初步物体信息集合中的物体信息)。

步骤2、烘焙服务器在获取分组后,基于物体的大小数据和低分辨率解析度(先依据物体信息的表面积计算出第二分辨率,然后按照第二分辨率和第一子分辨率来计算分类系数),计算超采样参数(这时的超采样参数为分类系数),并且按照超采样系数细分成更精细的子组(多个物体信息集合),每一个子组的低分辨率解析度相同,超采样系数也相同(每个物体信息集合中的物体信息的第一分辨率相同,第二分辨率相同,从而第一分辨率和第二分辨率之间的倍数关系相同)。

步骤3、对于子组中的所有物体(每个初始物体信息集合中的各个物体信息),按照高分辨率光栅化,纹素存储位置数据和法线数据,同时对于每一个物体,收集影响物体的光源。

步骤4、传输多个物体的位置数据和发现数据,每个物体为1层,同时将影响该子组内的物体的所有光源组织成数组,传输到GPU中(即开始对每个物体信息集合并行进行距离场阴影数据的计算)。

步骤5、每个子组内部,建立分层的距离场阴影贴图的索引信息,每一层距离场阴影贴图的索引信息,对应一个物体和影响该物体的光源的组合(即每个物体信息集合内的物体信息确定出匹配影响光源)。

步骤6、对于每一层数据,按照索引,取得对应的光源数据和物体数据,确定出阴影边缘。

步骤7、计算每一层高分辨率解析度(第二分辨率)的距离场阴影。

步骤8,、对每一层数据进行降采样,得到每一层低分辨率的距离场阴影(距离场阴影数据)。

步骤9、将距离场阴影烘焙到低分辨率解析度的贴图上(烘焙到第一分辨率的贴图上)。

由此可见,上述过程是对所有的子组并行处理,同时对于每个子组中的每个物体,并行计算出每个物体的距离场阴影数据。

更进一步的,针对子组中的每一个物体的距离场阴影,可以按照以下过程来计算:

S501、将游戏场景中的各种信息(包括了虚拟场景的光源信息和至少一个物体信息)和烘焙kernel(处理过程的程序代码)上传到GPU(即为阴影贴图的烘焙设备中的并行计算的单元)。对于游戏场景中的每一个物体,其对应每一盏光源都有一个距离场阴影贴图(每个物体信息对应的距离场阴影贴图)。基于用户设置的低分辨率解析度(第一分辨率),以及物体实际的大小(物体的表面积),计算出高分辨率解析度(第二分辨率),并计算出超采样系数(超采样参数)。

S502、将物体的位置、法线等数据光栅化到高分辨率解析度(物体信息在对应的目标第二分辨率下光栅化),上传到GPU。

S503、在GPU中,使用以下两个子步骤计算距离场阴影:

S5031、从高分辨率的每一个纹素的位置(光栅化像素对应的纹素的位置)向光源发射射线,计算纹素是否位于阴影中(阴影覆盖信息)。

S5032、基于S5031的结果,计算出阴影边缘的位置(利用阴影覆盖信息提取出每个物体对应的阴影边缘)。在GPU中,需要计算低分辨率的像素中心(第一分辨率的像素中心)到阴影边缘的位置的距离。

由于搜索范围较大,而低分辨率解析度较小,不适合GPU运行,实际运行中,首先依据超采样系数,对每一个像素进行分块(得到至少一个子像素块),分别计算各个子块的距离(至少一个阴影距离),从而将计算平摊到每一个子块中。例如图12中的图,点云填充的小格子只需要处理斜线填充的小格子,判断其是否处于阴影边缘,并且计算距离,其他的子块也只搜寻自己对于的方块区域。对每个子块的距离进行归并,即取最短距离,作为低分辨率解析度的距离场阴影(距离场阴影数据)。

至此,就完成了子组中的每个物体的距离场阴影贴图。

阴影贴图烘焙的效果是用最终的阴影的锯齿感的情况来衡量的。图14是本申请实施例的阴影的效果,从图14可见,阴影边缘的已经不存在锯齿感,机图14中箭头所指的区域呈现的是平滑的线条,而没有出现的明显的锯齿或者是细密的锯齿,从而本申请实施例的阴影贴图的烘焙方法,是能够保证阴影的效果的。

阴影贴图的烘焙的效率则是由处理耗时和GPU和CPU的同步启动次数来衡量的。参见图15,图15示出了相关技术中阴影贴图的烘焙方法的代码调试图,从图15可见,在相关技术中,阶段持续时间(Stages Duration)为2337.319s,类别持续时间(Category Duration)为2337.692s,启动次数为14456次。图16示出了本申请实施例的阴影贴图的烘焙方法的代码调试图,从图16可见,阶段持续时间(Stages Duration)减少到了107.972s,类别持续时间(Category Duration)变为了108.025s,启动次数减少到了186次。从而,相比于相关技术,本申请实施例提供的阴影贴图的烘焙方法提速约20倍,启动次数减少约80倍。可见,本申请实施例提供的阴影贴图的烘焙方法提高了计算密度,减少了数据传输批次,大幅度的提升了阴影贴图烘焙的效率。

本申请实施例的阴影贴图的烘焙方法能够适应于多种游戏场景。表1示出了本申请实施例的阴影贴图的烘焙方法在不同游戏场景中的阴影贴图烘焙的效率变化:

表1

从表1可以看出,在太阳神庙的游戏场景中,相关技术的阴影贴图的烘焙需要花费约60s,本申请只需要10s,渗透者的游戏场景中,相关技术的阴影贴图的烘焙需要花费2400s,本申请只需要12s,在2K*2K大地形的游戏场景中,相关技术的阴影贴图的烘焙需要花费72000s,本申请只需要5000s。可见,相比于相关技术,本申请的阴影贴图的烘焙方法无论是在哪个游戏场景,都能大幅度的提高阴影贴图烘焙的效率。

下面继续说明本申请实施例提供的阴影贴图的烘焙装置455的实施为软件模块的示例性结构,在一些实施例中,如图5所示,存储在存储器450的阴影贴图的烘焙装置455中的软件模块可以包括:

信息获取模块4551,用于获取虚拟场景中的至少一个物体信息、光源信息和第一分辨率;所述第一分辨率为指定的贴图分辨率;

分辨率确定模块4552,用于根据所述至少一个物体信息,确定出至少一个第二分辨率,第二分辨率表征依据所述虚拟场景中的物体信息计算出的贴图分辨率;

数据计算模块4553,用于基于所述光源信息、所述至少一个物体信息、所述第一分辨率和所述至少一个第二分辨率,计算出所述至少一个物体信息对应的至少一个距离场阴影数据;

贴图生成模块4554,用于将所述至少一个距离场阴影数据存储到所述第一分辨率的贴图上,得到所述至少一个物体信息中的每个物体信息对应的距离场阴影贴图。

在本申请的一些实施例中,所述数据计算模块4553,还用于对所述至少一个第二分辨率分别和所述第一分辨率进行比值计算,得到至少一个超采样参数;超采样参数表征了所述第一分辨率和第二分辨率之间的转换关系;利用所述光源信息、所述至少一个物体信息和所述至少一个第二分辨率,确定出所述至少一个物体信息对应的至少一个阴影边缘;基于所述至少一个超采样参数,对所述第一分辨率的像素中心到所述至少一个阴影边缘的距离进行计算,得到所述至少一个距离场阴影数据。

在本申请的一些实施例中,所述光源信息包括多个子光源信息;所述数据计算模块4553,还用于针对所述至少一个物体信息中的每个物体信息,从所述多个子光源信息中,筛选出对应的匹配光源信息;所述匹配光源信息表征给物体造成光照或阴影影响的子光源的信息;从所述至少一个第二分辨率中挑选出所述每个物体信息对应的目标第二分辨率,并将所述每个物体信息在所述目标第二分辨率下光栅化,得到所述每个物体信息的光栅化像素;依据所述光栅化像素对应的纹素的位置和所述匹配光源信息,在同一时刻提取所述每个物体信息对应的阴影边缘;所述纹素的位置是对所述每个物体信息进行纹理坐标展开得到的;当对所述至少一个物体信息均完成阴影边缘的提取时,得到所述至少一个物体信息对应的所述至少一个阴影边缘。

在本申请的一些实施例中,所述数据计算模块4553,还用于依据所述匹配光源信息和所述纹素的位置,在同一时刻对所述每个物体信息的光栅化像素所对应的纹素进行阴影覆盖判断,得到阴影覆盖信息;所述阴影覆盖信息表征所述纹素是否处于阴影之中;利用所述阴影覆盖信息,分别提取出所述每个物体信息对应的阴影边缘。

在本申请的一些实施例中,所述数据计算模块4553,还用于基于所述至少一个超采样参数,在同一时刻对第一分辨率的像素中心到所述至少一个阴影边缘中的每个阴影边缘的距离进行计算,得到所述每个阴影边缘对应的距离场阴影数据;当对所述至少一个阴影边缘均完成距离场阴影数据的计算时,得到所述至少一个距离场阴影数据。

在本申请的一些实施例中,所述数据计算模块4553,还用于从所述至少一个超采样参数中,提取出所述每个阴影边缘对应的目标超采样参数;在同一时刻,基于所述每个阴影边缘对应的目标超采样参数,计算所述第一分辨率的像素中心到所述每个阴影边缘的最小距离;将所述最小距离,作为所述每个阴影边缘对应的距离场阴影数据。

在本申请的一些实施例中,所述数据计算模块4553,还用于按照所述目标超采样系数,对所述第一分辨率的像素进行分块,得到至少一个子像素块;针对所述至少一个子像素块到当前阴影边缘的距离进行并行计算,得到所述至少一个子像素块对应的至少一个阴影距离;所述当前阴影边缘为所述至少一个阴影边缘中的任意一个;从所述至少一个子像素块对应的所述至少一个阴影距离中,挑选出最小的阴影距离,作为所述第一分辨率的像素中心到所述当前阴影边缘的所述最小距离;当针对所述每个阴影边缘均确定出最小距离时,得到所述第一分辨率的像素中心到所述每个阴影边缘的最小距离。

在本申请的一些实施例中,所述数据计算模块4553,还用于依据所述第一分辨率的像素,从所述第二分辨率的各个像素中,提取出所述至少一个子像素块中的每个子像素块对应的多个匹配像素;从所述多个匹配像素中,筛选出属于所述当前阴影边缘的阴影像素;分别对所述每个子像素块到所述阴影像素的距离进行计算,得到所述每个子像素块对应的阴影距离;当对所述至少一个子像素块均完成阴影距离的计算时,得到所述至少一个阴影距离。

在本申请的一些实施例中,所述数据计算模块4553,还用于针对所述第一分辨率的像素,挑选出相邻像素;从所述第二分辨率的各个像素中,提取出与所述相邻像素所对应的像素集合;将所述像素集合中,处于与所述每个子像素块在所述第一分辨率的像素相同位置的像素进行提取,得到所述每个子像素块对应的多个匹配像素。

在本申请的一些实施例中,所述第一分辨率包括多个第一子分辨率;所述阴影贴图的烘焙装置455还包括:信息分类模块4555;

所述信息分类模块4555,用于利用所述多个第一子分辨率和所述至少一个第二分辨率,对所述至少一个物体信息分类,得到多个物体信息集合;

所述数据计算模块4553,还用于基于所述光源信息、每个物体信息集合中的物体信息、所述每个物体信息集合对应的第一子分辨率和所述每个物体信息集合中的各个物体信息对应的第二分辨率,在同一时刻对所述每个物体信息集合中的物体信息进行距离场阴影数据的计算,得到所述每个物体信息集合对应的距离场阴影数据集合;利用所述每个物体信息集合对应的距离场阴影数据集合中的距离场阴影数据,组成所述至少一个物体信息对应的所述至少一个距离场阴影数据。

在本申请的一些实施例中,所述数据计算模块4553,还用于利用所述多个第一子分辨率,对所述至少一个物体信息进行分类,得到多个初始物体信息集合;将当前初始物体信息集合中的各个物体信息对应的各个第二分辨率,与所述当前初始物体信息集合对应的第一分辨率相比,得到所述各个物体信息对应的分类系数;所述当前初始物体信息集合为所述多个初始物体信息集合中的任意一个;依据所述各个物体信息对应的分类系数,将所述当前初始物体信息集合中的各个物体信息进行分类,得到所述当前初始物体信息集合对应的一个或多个当前中间物体信息集合;当对每个初始物体信息集合均完成一个或多个中间物体信息集合的确定时,得到所述多个物体信息集合。

本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的阴影贴图的烘焙方法。

本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行阴影贴图的烘焙指令,当可执行阴影贴图的烘焙指令被处理器执行时,将引起处理器执行本申请实施例提供的阴影贴图的烘焙方法,例如,如图6示出的方法。

在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

在一些实施例中,可执行阴影贴图的烘焙指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行阴影贴图的烘焙指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper Text Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。

作为示例,可执行阴影贴图的烘焙指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。

以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号