gpt4 book ai didi

compression - DXT 压缩产生与原始 PNG 相同的文件大小

转载 作者:行者123 更新时间:2023-12-04 02:53:57 24 4
gpt4 key购买 nike

我正在尝试将我的纹理转换/压缩为 DDS 格式,并从原始 PNG 进行 DXT 压缩。我在 Mac 上,所以我使用的是 Graphic Converter(尽管我也尝试过其他工具)。但无论我使用哪个 DXT 级别 (DXT1-5),文件大小都大致保持原始 PNG 的大小。

最佳答案

PNG 是一种无损压缩格式,基于 zlib带有一些专门的过滤器。它将保证重现与原始图像完全相同的图像。

因此,PNG 压缩比是可变的。在复杂的图像上,压缩效果会很差。在全黑图像上,压缩会非常好。

相比之下,DXT 压缩具有固定的压缩比。这个比率对于 DXT1 是 8:1,对于 DXT5 是 4:1(假设 32 位 RGBA 输入)。 DXT5 的优势是更好的 alpha channel (透明度)。如果您不需要它,请不要使用它,这只会浪费带宽。

正如您所猜测的那样,权衡是DXT 质量将是可变的。 DXT 质量仅被认为“足够好”,但远非完美。在图像的复杂部分,会有一些可见的伪像/失真。在简单的零件上,复制品几乎与原件完全一样。

PNG 的工作方式是将整个图像 压缩为单个字节流。 DXT 压缩的工作方式是将图像切割成 4x4 像素的小块,然后将它们独立压缩到固定的压缩比。

这产生了根本不同的属性:DXT 纹理应该由 GPU 硬件直接解码。这非常快,几乎是免费的。这得益于纹理被切割成小块的事实:没有必要解码整个纹理来插入单个像素 => 只需解码适当的 4x4 block 。此属性是解码过程的关键。

相比之下,PNG 解码整个图像,因此有更多的空间来通过寻找超出直接 4x4 邻域的相关性来改进压缩。但权衡是不可能只检索一小块像素:那就是整个图像或什么都没有。

如您所见,选择一种或另一种压缩方法与压缩率无关。出于存储目的,请选择 PNG,尤其是因为它无损。要实时快速显示大量纹理(3D 游戏的典型场景),DXT 是唯一的出路。

关于compression - DXT 压缩产生与原始 PNG 相同的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12860747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com