游戏中的渲染方法、装置和电子设备

文档序号:1954837 发布日期:2021-12-10 浏览:14次 >En<

阅读说明:本技术 游戏中的渲染方法、装置和电子设备 (Rendering method and device in game and electronic equipment ) 是由 张启平 秦斌斌 于 2021-09-14 设计创作,主要内容包括:本发明提供了一种游戏中的渲染方法、装置和电子设备,获取目标图像的多张深度图,确定每张深度图对应的渲染对象的初始渲染结果;进而将目标图像划分为边缘区域、非边缘区域、以及过渡区域;基于每张深度图对应的渲染对象的初始渲染结果,采用每个渲染区域预设的渲染方式,对渲染区域进行渲染,得到渲染后的目标图像。该方式中,通过目标图像的多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为边缘区域、非边缘区域和过渡区域,针对不同的区域采用不同的渲染方式进行渲染,避免了边缘区域和过渡区域出现马赛克、遮挡关系不正确的问题,提高了渲染效果和渲染效率,进而提高了玩家的游戏体验感。(The invention provides a rendering method, a rendering device and electronic equipment in a game, which are used for obtaining a plurality of depth maps of a target image and determining an initial rendering result of a rendering object corresponding to each depth map; further dividing the target image into an edge region, a non-edge region and a transition region; and rendering the rendering area by adopting a preset rendering mode of each rendering area based on the initial rendering result of the rendering object corresponding to each depth map to obtain a rendered target image. In the method, the target image is divided into the edge area, the non-edge area and the transition area through the multiple depth maps of the target image and the initial rendering result corresponding to each depth map, different rendering modes are adopted for rendering aiming at different areas, the problems that mosaics appear in the edge area and the transition area and the shielding relation is incorrect are avoided, the rendering effect and the rendering efficiency are improved, and the game experience of a player is further improved.)

游戏中的渲染方法、装置和电子设备

技术领域

本发明涉及计算机技术领域,尤其是涉及一种游戏中的渲染方法、装置和电子设备。

背景技术

在游戏中,为目标对象添加特效是一种非常普遍的渲染方式,为了达到较好的游戏效果,特效的轨道数量以及每个轨道渲染时的占屏面积越来越高,使得特效的填充率也越来越高,导致游戏特效的渲染效率降低。相关技术中,通常采用降低特效分辨的方式进行渲染,在降采样的深度图中绘制特效,渲染目标图像;但是特效与目标图像之间存在穿插关系,导致降低分辨率绘制的特效与目标对象混合时会产生马赛克以及遮挡关系不正确等问题,降低了渲染效果和游戏质量,影响了玩家的游戏体验感。

发明内容

有鉴于此,本发明的目的在于提供一种游戏中的渲染方法、装置和电子设备,以提高渲染效果和游戏质量,进而提高玩家的游戏体验感。

第一方面,本发明实施例提供了一种游戏中的渲染方法,方法包括:获取目标图像的多张深度图;其中,目标图像包括至少一个图像区域;深度图包括图像区域对应的深度信息;基于深度图绘制预设的渲染对象,得到每张深度图对应的渲染对象的初始渲染结果;基于多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为多个渲染区域;其中,渲染区域包括边缘区域、非边缘区域、以及边缘区域与非边缘区域之间的过渡区域;基于每张深度图对应的渲染对象的初始渲染结果,采用每个渲染区域预设的渲染方式,对渲染区域进行渲染,得到渲染后的目标图像。

进一步的,获取目标图像的多张深度图的步骤,包括:根据目标图像中每个图像区域对应的深度信息,对目标图像进行降采样处理,得到多张深度图;其中,针对同一图像区域,不同深度图中该图像区域对应的深度信息不同。

进一步的,多张深度图包括第一深度图和第二深度图;其中,针对同一图像区域,第一深度图中该图像区域对应的深度信息为该图像区域中的最大深度值,第二深度图中该图像区域对应的深度信息为该图像区域中的最小深度值。

进一步的,基于深度图绘制预设的渲染对象,得到每张深度图对应的渲染对象的初始渲染结果的步骤,包括:针对多张深度图,生成每张深度图对应的渲染目标;响应针对于渲染对象的绘制指令,获取渲染对象中每个像素点的深度值、颜色值以及透明度值;针对每张深度图中的每个像素点,如果渲染对象中该像素点的深度值小于深度图中该像素点的深度值,将渲染对象中该像素点的颜色值以及该像素点的目标透明度值,确定为该深度图对应的该像素点的初始渲染结果;其中,目标透明度值基于渲染对象预设的混合模式确定;将深度图中每个像素点的初始渲染结果,确定为深度图对应的渲染目标对应的像素点的像素值。

进一步的,渲染目标中存储有每个像素点的透明度值;基于渲染对象预设的混合模式确定目标透明度值的步骤,包括:如果预设的混合模式为乘法混合模式,计算渲染对象中该像素点的透明度值与渲染目标中存储的该像素点的透明度值的乘积值;将渲染目标中存储的该像素点的透明度值减去乘积值的差值,确定为目标透明度值;如果预设的混合模式为加法混合模式,将渲染目标中存储的该像素点的透明度值确定为目标透明度值。

进一步的,基于多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为多个渲染区域的步骤,包括:基于多张深度图以及每张深度图对应的初始渲染结果,计算深度图中每个像素点的误差权重;其中,误差权重用于指示像素点每个通道的像素值的误差大小;针对深度图中的每个像素点,计算多个深度图中该像素点的深度值的平均深度值;根据深度图中每个像素点的误差权重和平均深度值,将目标图像划分为多个渲染区域。

进一步的,基于多张深度图以及每张深度图对应的初始渲染结果,计算深度图中每个像素点的误差权重的步骤,包括:针对深度图中的每个像素点,将该像素点的误差权重设置为:

A=abs(zmax-zmin)*(maxDepthcolor-inDepthcolor)*(dzmaxX+dzmaxY);

其中,A为像素点的误差权重;abs为“(zmax-zmin)*(maxDepthcolor-minDepthcolor)*(dzmaxX+dzmaxY)”的绝对值;zmax为第一深度图中像素点的线性深度值;zmin为第二深度图中像素点的线性深度;maxDepthcolor为第一深度图对应的初始渲染结果中像素点的颜色值;minDepthcolor为第二深度图对应的初始渲染结果中像素点的颜色值;dzmaxX为第一深度图中像素点的线性深度值在x方向偏导数的绝对值;dzmaxY为第一深度图中像素点的线性深度值在y方向偏导数的绝对值。

