首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dxt4纹理压缩

dxt4纹理压缩
EN

Stack Overflow用户
提问于 2012-04-02 08:08:42
回答 1查看 835关注 0票数 1

当考虑到性能时,我们(不情愿)使用纹理压缩。压缩引入的人工制品或多或少是可以接受的。什么是不同的可能性,工作可以应用于原始图像级别,以尽量减少由压缩算法引入的人工制品。在我目前的情况下,大多数人工制品都是在使用梯度时看到的。

EN

回答 1

Stack Overflow用户

发布于 2012-04-02 10:14:27

DXT压缩是所有的插值,或梯度,如果你愿意。然而,你必须很好地理解它到底是做什么的。DXT压缩是一种折衷方案,它提供了相当糟糕的压缩质量,但它确实提供了一些压缩,在硬件中实现几乎是微不足道的,并且几乎以零成本运行。这就是它被使用的原因。

有几种方法可以提高质量,但是如果质量问题不能被接受,唯一的解决方案就是不要使用DXT。(此外,您在问题标题中的DXT4并没有被广泛使用,这是DXT5 5-乘乘)

首先,请注意:

  • DXT通过存储两种5:6:5的颜色并在RGB空间中沿这条线内插来编码4x4块纹理的颜色。插值被量化为2位,所以每个像素只有4个值可供选择。
  • DXT4 4/5中的alpha通道存储两个8位alpha值,并使用3位内插器。
    • DXT2 2/3使用一个显式的4位(即在选定的8位值之间不内插)。
    • DXT1可以假装一个1位的alpha通道,但这是一个排序/编码技巧,另一个故事。

  • 在DXT中,如果不转换到另一个颜色空间,就不可能获得纯灰色(因为端点的存储比例为5:6:5 )。

这意味着DXT原则上可以(或多或少)完美地复制许多水平的、垂直的或对角线的一维梯度,这些渐变没有太大的变化,但它完全不能再现大多数其他模式(尽管它通常可以复制一些相近的东西)。

例如,如果你有一个2D梯度或旋转梯度,没有办法(除了纯粹的巧合!)有一对两种颜色,这将允许整个4x4块很好地内插。此外,由于插值只被量化为4种选择,绝大多数“奇数旋转”都不能被编码,许多颜色组合也不能被编码。然而,对于大多数“自然”纹理,这是可以接受的。

DXT压缩机通常会尝试在4x4单元中找到一个最佳匹配(尽管一些压缩器会/可能做一些其他的事情)。这会导致渐变,即使单元格内的梯度表示得很好。

对于DXT,您可以做的是:

  • 使用不同的压缩机,并选择最佳效果。不同的压缩机至少使用3种不同的(非蛮力)策略,给出了完全不同的结果.
  • 尝试一下酥脆系列库。有一个Windows GUI压缩器为它周围的某处也。虽然crunch的主要目标是生成更小(压缩后的)文件,并且它最终受到DXT块格式的技术限制,但它使用了一种不寻常的搜索技术,它考虑到的范围要大得多。这可能会发生,它设法给你的一个或另一个梯度一个更好的外观。
  • 避免二维的渐变或与u/v或对角线不对齐的渐变,因为您知道不可能对这些渐变进行编码。
  • 压缩前将自然图像转换为非RGB颜色空间。YCoCg和YCbCr可能是候选的,也可以是JPEG-LS变换.人的眼睛并不是每个方面都一样敏感。有些错误不那么明显。使用不同的颜色空间可以利用这一点。
  • 如果您不需要alpha,则对最重要的通道使用alpha通道,因为您知道它有8位端点分辨率(而不是5/6)和3位内插器而不是2位。否则,使用绿色最重要的渠道,因为它有一个多一点。
  • 对于手绘纹理,你可以尝试使用5:6:5匹配的颜色,这至少会给这些完美的点击。虽然对于“绘制”纹理(类似漫画的东西),DXT总的来说是一个非常不明智的选择。
  • 对于质量不合格的情况,不要使用DXT (是的,这听起来是个愚蠢的建议,但实际上……如果它不合适,就不要使用它)。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9972869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档