私は Direct3d 11 を使用していますが、奇妙なことに遭遇しました。法線マップを取得し、それを DDS ファイルに 2 回エンコードしました。1 回はR8G8B8A8_SNORMエンコーディングで、もう 1 回はBC5_SNORMで。
次に、 D3DX11GetImageInfoFromFileと組み合わせてD3DX11CreateShaderResourceViewFromFileを使用して、各テクスチャを読み込みます。ピクセル シェーダーでこれらのテクスチャをサンプリングすると、R8G8B8A8_SNORMテクスチャが [-1,1] の範囲の値を返していることがわかりました。これは、SNORM テクスチャに期待する値です。ただし、BC5_SNORMテクスチャは [0,1] の範囲の値を返しますが、これは私には意味がありません。
デバッガーと PIX でチェックしたトリプルを 2 倍にします。テクスチャの形式は正しい ( BC5_*S*NORM ) ため、符号付きの値が返されない理由がわかりません。