阴影贴图生成方法及装置与流程

文档序号:14445712阅读:315来源:国知局
阴影贴图生成方法及装置与流程

本发明涉及游戏场景处理技术领域,具体而言,涉及一种阴影贴图生成方法及装置。



背景技术:

在三维游戏中为尽量真实地模拟环境变化情况,经常需要进行实时阴影渲染,以提升游戏图像质量。

在现有技术中,常用的实时阴影渲染方案是针对游戏场景中的物体生成多张不同的阴影图,并在进行阴影渲染时根据物体深度值的不同,选取不同的阴影图进行采样渲染,以达到实时阴影渲染的效果。但这种方案生成的阴影图会使阴影渲染效率不高,不同级别的阴影图不能进行同时采样,对位于相邻级别的阴影图之间的像素点来说,级别过渡效果差。



技术实现要素:

为了克服现有技术中的上述不足,本发明的目的在于提供一种阴影贴图生成方法及装置,所述方法生成的阴影贴图在不同级别的阴影图像能够进行同时采样,提高实时阴影渲染的渲染效率及级别过渡效果。

就方法而言,本发明较佳的实施例提供一种阴影贴图生成方法,所述方法包括:

根据预设阴影图像数目及预设图像尺寸创建一张纹理图,并将所述纹理图划分为多个相同大小的纹理区域,其中所述纹理区域的总数等于所述预设阴影图像数目;

根据预设阴影图像数目对当前视角下的相机空间进行平行分割,并基于当前游戏场景中的光线方向,生成分割得到的各视图空间在当前光线方向下对应的视图投影矩阵;

依次根据各视图空间的视图投影矩阵,在对应纹理区域中渲染生成当前光线方向下投影到对应视图空间中的物体的阴影深度图像;

对各视图空间的视图投影矩阵进行矩阵变换,得到各纹理区域对应的转换矩阵,及各阴影深度图像在所述纹理图中的纹理坐标范围,以生成对应的阴影纹理贴图。

就装置而言,本发明较佳的实施例提供一种阴影贴图生成装置,所述装置包括:

纹理创建模块,用于根据预设阴影图像数目及预设图像尺寸创建一张纹理图,并将所述纹理图划分为多个相同大小的纹理区域,其中所述纹理区域的总数等于所述预设阴影图像数目;

矩阵生成模块,用于根据预设阴影图像数目对当前视角下的相机空间进行平行分割,并基于当前游戏场景中的光线方向,生成分割得到的各视图空间在当前光线方向下对应的视图投影矩阵;

阴影渲染模块,用于依次根据各视图空间的视图投影矩阵,在对应纹理区域中渲染生成当前光线方向下投影到对应视图空间中的物体的阴影深度图像;

矩阵变换模块,用于对各视图空间的视图投影矩阵进行矩阵变换,得到各纹理区域对应的转换矩阵,及各阴影深度图像在所述纹理图中的纹理坐标范围,以生成对应的阴影纹理贴图。

相对于现有技术而言,本发明较佳的实施例提供的阴影贴图生成方法及装置具有以下有益效果:所述阴影贴图生成方法生成的阴影贴图在不同级别的阴影图像能够进行同时采样,提高实时阴影渲染的渲染效率及级别过渡效果。首先,根据预设阴影图像数目及预设图像尺寸创建一张纹理图,并将所述纹理图划分为多个相同大小的纹理区域,其中所述纹理区域的总数等于所述预设阴影图像数目;接着,所述方法根据预设阴影图像数目对当前视角下的相机空间进行平行分割,并基于当前游戏场景中的光线方向,生成分割得到的各视图空间在当前光线方向下对应的视图投影矩阵;然后,所述方法依次根据各视图空间的视图投影矩阵,在对应纹理区域中渲染生成当前光线方向下投影到对应视图空间中的物体的阴影深度图像;最后,所述方法根据对各视图空间的视图投影矩阵进行矩阵变换,得到各纹理区域对应的转换矩阵,及各阴影深度图像在所述纹理图中的纹理坐标范围,以生成对应的阴影纹理贴图,从而使得一张纹理贴图中包括有不同级别的阴影图像,确保不同级别的阴影图像能够进行同时采样,提高实时阴影渲染的渲染效率及级别过渡效果。

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

