场景渲染方法、装置、电子设备及可读存储介质与流程

文档序号:26142781发布日期:2021-08-03 14:27阅读:107来源:国知局
场景渲染方法、装置、电子设备及可读存储介质与流程

本公开涉及场景渲染技术领域,具体而言,涉及一种场景渲染方法、装置、电子设备和存储介质。



背景技术:

在场景渲染技术领域中,待渲染的场景中可以包括待渲染的不透明物体和半透明物体,电子设备可以首先渲染待渲染的不透明物体,然后,渲染待渲染的半透明物体。

在渲染过程中,为了减少重复绘制,通常只对最近的不透明物体进行渲染,然而,该渲染方法对透明物体确不适用。由于透明物体(如玻璃、火光等),具有半透明效果,在渲染过程中需要将重叠的透明物体都进行渲染,进行颜色的叠加混合,才能保证视觉效果,进而导致渲染次数越多,电子设备的渲染效率越低。



技术实现要素:

本公开实施例至少提供一种场景渲染方法、装置、电子设备及存储介质。

第一方面,本公开实施例提供了一种场景渲染方法,包括:

获取待渲染场景中的不透明物体和透明物体;

创建第一渲染分辨率的第一颜色纹理,并基于所述第一颜色纹理对所述不透明物体进行渲染,得到第一渲染结果;

创建第二渲染分辨率的第二颜色纹理,并将所述第一渲染结果复制到所述第二颜色纹理上;所述第二渲染分辨率小于所述第一渲染分辨率;

基于复制有所述第一渲染结果的所述第二颜色纹理对所述透明物体进行渲染,得到第二渲染结果;

对所述第二渲染结果中的所述透明物体的颜色进行第一提取,得到第三渲染结果;

将所述第三渲染结果和所述第一渲染结果进行合成,得到渲染好的场景图像。

本公开实施例中,通过采用不同的渲染分辨率来分别对不透明物体和透明物体进行渲染,且透明物体的渲染分辨率低于不透明物体的分辨率,进而可以降低渲染压力,提高了电子设备的渲染效率。另外,本公开实施例中的场景渲染方法,由于只降低透明物体的渲染分辨率,不会使得原本高清的不透明物体变模糊,进而再提升渲染效率的同时保证了用户的视觉体验。

根据第一方面,在一种可能的实施方式中,所述第二渲染分辨率由所述透明物体的透明度和/或所述透明物体的叠加层数确定。

本公开实施例中,由于第二渲染分辨率由所述透明物体的透明度和/或所述透明物体的叠加层数确定,进而可以根据渲染场景中透明物体的实际情况确定第二渲染分辨率,从而可以在保证透明物体的渲染效果的同时,进一步提高电子设备的渲染效率。

根据第一方面,在一种可能的实施方式中,所述将所述第一渲染结果复制到所述第二颜色纹理上,包括:

将所述第一渲染结果中的颜色信息和深度信息复制到所述第二颜色纹理上;

所述基于复制有所述第一渲染结果的所述第二颜色纹理对所述透明物体进行渲染,包括:

基于复制有所述第一渲染结果的所述第二颜色纹理以及所述透明物体的深度信息,对所述透明物体进行渲染。

本公开实施例中,由于将所述第一渲染结果中的深度信息也复制到所述第二颜色纹理上,使得在渲染透明物体时,可以参考不透明物体的深度信息,对透明物体进行相应的渲染,进而达到相应的渲染效果。

根据第一方面,在一种可能的实施方式中,所述基于复制有所述第一渲染结果的所述第二颜色纹理以及所述透明物体的深度信息,对所述透明物体进行渲染,包括:

确定目标像素点分别对应的所述透明物体的第一目标深度信息与所述第一渲染结果中的第二目标深度信息;所述目标像素点为所述第二颜色纹理中需要进行渲染的像素点;

将所述第一目标深度信息与所述第二目标深度信息进行比对;

若所述第一目标深度信息大于所述第二目标深度信息,则不对所述目标像素点进行渲染。

本公开实施例中,通过将目标像素点分别对应的第一目标深度信息与第二目标深度信息进行比对,并根据比对结果对所述透明物体进行渲染,可以避免被不透明物体挡住的透明物体被错误渲染的情况发生,提高了渲染的可靠性。

