一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

渲染通道的性能检测方法、装置、电子设备及存储介质与流程

2023-01-15 11:35:28 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,具体而言,涉及一种渲染通道的性能检测方法、装置、电子设备和存储介质。


背景技术:

2.在游戏画面渲染的过程中,通常采用多通道渲染技术进行渲染,多通道渲染技术是以一系列连续图片渲染3d对象或场景的技术,每张图片具有不同的光照和渲染特征,典型的渲染通道包括色彩、阴影、反光、附加光、背光等。由于各个渲染通道的渲染性能是影响画面显示效果的重要因素之一,因此,相关技术中,通常使用xcode等截帧工具对各个渲染通道的渲染性能进行查看,此种方式的主观性较强,导致渲染性能的检测精度较低。


技术实现要素:

3.本公开实施例至少提供一种渲染通道的性能检测方法、装置、电子设备及存储介质,能够实现对渲染通道的性能检测。
4.本公开实施例提供了一种渲染通道的性能检测方法,包括:
5.获取目标应用程序的当前帧画面对应的资源文件,所述当前帧画面为所述目标应用程序运行时对一个或者多个三维模型进行渲染所生成的画面;
6.从所述资源文件中提取多通道渲染数据,所述多通道渲染数据包括每个渲染通道的渲染目标以及每个渲染目标的附加属性信息,所述附加属性信息包括所述渲染目标的加载存储信息;
7.对各个渲染目标分别进行冗余检测,得到所述各个渲染目标的冗余检测结果,以及对各个渲染目标的附加属性信息分别进行状态检测,得到所述各个渲染目标的附加属性信息的状态检测结果;
8.基于所述各个渲染目标的冗余检测结果以及所述各个渲染目标的附加属性信息的状态检测结果,确定所述当前帧画面的渲染通道的性能检测结果。
9.本公开实施例中,通过对多通道渲染数据中的每个渲染通道地渲染目标进行冗余检测以及对每个渲染目标的附加属性信息进行状态检测,并基于检测结果确定当前帧画面的渲染通道的性能检测结果,如此,可以实现针对当前帧画面的渲染通道的性能检测。此外,本实施例通过对渲染目标进行冗余检测以及对各个渲染目标的附加属性信息进行状态检测,与相关技术中通过xcode截帧工具进行查看的方式相比,有利于提升性能检测的精度。
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.图1示出了本公开实施例所提供的一种渲染通道的性能检测方法的流程图;
58.图2示出了本公开实施例所提供的一种提取多通道渲染数据方法的流程图;
59.图3示出了本公开实施例所提供的一种渲染事件列表的示意图;
60.图4示出了本公开实施例所提供的一种渲染目标的冗余检测结果的示意图;
61.图5示出了本公开实施例所提供的一种渲染通道的性能检测装置的结构示意图;
62.图6示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
63.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
64.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
65.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
66.随着终端技术的快速发展,手机、平板电脑等终端的使用频率越来越高。终端上通常安装有各种应用程序,应用程序在运行过程中,可以在对三维模型进行渲染以生成应用程序的画面;例如:生成运行的游戏的画面。
67.多通道渲染技术是以一系列连续图片渲染3d对象或场景的技术,每张图片具有不同的光照和渲染特征,典型的渲染通道包括色彩、阴影、反光、附加光、背光等。
68.由于各个渲染通道的渲染性能是影响画面显示效果的重要因素之一,因此,为了使得画面展示效果达到预期,在游戏画面的渲染过程中,通常需要对各个渲染通道的渲染目标(render target,rt)进行性能检测,然而,相关技术中,使用xcode等截帧工具对各个渲染通道的渲染性能进行查看的性能检测方式的主观性较强,导致渲染性能的检测精度较低,进而影响画面的最终展示效果。
69.基于以上研究,本公开提供了一种渲染通道的性能检测方法,可以获取目标应用程序的当前帧画面对应的资源文件,所述当前帧画面为所述目标应用程序运行时对一个或者多个三维模型进行渲染所生成的画面,并从所述资源文件中提取多通道渲染数据,其中,多通道渲染数据包括每个渲染通道的渲染目标以及每个渲染目标的附加属性信息,然后对各个渲染目标分别进行冗余检测,得到所述各个渲染目标的冗余检测结果,以及对各个渲染目标的附加属性信息分别进行状态检测,得到所述各个渲染目标的附加属性信息的状态检测结果,最后基于所述各个渲染目标的冗余检测结果以及所述各个渲染目标的附加属性信息的状态检测结果,确定所述当前帧画面的渲染通道的性能检测结果。
70.本公开实施例中,通过对多通道渲染数据中的每个渲染通道地渲染目标进行冗余检测以及对每个渲染目标的附加属性信息进行状态检测,并基于检测结果确定当前帧画面
的渲染通道的性能检测结果,如此,实现当前帧画面的渲染通道的性能检测,此外,本实施例通过对渲染目标进行冗余检测以及对各个渲染目标的附加属性信息进行状态检测,与相关技术中通过截帧工具进行查看的方式相比,有利于提升性能检测的精度。
71.为便于对本实施例进行理解,首先对本公开实施例所公开的渲染通道的性能检测方法进行详细介绍,该渲染通道的性能检测方法的执行主体一般是具有一定计算能力的电子设备,该电子设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为移动设备、用户终端、终端、车载设备、计算设备及可穿戴设备等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云存储、大数据和人工智能平台等基础云计算服务的云服务器。其它处理设备可以是包括处理器和存储器的设备,在此不做限定。
72.下面结合附图对本公开实施例中的渲染通道的性能检测方法进行详细介绍。
73.参见图1所示,为本公开实施例提供的渲染通道的性能检测方法的流程图,该渲染通道的性能检测方法包括以下s101~s104:
74.s101,获取目标应用程序的当前帧画面对应的资源文件,所述当前帧画面为所述目标应用程序运行时对一个或者多个三维模型进行渲染所生成的画面。
75.其中,目标应用程序是指安装在终端设备(如手机、平板电脑等)上可以完成某项或多项业务的计算机程序,一般需要与服务端互相配合运行。通常,安装于终端设备的应用程序包括:游戏类应用程序、资讯类应用程序、购物类应用程序及即时通信(社交)类应用程序等。本公开实施例中,目标应用程序为游戏类应用程序。其他实施例中,目标应用程序还可以是其他类应用程序,在此不做限定。
76.其中,三维模型是渲染引擎进行渲染的对象,可以是一些用于放置在现实中的虚拟物,具体可以分为动态模型和静态模型,动态模型指的是可以与用户进行互动的模型,与用户进行互动指的是,设备可以响应于用户对动态模型的操作,显示动态模型相应的动态动作。静态模型指的是不能够与用户进行互动的模型,不论动态模型或者静态模型都可以随着环境而变动,例如,一棵树不可以与用户进行互动,但是它可以随着风而轻摇。
77.示例性地,所述资源文件中包括多通道渲染数据,其中,所述多通道渲染数据包括每个渲染通道的渲染目标以及每个渲染目标的附加属性信息,所述附加属性信息包括所述渲染目标的加载存储信息。
78.其中,所述各个渲染目标为对所述三维模型依次进行不同的通道渲染所得到的渲染结果,所述画面由所述各个渲染目标融合生成。所述通道是指渲染通道(render pass),渲染通道可以包括灯光、阴影、反射、高光和全局光照等,这样,所述三维模型依次通过上述渲染通道渲染,即可得到各个渲染通道的渲染结果,也即,渲染目标。示例性地,多通道渲染数据中包括渲染目标1、渲染目标2以及渲染目标3,其中,渲染目标1对应的渲染通道为灯光,渲染目标2对应的渲染通道为阴影,渲染目标3对应的渲染通道为高光。
79.此外,通过上述多个渲染通道渲染后,除了得到各个渲染通道的渲染目标,还会生成各个渲染目标的附加属性信息,所述渲染目标的附加属性信息是指所述渲染目标的加载存储信息。下面针对所述渲染目标的加载存储信息的相关内容进行详细说明。
80.可选的,所述附加属性信息包括加载信息以及存储信息,其中,所述加载信息是指在当前渲染通道进行绘制之前的针对当前渲染目标的加载行为(load action),其对应的
状态包括load状态、dontcare状态以及clear状态,其中,load状态表示保持之前的渲染目标(绘制内容),并在此渲染目标的基础上继续进行绘制,这里,加载当前渲染目标时需要占用一定的带宽;dontcare状态表示不关注之前的渲染目标(绘制内容),在dontcare状态下,之后的绘制可以将之前的绘制内容进行覆盖,如此,在后续渲染过程中,若加载该渲染目标则不会占用带宽;clear状态表示用预设颜色信息清除当前渲染目标中的内容,这里,虽然涉及到颜色信息的变化,由于其变化所占用的开销时轻量的,因此,在加载该渲染目标时不会增加带宽开销。
81.所述存储信息是指在当前渲染通道绘制结束后的针对当前渲染目标的存储行为(store action),其对应的状态包括store状态以及dontcare状态,其中,store状态表示当前的渲染目标会被回写到内存中进行保存,用于后续渲染流程;dontcare状态表示当前渲染目标为不关注内容,可以进行清除。
82.示例性地,渲染目标1的加载信息对应的load状态为load,渲染目标1的存储信息对应的store状态为dontcare。需要说明的,由于各个渲染目标不同,因此,各个渲染目标对应的加载信息以及存储信息之间也可能存在不同。
83.在一些实施方式中,所述资源文件还可以包括渲染所用的各个模型资源、渲染事件(drawcall)等。其中,渲染引擎在对一帧画面数据进行渲染过程中,可以多次调用图形库接口进行绘制,因此,渲染引擎对图形库接口的调用次数可以理解为图形库接口的绘制次数,渲染引擎每调用一次图形库接口可以称为一次drawcall。
84.s102,从所述资源文件中提取多通道渲染数据,所述多通道渲染数据包括每个渲染通道的渲染目标以及每个渲染目标的附加属性信息,所述附加属性信息包括所述渲染目标的加载存储信息。
85.可以理解,在获取到资源文件后即可从资源文件中提取多通道渲染数据。
86.需要说明的是,在画面渲染的过程中,每个渲染通道都会对应多个渲染事件,这样,在所有渲染事件执行完毕后,即可得到最终的画面,因此,在一些实施方式中,在从所述资源文件中提取多通道渲染数据时,请参见图2,可以包括以下s1021~s1022:
87.s1021,从所述资源文件中获取渲染事件列表;所述渲染事件列表中包括每个渲染通道中的各个渲染事件以及各个渲染事件分别对应的输出资源。
88.s1022,基于所述每个渲染通道中的各个渲染事件以及所述各个渲染事件对应的输出资源,确定所述多通道渲染数据。
89.其中,所述渲染事件列表中的各个渲染事件之间存在渲染顺序,并且在前一个渲染通道渲染结束后,才会进行下一个渲染通道的渲染。
90.示例性地,所述渲染事件列表可以包括渲染通道1对应的渲染事件1-10以及渲染事件1-10分别对应的输出资源、获取渲染通道2对应的渲染事件11-15以及渲染事件11-15分别对应的输出资源、渲染通道3对应的渲染事件16-24以及渲染事件16-24分别对应的输出资源,如此,根据每个渲染通道中的各个渲染事件以及各个渲染事件对应的输出资源,即可得到所述多通道渲染数据。
91.可选的,在基于所述每个渲染通道中的各个渲染事件以及所述各个渲染事件对应的输出资源,确定所述多通道渲染数据时,可以通过下述两种方式进行确定。
92.其中,第一种方式为:将每个渲染通道中的最后一个渲染事件对应的输出资源,确
定为所述每个渲染通道的渲染目标,并基于每个渲染通道的渲染目标得到所述多通道渲染数据。
93.示例性地,请参见图3,为本公开实施例所提供的一种渲染事件列表的示意图。如图3中所示,渲染事件列表中的渲染事件1-5对应渲染通道1、渲染事件6-9对应渲染通道2以及渲染事件10-15对应渲染通道3,其中,渲染通道1的最后一个渲染事件为渲染事件5,则可以将渲染事件5对应的输出资源output5作为渲染通道1的渲染目标;同理,可以将渲染事件9对应的输出资源output9作为渲染通道2的渲染目标、以及将渲染事件15对应的输出资源output15作为渲染通道3的渲染目标。
94.第二种方式为:在基于所述每个渲染通道中的各个渲染事件以及所述各个渲染事件对应的输出资源,确定所述多通道渲染数据时,还可以将相邻的两个渲染通道中的后一个渲染通道中的起始渲染事件的前一个渲染事件对应的输出资源,确定为所述相邻的两个渲染通道中的前一个渲染通道的渲染目标,并基于每相邻的两个渲染通道中的前一个渲染通道的渲染目标,得到所述多通道渲染数据。
95.示例性地,可以从渲染事件列表中提取相邻两个渲染通道中的后一个渲染通道的起始渲染事件标识(id b),并获取渲染事件id b的前一个渲染事件id a的输出资源,并将前一个渲染事件id a的输出资源作为前一个渲染通道的渲染目标。基于上述示例(图3),相邻的两个渲染通道为渲染通道1和渲染通道2,则可以将渲染通道2中的起始渲染事件(渲染事件6)的前一个渲染事件(渲染事件5)的输出资源,确定为所述渲染通道1的渲染目标,如此,可以获取到每相邻的两个渲染通道(例如渲染通道1和渲染通道2、渲染通道2与渲染通道3)的前一个渲染渲染通道的渲染目标,得到多通道渲染数据。通过上述两种方式,确定每个渲染通道的渲染目标,并基于各个渲染目标,得到多通道渲染数据,如此,不仅有利于提升渲染目标的确定方式的多样性,还可以提升渲染目标的确定精度,还可以提升多通道渲染数据的精度。
96.s103,对各个渲染目标分别进行冗余检测,得到所述各个渲染目标的冗余检测结果,以及对各个渲染目标的附加属性信息分别进行状态检测,得到所述各个渲染目标的附加属性信息的状态检测结果。
97.其中,所述冗余检测是指检测每个渲染目标是否被其他任意一个渲染通道引用。
98.可选的,在对各个渲染目标分别进行冗余检测,得到所述各个渲染目标的冗余检测结果时,可以针对每个渲染目标,基于所述渲染目标是否被其他任一渲染通道引用,确定所述渲染目标是否冗余,并基于每个渲染目标是否冗余的检测结果,得到各个渲染目标的冗余检测结果。
99.示例性地,针对渲染目标1,若渲染目标1被其他任一渲染通道(例如渲染通道3)引用,则确定渲染目标1为非冗余;若渲染目标1未被其他渲染通道引用,则确定渲染目标1为冗余,如此,可以提升针对每个渲染目标的冗余检测的准确度。
100.进一步的,由于每个渲染通道对应多个渲染事件,并且每个渲染事件会输出一个输出资源,这样,每个渲染目标对应多个输出资源,在对各个渲染目标分别进行冗余检测的过程中,若存在至少一个输出资源被其他任一渲染通道引用的情况,则可以确定所述至少一个输出资源对应的渲染目标的冗余检测结果为非冗余;同理,若与当前渲染目标对应的多个输出资源均未被其他渲染通道所引用,则可以确定当前渲染目标的冗余检测结果为冗
余。也即,只要存在至少一个输出资源被其他至少一个渲染通道引用,则可以认为所述至少一个输出资源所对应的渲染目标被其他渲染通道引用。
101.示例性地,渲染通道1的渲染目标rt1所对应的输出资源包括output1、output2以及output3,若任一输出资源(例如output2)被至少一个其他渲染通道(例如渲染通道2、渲染通道3)引用,也即,作为至少一个其他渲染通道的输入资源,则可以确定渲染目标rt1的冗余检测结果为非冗余;若output1、output2以及output3均未被其他渲染通道引用,则可以确定渲染目标rt1的冗余检测结果为冗余。
102.所述对各个渲染目标的附加属性信息分别进行状态检测,是指每个渲染目标对应一个附加属性信息,针对每个渲染目标的附加属性信息,检测所述附加属性信息与预设状态是否一致,从而得到各个渲染目标的附加属性信息的状态检测结果。需要说明的是,本实施方式中,针对每个渲染目标的附加属性信息,其对应的预设状态之间是不同的,关于预设状态的具体设置内容将在后续进行介绍。
103.s104,基于所述各个渲染目标的冗余检测结果以及所述各个渲染目标的附加属性信息的状态检测结果,确定所述当前帧画面的渲染通道的性能检测结果。
104.可以理解,本实施方式中,针对当前帧画面的渲染通道的性能检测结果,是基于各个渲染目标的冗余检测结果以及各个渲染目标的附加属性信息的状态检测结果确定的,具体的,在每个渲染目标的冗余检测结果为非冗余,且每个渲染目标的附加属性信息的状态检测结果符合预设要求的情况下,确定所述当前帧画面的渲染通道的性能检测结果为检测通过,也即,只要存在至少一个渲染目标为冗余或者至少一个渲染目标的附加属性信息不符合预设要求,则均认为当前检测不通过。
105.其中,所述每个渲染目标的附加属性信息的状态检测结果符合预设要求是指所述每个渲染目标的附加属性信息的状态与预设状态一致。由于每个渲染目标均会对应一个加载存储行为,需要根据特定的事件进行合理的设置,以避免出现性能问题,例如,在整个渲染过程结束后,深度信息将不会被使用,此时,可以设置深度纹理渲染通道的渲染目标的存储状态为不关注,如此,可以避免将深度信息回写到内存,以避免占用带宽开销。
106.本公开实施例中,通过对多通道渲染数据中的每个渲染通道地渲染目标进行冗余检测以及对每个渲染目标的附加属性信息进行状态检测,并基于检测结果确定当前帧画面的渲染通道的性能检测结果,如此,可以实现针对当前帧画面的渲染通道的性能检测。此外,本实施例通过对渲染目标进行冗余检测以及对各个渲染目标的附加属性信息进行状态检测,与相关技术中通过xcode截帧工具进行查看的方式相比,有利于提升性能检测的精度。
107.可以理解,为了便于检测人员能够直观的看到各个渲染目标的冗余检测结果,可以在冗余检测结束后,将各个渲染目标的冗余检测结果进行标记并展示。因此,在一些实施方式中,可以响应于查询指令,展示所述各个渲染目标的冗余检测结果。
108.示例性地,请参见图4,为本公开实施例所提供的一种渲染目标的冗余检测结果的示意图。如图4中所示,渲染通道1的渲染目标rt1对应的输出资源为r1、r2、r3,由于渲染通道2的渲染目标rt2对应的输入资源(resources input)为r1和r2,并产生对应的输出资源(resources output)r4以及r5,也即,rt1对应的输出资源r1和r2被渲染通道2中的渲染事件所引用,则说明rt1被渲染通道2引用,这样即可对rt1的冗余检测结果标记为非冗余;而
针对渲染通道2的渲染目标rt2,由于rt2对应的输出资源r4以及r5未被其他渲染通道引用,则可以将渲染目标rt2的冗余检测结果标记为冗余;同理,针对渲染通道3的渲染目标rt3,由于rt3对应的输出资源r6未被其他渲染通道引用,则可以将渲染目标rt3的冗余检测结果标记为冗余,这样,通过判断每个渲染目标是否被引用,可以提升每个渲染目标的冗余检测结果的检测精度,还可以直观的判断每个渲染目标是否冗余,有利于检测人员定位并解决渲染通道的性能问题。
109.在另一些实施方式中,在得到所述各个渲染目标的附加属性信息的状态检测结果之后,也可以响应于查询指令,展示所述各个渲染目标的附加属性信息的状态检测结果。示例性地,针对每个渲染目标,由于其附加属性信息包括load action以及store action,则分别对其实际状态进行展示,以便于开发测试人员对直观的对附加属性信息进行判断。
110.可以理解,针对不同的渲染目标,其对应的预设状态可能存在不同,在一些实施方式中,每个渲染目标对应的预设状态由所述渲染目标所属的渲染通道在开始阶段以及结束阶段分别调用的函数信息确定。示例性地,下面针对单个渲染目标的加载存储信息所对应的预设状态进行说明。
111.可以理解,由于一个渲染通道对应多个渲染事件,在开始绘制阶段,若在所述多个渲染事件的首个渲染事件之前存在第一函数(glclear/glclearbuffer*),则加载信息的load状态所对应的预设状态为“clear”;在开始绘制阶段,若在首个渲染事件之前存在第二函数(glinvalidateframebuffer),则该渲染目标的加载信息的load状态所对应的预设状态为“dontcare”;若在最后一个渲染事件之后存在第二函数,则该渲染目标的存储信息的store状态所对应的预设状态为“dontcare”;若在首个渲染事件之前上述两个函数(第一函数、第二函数)均不存在,则加载信息的load状态所对应的预设状态为“load”,若在最后一个渲染事件之后不存在第二函数,则该渲染目标的存储信息的store状态所对应的预设状态为“store”。
112.需要说明的是,第一函数是指用于清除帧缓存内容的函数,第二函数是指使得帧缓冲数据的内容失效的函数,在其他实施方式中,上述第一函数以及第二函数的命名方式可能存在不同,在此不做限定。
113.在另一些实施方式中,所述预设状态还可以通过如下方式进行确定。
114.(1)在当前渲染目标为首个渲染通道的渲染目标的情况下,所述当前渲染目标的加载信息的预设状态为清除状态(clear状态)。
115.(2)在所述当前渲染目标被其他任一渲染通道引用的情况下,所述当前渲染目标的存储信息的预设状态为存储状态;和/或,在所述当前渲染目标为通过所属的渲染通道引用其他任一渲染目标而得到的情况下,所述当前渲染目标的加载信息的预设状态为加载状态。
116.示例性地,由于一个渲染目标对应多个渲染事件的输出资源,若渲染通道1的渲染目标为rt1,rt1对应的输出资源为r1,若r1被其他渲染通道(例如渲染通道2)引用(也即,将r1作为其他渲染通道的输入资源)产生输出资源r4,则rt1对应的输出资源为r1的存储信息的storeaction对应的预设状态为store;和/或,r4的加载信息的loadaction对应的预设状态为load。
117.(3)在所述渲染目标不是所述首个渲染通道的渲染目标,且所述渲染目标未被其
他任一渲染通道引用的情况下,所述渲染目标的加载信息的预设状态和存储信息的预设状态均为不关注状态。
118.可以理解,若渲染目标不是首个渲染通道的渲染目标,且渲染目标未被引用,说明当前渲染目标对后续渲染流程不产生影响,因此,该渲染目标的加载信息的预设状态和存储信息的预设状态均为不关注状态。
119.本实施方式中,由于在上述当前渲染目标处于不同情况下,其所对应的预设状态也是不同的,进而针对不同渲染目标,可以对各个渲染目标的加载信息以及存储信息分别进行针对性的检测,这样有利于提升状态检测的正确性,进而提升性能检测的精度。
120.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
121.基于同一技术构思,本公开实施例中还提供了与渲染通道的性能检测方法对应的渲染通道的性能检测装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述渲染通道的性能检测方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
122.参照图5所示,为本公开实施例提供的一种渲染通道的性能检测装置500的示意图,所述装置包括:
123.文件获取模块501,用于获取目标应用程序的当前帧画面对应的资源文件,所述当前帧画面为所述目标应用程序运行时对一个或者多个三维模型进行渲染所生成的画面;
124.资源提取模块502,用于从所述资源文件中提取多通道渲染数据,所述多通道渲染数据包括每个渲染通道的渲染目标以及每个渲染目标的附加属性信息,所述附加属性信息包括所述渲染目标的加载存储信息;
125.性能检测模块503,用于对各个渲染目标分别进行冗余检测,得到所述各个渲染目标的冗余检测结果,以及对各个渲染目标的附加属性信息分别进行状态检测,得到所述各个渲染目标的附加属性信息的状态检测结果;
126.结果确定模块504,用于基于所述各个渲染目标的冗余检测结果以及所述各个渲染目标的附加属性信息的状态检测结果,确定所述当前帧画面的渲染通道的性能检测结果。
127.在一种可能的实施方式中,所述各个渲染目标为对所述三维模型依次进行不同的通道渲染所得到的渲染结果,所述画面由所述各个渲染目标融合生成。
128.在一种可能的实施方式中,所述资源提取模块502具体用于:
129.从所述资源文件中获取渲染事件列表;所述渲染事件列表中包括每个渲染通道中的各个渲染事件以及各个渲染事件分别对应的输出资源;
130.基于所述每个渲染通道中的各个渲染事件以及所述各个渲染事件对应的输出资源,确定所述多通道渲染数据。
131.在一种可能的实施方式中,所述资源提取模块502具体用于:
132.将每个渲染通道中的最后一个渲染事件对应的输出资源,确定为所述每个渲染通道的渲染目标,并基于每个渲染通道的渲染目标得到所述多通道渲染数据;或者,
133.将相邻的两个渲染通道中的后一个渲染通道中的起始渲染事件的前一个渲染事
件对应的输出资源,确定为所述相邻的两个渲染通道中的前一个渲染通道的渲染目标,并基于每相邻的两个渲染通道中的前一个渲染通道的渲染目标,得到所述多通道渲染数据。
134.在一种可能的实施方式中,所述性能检测模块503具体用于:
135.针对每个渲染目标,基于所述渲染目标是否被其他任一渲染通道引用,确定所述渲染目标是否冗余;
136.基于每个渲染目标是否冗余的检测结果,得到所述各个渲染目标的冗余检测结果。
137.在一种可能的实施方式中,所述结果确定模块504具体用于:
138.在每个渲染目标的冗余检测结果为非冗余,且每个渲染目标的附加属性信息的状态检测结果符合预设要求的情况下,确定所述当前帧画面的渲染通道的性能检测结果为检测通过;
139.所述每个渲染目标的附加属性信息的状态检测结果符合预设要求是指所述每个渲染目标的附加属性信息的状态与预设状态一致。
140.在一种可能的实施方式中,每个渲染目标的附加属性信息包括加载信息以及存储信息,所述预设状态包括以下至少一种:
141.在当前渲染目标为首个渲染通道的渲染目标的情况下,所述当前渲染目标的加载信息的预设状态为清除状态,所述清除状态是指用目标颜色清除所述渲染目标的内容;或者,
142.在所述当前渲染目标被其他任一渲染通道引用的情况下,所述当前渲染目标的存储信息的预设状态为存储状态;和/或,在所述当前渲染目标为通过所属的渲染通道引用其他任一渲染目标而得到的情况下,所述当前渲染目标的加载信息的预设状态为加载状态;或者,
143.在所述渲染目标不是所述首个渲染通道的渲染目标,且所述渲染目标未被其他任一渲染通道引用的情况下,所述渲染目标的加载信息的预设状态和存储信息的预设状态均为不关注状态。
144.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
145.基于同一技术构思,本公开实施例还提供了一种电子设备。参照图6所示,为本公开实施例提供的电子设备600的结构示意图,包括处理器601、存储器602、和总线603。其中,存储器602用于存储执行指令,包括内存6021和外部存储器6022;这里的内存6021也称内存储器,用于暂时存放处理器601中的运算数据,以及与硬盘等外部存储器6022交换的数据,处理器601通过内存6021与外部存储器6022进行数据交换。
146.本技术实施例中,存储器602具体用于存储执行本技术方案的应用程序代码,并由处理器601来控制执行。也即,当电子设备600运行时,处理器601与存储器602之间通过总线603通信,使得处理器601执行存储器602中存储的应用程序代码,进而执行前述任一实施例中所述的方法。
147.其中,存储器602可以是,但不限于,随机存取存储器(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)等。
148.处理器601可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
149.可以理解的是,本技术实施例示意的结构并不构成对电子设备600的具体限定。在本技术另一些实施例中,电子设备600可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
150.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中的渲染通道的性能检测方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
151.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中的渲染通道的性能检测方法的步骤,具体可参见上述方法实施例,在此不再赘述。
152.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
153.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
154.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
155.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
156.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件
产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
157.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献