附图说明

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

图1为本发明较佳的实施例提供的计算设备的方框示意图。

图2为本发明较佳的实施例提供的阴影贴图生成方法的流程示意图。

图3为本发明较佳的实施例提供的图1中所示的阴影贴图生成装置的方框示意图。

图4为图3中所示的阴影渲染模块的方框示意图。

图标:10-计算设备;11-存储器;12-处理器;13-通信单元;14-显卡单元;100-阴影贴图生成装置;110-纹理创建模块;120-矩阵生成模块;130-阴影渲染模块;140-矩阵变换模块;131-分类子模块;132-绘制子模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

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

下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

请参照图1,是本发明较佳的实施例提供的计算设备10的方框示意图。在本发明实施例中,所述计算设备10能够针对当前游戏场景中需要进行实时阴影渲染的物体,生成对应的包括有不同级别的阴影图像的阴影贴图,以在对所述物体进行实时阴影渲染时,确保所述阴影贴图中不同级别的阴影图像能够进行同时采样,提高实时阴影渲染的渲染效率及级别过渡效果。在本实施例中,所述计算设备10可以是,但不限于,个人电脑(personalcomputer,pc)、平板电脑、个人数字助理(personaldigitalassistant,pda)或具有图像处理功能的服务器等。

在本实施例中,所述计算设备10可以包括阴影贴图生成装置100、存储器11、处理器12、通信单元13及显卡单元14。所述存储器11、处理器12、通信单元13及显卡单元14各个元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述阴影贴图生成装置100包括至少一个可以软件或固件(firmware)的形式存储于所述存储器11中的软件功能模块,所述处理器12通过运行存储在存储器11内的软件程序以及模块,从而执行各种功能应用以及数据处理。

在本实施例中,所述存储器11可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除可编程只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器11用于存储程序,所述处理器12在接收到执行指令后,执行所述程序。进一步地,上述存储器11内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。

在本实施例中,所述处理器12可以是一种具有信号的处理能力的集成电路芯片。所述处理器12可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

在本实施例中,所述通信单元13用于通过网络建立所述计算设备10与其他外部设备之间的通信连接,并通过所述网络进行数据传输。

在本实施例中,所述显卡单元14用于对图形数据进行运算处理,以缓解处理器12的运算压力。其中,所述显卡单元14的核心部件为gpu(graphicsprocessingunit,图形处理器),用于将计算设备10所需的图形数据信息进行转换驱动,并控制显示器进行显示。

在本实施例中,所述计算设备10通过存储在所述存储器11中的阴影贴图生成装置100针对游戏场景中的物体生成包括不同级别的阴影图像的阴影贴图,从而通过所述阴影贴图对游戏场景中需要实时阴影渲染的物体进行渲染效率高且级别过渡效果好的阴影渲染。

可以理解的是,图1所示的结构仅为计算设备10的一种结构示意图,所述计算设备10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

请参照图2,是本发明较佳的实施例提供的阴影贴图生成方法的流程示意图。在本发明实施例中,所述阴影贴图生成方法应用于上述的计算设备10,下面对图2所示的阴影贴图生成方法的具体流程和步骤进行详细阐述。

在本发明实施例中,所述阴影贴图生成方法包括以下步骤:

步骤s210,根据预设阴影图像数目及预设图像尺寸创建一张纹理图,并将所述纹理图划分为多个相同大小的纹理区域。

在本实施例中,所述预设阴影图像数目可以表征所述计算设备10需要生成的多少个不同级别的阴影图像,所述预设图像尺寸可以表征每个阴影图像对应的长度及宽度。其中,所述计算设备10可通过网络从与该计算设备10通信的其他外部设备处获取所述预设阴影图像数目及所述预设图像尺寸;所述计算设备10也可通过提供外部输入设备的方式,接收游戏设计人员输入的所述预设阴影图像数目及所述预设图像尺寸。在本实施例中,所述预设阴影图像数目及所述预设图像尺寸可存储在所述存储器11中。

