文章

游戏资产压缩

Mesh Compress

通过球坐标系的方式将 法线 或者 切线 3个 $float$ 分量,转换为仰角、方位角两个 $float$

这样可以将法线和切线使用一个 $float4$ 保存,运行时在顶点着色器中进行解码,更进一步压缩 $Mesh$

压缩率约为 52%

image-20230629160507578

image-20230629153409353

  • \[r = \sqrt{x^2+y^2+z^2}\]
  • \[\theta = arccos({z \over r}) = arcsin(\sqrt {x^2+y^2 \over r} ) = arctan( \sqrt {x^2+y^2 \over z})\]
  • \[\phi = arccos( {x \over r\ sin\theta}) = arcsin( {y \over r\ sin\theta}) = arctan( {y \over x})\]
  • \[x = r\ sin\theta\ cos\phi\]
  • \[x = r\ sin\theta\ sin\phi\]
  • \[z = r \ cos\theta\]

Animation Compress

image-20230629161216926

  • 不同动作,在相同的骨骼点下,所需要的精度是不同的

image-20230629161325152

image-20230629161342630

image-20230629161423088

Texture Compress

纹理复用

  • 九宫格
  • $ 1 \over 2 $ 、\(1 \over 4\) 对称纹理

压缩格式

  • 采用ASTC,分纹理调整压缩格式
  • 运行时生成的纹理也可以采用 ASTC 压缩
本文由作者按照 CC BY 4.0 进行授权