D3D11中没有三个组件8bits-per-per-per-per-per-per-per-per-dxgi纹理格式



当前实现D3D11渲染器,而我的大多数正常地图都以3通道RGB RGB 8BITS-每通道格式进行。

浏览dxgi_format msdn页面,我注意到没有选择。这背后的原因是什么?那么我将如何使用此纹理格式?

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

您现在有不同的选项:

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

gpu并不是阅读许多未压缩纹理的最佳选择。当然,如果您只呈现几个型号,那没关系,但是如果您开始推动大量数据,则必须去压缩道路。

如果您支持非常旧的硬件,则您的压缩选项:

  • bc1,RGB格式,每个像素4bits,最差的质量,仅在节省克服质量或更高的质量时才使用。
  • bc3带有红色/α交换,每个像素4位,略好。

您应该考虑这些:

  • bc5:每个像素,2个频道8个值,您将不得不使用sqrt(1 - dot(n.xy,n.yx))或等效技巧重建Z。
  • bc7:每个像素,3/4频道的8个比特,如果您需要使用正常的其他东西(例如差异),则是最佳选择。这种格式很棒,但也非常强大地以他的最佳质量产生。

在旁注上,不要忘记生成1x1尺寸的MIP链,既有性能和视觉质量。请勿像应该为反照率的那样应用SRGB转换(0.5实际上是0.5),并且您可以选择使用某些格式来使用SNORM类型来跳过典型的2*n-1公式,但请使用0情况。

最新更新