在本实施例中,所述纹理图上被划分出的纹理区域的总数等于所述预设阴影图像数目,所述预设图像尺寸包括图像宽度及图像长度。所述根据预设阴影图像数目及预设图像尺寸创建一张纹理图,并将所述纹理图划分为多个相同大小的纹理区域的步骤包括:

根据预设阴影图像数目及预设图像尺寸中的图像长度,计算得到待创图的长度;

根据待创图的长度及所述预设图像尺寸中的图像宽度对应创建尺寸匹配的纹理图,并沿所述纹理图的长度方向以所述图像长度为间隔将所述纹理图划分为多个纹理区域。

其中,所述待创图即为待创建的所述纹理图,所述纹理区域用于绘制对应的阴影图像,以使不同级别的阴影图像能够包括于一张纹理图中。

步骤s220,根据预设阴影图像数目对当前视角下的相机空间进行平行分割,并基于当前游戏场景中的光线方向,生成分割得到的各视图空间在当前光线方向下对应的视图投影矩阵。

在本实施例中,所述相机空间为虚拟相机在当前视角下能够观测到的拍摄空间,所述光线方向为游戏场景中光源照射的方向,所述视图空间为所述计算设备10对所述虚拟相机的拍摄范围进行划分得到的不同范围区间,每个视图空间对应的物体在对应视图空间中的阴影深度图与其他空间对应的阴影深度图并不相同,且级别也不同。而所述视图投影矩阵为对应视图空间在将物体的世界坐标转换为对应的视图坐标时使用的矩阵,不同的视图空间对应不同的视图投影矩阵。

在本实施例中,所述根据预设阴影图像数目对当前视角下的相机空间进行平行分割的步骤包括:

根据所述相机空间内各处与该相机空间对应的视点之间的距离信息,由近至远地按照所述预设阴影图像数目对所述相机空间进行平行式分割,使分割得到的各视图空间由近至远依次增大。

其中,所述相机空间对应的视点即为所述虚拟相机本身,分割出的视图空间的数目与所述预设阴影图像数目相同,最靠近所述虚拟相机的视图空间即为第一级别视图空间,与所述第一级别视图空间相邻的视图空间即为第二级别视图空间,并依次类推直到分割出的最后一个视图空间。其中每个视图空间对应一个级别阴影深度图像。例如,第一级别视图空间对应第一级别阴影图像,第二级别视图空间对应第二级别阴影图像。

在本实施例中,各视图空间所对应的视图投影矩阵是基于同一光线方向得到的,相邻视图空间对应的视图投影矩阵因视图空间分割位置的不同而有所不同。其中,同一视图空间对应的视图投影矩阵会随着光线方向的改变而发生改变。

步骤s230,依次根据各视图空间的视图投影矩阵,在对应纹理区域中渲染生成当前光线方向下投影到对应视图空间中的物体的阴影深度图像。

在本实施例中,所述计算设备10会在渲染完成一个视图空间对应的阴影深度图像后,再对下一视图空间对应的阴影深度图像进行渲染。其中,所述依次根据各视图空间的视图投影矩阵,在对应纹理区域中渲染生成当前光线方向下投影到对应视图空间中的物体的阴影深度图像的步骤包括:

按照由近至远的顺序对游戏场景中投影到各视图空间内的物体进行分类;

根据各纹理区域与各视图空间之间的对应关系,依次在各纹理区域内基于对应的视图投影矩阵对分类到对应视图空间的物体进行阴影图像绘制处理,得到对应的阴影深度图像。

其中,所述计算设备10通过以虚拟相机为起点由近至远地对各视图空间内投影的物体进行识别的方式,对游戏场景中的物体进行分类。所述纹理图中各纹理区域按照从左至右的顺序依次与各视图空间一一对应,每个纹理区域按照对应的视图投影矩阵对应绘制投影到匹配视图空间内的物体的阴影深度图像,从而在同一张纹理图中绘制出不同级别的阴影深度图像。

