这算是Unity优化的一个基础环节吧,没有机会真正去接触,还是要了解下。
图片格式
- 不同格式的本质区别在于压缩算法不一样,结果图片大小,还原度也各不相同。
- 常用图片格式有Png,Jpg,Tga,Psd等。平时主要用Png,Jpg。
- Jpg是有损压缩不透明,Png是无损压缩有透明。
简单纹理格式
- Png等图片压缩格式无法直接被GPU解码,需要先解压,便会造成消耗。
- 不论导入的图片是什么格式,Unity都会将其转换成纹理格式,便于GPU读取。(应该算解压成原始格式吧)
- 有RGB16,RGB24,RGBA16,RGB32等。
纹理压缩格式(硬件压缩格式 Hardware Accellerated Formats)
纹理压缩格式的选择
高清无压缩 - RGBA32
中清晰中压缩 - RGBA16+Dithering/RGB16
- RGBA16在遇到渐变的时候表现很差,所以需要做抖动(Dithering)处理。
- RGB16不带透明通道。
低清晰高压缩 - ETC1+Alpha/PVRTC4
- 能直接被GPU使用,占用少,效率高。
- ETC1没有透明通道,需要搭配一张透明贴图。
- ETC和PVRTC都要求像素长宽都为2的次幂,PVRTC要求像素长宽一致。
总结
- 一般方案:ETC1+Alpha/PVRTC4 和 RGB16/RGBA16 搭配使用。
- 图片分辨率数值最好为2的次幂(据说就算不是2次幂,最终到GPU中也需要拉伸为2次幂),最好是正方形(用于匹配压缩格式)。
参考
常用纹理和压缩格式
干货:Unity游戏开发图片纹理压缩方案
Unity中的一个简单的图形优化指导