[发明专利]一种纹理图集调度的方法有效
申请号: | 201811316278.4 | 申请日: | 2018-11-07 |
公开(公告)号: | CN109710227B | 公开(公告)日: | 2022-05-24 |
发明(设计)人: | 郭嵩;吕文伟 | 申请(专利权)人: | 苏州蜗牛数字科技股份有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06T15/20 |
代理公司: | 北京德崇智捷知识产权代理有限公司 11467 | 代理人: | 王金双 |
地址: | 215000 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 纹理 调度 方法 | ||
一种纹理图集调度的方法,包括以下步骤:对需要加载的纹理进行预处理;加载纹理保留的MipMap等级;对需要进行调度的MipMap进行管理;对UV进行重定位、纹理采样。本发明的纹理图集调度的方法,能够进行贴图的合并,有效减少DrawCall的数量,使得渲染效率得以提升。
技术领域
本发明涉及游戏引擎开发技术领域,特别涉及一种基于方格化的虚拟纹理图集流式调度的方法。
背景技术
目前,主流游戏一般都需要庞大、精致的游戏世界。对于构建庞大精致的游戏世界,贴图占着举足轻重的地位。游戏画面品质的好坏,直接取决于贴图的精细程度。早期的游戏制作方式是把所需要的游戏贴图完全加载在内存中,但由于人们对游戏画面品质追求的不断提升,导致了贴图资源量呈爆炸式的增长,虽然现代硬件性能,包括硬件的存储能力也都有明显的提升,但和资源量的增长相比,还是远远落后的,显然完全的加载游戏贴图已经不能满足我们的需求。另一方面,游戏渲染过程中绘图调用(DrawCall)的数量会大大影响我们游戏的性能,如何减少DrawCall的数量也是我们当前所面临的一个挑战。纹理多细节等级(LOD)以及流式加载的出现缓解了内存不足的问题,但是如何在保证DrawCall尽可能少的情况下使得内存的占用量也尽可能少呢?仍然是一个比较棘手的问题。
在应用程序中,减少DrawCall数量的一个基本方法就是减少材质的数量,对于不同的贴图,如果这些贴图是分散的,就很难做到减少材质的目的,一种常用的做法是合并贴图,但这种做法将直接导致纹理流式加载的困难,在DrawCall数量和内存占用量上很难做到兼顾两者的方法,使用背包算法来对纹理进行调度一定程度上缓解了这种局面,但是物理纹理上出现碎片也是一个不容小觑的问题,因为对物理纹理的反碎片成本也很高。
因此,亟需一种纹理的调度方法,能够有效的解决这些问题。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种纹理图集调度的方法,通过使用该方法,能够进行贴图的合并,有效减少DrawCall的数量,使得渲染效率得以提升。
为实现上述目的,本发明提供的纹理图集调度的方法,包括以下步骤:
1)对需要加载的纹理进行预处理;
2)加载纹理保留的MipMap等级;
3)对需要进行调度的MipMap进行管理;
4)对UV进行重定位、纹理采样。
进一步地,所述步骤1)进一步包括,根据基本流式加载的单位对需要加载的纹理进行预处理,并保存到自定义格式的文件中。
进一步地,对纹理进行预处理的过程包括对纹理进行小方格化处理,对于不同的采样寻址模式和贴图数据存储格式以及不同的采样过滤器,小方格化处理过程中小方格向外延伸的像素个数不同。
进一步地,所述步骤2)进一步包括,更新间接索引Buffer以及实际的物理纹理,创建索引Buffer,用于记录实际物理纹理上的小方格的信息。
进一步地,在所述索引Buffer中,每张贴图对应一个TextureInfo,每张贴图有8个等级的MipMap,使用8个MipMapInfo来存储对应的信息,每个用来存储MipMap信息的位置为一个Slot。
进一步地,对于高等级的MipMap,所对应的Slot上的TileIndex都是相同的,对于存储多个TileIndex的Slot,按照z-order的顺序来对TileIndex进行存储。
进一步地,所述步骤3)进一步包括,
71)通过纹理期望的LOD,确定需要流入的纹理;
72)确定需要流入的MipMap;
73)计算需要的Tile个数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州蜗牛数字科技股份有限公司,未经苏州蜗牛数字科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811316278.4/2.html,转载请声明来源钻瓜专利网。