「シャドウ サンプラー」は、深度比較テクスチャに使用されるサンプラーです。通常、深度テクスチャにアクセスすると、そのテクスチャ座標で (フィルタリングされた) 深度値が取得されます。ただし、深度比較モードでは、実行しているのは別の操作です。
テクスチャから取得したサンプルごとに、深度を特定の値と比較します。比較に合格すると、フェッチされるサンプルは事実上 1.0 になります。比較に失敗した場合は 0.0 です。フィルタリングは、この比較後のサンプルで機能します。したがって、線形フィルタリングを行っていて、サンプルの半分が比較に合格し、半分が不合格である場合、得られる値は 0.5 です。
これを行うには、使用しているサンプラ オブジェクト/テクスチャ オブジェクトで深度比較をアクティブにする必要がありますが、シェーダでシャドウ サンプラも使用する必要があります。これは、テクスチャ アクセス関数が追加の値、つまりテクスチャ アクセスと比較する値を取得する必要があるためです。
これは主にシャドウ マップに使用されるため、この名前が付けられました。シャドウ マップは、ライトから最も近いサーフェスまでの深度を格納します。したがって、ライトからレンダリングされるサーフェスまでの深度と比較します。レンダリングされるサーフェスがシャドウ マップ内のものよりもライトに近い場合、シャドウ サンプラーから 1.0 を取得します。サーフェスがライトから遠い場合は 0.0 になります。いずれの場合も、値にライトの色を掛けてから、そのライトのすべてのライティング計算を通常どおりに実行します。
サンプリング前に比較する理由は、「Percentage Closer Filtering」と呼ばれるものです。深度値の間でフィルタリングしても、妥当な結果は得られません。それはあなたが望むものではありません。最初に比較を行い、次に比較されたブール結果をフィルタリングします。次に得られるのは、比較に合格した深度テクスチャからのサンプル数の測定値です。これにより、影のエッジに沿ってより良い結果が得られます。