unity 纹理压缩格式‘_纹理优化:让你的纹理也“瘦”下来

7b32817705238926a81cd480fc0f9e3e.png

在上一期《纹理优化:不仅仅是一张图片那么简单》中,我们针对纹理相关的优化,挑选了部分知识点分析。无论是大家在开发时的疏忽,还是对相关知识点的理解不足,这些问题的积累最终都会反映到项目的性能表现上。为此,我们将这些规则列出,并且以一个个知识点的形式向大家逐一解读。

本文,我们继续聚焦纹理方面,以UWA本地资源检测中的检测规则:“开启Mipmap选项的Sprite纹理”、“用非压缩格式的纹理”和“Wrap模式为Repeat的纹理”为大家简单讲解相关的知识点。我们将力图以浅显易懂的表达,让职场萌新或优化萌新深入理解。


1、开启Mipmap选项的Sprite纹理

350e5c03919b18805f936a9386641f09.png

对纹理而言,在Import Settings中开启Generate Mip Maps后,Unity就会预生成一系列长宽以2为倍数缩小的纹理序列,一直生成到分辨率为 1*1,在采样纹理时会根据图形的大小自动选择相近等级的Mipmap进行采样。

32734cee776fdfffc42019288b1bf7c5.png

在3D场景中,由于距离问题,物体的纹理需要经常被缩放、拉伸,所以使用Mipmap会减小运行过程中的计算量,提升GPU效率。

需要注意的是,开启Mipmap选项后,生成的多个小分辨率纹理会使得总体内存占用比原来多出1/3。在UI中,由于不存在元素相对于相机的位置不断变化的需求,一般情况下也不需要频繁缩放图片(特殊需求除外),所以对UI而言Mipmap的存在对性能提升其实是没有意义的。

1817c0f32a57e30c6a5c5d003340703c.png

本条规则的主角——Sprite类型的纹理,就是应用在2D游戏或者UI当中的,所以我们不建议开启Mipmap,以避免造成内存上的浪费。


2、使用非压缩格式的纹理

b271672770d726493bf283f7476c53ad.png

首先我们要区分图片文件格式和引擎中支持的纹理格式。对图片而言,诸如JPG、JPEG和PNG等多种文件格式是为了存储图像信息而使用的、对信息的特殊编码方式,它存储在磁盘中或者内存中。

但图片的这些格式,对于以向量计算见长的GPU来讲就有种面对陌生外语时的“无能为力”了。3D图形硬件不支持原始的图片文件格式,原始图片需要经过CPU转换成图形硬件支持的格式才能在实时渲染中使用。而这些可以被GPU识别的格式,就是我们要说的纹理格式。

a2aef4394bdf8dafaeb86ba8b9be2d44.png

我们可以在Format里设置纹理的格式。不同的设备与平台具有各自专有的支持的格式。RGB32/RGBA32/RGBA24/RGB24为非压缩的格式,能适用于多个平台和环境。这些格式显示效果较好,但内存占用较大,效率不高。因此我们建议在对图像质量要求不是特别高的情况下,尽量使用硬件支持的压缩格式。

这条规则会过滤出所有采用非压缩格式的纹理,开发团队需要基于相关纹理的实际使用需求和在相关平台上表现效果的考量,来决定是否需要进行压缩。

目前Unity支持的纹理压缩格式有ETC、ASTC、PVRTC和DXT等,各有不同的适用环境,在压缩的大小和保真度上也各有所长。对于压缩格式的使用,可以参考UWA问答上的帖子:https://answer.uwa4d.com/question/58d2943ae00cc20065a42597。


3、Wrap模式为Repeat的纹理

a9ad461fd79818c10a029a0c952e07be.png

一般而言,我们使用UV坐标构建起模型表面在纹理上的对应采样关系,UV坐标的采样范围在0~1之间。但实际开发过程中,有时会遇到“在UV坐标0~1以外的范围进行采样”的情况。

64db4371ca08938b553c4aa7c1577907.png

Wrap Mode 选项就是用来确定当纹理坐标(UV坐标)超出0~1范围时如何采样的。形象点来讲,这种情况有点像是在画框里放入了一张尺寸比框小的画作,WrapMode决定了以何种方式去填充画作与画框间的部分。我们将在这里介绍常用的两种方式:Repeat和Clamp。

在Unity中,Texture的Wrap Mode默认是Repeat。该方法以平铺的方式填满“画框”的剩余部分。对于如下图所示的一张纹理:

37e2c818f014c5668b260da79c148426.png

Repeat模式的实际显示效果如下:

0aac685c8c98b148a7d67fcc8a050f06.png

