《纹理优化:不仅仅是一张图片那么简单》中的检测规则

《纹理优化:不仅仅是一张图片那么简单》中的检测规则

在上一期的《纹理优化:不仅仅是一张图片》中,我们精选了一些知识点来对纹理相关的优化进行分析。 无论是大家在开发过程中的疏忽,还是对相关知识点理解不够,这些问题的积累最终都会体现在项目的表现上。 为此,我们把这些规则列出来,并以知识点的形式一一为大家讲解。

在这篇文章中,我们继续关注纹理,利用UWA本地资源检测中的检测规则:“打开Mipmap选项的Sprite纹理”、“非压缩格式的纹理”和“Wrap模式为Repeat的纹理”来简单介绍一下讲解相关知识点。 我们会尽量用通俗易懂的表达方式,让职场新人或者刚刚接触优化的人能够有深刻的理解。

1.开启Mipmap选项的Sprite纹理

对于纹理,在Import Settings中打开Generate Mip Maps后,Unity会预先生成一系列纹理序列,其长度和宽度减少2的倍数,直到分辨率为1*1。 当对纹理进行采样时,它将基于图形。 尺寸自动选择相似级别的Mipmap进行采样。

3D场景中,由于距离问题,物体的纹理需要频繁地缩放和拉伸,因此使用Mipmap会减少运算时的计算量unity 图片压缩格式,提高GPU效率。

需要注意的是,开启Mipmap选项后,生成的多个小分辨率纹理会使整体内存占用比原来增加1/3。 在UI中,由于不需要元素相对于相机的位置不断变化,一般也不需要频繁地放大和缩小图像(特殊需要除外),所以对于UI来说,存在Mipmap对于性能提升其实没有什么意义。

这条规则的主角,Sprite类型纹理,用在2D游戏或者UI中,所以我们不建议开启Mipmap,以免浪费内存。

2. 使用未压缩格式的纹理

首先我们需要区分引擎支持的图像文件格式和纹理格式。 对于图片来说,JPG、JPEG、PNG等各种文件格式是用于存储图像信息的特殊编码方式,存储在磁盘或内存中。

然而,这些格式的图像对于擅长矢量计算的GPU来说,面对不熟悉的外语时却“无能为力”。 3D 图形硬件不支持原始图像文件格式。 原始图像需要经过CPU转换成图形硬件支持的格式才能用于实时渲染。 这些GPU能够识别的格式就是我们所说的纹理格式。

我们可以在Format中设置纹理的格式。 不同的设备和平台有自己专有的支持格式。 RGB32/RGBA32/RGBA24/RGB24是未压缩的格式,可以应用于多个平台和环境。 这些格式显示效果较好,但占用内存较大,效率不高。 因此,我们建议当图像质量要求不是特别高时,尽量使用硬件支持的压缩格式。

该规则将过滤掉所有未压缩格式的纹理。 开发团队需要根据相关纹理的实际使用需求以及相关平台上的性能考虑来决定是否需要压缩。

目前Unity支持的纹理压缩格式包括ETC、ASTC、PVRTC和DXT等,每种格式都有各自的适用环境,在压缩大小和保真度上都有各自的优势。 关于压缩格式的使用,可以参考UWA Q&A上的帖子:。

3、Wrap模式为Repeat的纹理

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

Wrap Mode选项用于确定当纹理坐标(UV坐标)超出0~1范围时如何采样。 从视觉上看,这种情况有点像在画框里放了一幅比画框还小的画。 WrapMode 决定如何填充绘画和框架之间的空间。 这里介绍两种常用的方法:Repeat和Clamp。

在Unity中,Texture的Wrap Mode默认为Repeat。 此方法用图块填充“框架”的剩余部分。 对于如下所示的纹理:

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

至于“钳制”模式,它将对“绘画”边缘的圆进行采样,以填充“相框”的剩余部分。 从UV坐标角度来看,该模式将大于1.0的值设置为1.0,将小于0.0的值设置为0.0。 显示效果如下:

那么为什么我们需要检测Repeat模式的纹理呢? 因为从实现方法上来说,当UV坐标超出0~1的范围时像素游戏素材,Repeat模式会忽略纹理坐标的整数部分,将纹理贴图的副本粘贴到物体表面。 这就要求纹理顶部的纹理单元要与底部的纹理单元相匹配,纹理左侧的纹理单元也应与右侧的纹理单元相匹配,这样才能无缝连接实现了。 如果不能满足两侧无缝连接的要求,最终显示图像的边缘就会出现噪点unity 图片压缩格式,如下图所示:

所以在性能方面,Repeat模式可能会让纹理边缘看起来更加不自然。 因此,在过滤掉WrapMode中选择的Repeat模式的纹理后游戏评测,开发团队必须根据纹理的实际显示效果选择合适的WrapMode模式。

希望以上知识点能够对大家在实际开发过程中有所帮助。 需要说明的是,各检测规则的阈值可以由开发团队根据自身项目的实际需要进行设置。 这也是本地资源检测的一大特点。 同时也欢迎大家使用UWA推出的本地资源测试服务,可以帮助大家尽早为项目建立科学的美术规范。

我们支持了Luacheck功能~支持了粒子效果检测~这么多实用又贴心的功能你还没用过吗?

由于很好地掌握了基础知识,数千行代码仍然屹立不倒!

文章来源:https://blog.csdn.net/weixin_39657249/article/details/111689565