根据第一方面,在一种可能的实施方式中,所述将所述第一渲染结果复制到所述第二颜色纹理上,包括:

以所述第二渲染分别率为基准创建目标贴图,所述目标贴图的颜色信息与所述第一渲染结果中的颜色信息相对应;

基于所述第二颜色纹理对所述目标贴图进行渲染,进而将所述第一渲染结果中的颜色信息复制到所述第二颜色纹理上。

本公开实施例中,本实施方式中,通过创建目标贴图,并对目标贴图进行渲染的方式,实现了将第一渲染结果中的颜色信息复制到所述第二颜色纹理上的目的,相较于逐一对每一像素点的颜色信息进行绘制的方法,提高了复制的效率。

根据第一方面,在一种可能的实施方式中,所述对所述第二渲染结果中的所述透明物体的颜色进行第一提取,得到第三渲染结果,包括:

对所述第二渲染结果中的所述透明物体的颜色进行第二提取,得到所述透明物体的颜色信息;

对所述颜色信息进行第一运算处理,使得所述颜色信息的处理结果符合目标存储格式,得到所述第三渲染结果;所述目标存储格式为图片存储格式;

所述将所述第三渲染结果和所述第一渲染结果进行合成,包括:

对所述第三渲染结果中的颜色信息进行第二运算处理,得到目标颜色信息,所述第二运算为所述第一运算的逆运算;

将所述目标颜色信息与所述第一渲染结果中的颜色信息进行合成。

本公开实施例中,不仅可以使得从所述第二渲染结果中所提取的透明物体的颜色信息能够以图片格式进行存储,还可以使得进行合成的目标颜色信息与第二渲结果中的透明物体的颜色一致,提高了渲染的视觉效果。

根据第一方面,在一种可能的实施方式中,将所述第三渲染结果和所述第一渲染结果进行合成,得到渲染好的场景图像,包括:

通过多重采样对所述第三渲染结果中的所述透明物体边缘进行处理,得到第四渲染结果;

将所述第四渲染结果和所述第一渲染结果进行合成,得到所述渲染好的场景图像。

本公开实施例中,通过多重采样对所述第三渲染结果中的所述透明物体边缘进行处理,以对第三渲染结果进行优化,得到第四渲染结果,然后再将所述第四渲染结果和所述第一渲染结果进行合成,可以降低第三渲染结果中透明物体边缘的锯齿感,提高的渲染的质量。

根据第一方面,在一种可能的实施方式中,所述获取待渲染场景中的不透明物体和透明物体,包括:

获取待渲染场景的场景描述文件,并对所述场景描述文件进行解析,以获取所述待渲染场景中的待渲染物体及与所述渲染物体对应的渲染信息;

根据所述渲染信息对所述待渲染物体进行分类,将所述待渲染物体分为不透明物体和透明物体。

第二方面,本公开实施例提供了一种场景渲染装置,包括:

获取模块,用于获取待渲染场景中的不透明物体和透明物体;

第一渲染模块,用于创建第一渲染分辨率的第一颜色纹理,并基于所述第一颜色纹理对所述不透明物体进行渲染,得到第一渲染结果;

复制模块,用于创建第二渲染分辨率的第二颜色纹理,并将所述第一渲染结果复制到所述第二颜色纹理上;所述第二渲染分辨率小于所述第一渲染分辨率;

第二渲染模块,用于基于复制有所述第一渲染结果的所述第二颜色纹理对所述透明物体进行渲染,得到第二渲染结果;

提取模块,用于对所述第二渲染结果中的所述透明物体的颜色进行第一提取,得到第三渲染结果;

合成模块,用于将所述第三渲染结果和所述第一渲染结果进行合成,得到渲染好的场景图像。

根据第二方面,在一种可能的实施方式中,所述第二渲染分辨率由所述透明物体的透明度和/或所述透明物体的叠加层数确定。

根据第二方面,在一种可能的实施方式中,所述复制模块具体用于:

将所述第一渲染结果中的颜色信息和深度信息复制到所述第二颜色纹理上;

所述第二渲染模块具体用于:

