回答:
すべて、本当に。
オブジェクト空間法線の唯一の利点は、単純さです。使いやすいです。
接線空間法線には接線空間ベースが必要ですが、次の機能があります。
異なる表面に同じテクスチャを使用する機能。オブジェクト空間法線マップは、作成されたサーフェス上でのみ使用できます。接線空間で法線を正則化することにより、異なるサーフェスに同じバンプテクスチャを使用する自由が得られます。サーフェスが接線空間に基づいている限り、妥当な結果が得られます。
UVアニメーションなどのテクスチャマッピングを変更する機能。オブジェクト空間法線マップはオブジェクト空間に法線を格納するため、すべてのテクスチャ座標に0.5を追加するだけで、テクスチャから適切な法線を取得することはできません。接線空間バンプマッピングを使用できます。
より小さなコンポーネント表現。オブジェクト空間法線マップには3つのコンポーネントが必要です。ドロップしてシェーダーで再構成することはできません。正接空間法線には常に正のZコンポーネントがあるため、法線のXYのみを保存できます。したがって、GL_RG16_SNORM
またはGL_RG16F
形式(テクセルあたり32ビット)を使用して精度を高めるか、RG圧縮イメージ形式(GL_COMPRESSED_SIGNED_RG_RGTC1
、テクセルあたり8ビット)を使用して圧縮を使用できます。オブジェクト空間の法線マップでS3TCを使用しようとすることもできますが、何が戻ってくるか幸運です。
オブジェクト空間の法線マップで最も得られるのは、計算時間が短いことです(光の方向を接線空間に変換する必要がない、または法線を接線空間からモデル空間に変換する必要がない)。しかし、それは大した問題ではありません。特に最近では、遅延レンダラーが実行されています。
ニコルの答えに追加する部分的な答え。
多くの利点。私が見つけた記事(これもコメントにリンクされています)によると、まだいくつかの短所があります。ただし、これらの問題に対処するのに慣れているアーティストや、これらの課題が発生する可能性が低いオブジェクトの場合、この欠点はあまり影響を与えない可能性があります。
適切な実装で問題を制限できますが、法線マッピングの基本的な考え方には欠点があります。複雑なモデルのラップを解除し、露出度の低い領域に縫い目を配置することは、アーティストにとって難しい場合があります。次の画像は、オブジェクト空間の法線マップ(左)と接線空間の法線マップ(右)を示しています。ここで、オブジェクト空間の法線マップは、バイリニアフィルタリングがエッジを柔らかくし、平坦な表面に1つの法線があり、したがって完全に平坦であるため、問題がはるかに少なくなります。シェーディングはUVレイアウトおよび三角形の歪みから独立しているため、左側の縫い目はほとんど見えません。
オブジェクト空間の法線マップ:
接線法線マップ: