一种降低场景像素填充率的方法技术

技术编号:21287972 阅读:34 留言:0更新日期:2019-06-11 23:42
一种降低场景像素填充率的方法,包括:创建材质球,使用绘制不透明网格的着色器;管理类中维护一个打开UI区域大小的列表;计算所述UI的区域信息并添加到所述列表中;根据区域信息列表计算出屏幕空间内遮挡区域并集的最大矩形的四个顶角并构建网格;创建命令缓冲区,将所述绘制命令缓冲插入到绘制不透明物体前并执行绘制命令;进行场景绘制。可以方便的集成到已有UI系统里,并支持多个UI叠加打开、关闭时的遮挡区域自动适配,提高GPU的效率。

A Method of Reducing Pixel Filling Rate in Scene

A method to reduce the filling rate of scene pixels includes: creating material balls, using shaders that draw opaque grids; maintaining a list of open UI area sizes in the management class; calculating the area information of the UI and adding it to the list; calculating the four top angles of the largest rectangle of the occlusion area in screen space and constructing grids according to the area information list; Command buffer, insert the drawing command buffer before drawing opaque objects and execute the drawing command; render scene. It can be easily integrated into the existing UI system, and supports automatic adaptation of occlusion areas when multiple UIs are overlapped, opened or closed, so as to improve the efficiency of GPU.