而对于Clamp模式,它会以“画作”边缘那一圈去采样填充满“画框”中剩余的部分。从UV坐标的角度而言,该模式会将大于1.0的数值设置为1.0,将小于0.0的数值设置为0.0。其显示效果如下:

f67ea5ba7913efbc153cd2340cec88e1.png

那么我们为什么要将Repeat模式的纹理检测出来呢?因为在实现方法上,当UV坐标超出0~1范围时,Repeat模式会忽略纹理坐标的整数部分,并将纹理图的拷贝粘贴在物体表面上。这就要求在纹理顶部的纹理单元应与底部的纹理单元相匹配,在纹理左侧的纹理单元也应与右侧的纹理单元相匹配,这样才能做到无缝连接。若无法满足两侧无缝衔接的要求,在最终显示的图像边缘会出现杂色,如下图所示:

2f3ffb4478b665613f89f4c1e50a6f06.png

所以从表现效果上讲,Repeat模式有可能会使得纹理边缘看起来更不自然。所以在筛选出WrapMode中选择了Repeat模式的纹理后,开发团队要根据纹理的实际展示效果去选择合适的WrapMode模式。


希望以上这些知识点能在实际的开发过程中为大家带来帮助。需要说明的是,每一项检测规则的阈值都可以由开发团队依据自身项目的实际需求去设置合适的阈值范围,这也是本地资源检测的一大特点。同时,也欢迎大家来使用UWA推出的本地资源检测服务,可帮助大家尽早对项目建立科学的美术规范。

265b965a73e238a81537239d4fdb646f.png

我们已支持Luacheck功能啦~我们已支持粒子特效检测~这么多实用贴心的功能你们还没用起来吗?

万行代码屹立不倒,全靠基础掌握得好!

性能黑榜相关阅读

《那些年给性能埋过的坑,你跳了吗?》
《那些年给性能埋过的坑,你跳了吗?(第二弹)》
《掌握了这些规则,你已经战胜了80%的对手!》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020中级计算机工程师,2020年上半年中级网络工程师报考详解

原标题:2020年上半年中级网络工程师报考详解软考全称叫做“全国计算机技术与软件专业技术资格(水平)考试”已经开展了十多年了,所受到的欢迎程度也是越来越高,据统计累计参加软考的人数已超300万人,同时每年以21万人的速度持续增加…

华科计算机复试ccf成绩,新鲜速递!刚拟录取华科学妹总结的复试攻略,快看

原标题:新鲜速递!刚拟录取华科学妹总结的复试攻略,快看今天给大家分享一位19考研学妹的面试经验,她报考华中科技大学,已拟录取!复试已落幕,在火车上收到拟录取通知后,感觉自己就像一…

php负载均衡原理_负载均衡的原理(通俗理解)

简单的来说,假设,你在放洗脚水,并且,当前你只有一洗脚盆。那么,你的洗脚水不管有多少,你最多就能装一个洗脚盆的这个就是,单服务器应用场景,你的流量就是洗脚水,然后&…

光影mod_MOD墨设设计丨天海之间的乌托之城

WWW.DINZD.COM“人当诗意地栖居”——海德格尔银湖湾最后一块稀缺资源,陆止于此,海始于斯。也许会在地图上迷失,但是却如仙境般存在,静谧而神圣,神秘而平和。城市展馆 空灵圣洁,隐市秘境天空之尽&#xff0…

逆向查找_「函数说12」数据逆向查找很复杂?match+index让你轻松搞定

EXCEL进阶课堂 函数说 持续更新,这是第12篇教程。欢迎各位小伙伴转发、点赞、讨论,更欢迎私信获取练习素材,刻意练习才能学有收获。第12讲:如何轻松的实现数据逆向查找——matchindex01 问题引入前面给大家介绍vlookup函数后&…

计算机辅助审计的特点是,浅谈新环境下计算机辅助审计的特点和应用_1