进一步的,根据深度图中每个像素点的误差权重和平均深度值,将目标图像划分为多个渲染区域的步骤,包括:针对深度图中的每个像素点,将该像素点的误差权重确定为该像素的第一像素值;从该像素点的邻接像素点中确定平均深度值小于该像素点的平均深度值的指定像素点,将该像素点和所述指定像素点中的最大误差权重,确定为该像素点的第二像素值;其中,邻接像素点包括:当前像素点以及与当前像素点在水平方向和竖直方向相邻的像素点;根据深度图中每个像素点的第一像素值和第二像素值,将目标图像划分为多个渲染区域。

进一步的,根据深度图中每个像素点的第一像素值和第二像素值,将目标图像划分为多个渲染区域的步骤,包括:针对目标图像中每个图像区域,执行下述操作:如果深度图中该图像区域对应的目标像素点的第一像素值和第二像素值均小于预设阈值,将该图像区域划分为非边缘区域;如果深度图中该图像区域对应的目标像素点的第一像素值小于预设阈值,且深度图中该图像区域对应的目标像素点的第二像素值大于预设阈值,将该图像区域划分为过渡区域;如果深度图中该图像区域对应的目标像素点的第一像素值大于预设阈值,将该图像区域划分为边缘区域。

进一步的,基于每张深度图对应的渲染对象的初始渲染结果,采用每个渲染区域预设的渲染方式,对渲染区域进行渲染,得到渲染后的目标图像的步骤,包括:基于每张深度图对应的初始渲染结果,采用每个渲染区域预设的渲染方式,确定目标图像中每个像素点的最终渲染结果;将最终渲染结果混合至目标图像中对应的像素点,得到渲染后的目标图像。

进一步的,基于每张深度图对应的初始渲染结果,采用每个渲染区域预设的渲染方式,确定目标图像中每个像素点的最终渲染结果的步骤,包括:针对目标图像中非边缘区域的每个像素点,将该像素点的最终渲染结果设置为:Res1=MaxDepthRT*(1-Ad)+MainRT*Ad;其中,Res1为像素点的渲染结果;MaxDepthRT为第一深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点颜色通道的像素值;Ad为第一深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点透明度通道的像素值;MainRT为目标图像中像素点颜色通道的像素值。

进一步的,基于每张深度图对应的初始渲染结果,采用每个渲染区域预设的渲染方式,确定目标图像中每个像素点的最终渲染结果的步骤,包括:针对目标图像中过渡区域的每个像素点,将该像素点的最终渲染结果设置为:Res2=MinDepthRT*(1-Ax)+MainRT*Ax;其中,Res2为像素点的渲染结果;MinDepthRT为第二深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点颜色通道的像素值;Ax为第二深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点透明度通道的像素值;MainRT为目标图像中像素点颜色通道的像素值。

进一步的,基于每张深度图对应的初始渲染结果,采用每个渲染区域预设的渲染方式,确定目标图像中每个像素点的最终渲染结果的步骤,包括:针对目标图像中边缘区域的每个像素点,将该像素点的最终渲染结果设置为:Res3=MidDepthRT*(1-Am)+MainRT*Am;MidDepthRes=lerp(MaxDepthRT,MinDepthRT,d-dx)/(dd-dx));其中,Res3为像素点的渲染结果;MaxDepthRT为第一深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点颜色通道的像素值;MinDepthRT为第二深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点颜色通道的像素值;d为目标图像中像素点的深度值;dd为第一深度图中像素点所属的图像区域对应的目标像素点的深度值;dx为第二深度图中像素点所属的图像区域对应的目标像素点的深度值;lerp为线性插值函数;MidDepthRes为插值图像;MidDepthRT为插值图像MidDepthRes中像素点颜色通道的颜色值;Am是插值图像MidDepthRes中像素点透明度通道的透明度值;MainRT为目标图像中像素点颜色通道的像素值。

第二方面,本发明实施例提供了一种游戏中的渲染装置,装置包括:获取模块,用于获取目标图像的多张深度图;其中,目标图像包括至少一个图像区域;深度图包括图像区域对应的深度信息;针对同一图像区域,不同深度图中该图像区域对应的深度信息不同;初始渲染结果确定模块,用于基于深度图绘制预设的渲染对象,得到每张深度图对应的渲染对象的初始渲染结果;渲染区域确定模块,用于基于多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为多个渲染区域;其中,渲染区域包括边缘区域、非边缘区域、以及边缘区域与非边缘区域之间的过渡区域;渲染模块,用于基于每张深度图对应的渲染对象的初始渲染结果,采用每个渲染区域预设的渲染方式,对渲染区域进行渲染,得到渲染后的目标图像。

第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现第一方面任一项的游戏中的渲染方法。

第四方面,本发明实施例提供了一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现第一方面任一项的游戏中的渲染方法。

本发明实施例带来了以下有益效果:

本发明提供了一种游戏中的渲染方法、装置和电子设备,获取目标图像的多张深度图;基于深度图绘制预设的渲染对象,得到每张深度图对应的渲染对象的初始渲染结果;基于多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为边缘区域、非边缘区域、以及边缘区域与非边缘区域之间的过渡区域;基于每张深度图对应的渲染对象的初始渲染结果,采用每个渲染区域预设的渲染方式,对渲染区域进行渲染,得到渲染后的目标图像。该方式中,通过目标图像的多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为边缘区域、非边缘区域和过渡区域,针对不同的区域采用不同的渲染方式进行渲染,避免了边缘区域和过渡区域出现马赛克、遮挡关系不正确的问题,提高了渲染效果和渲染效率,进而提高了玩家的游戏体验感。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

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

附图说明

为了更清楚地说明本发明

具体实施方式

或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种游戏中的渲染方法的流程图;

图2为本发明实施例提供的另一种游戏中的渲染方法的流程图;

图3为本发明实施例提供的一种游戏中的渲染装置的结构示意图;

图4为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前在游戏中,为目标对象添加特效是一种非常普遍的渲染方式,随着游戏品质的提高,为了达到较好的游戏效果,特效的轨道数量以及每个轨道渲染时的占屏面积越来越高,使得特效的填充率也越来越高,导致游戏特效的渲染效率降低。由于特效渲染时本身的特性,特别是特效中粒子一般较为常见,因此降低特效分辨率进行渲染,在大多数情况下对玩家的游戏体验影响较小。

