您可以在Unity中压缩网格
您可以在同一项目中使用两种压缩方法,但不能在同一个网格上使用。如果您对一个网格应用了网格压缩,Unity则不会对该网格应用顶点压缩。
注意:Unity的默认顶点压缩和网格压缩设置对大多数项目来说都足够好。只有在有问题时,您才应该更改这些设置,并评估结果以确保更改有所帮助。
顶点压缩设置允许您为项目中所有网格使用低精度数据格式。您可以通过配置特定数据通道的数据类型来实现。
您可以将给定通道的数据类型从FP32(32位浮点数,浮动点32)更改为FP16( floating point 16,也称为半精度浮点)。FP16格式存储的小数点后的位数比FP32少,这意味着它占用更少的空间,但提供的精度略低。
从FP32转换为FP16的数据在内存中占用的空间更少,在磁盘上也略少。在GPU上,数据使用更少的内存带宽,这可能略微提高GPU性能。
顶点压缩技术通过根据您选择压缩的顶点属性的数目来调整压缩比例。当您压缩法线、切线、颜色和三组UV坐标时,压缩比通常在1. 45x左右。
要使用顶点压缩,网格必须满足以下要求
如果网格不符合这些要求中的任何一个,那么Unity不会对那个网格应用顶点压缩,并且网格上的所有数据通道都使用FP32精度数字。
要更改顶点压缩设置:1. 打开玩家设置(菜单:编辑 > 项目设置 > 玩家)。1. 打开其他设置子菜单并导航到优化标题。1. 选择顶点压缩下拉菜单,并选择任何通道以启用或禁用该通道的压缩。您还可以选择无来禁用所有通道的压缩,或选择全部来启用所有通道的压缩。
默认情况下,顶点压缩设置为混合,当下拉菜单中激活多个选择时,Unity会显示。默认情况下,Unity使用顶点压缩以下通道:
默认情况下,Unity压缩这些通道,因为在大多数情况下,这种设置组合在减少内存的同时,对网格外观的影响较小。默认情况下,Unity不压缩其他设置,位置和纹理坐标1,因为这些更有可能影响网格外观,并且不提供显著的内存使用减少。如果您打算为位置和纹理坐标1通道启用顶点压缩,您应该测试设置以确保它们不会在您的网格中引起伪影。
您可以使用网格压缩设置压缩磁盘上给定模型资产的数据。网格压缩算法比顶点压缩技术更激进,因此压缩比率更高,文件大小更小。然而,它也有一些缺点。
应用此设置时,Unity使用算法将每个压缩通道的显式值替换为最大值和最小值之间的范围,其中固定数量的位数表示该值在该范围内的位置。这减少了磁盘上的网格数据大小。当Unity将网格加载到内存中时,它会解压缩数据,这意味着它将此范围转换回原始值。之后,性能不受影响。
该技术在需要尽可能减少最终构建大小或网格所在的AssetBundle的大小时很有用,并且如果运行时解压缩的性能降低是可以接受的。
在运行时,网格解压缩使用额外的CPU资源;这意味着加载网格数据需要更长的时间。Unity在解压缩网格时还会使用更多的临时内存。
此外,相对较高的压缩比率意味着在实际解压缩时可能会出现不受欢迎的伪影。为了避免这些伪影,您应该测试您想要压缩的每个网格选项并检查它是否正确显示。
要使用网格压缩设置
可用值有高、中、低或关闭。下表显示了这些设置的典型压缩比率
值 | 顶点 | 法线 | 切线 | UV | 颜色 |
---|---|---|---|---|---|
关闭 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
低 | 1.6 | 4.6 | 4.4 | 2.0 | 1.0 |
中 | 2.0 | 5.6 | 5.3 | 3.2 | 1.3 |
高 | 3.2 | 7.4 | 6.7 | 4.0 | 2.0 |
网格压缩技术的压缩比率
注:上表中“颜色”列表示使用UNorm8格式的网格的比率。对于使用FP32格式进行顶点颜色的网格,低设置的比率为4.0,中设置的比率为5.3,高设置的比率为8.0。