纹理

纹理

Texture Import Settings - Unity 手册 (unity3d.com)

Texture Shape

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

AlphaSouce纹理Alpha源

对于需要Alpha通道的纹理,我们需要将选项选择为InputTextureAlpha,对于不需要Alpha通道的我们选择为NONE,可以节约内存。

AlphaIsTransparent是否半透明纹理

关闭此选择,使得Alpha信息只占用1bit,对于非半透明纹理我们一般关闭此选项。

Ignore Png file gamma

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

Streaming Mipmaps(Texture Streaming部分讲解)

Virtual Texture Only(虚拟部分讲解)

Generate Mip Maps

什么时候不需要生成MipMaps?

  1. 2D场景
  2. 固定视角,摄像机无法缩放远近

下面的术语不太清楚。

  • Border Mip Maps 默认不开启,只有当纹理的是Light Cookies类型时,开启此选项来避免colors bleeding现象导致颜色渗透到较低级别的Mip Level纹理边缘上
  • MipMap Filtering
    • Box 最简单,随尺寸减小,Mipmap纹理变得平滑模糊
    • Kaiser,避免平滑模糊的锐化过滤算法。
  • Mip Maps Preserve Coverage,只有需要纹理在开启mipmap后也需要做Alpha Coverage时开启。默认不开启。
  • Fadeout MipMaps, 纹理Mipmap随Mip层级淡化为灰色,一般不开启,只有在雾效较大时开启不影响视觉效果。

选择合适纹理过滤的最佳经验:

  • 使用双线性过滤平衡性能和视觉质量。
  • 有选择地使用三线性过滤,因为与双线性过滤相比,它需要更多的内存带宽
  • 使用双线性和 2x 各向异性过滤,而不是三线性和 1x 各向异性过滤,因为这样做不仅视觉效果更好,而且性能也更高。
  • 保持较低各向异性级别。仅对关键游戏资源使用高于 2 的级别。

各平台图片压缩

Texture compression formats for platform-specific overrides - Unity 手册 (unity3d.com)

图集问题

1.图集利用率低

2.尽量将生命周期相同的纹理打包在同一图集

否则无用纹理长时间占据内存空间。

3.避免不合理的透明纹理使用

会占据大量屏幕空间

4.序列帧未打成图集

5.重复纹理不合理通道图

6.内容相似纹理

分离变化贴图,并且使用九宫格模式。

7.渐变单色纹理

使用单像素纹理曲线代替