目前解决上述问题的方法最主要包括以下两种类型:

一、首先对目标图像降采样,生成1/4分辨率的最大深度图,以1/4的分辨率渲染特效,渲染时在渲染目标上记录下特效位置的期望和方差;根据1/4分辨率的最大深度图对应的渲染目标上记录的位置和方差信息,按照正态分布将特效与目标图像进行插值混合。这种方式中,在渲染目标上绘制特效的时候,需要假设特效符合正态分布。这种假设在特效方差较小,或者特效与目标图像上同一像素点的其他物体不穿插时效果较好。但是当特效的分布方差较大且与目标图像上同一像素点的其他物体穿插时,这种假设的误差较大,从而导致特效混合至目标图像时,渲染结果不正确。

二、首先采用常规方法渲染场景,同时将目标图像的深度值写入到缓存区得到深度缓存,对该深度缓存进行降采样到低分辨率的渲染目标中;将粒子渲染到离屏渲染对象中,与深度缓存进行深度测试;对渲染目标进行升采样,将渲染对象加入到升采样后的渲染目标,得到渲染后的图像。由于升采样可能会造成马赛克问题,采用边缘检测方法,提取出深度值不连续的区域,在这些区域内重新用全分辨率再次渲染一遍特效。该种方式,由于在边缘区域内,是通过再一次绘制深度值不连续的区域的特效的方式来绘制正确的特效,会增加渲染调用绘制指令的数量,进而影响渲染的效率和性能,导致渲染效率的提升效果欠佳。

基于上述问题,本发明实施例提供的一种游戏中的渲染方法、装置和电子设备,该技术可以应用于具有渲染场景的游戏中。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种游戏中的渲染方法进行详细介绍,如图1所示,该方法包括如下步骤:

步骤S102,获取目标图像的多张深度图;其中,目标图像包括至少一个图像区域;深度图包括图像区域对应的深度信息;

上述目标图像通常为游戏场景中指定对象的图像,或指定区域的图像,该目标图像通常包括受玩家控制的游戏角色、不受玩家控制的游戏角色、游戏场景中的道具、建筑、环境、树木、道路等元素。上述目标图像包括的图像区域的大小相同,每个图像区域可以包括目标图像中的多个像素点,比如4个、9个、16个等;具体的像素点的个数可以根据目标图像的尺寸以及实际需要进行设置,且每个图像区域之间相互不重叠。

上述图像区域对应的深度信息可以是图像区域中的最大深度值,或者最小深度值,或者所有深度值的平均深度值等。比如,上述多张深度图包括三张,则针对同一图像区域,第一张深度图中该图像区域对应的深度信息可以为最大深度值,第二张深度图中该图像区域对应的深度信息可以为最小深度值,第三张深度图中该图像区域对应的深度信息可以为平均深度值。

举例说明,要求将1920*1080分辨率的目标图像尺寸变为原来的1/4的两个深度图,即480*270分辨率的深度图,此时目标图像的多个图像区域包括16个像素点;针对第一个深度图,该深度图中每个像素点的深度值为对应的图像区域(即16个像素点)中的最大深度值。针对第二个深度图,该深度图中每个像素点的深度值为对应的图像区域(即16个像素点)中的最小深度值。通常情况下,上述获取目标图像的多张深度图的步骤可以理解为对目标图像的深度图像进行降采样的过程,针对目标图像的每个采样区域(即图像区域),获取该采样区域的最大深度值、或者最小深度值、或者平均深度值,得到多张深度图。

步骤S104,基于深度图绘制预设的渲染对象,得到每张深度图对应的渲染对象的初始渲染结果;

上述预设的渲染对象通常是指目标图像需要绘制和渲染的特效,本实施例是指游戏特效,一般是指预先设置好的特效图像。通常是由电脑软件预先制作出的现实中一般不会出现的特殊效果。该渲染对象的尺寸可以与上述深度图的尺寸相同,该渲染对象中存储有每个像素点的颜色值、透明度值以及深度值。上述初始渲染结果通常包括每个像素点的目标颜色值和目标透明度值。其中,透明度值也可以称为alpha值。

一种具体的实施方式中,为了提高绘制效率,在同一个绘制指令中,针对多张深度图可以同时绘制预设的渲染对象,得到每张深度图对应的渲染对象。可以分别采用显卡和像素着色器基于不同的深度图绘制渲染对象,具体可以采用显卡根据深度图中每个像素点的深度值与渲染对象中每个像素点的深度值进行深度测试,根据渲染对象对该深度图进行裁剪,得到该深度图对应的渲染对象的初始渲染结果;同时采用像素着色器根据深度图中每个像素点的深度值与渲染对象中每个像素点的深度值进行深度测试,得到通过测试的像素点的初始渲染结果。通常还会将每张深度图对应的渲染对象的初始渲染结果写入到渲染缓冲区。

通常情况下,上述基于深度图绘制预设的渲染对象,得到每张深度图对应的渲染对象的初始渲染结果的步骤可以理解为离屏渲染,以便在显示最终渲染后的目标图像之前,将初始渲染结果应用于渲染后的目标图像。

步骤S106,基于多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为多个渲染区域;其中,渲染区域包括边缘区域、非边缘区域、以及边缘区域与非边缘区域之间的过渡区域;

由于目标图像中的对象与渲染对象之间会有深度值不连续的区域,或者特效与非特效之间存在穿插关系的区域,如果采用传统的方式对该区域进行渲染,该区域会产生马塞克、遮挡关系不正确等问题,因此,可以根据前述获取的多张深度图,以及每张深度图对应的初始渲染结果,将目标图像划分为边缘区域、非边缘区域、以及边缘区域与非边缘区域之间的过渡区域。其中划分过渡区域,然后单独对于该过渡区域进行渲染,能够进一步提高渲染效果,使渲染效果更加逼真,避免出现瑕疵。

针对深度图中的每个像素点,可以根据每张深度图中该像素点的深度值,以及每张深度图对应的初始渲染结果中该像素点的颜色值,确定该像素点所属的渲染区域。实际实现时,针对深度图中的每个像素点,可以计算多张深度图中该像素点的深度值的差值的绝对值,计算多张深度图对应的初始渲染结果中该像素点的颜色值的差值的绝对值,根据差值的绝对值的乘积确定像素点所属的渲染区域,该乘积通常用于指示该像素点的每个通道的像素值的误差;通常乘积越大该像素点越接近边缘区域,乘积越小该像素点越接近非边缘区域。其中,过渡区域可以根据多张深度图中该像素点的深度值,以及该像素点的乘积的大小进行判断,通常,该像素点的深度值大于相邻的像素点的深度值时,且该像素点的相邻像素点的误差较大时,说明该像素点处于过渡区域。

