2017-09-01 47 views

回答

1

现在还没有硬件支持24位格式的纹理。

你现在有不同的选择:

  • 扩展到32位。您可以以额外内存成本的价格保留位图的全部质量,无需额外处理。
  • 使用压缩格式。这是你应该去的地方。

GPU并不是读取大量未压缩纹理的最佳选择。当然,如果您只渲染几个模型,那么这并不重要,但如果您开始推送更多数据,则必须进入压缩道路。

你的压缩选项,如果你支持很老的硬件:

  • BC1,每个像素,品质最差4位RGB格式,只能用巨型纹理使用时节省克服的质量,或更好的,从来没有使用它。
  • 带有红色/ Alpha交换的BC3,每像素4位,稍好一点。

你应该考虑这些来代替:

  • BC5:每像素,2米8位的通道,你将不得不重建Z,使用sqrt(1 - dot(n.xy,n.yx))或等效的技巧。
  • BC7:每像素8位,3/4通道,如果您需要存储其他正常的东西,如方差,则为最佳选择。这种格式非常好,但是它的CPU占用率也非常高,可以以最佳质量进行生成。

在附注中,不要忘记生成1x1大小的mip链,这既是为了提高性能,也是为了提高视觉质量。不要应用SRGB转换,就像您对反照率应该具有的一样(0.5的确是0.5),并且您可以使用某些格式的选项来使用SNORM类型来跳过典型的2*n-1公式,但对于0的情况会很有帮助。