基于复制有所述第一渲染结果的所述第二颜色纹理以及所述透明物体的深度信息,对所述透明物体进行渲染。

根据第二方面,在一种可能的实施方式中,所述第二渲染模块具体用于:

确定目标像素点分别对应的所述透明物体的第一目标深度信息与所述第一渲染结果中的第二目标深度信息;所述目标像素点为所述第二颜色纹理中需要进行渲染的像素点;

将所述第一目标深度信息与所述第二目标深度信息进行比对;

若所述第一目标深度信息大于所述第二目标深度信息,则不对所述目标像素点进行渲染。

根据第二方面,在一种可能的实施方式中,所述第二渲染模块具体用于:

以所述第二渲染分别率为基准创建目标贴图,所述目标贴图的颜色信息与所述第一渲染结果中的颜色信息相对应;

基于所述第二颜色纹理对所述目标贴图进行渲染,进而将所述第一渲染结果中的颜色信息复制到所述第二颜色纹理上。

根据第二方面,在一种可能的实施方式中,所述提取模块具体用于:

对所述第二渲染结果中的所述透明物体的颜色进行第二提取,得到所述透明物体的颜色信息;

对所述颜色信息进行第一运算处理,使得所述颜色信息的处理结果符合目标存储格式,得到所述第三渲染结果;所述目标存储格式为图片存储格式;

所述合成模块具体用于:

对所述第三渲染结果中的颜色信息进行第二运算处理,得到目标颜色信息,所述第二运算为所述第一运算的逆运算;

将所述目标颜色信息与所述第一渲染结果中的颜色信息进行合成。

根据第二方面,在一种可能的实施方式中,所述合成模块具体用于:

通过多重采样对所述第三渲染结果中的所述透明物体边缘进行处理,得到第四渲染结果;

将所述第四渲染结果和所述第一渲染结果进行合成,得到所述渲染好的场景图像。

根据第二方面,在一种可能的实施方式中,所述获取模块具体用于:

获取待渲染场景的场景描述文件,并对所述场景描述文件进行解析,以获取所述待渲染场景中的待渲染物体及与所述渲染物体对应的渲染信息;

根据所述渲染信息对所述待渲染物体进行分类,将所述待渲染物体分为不透明物体和透明物体。

第三方面,本公开实施例提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如第一方面所述的场景渲染方法。

第四方面,本公开实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面所述的场景渲染方法。

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

附图说明

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

图1示出了本公开实施例所提供的一种场景渲染方法的执行主体的示意图;

图2示出了本公开实施例所提供的一种场景渲染方法的流程图;

图3示出了本公开实施例所提供的一种获取待渲染场景中不透明物体和透明物体的方法流程图;

图4示出了本公开实施例提供的一种对所述不透明物体进行渲染,得到的第一渲染结果的示意图;

图5示出了本公开实施例所提供的一种将第一渲染结果复制到第二颜色纹理上的方法流程图;

图6示出了本公开实施例所提供的一种基于第二颜色纹理对透明物体进行渲染的方法流程图;

图7示出了本公开实施例提供的一种对透明物体进行渲染,得到第二渲染结果的示意图;

图8示出了本公开实施例提供的一种对第二渲染结果中的透明物体的颜色进行第一提取,得到第三渲染结果的示意图;

图9示出了本公开实施例所提供的一种将第三渲染结果和第一渲染结果进行合成的方法流程图;

图10示出了本公开实施例中提供的一种渲染好的场景图像的示意图;

图11示出了本公开实施例所提供的一种场景渲染装置的结构示意图;

图12示出了本公开实施例所提供的一种电子设备的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

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

本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。

在场景渲染技术领域中,待渲染的场景中可以包括待渲染的不透明物体和半透明物体,电子设备可以首先渲染待渲染的不透明物体,然后,渲染待渲染的半透明物体。

经研究发现,在渲染过程中,为了减少重复绘制,通常只对最近的不透明物体进行渲染,然而,该渲染方法对透明物体确不适用。由于透明物体(如玻璃、火光等),具有半透明效果,在渲染过程中需要将重叠的透明物体都进行渲染,进行颜色的叠加混合,才能保证视觉效果,进而导致渲染次数越多,电子设备的渲染效率越低。