浅谈新环境下计算机辅助审计的特点和应用_1 (7页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!24.90 积分从本学科出发,应着重选对国民经济具有一定实用价值和理论意义的课题。课题具有先…

规培手册填写模板_9年老资料员经验分享,181套资料员模板+302页工作手册,成为优秀资料员还能提高工作效率,限时分享...

一个工程项目中,资料员是不可缺少的,资料员主要负责工程的资料收集、编制和整理等工作内容。一个优秀的资料员价值千金,如何才能成为一个优秀的资料员?今天带来的是在工程中9年资料员的老工编制的资料员工作模板,还有3…

云服务器重装系统后卡顿,云服务器Windows重装系统须知

我们Windows2003/2008/2012中文和英文版本可供安装,安装需注意:1.Windows2003安装后,请通过VNC登录系统设置密码,默认密码为空,否则将无法远程登录!2.Windows2008/2012系统安装后,请尝试使用您设…

dict下如何取值_年薪百万之路--第十七天 装饰器(下)和迭代器

一 有参装饰器>带有参数的函数装饰器为被装饰对象添加认证功能的装饰器,实现的基本形式如下def deco(func):def wrapper(*args,**kwargs):编写基于文件的认证,认证通过则执行resfunc(*args,**kwargs),并返回resreturn wrapper如果想提供多种不同的认证方式以供选…

英雄联盟掉线怎么不显示重新连接服务器,Win7旗舰版系统玩英雄联盟掉线总是显示正在尝试重新连接如何解决...

英雄联盟这款游戏想必大家都非常熟悉吧,然而在玩的过程中总是会碰到一些情况,比如有不少win7旗舰版系统用户在玩英雄联盟的时候,遇到掉线了,总是显示正在尝试重新连接,该怎么办呢,本文就给大家讲解一下Win7…

cobaltstrike扩展_Malwarebytes:使用可变C2下发Cobalt Strike的APT攻击

6月中旬,Malwarebytes Labs的研究人员发现了一个伪装成简历的恶意Word文档,该文档使用模板注入来删除.Net Loader。研究人员认为这是与APT攻击有关的多阶段攻击的第一部分。在最后阶段,威胁行动者使用了Cobalt Strike’s Malleable C2功能来下…

浙江大学计算机保研条件_【如何将保研成功率提至100%】来自取得浙大等五所顶尖院校保研资格学长的干货分享(联系导师章节已更)...

一、前言写在开头:白驹过隙,距离2020年9月28日保研系统确认拟录取已经过去了四个半月了,期间多次有想要写下从了解,到准备,到参与,到录取的整个保研过程,同时分享一些自己踩过的雷,总…

怎么把BAK文件放入服务器中,BAK格式的备份文件如何导入审计软件

首先:电脑上得安装有SQL数据库,并开启;一般来说,只有以SQLSEVER数据库存储的都可以用数据库软件,对备份文进行取数;1)在审计系统里面导入bak,必须满足前提条件:自己电脑上安装有sqls…

手机显示无法接通服务器是怎么回事,手机无法接通是什么原因及如何解决【图文】...

手机,已经成为我们日常生活中必不可缺少的电子产品,不论男女老少一般都配备有一部手机,有些人甚至配备了两部、三部手机。手机的主要功能是通讯功能,给别人拨打电话或者接听别人拨打的电话。有时候我们在拨打别人电话的时候可能会…

spark算子大全glom_(七)Spark Streaming 算子梳理 — repartition算子

目录天小天:(一)Spark Streaming 算子梳理 — 简单介绍streaming运行逻辑天小天:(二)Spark Streaming 算子梳理 — flatMap和mapPartitions天小天:(三)Spark Streaming 算…

550什么意思_布草知识 | 都是羽绒,为什么价格大不同?

为什么羽绒的价格有些便宜有些这么贵呢?让小编来告诉你!市面上羽绒制品这么多,从几百到上万都有,中间的区别到底在哪里呢?接下来,我们就来说说,它们到底贵在哪里~01暖不暖,看蓬松度羽…

可调整大小的div_气液增压缸运行速度的调整以及压力的调节方式

点击蓝字 关注我们增压缸的行程及吨位绝对了设备整体速度,以下的调整只是在原基础上起到微调的作用。(1)气液增压缸时间调整:增压缸四个步骤动作是依靠时间继电器来控制的,可根据不同的产品的需求,通过时间继电器来调整每个步骤的…

pytest测试实战 电子书_电子书丨Selenium 3+Python 3自动化测试项目实战:从菜鸟到高手...

▊《Selenium 3Python 3自动化测试项目实战:从菜鸟到高手》田春成 著电子书售价:39.5元2019年9月出版Selenium是目前非常流行的一种自动化测试工具。本书基于Python 3语言讲述了新的Selenium 3的基本理论与操作,涉及各种高级应用,…

phpcms移动端和pc端_移动端调试大法

文章:樊秀宝(北京中心—小易F8技术小组)排版:suny在日常项目中的开发中,接触移动端开发的小伙伴们免不了要和移动端调试打交道。本文总结了常用的移动端调试方法,欢迎大家学习和补充。01谷歌浏览器谷歌浏览器是我们前端开发中必不…

redis 中一个字段 修改map_CTO 指名点姓让我带头冲锋,熬了一个通宵,终于把Redis中7千万个Key删完了...

由于有一条业务线不理想,高层决定下架业务。对于我们技术团队而言,其对应的所有服务器资源和其他相关资源都要释放。释放了 8 台应用服务器;1 台 ES 服务器;删除分布式定时任务中心相关的业务任务;备份并删除 MySQL 数…