步骤s240,对各视图空间的视图投影矩阵进行矩阵变换,得到各纹理区域对应的转换矩阵,及各阴影深度图像在所述纹理图中的纹理坐标范围,以生成对应的阴影纹理贴图。

在本实施例中,所述阴影纹理贴图为绘制完所有级别的阴影深度图像后的,得到了各纹理区域对应的转换矩阵,及各阴影深度图像在所述纹理图中的纹理坐标范围的所述纹理图。所述计算设备10在所述纹理图上绘制出了各级别的阴影深度图像后,将对各视图空间的视图投影矩阵进行矩阵变换处理,使变换得到的各转换矩阵能够与所述纹理图各纹理区域对应匹配,确保对游戏场景中物体的像素点能够通过各转换矩阵,判断该像素点在所述纹理图上对应的纹理坐标是否落在对应的纹理区域中。例如,一个像素点的世界坐标通过第一级别视图空间对应的纹理区域的转换矩阵进行坐标变换后,将得到一个纹理坐标,若该纹理坐标落在所述第一级别视图空间对应的纹理区域的纹理坐标范围内时,则所述计算设备10可使用所述纹理区域内的阴影深度图像进行阴影渲染;若该纹理坐标落在所述第一级别视图空间对应的纹理区域的纹理坐标范围外时,则所述计算设备10将使用下一级别视图空间对应的纹理区域的转换矩阵对该像素点的世界坐标进行坐标变换,并判断变换后得到的纹理坐标是否落在被使用的转换矩阵所对应的纹理区域的纹理坐标范围内。

在本实施例中,所述对各视图空间的视图投影矩阵进行矩阵变换,得到各纹理区域对应的转换矩阵,及各阴影深度图像在所述纹理图中的纹理坐标范围的步骤包括:

根据预设阴影图像数目及坐标调整策略对各视图投影矩阵进行缩放处理及位移处理,得到各纹理区域对应的转换矩阵;

根据各纹理区域对应的转换矩阵及各纹理区域在所述纹理图中的分布情况,得到各纹理区域对应阴影深度图像的纹理坐标范围。

在本实施例中,所述坐标调整策略用于调整各视图投影矩阵对应的坐标范围,所述计算设备10可通过所述坐标调整策略将各视图投影矩阵对应的坐标范围调整为各纹理区域在所述纹理图上对应的坐标范围,即可得到各纹理区域对应阴影深度图像的纹理坐标范围。例如,一张纹理图上有三个纹理区域,则第一级别阴影深度图像的纹理坐标范围为(0,0)、(0.3333,0)、(0.3333,1)及(0,1)四个纹理坐标包围形成的矩形,第二级别阴影深度图像的纹理坐标范围为(0.3333,0)、(0.6666,0)、(0.6666,1)及(0.3333,1)四个纹理坐标包围形成的矩形,第三级别阴影深度图像的纹理坐标范围为(0.6666,0)、(1,0)、(1,1)及(0.6666,1)四个纹理坐标包围形成的矩形。

请参照图3,是本发明较佳的实施例提供的图1中所示的阴影贴图生成装置100的方框示意图。在本发明实施例中,所述阴影贴图生成装置100包括纹理创建模块110、矩阵生成模块120、阴影渲染模块130及矩阵变换模块140。

所述纹理创建模块110,用于根据预设阴影图像数目及预设图像尺寸创建一张纹理图,并将所述纹理图划分为多个相同大小的纹理区域。

在本实施例中,所述纹理区域的总数等于所述预设阴影图像数目,所述预设图像尺寸包括图像宽度及图像长度,所述纹理创建模块110根据预设阴影图像数目及预设图像尺寸创建一张纹理图,并将所述纹理图划分为多个相同大小的纹理区域的步骤包括:

根据预设阴影图像数目及预设图像尺寸中的图像长度,计算得到待创图的长度;

