1
目前正在实现一个D3D11渲染器,而我的大多数法线贴图都采用3通道RGB 8位每通道格式。D3D11中没有三分量8位每通道DXGI纹理格式?
翻翻DXGI_FORMAT msdn page我注意到,没有这个选项。这背后的理由是什么?那么我将如何使用这种纹理格式呢?
目前正在实现一个D3D11渲染器,而我的大多数法线贴图都采用3通道RGB 8位每通道格式。D3D11中没有三分量8位每通道DXGI纹理格式?
翻翻DXGI_FORMAT msdn page我注意到,没有这个选项。这背后的理由是什么?那么我将如何使用这种纹理格式呢?
现在还没有硬件支持24位格式的纹理。
你现在有不同的选择:
GPU并不是读取大量未压缩纹理的最佳选择。当然,如果您只渲染几个模型,那么这并不重要,但如果您开始推送更多数据,则必须进入压缩道路。
你的压缩选项,如果你支持很老的硬件:
你应该考虑这些来代替:
sqrt(1 - dot(n.xy,n.yx))
或等效的技巧。在附注中,不要忘记生成1x1大小的mip链,这既是为了提高性能,也是为了提高视觉质量。不要应用SRGB转换,就像您对反照率应该具有的一样(0.5的确是0.5),并且您可以使用某些格式的选项来使用SNORM类型来跳过典型的2*n-1
公式,但对于0的情况会很有帮助。
您应该阅读本教程:http://www.rastertek.com/dx11tut20.html – Asesh