本公开提供了一种场景渲染方法,包括:获取待渲染场景中的不透明物体和透明物体;创建第一渲染分辨率的第一颜色纹理,并基于所述第一颜色纹理对所述不透明物体进行渲染,得到第一渲染结果;创建第二渲染分辨率的第二颜色纹理,并将所述第一渲染结果复制到所述第二颜色纹理上;所述第二渲染分辨率小于所述第一渲染分辨率;基于复制有所述第一渲染结果的所述第二颜色纹理对所述透明物体进行渲染,得到第二渲染结果;对所述第二渲染结果中的所述透明物体的颜色进行第一提取,得到第三渲染结果;将所述第三渲染结果和所述第一渲染结果进行合成,得到渲染好的场景图像。

本公开实施例中,通过采用不同的渲染分辨率来分别对不透明物体和透明物体进行渲染,且透明物体的渲染分辨率低于不透明物体的分辨率,进而可以降低渲染压力,提高了电子设备的渲染效率。另外,本公开实施例中的场景渲染方法,由于只降低透明物体的渲染分辨率,不会使得原本高清的不透明物体变模糊,进而再提升渲染效率的同时保证了用户的视觉体验。

为便于对本实施例进行理解,首先对本公开实施例所公开的一种场景渲染方法进行详细介绍,请参阅图1,为本公开实施例所提供的场景渲染方法的执行主体的示意图,本公开实施例所提供的场景渲染方法的执行主体一般为具有一定计算能力的电子设备,其中电子设备100可以包括终端和服务器。例如,该方法可应用于终端中,终端可以是图1中所示智能手机10、台式计算机20、笔记本电脑30等,还可以是图1中未示出的智能音箱、智能手表、平板电脑等,并不限定。该方法还可应用于服务器40,或者可应用于由终端和服务器40所组成的实施环境中。服务器40可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云存储、大数据和人工智能平台等基础云计算服务的云服务器。

在另一些实施方式中,该电子设备100还可以包括ar(augmentedreality,增强现实)设备、vr(virtualreality,虚拟现实)设备、mr(mixedreality,混合现实)设备等。比如,ar设备可以是具有ar功能的手机或平板电脑,也可以是ar眼镜,在此不做限定。

需要说明的是,在一些实施方式中,服务器40可以通网络50分别与智能手机10、台式计算机20及笔记本电脑30进行通信。网络50可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

此外,该场景渲染方法还可以是运行于终端或服务器中的软体,例如具有展示任务的描述信息功能的应用程序等。在一些可能的实现方式中,该场景渲染方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。

参见图2所示,为本公开实施例提供的场景渲染方法的流程图,该场景渲染方法包括以下s101~s106:

s101,获取待渲染场景中的不透明物体和透明物体。

可以理解,在对场景进行渲染之前,需要获取待渲染场景中的不透明物体和透明物体,以确定渲染目标。示例性地,参见图3所示,在一些实施方式中,针对步骤s101可以包括以下s1011~s1012:

s1011,获取待渲染场景的场景描述文件,并对所述场景描述文件进行解析,以获取所述待渲染场景中的待渲染物体及与所述渲染物体对应的渲染信息。

s1012,根据所述渲染信息对所述待渲染物体进行分类,将所述待渲染物体分为不透明物体和透明物体。

示例性地,首先加载场景描述文件(如xml文件),并对场景描述文件进行解析,获取场景中每一个渲染物体及其渲染信息。渲染信息包含渲染物体的层次组织结构关系,渲染物体的位置、几何形状、材质、纹理信息、渲染分组信息及材质透明度等,进而可以据所述渲染信息中的透明度信息对所述待渲染物体进行分类,将所述待渲染物体分为不透明物体和透明物体。其中,透明物体可以包括半透明物体和全透明物体。

在一种实现方式中,电子设备可以遍历待渲染场景,获得遍历该待渲染场景的遍历结果信息,其中,该遍历结果信息可以包括:待渲染场景中所有的需要渲染的物体的材质以及每一需要渲染的物体的渲染效果等信息,每一需要渲染的物体的渲染效果可以包括:每一需要渲染的物体所需渲染的颜色值以及透明值等。该待渲染场景为需要进行渲染的场景。

