Unity 2017.3 中的Crunch纹理压缩库

Crunch是一种有损纹理压缩格式,通常用于DXT纹理压缩。Crunch压缩可以减小纹理大小、节省磁盘空间、加快下载速度。原始版本的Crunch压缩库由Richard Geldreich开发。Unity从5.3开始支持Crunch纹理压缩格式,我们在Unity 2017.3中引入了更新版Crunch压缩库。

以Crunch格式压缩的纹理首先解压到DXT格式,然后在运行时上传到GPU。Crunch压缩的纹理不仅节省磁盘空间,还具有更快的解压速度。这让Crunch压缩格式在分发纹理非常高效。不过Crunch压缩纹理需要很长的时间进行压缩,这也是该压缩格式的主要缺点。对于大型项目来说,在编辑器中把项目中的所有纹理压缩成Crunch格式可能需要花上几个小时。

引入的更新版Crunch压缩库可以将DXT纹理压缩速度提高2.5倍,同时提升了10%的压缩比。更重要的是,更新后的压缩库能够压缩ETC_RGB4纹理和ETC2_RGBA8纹理,意味着可以在iOS和Android设备上使用Crunch压缩。这可以帮助开发者减少移动游戏的构建大小,满足App Store下载大小限制,让应用内容面向更广泛的受众群体。在Android、iOS和tvOS平台如果需要使用Crunch压缩,开发者可以在检视窗口为纹理选择RGB Crunched ETC或RGBA Crunched ETC2格式。如果在默认标签页勾选了“Use Crunch Compression”,Android平台的所有纹理都会默认使用ETC Crunch压缩。

Crunch压缩库未来还会进一步改进。原始版本相比,最新版压缩DXT纹理的速度提升了5倍,压缩ETC纹理的速度提升了1.3倍。最新版Crunch压缩库可在GitHub资源库进行下载。

大小及性能对比

我们用两个Asset Store资源商店中的Unity项目《Adam Character Pack: Adam, Guard, Lu》和《Adam Exterior Environment》进行了压缩性能测试。测试在Windows编辑器中运行,CPU采用i7-4790, 3.6GHz,使用默认Crunch质量设置。

使用DXT编码对纹理进行Crunch压缩

在使用更新版压缩库时,DXT纹理的压缩速度和压缩比都有了显著提升。同时更新版压缩库完全保留了原始版的压缩质量,两个库生成的压缩纹理在解压后是完全相同的。

使用DXT编码对项目《Adam Character Pack:Adam, Guard, Lu》中的纹理进行Crunch压缩,93个未压缩的DXT格式纹理,总大小652.7MB。

使用DXT编码对项目《Adam Exterior Environment》中的纹理进行Crunch压缩,227个未压缩的DXT格式纹理,总大小717.8MB 。

使用ETC编码对纹理进行Crunch压缩

ETC_RGB4纹理和ETC2_RGBA8纹理的Crunch压缩与DXT纹理类似,只是纹理被解压为ETC或ETC2格式,并在运行时上传到GPU。ETC格式和DXT格式有很多共同点,因此我们对原始算法的修改可以同时用于这两种格式的压缩。ETC编码Crunch压缩的默认质量参数在设置后,提供和 DXT Crunch压缩大致相同的平均Luma PSNR。

下表是使用ETC和ETC2编码对纹理进行Crunch压缩的性能测试结果。

质量对比

下图是使用默认质量设置进行Crunch压缩的纹理示例。图片采用Crunch压缩,选择DXT纹理格式或ETC纹理格式。

本文资源

Unity中的Crunch压缩库:

https://github.com/Unity-Technologies/crunch/tree/unity

Unity 2017.3 Beta版:

https://unity3d.com/unity/beta

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值