【技术实现步骤摘要】
一种降低场景像素填充率的方法
本专利技术涉及游戏引擎
,特别是涉及一种降低场景像素填充率的方法。
技术介绍
在现有游戏制作中,一般采用两个相机分别渲染UI和游戏场景。但当玩家打开一个遮蔽区域较大(或全屏)的不透明UI时,实际上场景相机渲染的部分元素我们看不到了,但场景相机仍然提交渲染任务给GPU。对于全屏的UI,设计人员可以在打开UI时,临时停止场景相机的渲染,降低场景渲染压力;但对于一些游戏,功能UI并不是全屏的,设计人员不能停止场景相机的渲染,使得场景渲染的压力过大,也降低了GPU的效率。
技术实现思路
为了解决现有技术存在的不足,本专利技术的目的在于提供一种降低场景像素填充率的方法,利用移动GPU的瓦片/分块渲染架构的特性,以及Unity引擎渲染排序的规则,省去场景中被UI挡住的部分的像素填充操作,提高GPU的效率。为实现上述目的,本专利技术提供的一种降低场景像素填充率的方法,包括:创建材质球,使用绘制不透明网格的着色器;维护打开UI区域大小的列表;计算所述UI的区域信息并添加到所述列表中;根据区域信息列表计算出屏幕空间内遮挡区域并集的最大矩形的四个顶角并构建网格;创建命令缓冲区,将所述绘制命令缓冲插入到绘制不透明物体前并执行绘制命令;进行场景绘制。进一步地,所述着色器,渲染队列标注为不透明渲染,并且写入深度信息。更进一步地,所述计算所述UI的区域信息并添加到所述列表中的步骤,进一步包括:根据UI的预设大小和所适配机型的屏幕分辨率计算得出相对于屏幕空间的中心位置和高宽信息;将所述区域信息加入到所述列表,关闭时将该区域信息移除。为实现上述目的,本专利技术还提供一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行如上文所述的降低场景像素填充率的方法步骤。为实现上述目的,本专利技术还提供一种图像处理终端设备,其特征在于,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行如上文所述的降低场景像素填充率的方法步骤。本专利技术的降低场景像素填充率的方法,具有以下有益效果:1)在Unity移动游戏中UI打开时,利用了移动GPU的瓦片/分块渲染架构的特性,以及Unity引擎渲染排序的规则,将场景中被UI挡住的部分的像素填充操作省去。2)可以方便的集成到已有UI系统里,并支持多个UI叠加打开、关闭时的遮挡区域自动适配,提高GPU的效率。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,并与本专利技术的实施例一起,用于解释本专利技术,并不构成对本专利技术的限制。在附图中:图1为根据本专利技术的降低场景像素填充率的方法流程图。具体实施方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。图1为根据本专利技术的降低场景像素填充率的方法流程图,下面将参考图1,对本专利技术的降低场景像素填充率方法进行详细描述。首先,在步骤101,创建材质球,使用绘制不透明网格的着色器。该步骤中,在逻辑中创建一个材质球,并使用绘制不透明网格的着色器,该着色器不经空间转换矩阵变换,因为后面构建的网格已经转换到屏幕空间。优选地,使用的所述着色器渲染队列必须标注为不透明渲染,并且需要写入深度信息。在步骤102,管理类中维护一个打开UI区域大小的列表。在步骤103,计算所述UI的区域信息并添加到所述列表中。优选地,所述UI的区域信息包括,根据UI的预设大小和所适配机型的屏幕分辨率计算得出相对于屏幕空间的中心位置和高宽信息。该步骤中,当打开某个UI时,根据UI的预设大小和所适配机型的屏幕分辨率计算得出相对于屏幕空间的中心位置和高宽信息。优选地,将所述区域信息加入到所述列表,关闭时将该区域信息移除。在步骤104,根据区域信息列表计算出屏幕空间内遮挡区域并集的最大矩形的四个顶角并构建网格。该步骤中,当UI完成打开、关闭过渡动画后,根据区域信息列表计算出屏幕空间内遮挡区域并集的最大矩形的四个顶角并构建网格。在步骤105,创建命令缓冲区,将所述绘制命令缓冲插入到绘制不透明物体前并执行绘制命令。该步骤中,创建一个命令缓冲区(CommandBuffer),并将该绘制命令缓冲插入到场景相机绘制不透明物体前的时刻(BeforeForwardOpaque),并执行该绘制命令。在步骤106,进行场景绘制。该步骤中,按正常的流程绘制场景物件。由于上述步骤绘制的对象在不透明渲染队列且写入了深度。游戏引擎中不透明物体是从前往后依次渲染的,依托于移动GPU的瓦片/分块渲染架构,离相机远的物件在像素填充阶段,由于深度测试返回false,直接不进行操作,从而提高GPU的效率。为实现上述目的,本专利技术还提供一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行如上文所述的降低场景像素填充率的方法步骤。为实现上述目的,本专利技术还提供一种图像处理终端设备,其特征在于,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行如上文所述的降低场景像素填充率的方法步骤。本领域普通技术人员可以理解:以上所述仅为本专利技术的优选实施例而已,并不用于限制本专利技术,尽管参照前述实施例对本专利技术进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本专利技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本专利技术的保护范围之内。本文档来自技高网...

【技术保护点】
1.一种降低场景像素填充率的方法,包括以下步骤:创建材质球,使用绘制不透明网格的着色器;维护打开UI区域大小的列表;计算所述UI的区域信息并添加到所述列表中;根据区域信息列表计算出屏幕空间内遮挡区域并集的最大矩形的四个顶角并构建网格;创建命令缓冲区,将所述绘制命令缓冲插入到绘制不透明物体前并执行绘制命令;进行场景绘制。

【技术特征摘要】
1.一种降低场景像素填充率的方法,包括以下步骤:创建材质球,使用绘制不透明网格的着色器;维护打开UI区域大小的列表;计算所述UI的区域信息并添加到所述列表中;根据区域信息列表计算出屏幕空间内遮挡区域并集的最大矩形的四个顶角并构建网格;创建命令缓冲区,将所述绘制命令缓冲插入到绘制不透明物体前并执行绘制命令;进行场景绘制。2.根据权利要求1所述的方法,其特征在于,所述着色器,渲染队列标注为不透明渲染,并且写入深度信息。3.根据权利要求1所述的方法,其特征在于,所述计算所述UI的区域信息并添加到所述列表...

【专利技术属性】
技术研发人员:高超
申请(专利权)人:苏州蜗牛数字科技股份有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1