其中,透明物体可以指所对应材质为透明材质的物体,透明材质可以包括玻璃材质、塑料材质以及橡胶材质等。透明物体对应的透明值的取值范围可以为:[0,255],或者[0,1],透明物体对应的透明值可以决定透明物体的透明程度的呈现效果,透明物体对应的透明值越大,该透明物体的呈现效果表现为越不透明。

在一种实现方式中,上述待渲染场景可以为游戏场景,当用户改变查看游戏场景的角度和/或位置时,则需要重新渲染游戏场景。在一种情况中,用户可以通过改变的其控制的游戏角色的位置和/或查看角度,来改变查看游戏场景的角度和/或位置。可以理解的是,上述待渲染场景可以为立体场景。

s102,创建第一渲染分辨率的第一颜色纹理,并基于所述第一颜色纹理对所述不透明物体进行渲染,得到第一渲染结果。

示例性地,参见4所示,为本公开实施例提供的一种对所述不透明物体a进行渲染,得到的第一渲染结果的示意图,可以根据不透明物体a在视觉坐标系中z轴方向的坐标值由小到大依次排序所述不透明物体,对所述不透明物体按照排序先后依次进行渲染,且对z坐标值不相同的不透明物体对应的同一像素点只渲染一次。

具体的,可以通过深度检测来实现同一像素点只进行一次渲染,利用深度检测判断同一位置像素的渲染,先渲染离眼睛最近的物体这样,保证同一位置不同深度渲染只进行一次。先渲染前层,再绘制后层,因为前层已经填充了像素,后层在前层渲染的区域不做像素替换操作,即前层圈定的区域也即重叠区域不再渲染,只渲染后层的与前层不重叠的区域,减少同一位置像素更新的次数,进而提高渲染效率。

s103,创建第二渲染分辨率的第二颜色纹理,并将所述第一渲染结果复制到所述第二颜色纹理上;所述第二渲染分辨率小于所述第一渲染分辨率。

示例性地,为了后续进行正确的透明叠加混合,保证透明物体渲染后的颜色结果是正确的,在渲染完不透明物体后,可以创建第二颜色纹理,并将原不透明物体的颜色值,绘制到第二颜色纹理的颜色值中,并基于此渲染对透明物体进行渲染,进而保证了透明物体的渲染效果。

本实施方式中,所述第二渲染分辨率小于所述第一渲染分辨率,比如,第二渲染分辨率可以是第一渲染分辨率的一半或者更低,如此可以提高电子设备的渲染效率。

一些实施方式中,所述第二渲染分辨率由所述透明物体的透明度和/或所述透明物体的叠加层数确定。示例性地,若透明物体的透明度越高,可以使得第二渲染分辨率越低;或者,在透明物体的叠加层数越多的情况下,确定第二渲染分辨率越低。具体的,第二渲染分辨率与透明物体的透明度之间的关联关系,或者第二渲染分辨率与透明物体的叠加层数之间的关联关系,在此不做限定。

本实施例中,由于第二渲染分辨率由所述透明物体的透明度和/或所述透明物体的叠加层数确定,进而可以根据渲染场景中透明物体的实际情况确定第二渲染分辨率,从而可以在保证透明物体的渲染效果的同时,进一步提高电子设备的渲染效率。

一些实施方式中,为了提高将所述第一渲染结果复制到所述第二颜色纹理上时的复制效率,参见图5所示,针对上述步骤s103,在将所述第一渲染结果复制到所述第二颜色纹理上时,可以包括以下s1031~s1032:

s1031,以所述第二渲染分别率为基准创建目标贴图,所述目标贴图的颜色信息与所述第一渲染结果中的颜色信息相对应。

s1032,基于所述第二颜色纹理对所述目标贴图进行渲染,进而将所述第一渲染结果中的颜色信息复制到所述第二颜色纹理上。

示例性地,以所述第二渲染分别率为基准创建目标贴图,是指渲染一个全屏的正方形面片,该正方形面片的分辨率为该第二渲染分别率,且该正方形面片的颜色信息与所述第一渲染结果中的颜色信息相同,然后将该正方形面片作为渲染目标,渲染到该第二颜色纹理上,进而实现了对将所述第一渲染结果中的颜色信息复制到所述第二颜色纹理上。

