发明内容
为了解决上述问题,根据本发明的第一个方面,提供了一种过度绘制的评估方法,包括以下步骤:创建监测着色器,其中监测着色器被配置为用于绘制半透明物体,且每绘制一个半透明物体时,将该半透明物体的一个或多个通道的像素值赋值为一指定值;创建渲染纹理,该渲染纹理用于接收待绘制的buffer数据;创建相机,将该渲染纹理赋值给相机的渲染对象,其中该相机被配置为以该监测着色器作为该相机的着色器;将该相机的位置和旋转信息配置为与主相机的位置和旋转信息相同;完成渲染后,根据该相机中的该渲染纹理的指定通道的值,计算过度绘制的倍数。
优选地,在完成渲染后,根据该相机中的该渲染纹理的指定通道的值,计算过度绘制的倍数的步骤中,还包括子步骤:重载OnPostRender函数;利用OnPostRender函数将所述相机中的渲染纹理的内容保存为本地图片。
优选地,该指定通道为红通道。
根据本发明的第二个方面,提供了一种过度绘制的评估系统,包括:第一装置,创建监测着色器,其中该监测着色器被配置为用于绘制半透明物体,且每绘制一个物体时,在其像素值的指定通道的值加上一个指定值;第二装置,创建渲染纹理,该渲染纹理用于接收待绘制的buffer数据;第三装置,创建相机,将该渲染纹理赋值给相机的渲染对象,其中该相机被配置为以该监测着色器作为该相机的着色器;第四装置,将该相机的位置和旋转信息配置为与主相机的位置和旋转信息相同;以及第五装置,完成渲染后,根据该相机中的该渲染纹理的指定通道的值,计算过度绘制的倍数。
优选地,第五装置包括以下子装置:第一子装置,重载OnPostRender函数;第二子装置,利用OnPostRender函数将相机中的渲染纹理的内容保存为本地图片。
优选地,该指定通道为红通道。
根据本发明的第三个方面,一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1该方法的步骤。
本发明的有益效果在于:可以有效的获取手机游戏的过度绘制情况,为游戏性能评估提供重要的参考价值,同时也为游戏研发团队提供优化思路。
具体实施方式
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接相合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在二个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在二个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员应当理解,在本申请的说明书中,“首先”、“其次”、“第一”、“第二”、“第一步”、“第二步”等用语,如无特别声明并不表示对先后顺序的限制。例如,“步骤三”可以在“步骤一”之前,“第四部”可以和“第二部”同时进行。
参照图1,本发明的第一实施例提供了一种过度绘制的评估方法。该方法可以在Unity的环境下进行,可以计算机、手机等平台上运行。在启动应用程序(例如手机游戏)并进入待评估的登录场景后,开始进行过度绘制检测,具体过程如下。
第一步:创建一个Shader(着色器)作为监测着色器,其中该Shader被配置为用于绘制半透明物体,且每绘制一个半透明物体时,在该半透明物体的像素值的指定一个或多个通道的通道值加上一个指定值。其中所述指定通道可以是红通道、蓝通道、绿通道或阿尔法通道等,优选采用红通道。由此,如有多个半透明物体被绘制,则最终显示到屏幕的渲染纹理的像素值为这些指定值的累加值。
例如编写一个用于绘制图形的shader,用于绘制半透明物体,每绘制一个物体将其像素值的红色通道值加上一个值,绘制的次数越多其红色通道值越接近于1,即红色越红。
第二步:创建RenderTexture(渲染纹理),该RenderTexture用于接收待绘制的buffer数据。
第三步:创建Camera(相机),将上述RenderTexture赋值给Camera的RenderTarget(渲染对象),其中该Camera被配置为以上述作为监测着色器的Shader作为该Camera的Shader。
第四步:将所述相机的位置和旋转信息配置为与主相机的的位置和旋转信息相同。
例如,创建一个脚本在Start函数中将第三步创建的相机的shader替换为第一步所创建的Shader,并在Update函数中更新第三步创建的Camera的位置与旋转信息确保当前Camera与Main Camera(主相机)的transform信息相同。
第五步:在完成渲染后,根据所述相机中的所述渲染纹理的指定通道的值,计算过度绘制的倍数。
例如,创建一个脚本,将这个脚本挂载在第三步创建的相机的组件上,并重载OnPostRender函数,在此函数中将camera中的RenderTexture的内容保存到本地图片文件。检测30秒后结束过度绘制检测,将保存到本地图片上传web端,根据图片的红通道的值评估该登录界面的过度绘制的情况。此外,可以通过在不同的时间节点多次保存图片的方式,对动态过程中的过度绘制情况做综合性分析。
通过web端展示,测试人员可以发现登录选角界面过度绘制较为严重达到8倍。通过编辑器定位发现角色列表每一个角色选项都包含多层image,其中有几层是作为底图的只显示边框,其image为九宫格类型,而中间确实透明的可以通过去掉勾选FillCenter勾选项而减少过度绘制。通过多次的操作后,登录场景的过度绘制从开始的8倍绘制减少为3.5倍绘制,从而有效地降低过度绘制的程度,释放了CPU和GPU资源。
根据本发明的第二实施例,提供了一种过度绘制的评估装置,该系统包括:第一装置,创建监测着色器,其中该监测着色器被配置为用于绘制半透明物体,且每绘制一个物体时,在其像素值的指定通道的值加上一个指定值;第二装置,创建渲染纹理,该渲染纹理用于接收待绘制的buffer数据;第三装置,创建相机,将该渲染纹理赋值给相机的渲染对象,其中该相机被配置为以该监测着色器作为该相机的着色器;第四装置,将该相机的位置和旋转信息配置为与主相机的位置和旋转信息相同;以及第五装置,完成渲染后,根据该相机中的该渲染纹理的指定通道的值,计算过度绘制的倍数。
优选地,第五装置包括以下子装置:第一子装置,重载OnPostRender函数;第二子装置,利用OnPostRender函数将所述相机中的渲染纹理的内容保存为本地图片。
优选地,该指定通道为红通道。
根据本发明的第三实施例,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明第一实施例所述方法的步骤。具体步骤可参照本发明的第一实施例,故在此不再赘言。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。