性能优化(4)静态资源优化——纹理导入设置

  1. 1. 纹理设置
  2. 2. Advanced选项
  3. 3. Wrap Mode、Filter Mode、Aniso Level
  4. 4. 各平台的默认纹理压缩格式

纹理设置

  • Texture Shape
    · 2D 最常用的2D纹理,默认选项
    · Cube —般用于天空和与反射探针,默认支持DefaultNormal Single Channel几种类型纹理,可以通过Assets > Create > Legacy > Cubemap生成,也可以通过C#代码Camera.RenderToCubemap在脚本中
    生成
    · 2D Array 2D纹理数组,可以极大提高大量相同大小和格式的纹理访问效率,但需要特定平台支持,可以通过引擎Svstemlnfo.supports2DArrav Textures接口运行时查看是否支持
    · 3D 通过纹理位图方式存储或传递一些3D结构化数据,一般用于体积仿真,如雾效、噪声、体积数据、距离场、动画数据等信息,可以外部导入,也可运行时程序化创建

  • Alpha Source
    · 默认选择Input Texture Alpha就好,如果确定不使用原图中的Alpha通道,可以选择None。另外From Gray Scale我们一般不会
    选用

  • Alpha Is Transparency
    · 指定Alpha通道是否开启半透明,如果位图像素不关心是否要半透明可以不开启此选项。这样Alpha信息只需要占1bit。节省内存

  • Ignore Png file gamma
    · 是否忽略png文件中的gamma属性,这个选项是否忽略取决于png文件中设置不同gamma属性导致的显示不正常,一般原图制作流程没有特殊设置,这个选项一般默认就好

Advanced选项

  • Non-Power of 2
    · 非2的幂次方选项,与原始文件的纹理大小有关,保持默认就好

  • Read/Write
    · 开启会导致纹理内存使用量增加一倍
    · 脚本逻辑中需要动态读写该纹理时,需要打开此选项

  • Streaming MipmapsVirtual Texture Only
    · 一般保持默认,以后再介绍

  • Generate Mip Maps
    · 什么时候不需要生成MipMaps:
    · 1. 2D场景
    · 2. 固定视角,摄像机无法缩放远近

  • Border Mip Maps 默认不开启,只有当纹理是Light Cookies类型时,开启此选项来避免colors bleedinq现象导致颜色滲透到较低级别的Mip Level纹理边缘上

  • Mip Map Filtering
    · Box 最简单,随尺寸减小,Mipmap纹理变得平滑模糊
    · Kaiser,避免平滑模糊的锐化过滤算法

  • Mip Maps Preserve Coverage 只有需要纹理在开启mipmap后也需要做Alpha Coverage时开启。默认不开启

  • Fadeout Mip Maps 纹理Mipmap随Mip层级淡化为灰色,一般不开启,只有在雾效较大时开启不影响视觉效果

Wrap ModeFilter ModeAniso Level

  • 选择合适纹理过滤的最佳经验:(放到导入设置)
    · 使用双线性过滤平衡性能和视觉质量
    · 有选择地使用三线性过滤,因为与双线性过滤相比,它需要更多的内存带宽
    · 使用双线性和 2x 各向异性过滤,而不是三线性和 1x 各向昇性过滤,因为这样做不仅视觉效果更好,而且性能也更高
    · 保持较低的各向异性级别。仅对关键游戏资源使用高于 2 的级别

  • Filter Mode
    · 从上往下性能消耗变大,质量变好
    · Point:使用最近的滤波,在放大缩小时,采样像素通常只有一个,因此图像看起来会有种像素的风格
    · Bilinear:使用了线性的滤波,对于每个目标像素,它会找到4个临近像素进行线性插值混合后得到最终的像素,从而导致最终图像看起来有点模糊了
    · Trilinear:几乎和Bilinear一样,只是Trilinear还会在多级渐远纹理之间进行一个混合,多级渐远纹理技术是将原纹理提前用滤波处理来得到很多更小的图像,形成一个图像金字塔,每一层都是对上一层的图像降采样的结果,需要在实时运行时快速得到像素,但也会额外多占用33%的内存。
    · 一般使用Bilinear模式

各平台的默认纹理压缩格式

每个平台使用的默认格式
详细细节:官方文档