本实施方式中,通过创建目标贴图,并对目标贴图进行渲染的方式,实现了将第一渲染结果中的颜色信息复制到所述第二颜色纹理上的目的,相较于逐一对每一像素点的颜色信息进行绘制的方法,提高了复制的效率。

其中,所述目标贴图的颜色信息与所述第一渲染结果相对应是指,所述目标贴图中每个像素点的颜色值为所述第一渲染结果中对应目标比例的多个像素点的颜色值的均值,所述目标比例与所述第一渲染分辨率和所述第二渲染分辨率之间的比例对应。例如,若第二渲染分辨率为第一渲染分辨率的一半,则原来第一颜色纹理上的一个2x2像素的区块的颜色平均值,写入到了第二颜色纹理上的一个像素中。

一些实施方式中,为了后续的透明物体能够沿用不透明物体的深度图,在将所述第一渲染结果中的颜色信息复制到所述第二颜色纹理上时,还将第一渲染结果中的深度信息复制到所述第二颜色纹理上,因此,针对前述的目标贴图,该目标贴图中每个像素点的深度值为所述第一渲染结果中对应目标比例的多个像素点的深度值的均值。

s104,基于复制有所述第一渲染结果的所述第二颜色纹理对所述透明物体进行渲染,得到第二渲染结果。

一些实施方式中,由于在步骤s103中,将所述第一渲染结果中的颜色信息和深度信息复制到了所述第二颜色纹理上,步骤s104可以包括:基于复制有所述第一渲染结果的所述第二颜色纹理以及所述透明物体的深度信息,对所述透明物体进行渲染,具体地,根据预设的深度渲染规则对透明物体进行相应的渲染,所述深度渲染规则包括不透明物体与透明物体之间的深度关联规则,比如,预设的深度渲染规则可以是透明物体在不透明物体之后一层显示,具体可以根据实际情况而进行设定,在此不做限定。

本公开实施例中,由于将所述第一渲染结果中的深度信息也复制到所述第二颜色纹理上,使得在渲染透明物体时,可以参考不透明物体的深度信息,进而可以根据预设的深度渲染规则对透明物体进行相应的渲染,进而达到相应的渲染效果,满足了不同的渲染需求,提高了该场景渲染方法的适用性。

示例性地,参见图6所示,针对上述s104,在基于复制有所述第一渲染结果的所述第二颜色纹理以及所述透明物体的深度信息,对所述透明物体进行渲染时,可以包括以下s1041~s1043:

s1041,确定目标像素点分别对应的所述透明物体的第一目标深度信息与所述第一渲染结果中的第二目标深度信息;所述目标像素点为所述第二颜色纹理中需要进行渲染的像素点。

s1042,将所述第一目标深度信息与所述第二目标深度信息进行比对。

s1043,若所述第一目标深度信息大于所述第二目标深度信息,则不对所述目标像素点进行渲染。

参见图7所示,为本公开实施例提供的一种对透明物体b进行渲染,得到第二渲染结果的示意图,从图7中可以看出,本公开实施例中,由于通过将目标像素点分别对应的第一目标深度信息与第二目标深度信息进行比对,并根据比对结果对所述透明物体b进行渲染,进而可以避免被不透明物体a挡住的透明物体b被错误渲染的情况发生,提高了渲染的可靠性。

s105,对所述第二渲染结果中的所述透明物体的颜色进行第一提取,得到第三渲染结果。

可以理解,如果将第二结果直接与第一结果合成,则会导致在没有透明物体的地方,或者透明物体背后的地方,第一结果中的不透明物体的图像也被模糊了,因此,需要对第二渲染结果中的所述透明物体的颜色进行第一提取,得到只包括透明物体的颜色信息的第三渲染结果,参见图8所示,为本公开实施例提供的一种对第二渲染结果中的透明物体b的颜色进行第一提取,得到第三渲染结果的示意图。

s106,将所述第三渲染结果和所述第一渲染结果进行合成,得到渲染好的场景图像。