上述图像区域是根据目标图像的像素点的位置进行划分的,具体可以将一定区域的像素点划分为一个图像区域,且可以将目标图像划分为至少一个图像区域,即将目标图像中的所有像素点划分为一个图像区域,也可以将图像区域中的16个像素点,划分为4个图像区域,每个图像区域包括互相相邻的4个像素点。每个像素点包括多种像素信息,比如深度信息、颜色信息等。深度图中每个像素点的像素信息仅包括图像区域的深度信息,具体是图像区域中其中一个目标像素点的深度信息。多个渲染区域可以组成上述目标图像,每个渲染区域包括至少一个像素点,通常上述渲染区域的形状是多种多样的,且不可预见,是根据上述步骤S106进行划分的。但是渲染区域中每个像素点的像素信息与目标图像中每个像素点的像素信息相同。

步骤S108,基于每张深度图对应的渲染对象的初始渲染结果,采用每个渲染区域预设的渲染方式,对渲染区域进行渲染,得到渲染后的目标图像。

上述边缘区域、非边缘区域、以及过渡区域的像素点的最终渲染结果,分别采用不同的渲染方式进行计算,然后将每个像素点的最终渲染结果混合至上述目标图像,得到渲染后的目标图像。其中,渲染方式包括多种,具体包括边缘区域对应第一渲染方式,非边缘区域对应的第二渲染方式,以及过渡区域对应的第三渲染方式。第一渲染方式主要是将多张深度图的深度值,按照预设的比例混合每张深度图对应的初始渲染结果、以及目标图像的深度值和颜色值,得到边缘区域中每个像素点的最终渲染结果。第二渲染方式主要是将最大深度图的深度值混合最大深度图对应的初始渲染结果,以及目标图像的像素值,得到非边缘区域中每个像素点的最终渲染结果。第三渲染方式主要是将最小深度图的深度值混合最小深度图对应的初始渲染结果,以及目标图像的像素值,得到过渡区域中每个像素点的最终渲染结果。

具体的,针对于非边缘区域和过渡区域,可以直接根据深度图对应的初始渲染结果和目标图像的颜色值,计算非边缘区域中每个像素点的最终渲染结果。其中,非边缘区域和过渡区域计算每个像素点的最终渲染结果时,采用的不同的深度图对应的初始渲染结果;通常针对于非边缘区域采用的深度图比针对于过渡区域采用的深度图的深度值大。针对于边缘区域,可以根据多张深度图的深度值、每张深度图对应的初始渲染结果、以及目标图像的深度值和颜色值,计算边缘区域中每个像素点的最终渲染结果。

上述一种游戏中的渲染方法,获取目标图像的多张深度图;基于深度图绘制预设的渲染对象,得到每张深度图对应的渲染对象的初始渲染结果;基于多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为边缘区域、非边缘区域、以及边缘区域与非边缘区域之间的过渡区域;基于每张深度图对应的渲染对象的初始渲染结果,采用每个渲染区域预设的渲染方式,对渲染区域进行渲染,得到渲染后的目标图像。该方式中,多张深度图之间的深度信息不同,通过目标图像的多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为边缘区域、非边缘区域和过渡区域,针对不同的区域采用不同的渲染方式进行渲染,避免了边缘区域和过渡区域出现马赛克、遮挡关系不正确的问题,提高了渲染效果和渲染效率,进而提高了玩家的游戏体验感。

下面具体描述获取目标图像的多张深度图的步骤,包括:根据目标图像中每个图像区域对应的深度信息,对目标图像进行降采样处理,得到多张深度图;其中,针对同一所述图像区域,不同所述深度图中该图像区域对应的深度信息不同。

具体的,可以在目标图像中的每个图像区域中提取一个深度值(即上述深度信息)最大的像素点,将提取得到的每个像素点组成一个图,得到一个深度图,该深度图中每个像素点为对应的图像区域中的深度值最大的像素点;还可以在目标图像中的每个图像区域中提取一个深度值最小的像素点,将提取得到的每个像素点组成一个图,得到一个深度图,该深度图中每个像素点为对应的图像区域中的深度值最小的像素点;当然还可以在目标图像中的每个图像区域中提取一个深度值为中位数的像素点,将提取得到的每个像素点组成一个图,得到一个深度图。

为了提高目标图像的渲染效果,更加精确的划分渲染区域,以及绘制渲染结果,通常目标图像的深度信息可以用于区分目标图像的边缘区域,或特效与非特效的穿插区域,因此上述多张深度图包括第一深度图和第二深度图;其中,针对同一图像区域,第一深度图中该图像区域对应的深度信息为该图像区域中的最大深度值,第二深度图中该图像区域对应的深度信息为该图像区域中的最小深度值。上述第一深度图可以称为最大深度图,第二深度图可以称为最小深度图。

实际实现时,针对目标图像的深度图像进行降采样,针对每个图像区域,获取该图像区域对应的最大深度值,将该最大深度值确定为第一深度图中该图像区域对应像素点的深度值;同样的针对每个图像区域,获取该图像区域对应的最小深度值,将该最小深度值确定为第二深度图中该图像区域对应像素点的深度值。

上述方式中,通过获取第一深度图和第二深度图,能够得到目标图像中更加丰富的深度信息,进而基于第一深度图和第二深度图中的深度值,可以获取更加丰富和细致的初始渲染结果,以及更加精确的渲染区域。

一种可能的实施方式中,为了提高目标图像的渲染效果和渲染效率,下面描述初始渲染结果的确定过程,具体包括:

(1)针对多张深度图,生成每张深度图对应的渲染目标;

上述渲染目标通常是指缓冲区,主要用于记录渲染后输出的初始渲染结果,不会直接将特效绘制到目标图像并显示到屏幕上;具体的,生成第一深度图对应的渲染目标,可以称为第一渲染目标,和第二深度图对应的渲染目标,可以称为第二渲染目标。另外,上述渲染目标存储有每个像素点的透明度值。

(2)响应针对于渲染对象的绘制指令,获取渲染对象中每个像素点的深度值、颜色值以及透明度值;