根据待创图的长度及所述预设图像尺寸中的图像宽度对应创建尺寸匹配的纹理图,并沿所述纹理图的长度方向以所述图像长度为间隔将所述纹理图划分为多个纹理区域。

其中,所述纹理创建模块110可以执行图2中所示的步骤s210,具体的描述可以参照上文中对步骤s210的详细描述。

所述矩阵生成模块120,用于根据预设阴影图像数目对当前视角下的相机空间进行平行分割,并基于当前游戏场景中的光线方向,生成分割得到的各视图空间在当前光线方向下对应的视图投影矩阵。

在本实施例中,所述矩阵生成模块120根据预设阴影图像数目对当前视角下的相机空间进行平行分割的方式包括:

根据所述相机空间内各处与该相机空间对应的视点之间的距离信息,由近至远地按照所述预设阴影图像数目对所述相机空间进行平行式分割,使分割得到的各视图空间由近至远依次增大。

其中,所述矩阵生成模块120可以执行图2中所示的步骤s220,具体的描述可以参照上文中对步骤s220的详细描述。

所述阴影渲染模块130,用于依次根据各视图空间的视图投影矩阵,在对应纹理区域中渲染生成当前光线方向下投影到对应视图空间中的物体的阴影深度图像。

可选地,请参照图4,是图3中所示的阴影渲染模块130的方框示意图。在本实施例中,所述阴影渲染模块130可以包括分类子模块131及绘制子模块132。

所述分类子模块131,用于按照由近至远的顺序对游戏场景中投影到各视图空间内的物体进行分类。

所述绘制子模块132,用于根据各纹理区域与各视图空间之间的对应关系,依次在各纹理区域内基于对应的视图投影矩阵对分类到对应视图空间的物体进行阴影图像绘制处理,得到对应的阴影深度图像。

请再次参照图3,所述矩阵变换模块140,用于对各视图空间的视图投影矩阵进行矩阵变换,得到各纹理区域对应的转换矩阵,及各阴影深度图像在所述纹理图中的纹理坐标范围,以生成对应的阴影贴图。

在本实施例中,所述矩阵变换模块140对各视图空间的视图投影矩阵进行矩阵变换,得到各纹理区域对应的转换矩阵,及各阴影深度图像在所述纹理图中的纹理坐标范围的方式包括:

根据预设阴影图像数目及坐标调整策略对各视图投影矩阵进行缩放处理及位移处理,得到各纹理区域对应的转换矩阵;

根据各纹理区域对应的转换矩阵及各纹理区域在所述纹理图中的分布情况,得到各纹理区域对应阴影深度图像的纹理坐标范围。

其中,所述矩阵变换模块140可以执行图2中的步骤s240,具体的描述可参照上文中对所述步骤s240的详细描述。

综上所述,在本发明较佳的实施例提供的阴影贴图生成方法及装置中,所述阴影贴图生成方法生成的阴影贴图在不同级别的阴影图像能够进行同时采样,提高实时阴影渲染的渲染效率及级别过渡效果。首先,根据预设阴影图像数目及预设图像尺寸创建一张纹理图,并将所述纹理图划分为多个相同大小的纹理区域,其中所述纹理区域的总数等于所述预设阴影图像数目;接着,所述方法根据预设阴影图像数目对当前视角下的相机空间进行平行分割,并基于当前游戏场景中的光线方向,生成分割得到的各视图空间在当前光线方向下对应的视图投影矩阵;然后,所述方法依次根据各视图空间的视图投影矩阵,在对应纹理区域中渲染生成当前光线方向下投影到对应视图空间中的物体的阴影深度图像;最后,所述方法根据对各视图空间的视图投影矩阵进行矩阵变换,得到各纹理区域对应的转换矩阵,及各阴影深度图像在所述纹理图中的纹理坐标范围,以生成对应的阴影纹理贴图,从而使得一张纹理贴图中包括有不同级别的阴影图像,确保不同级别的阴影图像能够进行同时采样,提高实时阴影渲染的渲染效率及级别过渡效果。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1