请再次参阅图8,由于第三渲染结果的边缘会存在锯齿s的问题。因此,一些实施方式中,为了解决第三渲染结果导致的边缘锯齿s问题,参见图9所示,针对步骤s106,在将所述第三渲染结果和所述第一渲染结果进行合成时,可以包括以下s1061~s1062:

s1061,通过多重采样对所述第三渲染结果中的所述透明物体边缘进行处理,得到第四渲染结果。

s1062,将所述第四渲染结果和所述第一渲染结果进行合成,得到所述渲染好的场景图像。

参见图10所示,为本公开实施例中提供的一种渲染好的场景图像的示意图,从图10中可以看出,本实施方式中,通过多重采样对所述第三渲染结果中的所述透明物体b边缘进行处理,以对第三渲染结果进行优化,得到第四渲染结果,然后再将所述第四渲染结果和所述第一渲染结果进行合成,可以降低第三渲染结果中透明物体边缘的锯齿感,提高的渲染的质量。

可以理解,由于颜色的三个通道不能存储负的值(不存在负的颜色),而对于一些透明物体(如暗色玻璃),在第二渲染结果中的颜色会更黑,也即,颜色值可能会小于0,如果不加处理,第二提取之后会被自动处理成0,进而导致从第二渲染结果中所剥离的颜色产生误差,因此,在一些实施方式中,针对步骤s105,在对所述第二渲染结果中的所述透明物体的颜色进行第一提取时,可以包括以下(a)~(b)步骤:

(a)对所述第二渲染结果中的所述透明物体的颜色进行第二提取,得到所述透明物体的颜色信息;

(b)对所述颜色信息进行第一运算处理,使得所述颜色信息的处理结果符合目标存储格式,得到所述第三渲染结果;所述目标存储格式为图片存储格式。

本实施方式中,在(a)步骤之后,还对所述颜色信息进行第一运算处理,使得所述颜色信息的处理结果符合目标存储格式,得到所述第三渲染结果。一些实施方式中,可以第一运算处理可以包括色域重映射算法。

示例性地,第一运算处理的公式(1)如下所示:

deltcolor=(deltcolor+1)/2(1)

其中,deltcolor表示每个像素点的颜色值。

由于在步骤s105中,为了使得颜色值能够进行存储,而对所提取的颜色值进行了处理,为了保证第二渲结果中的透明物体的颜色的显示效果,在步骤s106合成的时可以包括以下步骤(c)~(d):

(c)对所述第三渲染结果中的颜色信息进行第二运算处理,得到目标颜色信息,所述第二运算为所述第一运算的逆运算;

(d)将所述目标颜色信息与所述第一渲染结果中的颜色信息进行合成。

如此,可以使得进行合成的目标颜色信息与第二渲结果中的透明物体的颜色一致,提高了渲染的视觉效果。

示例性地,第二运算的公式(2)如下所示:

finalcolor=origincolor+deltcolor*2–1(2)

其中,deltcolor表示提取的每个像素点颜色值,origincolor表示第一渲染结果中的每个像素点的颜色值,finalcolor表示合成后的每个像素点的颜色值。

本发明实施例中,通过采用不同的渲染分辨率来分别对不透明物体和透明物体进行渲染,且透明物体的渲染分辨率低于不透明物体的分辨率,进而可以降低渲染压力,提高了电子设备的渲染效率。尤其是针对射击,乱斗类自由视角游戏,战况激烈时会产生大量光、雾、魔法等透明特效,导致渲染压力急剧增大的情景,采用该场景渲染方法所提高渲染效率的效果较为明显,可以极大的提高游戏性能,保持游戏流畅性。

另外,本公开实施例中的场景渲染方法,由于只降低透明物体的渲染分辨率,不会使得原本高清的不透明物体变模糊,进而再提升渲染效率的同时保证了用户的视觉体验。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一技术构思,本公开实施例中还提供了与场景渲染方法对应的场景渲染装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述场景渲染方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参照图11所示,为本公开实施例提供的一种场景渲染装置500的示意图,所述装置包括:

获取模块501,用于获取待渲染场景中的不透明物体和透明物体;

第一渲染模块502,用于创建第一渲染分辨率的第一颜色纹理,并基于所述第一颜色纹理对所述不透明物体进行渲染,得到第一渲染结果;

