投影テクスチャマッピングとは、スライドプロジェクターのように、テクスチャ画像をシーンに投影できるテクスチャマッピング手法です。投影テクスチャマッピングは、様々な照明技術に活用でき、シャドウマッピングの出発点となります。
射影テクスチャマッピングは、基本的に頂点ごとに実行される特殊な行列変換であり、その後、標準的なテクスチャマッピングと同様に線形補間されます。
歴史的に射影テクスチャマッピングの使用には、目の線形テクスチャ座標生成の特殊な形式を考慮することが含まれる。変換(略してtcGen)。この変換は、テクスチャ座標変換行列に格納されているプロジェクターの特性を表す別の行列と乗算されます。結果として得られた集中行列は、基本的にプロジェクターの特性と頂点視位置の両方の関数であった。
このアプローチの重要な点は、アイリニアtcGenが頂点アイ座標の関数であり、これはアイプロパティとオブジェクト空間頂点座標の両方の結果であるということです(より具体的には、オブジェクト空間頂点位置はモデルビュー投影行列によって変換されます)。そのため、対応するテクスチャ行列を使用してアイプロパティを「シフト」することで、集中した結果が、観察者とは異なる視点からのアイリニアtcGenを使用した場合と同じになるようにすることができます。
頂点シェーダーを用いることで、このアプローチを計算するためのより簡便な方法が可能になった。
前述のアルゴリズムは、視点からのモデルビュー投影行列と投影器からのモデルビュー投影行列の2つを考慮するだけで、簡単に再定式化できる。
この場合、プロジェクターのモデルビュー投影行列は、前述のアイリニアtcGenに、意図したプロジェクターシフト関数を加えたものに相当します。これら2つの行列を用いることで、変換されたアイ空間頂点位置と射影テクスチャ座標を出力するのに必要な命令はわずかです。この座標は、プロジェクターのモデルビュー投影行列を考慮することで簡単に得られます。つまり、これは、考慮対象のプロジェクターが観測者であった場合のアイ空間頂点位置です。
提案された両方のアプローチには、視覚空間とテクスチャ空間で使用される異なる慣習に起因する、簡単に解決できる2つの小さな問題があります。
これらの空間の特性を定義することはこの記事の範囲外ですが、テクスチャは通常[0..1]の範囲で指定され、視点空間の座標は[-1..1]の範囲で指定されることはよく知られています。使用するテクスチャラップモードによっては様々なアーティファクトが発生する可能性がありますが、期待される結果を得るにはシフトとスケールの操作が確実に必要であることは明らかです。
もう一つの問題は、実は数学的な問題です。使用されている行列演算では、逆投影が発生することはよく知られています。従来、このアーティファクトは、不要な投影成分を切り取るために特殊な白黒テクスチャを使用することで回避されてきました。ピクセルシェーダーを使用すれば、別のアプローチが可能です。座標チェックだけで、順方向(正しい)成分と逆方向(間違った、回避すべき)成分を区別できます。