上述渲染对象是预先设置的,调用针对渲染对象的绘制指令后,可以先获取到渲染对象中每个像素点的深度值、颜色值以及透明度值。实际实现时,调用针对渲染对象的绘制指令后,针对每张深度图中的每个像素点,获取渲染对象中该像素点的深度值、颜色值以及透明度值。

(3)针对每张深度图中的每个像素点,如果渲染对象中该像素点的深度值小于深度图中该像素点的深度值,将渲染对象中该像素点的颜色值以及该像素点的目标透明度值,确定为该深度图对应的该像素点的初始渲染结果;其中,目标透明度值基于渲染对象预设的混合模式确定;

如果渲染对象中该像素点的深度值小于深度图中该像素点的深度值,则说明该渲染对象没有被深度图中的对象遮挡,会最终显示在渲染后的目标图像中;相反,如果渲染对象中该像素点的深度值大于深度图中该像素点的深度值,则说明该渲染对象被深度图中的对象遮挡,不会显示在渲染后的目标图像中。因此,只有渲染对象中该像素点的深度值小于深度图中该像素点的深度值时,才会将将渲染对象中该像素点的颜色值以及该像素点的目标透明度值,确定为该像素点的初始渲染结果。

由于上述多个深度图包括第一深度图和第二深度图,可以理解,针对第一深度图中的每个像素点,如果渲染对象中该像素点的深度值小于第一深度图中该像素点的深度值,将渲染对象中该像素点的颜色值以及该像素点的目标透明度值,确定为第一深度图对应的该像素点的初始渲染结果;其中,目标透明度值基于渲染对象预设的混合模式确定。同时,针对第二深度图中的每个像素点,如果渲染对象中该像素点的深度值小于第二深度图中该像素点的深度值,将渲染对象中该像素点的颜色值以及该像素点的目标透明度值,确定为第二深度图对应的该像素点的初始渲染结果;其中,目标透明度值基于渲染对象预设的混合模式确定。

其中,渲染目标中存储有每个像素点的透明度值。通常渲染对象预设的混合模式包括乘法混合模式和加法混合模式,当然也包括其他混合模式;下面具体描述乘法混合模式和加法混合模式时,确定目标透明度值的过程。

如果预设的混合模式为乘法混合模式,计算渲染对象中该像素点的透明度值与渲染目标中存储的该像素点的透明度值的乘积值;将渲染目标中存储的该像素点的透明度值减去乘积值的差值,确定为目标透明度值;如果预设的混合模式为加法混合模式,将渲染目标中存储的该像素点的透明度值确定为目标透明度值。

具体的,如果预设的混合模式为乘法混合模式,第一深度图中该像素点的目标透明度值可以通过下述公式计算:

Ad=(1-srcAlpha)*destAlpha;

同样的第二深度图中该像素点的目标透明度值可以通过下述公式计算:

Ax=(1-srcAlpha)*destAlpha;

其中,Ad为第一深度图对应的初始渲染结果中该像素点的目标透明度值;Ax为第二深度图对应的初始渲染结果中该像素点的目标透明度值;srcAlpha为预设的渲染对象存储的该像素点的透明度值;destAlpha为渲染目标中存储的该像素点的透明度值,上述方式能够得到更加精确的透明度值,进一步提高了渲效果。

(4)将深度图中每个像素点的初始渲染结果,确定为深度图对应的渲染目标对应的像素点的像素值。

由于不会基于直接基于目标图像绘制初始渲染结果,渲染目标图像;且上述初始渲染结果需要用于对目标图像进行区域划分,因此可以将深度图中每个像素点的初始渲染结果,确定为深度图对应的渲染目标对应的像素点的像素值,主要用于存储第一深度图和第二深度图对应的初始渲染结果。

一种具体的实施方式,通过显卡基于第一深度图绘制渲染对象,得到第一深度图对应的初始渲染结果;具体可以将第一深度图设置为DirectX(一种应用程序接口,简称为DX)的当前深度缓存,从而可以直接采用第一深度图进行裁剪得到第一深度图对应的初始渲染结果。其中将第一深度图设置为DX的当前深度缓存(buffer)这个操作的底层实现就是让DX通过显卡驱动程序指挥显卡硬件进行深度裁剪。通过像素着色器基于第二深度图绘制渲染对象,得到第二深度图对应的初始渲染结果。实际上无论通过显卡还是像素着色器得到初始渲染结果,具体的绘制原理都是相同的,都是针对每张深度图中的每个像素点,如果渲染对象中该像素点的深度值小于深度图中该像素点的深度值,才会将渲染对象中该像素点的颜色值确定为初始渲染结果;同时还会根据渲染对象的混合模式确定该像素点的目标透明度值,将该像素点的目标透明度值也确定为初始渲染结果。

上述方式中,基于每张深度图绘制预设的渲染对象,得到的每张深度图对应的初始渲染结果不仅包括颜色值还包括透明度值,丰富了初始渲染结果的像素值,另外,基于每张深度图都得到了对应的初始渲染结果,使得初始渲染结果的像素值包含了一定的深度信息,进一步提高了渲染效果。

一种具体的实施方式中,为了提高目标图像的渲染效果,避免在目标图像的边缘区域出现马赛克和遮挡关系不正确的问题,如图2所示,下面具体描述将目标图像划分为多个渲染区域的过程。

步骤S202,基于多张深度图以及每张深度图对应的初始渲染结果,计算深度图中每个像素点的误差权重;其中,误差权重用于指示像素点每个通道的像素值的误差大小;

上述每个像素点的误差权重的大小表示该像素点是否在颜色、深度、深度导数等方面具有争议,比如,如果误差权重较大,则可以说明该像素点的最终渲染结果不能简单采用第一深度图或者第二深度图及其所对应的初始渲染结果来确定该像素点的最终渲染结果,而是需要采用混合插值的方式确定该像素点的最终渲染结果。

通常需要通过第一深度图和第二深度图的深度值,第一深度图和第二深度图对应的初始渲染结果的颜色值;具体可以通过第一深度图和第二深度图之间同一像素点的深度值的差值,以及第一深度图和第二深度图对应的初始渲染结果之间同一像素点的颜色值的差值,以及第一深度图和第二深度图之间同一像素点的深度值的导数的和,计算每个像素点的误差权重。

一种具体的实施方式:针对深度图中的每个像素点,将该像素点的误差权重设置为:

A=abs(zmax-zmin)*(maxDepthcolor-inDepthcolor)*(dzmaxX+dzmaxY);

其中的A为像素点的误差权重;abs为“(zmax-zmin)*(maxDepthcolor-minDepthcolor)*(dzmaxX+dzmaxY)”的绝对值;zmax为第一深度图中像素点的线性深度值;zmin为第二深度图中像素点的线性深度;maxDepthcolor为第一深度图对应的初始渲染结果中像素点的颜色值;minDepthcolor为第二深度图对应的初始渲染结果中像素点的颜色值;dzmaxX为第一深度图中像素点的线性深度值在x方向偏导数的绝对值;dzmaxY为第一深度图中像素点的线性深度值在y方向偏导数的绝对值。

上述第一深度图中该像素点的线性深度值像zmax,以及第二深度图中像素点的线性深度zmin具体都可以通过下述方式计算:

zmax=(2.0*near1*far1)/(far1+near1-(depth1*2.0-1.0)*(far1–near1));zmin=(2.0*near2*far2)/(far2+near2-(depth2*2.0-1.0)*(far2-near2));其中,depth1是第一深度图中该像素点的原始深度值;depth2是第二深度图中该像素点的原始深度值;near 1为第一深度图中可以被看见的最近像素距离相机的距离;near 2为第二深度图中可以被看见的最近像素距离相机的距离;far1为第一深度图中可以被看见的最远像素距离相机的距离;far2为第二深度图中可以被看见的最远像素距离相机的距离。

步骤S204,针对深度图中的每个像素点,计算多个深度图中该像素点的深度值的平均深度值;

具体的,针对深度图中的每个像素点,计算第一深度图中该像素点的深度值和第二深度图中该像素点的深度值的平均值,即上述平均深度值。

步骤S206,根据深度图中每个像素点的误差权重和平均深度值,将目标图像划分为多个渲染区域。

具体的,可以根据误差权重的大小,将目标区域划分为多个渲染区域,比如,如果深度图中该像素点的误差权重大于预先设置的阈值,则可以将该像素点对应的图像区域确定为边缘区域;如果深度图中该像素点的误差权重小于预先设置的阈值,则可以将该像素点对应的目标图像的图像区域确定为非边缘区域。另外,为了进一步提高渲染效果,还将非边缘区域划分出过渡区域,比如,如果深度图中该像素点的误差权重小于预先设置的阈值,但是,在该像素点的平均深度值满足预设的条件的前提下,与该像素点相邻的像素点的误差权重大于预先设置的阈值,则可以确定该像素点对应的目标图像的图像区域确定为过渡区域。

上述方式中,通过多张深度图以及每张深度图对应的初始渲染结果,计算误差权重以及平均深度值,通过误差权重的大小和平均深度值可以将目标图像划分为多个渲染区域,提高了目标图像的渲染效果和渲染效率,避免了在目标图像的边缘区域出现马赛克和遮挡关系不正确的问题。

一种具体的实施方式中,根据深度图中每个像素点的误差权重和平均深度值,将目标图像划分为多个渲染区域的步骤,包括:

(1)针对深度图中的每个像素点,将该像素点的误差权重确定为该像素的第一像素值;从该像素点的邻接像素点中确定平均深度值小于该像素点的平均深度值的指定像素点,将该像素点和指定像素点中的最大误差权重,确定为该像素点的第二像素值;其中,邻接像素点包括:当前像素点以及与当前像素点在水平方向和竖直方向相邻的像素点;

实际实现时,可以预先生成一个第一渲染目标,该第一渲染目标与深度图的大小相同,将每个像素点的误差权重,确定为第一渲染目标中该像素点第一通道的像素值;同时将每个像素点的平均深度值,确定为第一渲染目标中该像素点第二通道的像素值;其中,第一通道可以是R通道和G通道。

然后,预先生成一个第二渲染目标,该第二渲染目标与第一渲染目标的大小相同,将每个像素点的误差权重,确定为第二渲染目标中该像素点第一通道的第一像素值,即上述该像素点的第一像素值。同时,如果第一渲染目标中该像素点的邻接像素点中包括小于该像素点的平均深度值的指定像素点,将该像素点和指定像素点中第一通道的第一像素值中最大的误差权重,确定为第二渲染目标中该像素点第二通道的第二像素值;上述邻接像素点包括:当前像素点在x轴和y轴上坐标值的差的绝对值之和的差小于1的像素点,其实就是当前像素点相邻的上、下、左、右四个像素点,即上述邻接像素点通常包括四个像素点。

需要说明的是,如果该像素点的邻接像素点中不存在平均深度值小于该像素点的平均深度值的指定像素点,将该像素点的误差权重,确定为该像素点的第二像素值。

(2)根据深度图中每个像素点的第一像素值和第二像素值,将目标图像划分为多个渲染区域。

上述第一像素值表示的是像素点原始的误差权重,第二像素值是向该像素点深度值更小的相邻像素点进行一次区域膨胀,只有满足预设条件第二像素值表示的才是满足预设条件的指定像素点和该像素点的最大误差权重。不满足预设条件时第二像素值表示的还是像素点原始的误差权重。其中预设条件即第一渲染目标中该像素点的邻接像素点中存在小于该像素点的平均深度值的指定像素点。

具体的,可以根据深度图中每个像素点的第一像素值和第二像素值的大小,将目标图像划分为多个渲染区域,通常第一像素值和第二像素值都较小时,可以将该像素点对应的目标图像的图像区域确定为非边缘区域,第一像素值和第二像素值都较大时,可以将该像素点对应的目标图像的图像区域确定为边缘区域,第一像素值较小,第二像素值较大时,可以将该像素点对应的目标图像的图像区域确定为过渡区域。

上述方式中,将每个像素点的误差权重确定为每个像素点的第一像素值;针对每个像素点向该像素点的邻近像素点的深度值更小的像素点进行区域膨胀,将指定像素点和该像素点的最大误差权重确定为该像素点的第二像素值,最后根据第一像素值和第二像素值对目标图像进行区域划分,能够更加精确的将目标图像划分为边缘区域和非边缘区域,以及过渡区域,进一步提高了渲染效果和渲染效率。