复制模块503,用于创建第二渲染分辨率的第二颜色纹理,并将所述第一渲染结果复制到所述第二颜色纹理上;所述第二渲染分辨率小于所述第一渲染分辨率;

第二渲染模块504,用于基于复制有所述第一渲染结果的所述第二颜色纹理对所述透明物体进行渲染,得到第二渲染结果;

提取模块505,用于对所述第二渲染结果中的所述透明物体的颜色进行第一提取,得到第三渲染结果;

合成模块506,用于将所述第三渲染结果和所述第一渲染结果进行合成,得到渲染好的场景图像。

在一种可能的实施方式中,所述第二渲染分辨率由所述透明物体的透明度和/或所述透明物体的叠加层数确定。

在一种可能的实施方式中,所述复制模块503具体用于:

将所述第一渲染结果中的颜色信息和深度信息复制到所述第二颜色纹理上;

所述第二渲染模块504具体用于:

基于复制有所述第一渲染结果的所述第二颜色纹理以及所述透明物体的深度信息,对所述透明物体进行渲染。

在一种可能的实施方式中,所述第二渲染模块504具体用于:

确定目标像素点分别对应的所述透明物体的第一目标深度信息与所述第一渲染结果中的第二目标深度信息;所述目标像素点为所述第二颜色纹理中需要进行渲染的像素点;

将所述第一目标深度信息与所述第二目标深度信息进行比对;

若所述第一目标深度信息大于所述第二目标深度信息,则不对所述目标像素点进行渲染。

在一种可能的实施方式中,所述第二渲染模块504具体用于:

以所述第二渲染分别率为基准创建目标贴图,所述目标贴图的颜色信息与所述第一渲染结果中的颜色信息相对应;

基于所述第二颜色纹理对所述目标贴图进行渲染,进而将所述第一渲染结果中的颜色信息复制到所述第二颜色纹理上。

在一种可能的实施方式中,所述提取模块505具体用于:

对所述第二渲染结果中的所述透明物体的颜色进行第二提取,得到所述透明物体的颜色信息;

对所述颜色信息进行第一运算处理,使得所述颜色信息的处理结果符合目标存储格式,得到所述第三渲染结果;所述目标存储格式为图片存储格式;

所述合成模块506具体用于:

对所述第三渲染结果中的颜色信息进行第二运算处理,得到目标颜色信息,所述第二运算为所述第一运算的逆运算;

将所述目标颜色信息与所述第一渲染结果中的颜色信息进行合成。

在一种可能的实施方式中,所述合成模块506具体用于:

通过多重采样对所述第三渲染结果中的所述透明物体边缘进行处理,得到第四渲染结果;

将所述第四渲染结果和所述第一渲染结果进行合成,得到所述渲染好的场景图像。

在一种可能的实施方式中,所述获取模块501具体用于:

获取待渲染场景的场景描述文件,并对所述场景描述文件进行解析,以获取所述待渲染场景中的待渲染物体及与所述渲染物体对应的渲染信息;

根据所述渲染信息对所述待渲染物体进行分类,将所述待渲染物体分为不透明物体和透明物体。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

基于同一技术构思,本公开实施例还提供了一种电子设备。参照图12所示,为本公开实施例提供的电子设备700的结构示意图,包括处理器701、存储器702、和总线703。其中,存储器702用于存储执行指令,包括内存7021和外部存储器7022;这里的内存7021也称内存储器,用于暂时存放处理器701中的运算数据,以及与硬盘等外部存储器7022交换的数据,处理器701通过内存7021与外部存储器7022进行数据交换。

本申请实施例中,存储器702具体用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。也即,当电子设备700运行时,处理器701与存储器702之间通过总线703通信,使得处理器701执行存储器702中存储的应用程序代码,进而执行前述任一实施例中所述的方法。

其中,存储器702可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。

处理器701可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

可以理解的是,本申请实施例示意的结构并不构成对电子设备700的具体限定。在本申请另一些实施例中,电子设备700可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中的场景渲染方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中的场景渲染方法的步骤,具体可参见上述方法实施例,在此不再赘述。

其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(softwaredevelopmentkit,sdk)等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

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

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

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