一种具体的实施方式中,根据深度图中每个像素点的第一像素值和第二像素值,将目标图像划分为多个渲染区域的步骤,包括:针对目标图像中每个图像区域,执行下述操作:如果深度图中该图像区域对应的目标像素点的第一像素值和第二像素值均小于预设阈值,将该图像区域划分为非边缘区域;如果深度图中该图像区域对应的目标像素点的第一像素值小于预设阈值,且深度图中该图像区域对应的目标像素点的第二像素值大于预设阈值,将该图像区域划分为过渡区域;如果深度图中该图像区域对应的目标像素点的第一像素值大于预设阈值,将该图像区域划分为边缘区域。

上述目标图像中每个图像区域对应于深度图中的每个像素点。上述预设阈值可以根据实际情况以及实际的应用场景进行设置。

一种具体的实施方式中,为了进一步提高目标图像的渲染效果,针对不同的渲染区域采用不同的渲染方式,对渲染区域进行渲染,得到渲染后的目标图像,具体包括:

基于每张深度图对应的初始渲染结果,采用每个渲染区域预设的渲染方式,确定目标图像中每个像素点的最终渲染结果;将最终渲染结果混合至目标图像中对应的像素点,得到渲染后的目标图像。

具体的,基于第一深度图、第一深度图对应的初始渲染结果和目标图像,采用非边缘区域预设的渲染方式,确定目标图像的非边缘区域中每个像素点的最终渲染结果;基于第二深度图、以及第二深度图对应的初始渲染结果和目标图像,采用过渡区域预设的渲染方式,确定目标图像的过渡区域中每个像素点的最终渲染结果;基于第一深度图、第二深度图、以及第一深度图和第二深度图分别对应的初始渲染结果和目标图像,采用边缘区域预设的渲染方式,确定目标图像的边缘区域中每个像素点的最终渲染结果。最终得到目标图像中每个像素点的最终渲染结果。

一种具体的实施方式中,基于每张深度图对应的初始渲染结果,采用每个渲染区域预设的渲染方式,确定目标图像中每个像素点的最终渲染结果的步骤,包括:

针对目标图像中非边缘区域的每个像素点,将该像素点的最终渲染结果设置为:

Res1=MaxDepthRT*(1-Ad)+MainRT*Ad;

其中,Res1为该像素点的渲染结果;MaxDepthRT为第一深度图对应的初始渲染结果中该像素点所属的图像区域对应的目标像素点颜色通道的像素值;Ad为第一深度图对应的初始渲染结果中该像素点所属的图像区域对应的目标像素点透明度通道的像素值;MainRT为目标图像中该像素点颜色通道的像素值。

针对目标图像中过渡区域的每个像素点,将该像素点的最终渲染结果设置为:

Res2=MinDepthRT*(1-Ax)+MainRT*Ax;

其中,Res2为该像素点的渲染结果;MinDepthRT为第二深度图对应的初始渲染结果中该像素点所属的图像区域对应的目标像素点颜色通道的像素值;Ax为第二深度图对应的初始渲染结果中该像素点所属的图像区域对应的目标像素点透明度通道的像素值;MainRT为目标图像中该像素点颜色通道的像素值。

针对目标图像中边缘区域的每个像素点,将该像素点的最终渲染结果设置为:

Res3=MidDepthRT*(1-Am)+MainRT*Am;

MidDepthRes=lerp(MaxDepthRT,MinDepthRT,d-dx)/(dd-dx));

其中,Res3为该像素点的渲染结果;MaxDepthRT为第一深度图对应的初始渲染结果中该像素点所属的图像区域对应的目标像素点颜色通道的像素值;MinDepthRT为第二深度图对应的初始渲染结果中该像素点所属的图像区域对应的目标像素点颜色通道的像素值;d为目标图像中该像素点的深度值;dd为第一深度图中该像素点所属的图像区域对应的目标像素点的深度值;dx为第二深度图中该像素点所属的图像区域对应的目标像素点的深度值;lerp为线性插值函数;MidDepthRes为插值图像;MidDepthRT为插值图像MidDepthRes中该像素点颜色通道的颜色值;Am是插值图像MidDepthRes中该像素点透明度通道的透明度值;MainRT为目标图像中该像素点颜色通道的像素值。

上述方式中,针对不同的渲染区域,采用不同的渲染方式,对目标图像进行渲染,使得特效绘制既能在降低填充率的情况下保证渲染效率,又能得到较为满意、较少瑕疵的渲染效果,解决了深度信息不连续的区域,出现马赛克、遮挡关系不正确的问题。

另外,将上述渲染方法应用到客户端,通过试验,特效渲染效率提升了4.5倍;这是因为该方法既能基本正确的处理特效与目标图像中包括的对象之间的遮挡关系,防止马赛克、混合不正确等情况发生,提高了渲染效果,又只需要绘制一次就能将所有特效绘制出来,提高了渲染效率。

对应上述方法实施例,本发明实施例提供了一种游戏中的渲染装置,如图3所示,该装置包括:

获取模块31,用于获取目标图像的多张深度图;其中,目标图像包括至少一个图像区域;深度图包括图像区域对应的深度信息;

初始渲染结果确定模块32,用于基于深度图绘制预设的渲染对象,得到每张深度图对应的渲染对象的初始渲染结果;

渲染区域确定模块33,用于基于多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为多个渲染区域;其中,渲染区域包括边缘区域、非边缘区域、以及边缘区域与非边缘区域之间的过渡区域;

渲染模块34,用于基于每张深度图对应的渲染对象的初始渲染结果,采用每个渲染区域预设的渲染方式,对渲染区域进行渲染,得到渲染后的目标图像。

上述一种游戏中的渲染装置,获取目标图像的多张深度图;基于深度图绘制预设的渲染对象,得到每张深度图对应的渲染对象的初始渲染结果;基于多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为边缘区域、非边缘区域、以及边缘区域与非边缘区域之间的过渡区域;基于每张深度图对应的渲染对象的初始渲染结果,采用每个渲染区域预设的渲染方式,对渲染区域进行渲染,得到渲染后的目标图像。该方式中,多张深度图之间的深度信息不同,通过目标图像的多张深度图以及每张深度图对应的初始渲染结果,将目标图像划分为边缘区域、非边缘区域和过渡区域,针对不同的区域采用不同的渲染方式进行渲染,避免了边缘区域和过渡区域出现马赛克、遮挡关系不正确的问题,提高了渲染效果和渲染效率,进而提高了玩家的游戏体验感。

进一步的,上述获取模块还用于:根据目标图像中每个图像区域对应的深度信息,对目标图像进行降采样处理,得到多张深度图;其中,针对同一图像区域,不同深度图中该图像区域对应的深度信息不同。

进一步的,上述多张深度图包括第一深度图和第二深度图;其中,针对同一图像区域,第一深度图中该图像区域对应的深度信息为该图像区域中的最大深度值,第二深度图中该图像区域对应的深度信息为该图像区域中的最小深度值。

进一步的,上述初始渲染结果确定模块还用于:针对多张深度图,生成每张深度图对应的渲染目标;响应针对于渲染对象的绘制指令,获取渲染对象中每个像素点的深度值、颜色值以及透明度值;针对每张深度图中的每个像素点,如果渲染对象中该像素点的深度值小于深度图中该像素点的深度值,将渲染对象中该像素点的颜色值以及该像素点的目标透明度值,确定为该深度图对应的该像素点的初始渲染结果;其中,目标透明度值基于渲染对象预设的混合模式确定;将深度图中每个像素点的初始渲染结果,确定为深度图对应的渲染目标对应的像素点的像素值。

进一步的,上述初始渲染结果确定模块还用于:如果预设的混合模式为乘法混合模式,计算渲染对象中该像素点的透明度值与渲染目标中存储的该像素点的透明度值的乘积值;将渲染目标中存储的该像素点的透明度值减去乘积值的差值,确定为目标透明度值;如果预设的混合模式为加法混合模式,将渲染目标中存储的该像素点的透明度值确定为目标透明度值。

进一步的,上述渲染区域确定模块还用于:基于多张深度图以及每张深度图对应的初始渲染结果,计算深度图中每个像素点的误差权重;其中,误差权重用于指示像素点每个通道的像素值的误差大小;针对深度图中的每个像素点,计算多个深度图中该像素点的深度值的平均深度值;根据深度图中每个像素点的误差权重和平均深度值,将目标图像划分为多个渲染区域。

进一步的,上述渲染区域确定模块还用于:针对深度图中的每个像素点,将该像素点的误差权重设置为:

A=abs(zmax-zmin)*(maxDepthcolor-inDepthcolor)*(dzmaxX+dzmaxY);

其中,A为像素点的误差权重;abs为“(zmax-zmin)*(maxDepthcolor-minDepthcolor)*(dzmaxX+dzmaxY)”的绝对值;zmax为第一深度图中像素点的线性深度值;zmin为第二深度图中像素点的线性深度;maxDepthcolor为第一深度图对应的初始渲染结果中像素点的颜色值;minDepthcolor为第二深度图对应的初始渲染结果中像素点的颜色值;dzmaxX为第一深度图中像素点的线性深度值在x方向偏导数的绝对值;dzmaxY为第一深度图中像素点的线性深度值在y方向偏导数的绝对值。

进一步的,上述渲染区域确定模块还用于:针对深度图中的每个像素点,将该像素点的误差权重确定为该像素的第一像素值;从该像素点的邻接像素点中确定平均深度值小于该像素点的平均深度值的指定像素点,将该像素点和指定像素点中的最大误差权重,确定为该像素点的第二像素值;其中,邻接像素点包括:当前像素点在水平方向和竖直方向相邻的像素点;根据深度图中每个像素点的第一像素值和第二像素值,将目标图像划分为多个渲染区域。

进一步的,上述渲染区域确定模块还用于:针对目标图像中每个图像区域,执行下述操作:如果深度图中该图像区域对应的目标像素点的第一像素值和第二像素值均小于预设阈值,将该图像区域划分为非边缘区域;如果深度图中该图像区域对应的目标像素点的第一像素值小于预设阈值,且深度图中该图像区域对应的目标像素点的第二像素值大于预设阈值,将该图像区域划分为过渡区域;如果深度图中该图像区域对应的目标像素点的第一像素值大于预设阈值,将该图像区域划分为边缘区域。

进一步的,上述渲染模块还用于:基于每张深度图对应的初始渲染结果,采用每个渲染区域预设的渲染方式,确定目标图像中每个像素点的最终渲染结果;将最终渲染结果混合至目标图像中对应的像素点,得到渲染后的目标图像。

进一步的,上述渲染模块还用于:针对目标图像中非边缘区域的每个像素点,将该像素点的最终渲染结果设置为:Res1=MaxDepthRT*(1-Ad)+MainRT*Ad;其中,Res1为像素点的渲染结果;MaxDepthRT为第一深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点颜色通道的像素值;Ad为第一深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点透明度通道的像素值;MainRT为目标图像中像素点颜色通道的像素值。

进一步的,上述渲染模块还用于:针对目标图像中过渡区域的每个像素点,将该像素点的最终渲染结果设置为:Res2=MinDepthRT*(1-Ax)+MainRT*Ax;其中,Res2为像素点的渲染结果;MinDepthRT为第二深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点颜色通道的像素值;Ax为第二深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点透明度通道的像素值;MainRT为目标图像中像素点颜色通道的像素值。

进一步的,上述渲染模块还用于:针对目标图像中边缘区域的每个像素点,将该像素点的最终渲染结果设置为:Res3=MidDepthRT*(1-Am)+MainRT*Am;MidDepthRes=lerp(MaxDepthRT,MinDepthRT,d-dx)/(dd-dx));其中,Res3为像素点的渲染结果;MaxDepthRT为第一深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点颜色通道的像素值;MinDepthRT为第二深度图对应的初始渲染结果中像素点所属的图像区域对应的目标像素点颜色通道的像素值;d为目标图像中像素点的深度值;dd为第一深度图中像素点所属的图像区域对应的目标像素点的深度值;dx为第二深度图中像素点所属的图像区域对应的目标像素点的深度值;lerp为线性插值函数;MidDepthRes为插值图像;MidDepthRT为插值图像MidDepthRes中像素点颜色通道的颜色值;Am是插值图像MidDepthRes中像素点透明度通道的透明度值;MainRT为目标图像中像素点颜色通道的像素值。

本发明实施例提供的游戏中的渲染装置,与上述实施例提供的游戏中的渲染方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述游戏中的渲染方法。该电子设备可以是服务器,也可以是终端设备。

参见图4所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的机器可执行指令,该处理器100执行机器可执行指令以实现上述游戏中的渲染方法。

进一步地,图4所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。

其中,存储器101可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤。

本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述游戏中的渲染方法。

本发明实施例所提供的游戏中的渲染方法、装置以及电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

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

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

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

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:三维模型纹理贴图的转换方法、装置、设备以及介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!