SampleCmp (DirectX HLSL テクスチャ オブジェクト)
テクスチャをサンプリングし、1 つのコンポーネントを指定された比較値と比較します。
float Object.SampleCmp(
float Location, float CompareValue, [int Offset] |
比較は、テクスチャに格納されている最初のコンポーネントと、 メソッドに渡される比較値の 1 つのコンポーネントの比較です。
このメソッドは、ピクセル シェーダーからのみ呼び出すことができます。頂点シェーダーまたはジオメトリ シェーダーではサポートされていません。
パラメーター
-
オブジェクト
-
任意のテクスチャ オブジェクトの種類 (Texture2DMS、Texture2DMSArray、または Texture3D を除く)。
-
S
-
[入力]サンプラーと比較の状態。これは、サンプラーの状態と比較状態 (比較関数と比較フィルター) です。 詳細と例については、 サンプラーの種類 を参照してください。
-
場所
-
[入力]テクスチャ座標。 引数の型は、テクスチャ オブジェクト型に依存します。
Texture-Objectの種類 パラメーターの型 Texture1D float Texture1DArray、Texture2D float2 Texture2DArray¹、TextureCube float3 TextureCubeArray¹ float4 -
CompareValue
-
比較値として使用する浮動小数点値。
-
オフセット
-
[入力]任意のテクスチャ座標オフセット。任意のテクスチャ オブジェクト型に使用できます。オフセットはサンプリング前の場所に適用されます。 テクスチャ オフセットは静的である必要があります。 引数の型は、テクスチャ オブジェクト型に依存します。 詳細については、「 テクスチャ座標オフセットの適用」を参照してください。
Texture-Objectの種類 パラメーターの型 Texture1D、Texture1DArray INT Texture2D、Texture2DArray¹ int2 TextureCube、TextureCubeArray¹ サポートされていません
戻り値
範囲 [0..1] の浮動小数点値を返します。
フェッチされた各テクセル (フィルター モードのサンプラー構成に基づく) について、 SampleCmp はシェーダーから z 値 (入力の 3 番目のコンポーネント) とテクセル値 (比較に合格した場合は 1、それ以外の場合は 0) の比較を実行します。 次に、SampleCmp は、通常のテクスチャ フィルタリングと同様に、各テクセルに対してこれらの 0 と 1 の結果をブレンドし (平均ではありません)、結果の [0..1] 値をシェーダーに返します。
解説
比較フィルター処理は、パーセンテージの詳細なフィルター処理に役立つ基本的なフィルター処理操作を提供します。
浮動小数点リソースでこのメソッドを使用する場合 (符号付き正規化形式または符号なし正規化形式ではなく)、比較値は 0.0 から 1.0 の間で自動的にクランプされません。 したがって、一般的なシャドウ手法には、比較値の手動クランプが必要になる場合があります。
整数 miplevel でのみオフセットを使用します。そうしないと、ハードウェアの実装やドライバーの設定によって結果が異なる場合があります。
最小シェーダー モデル
この関数は、次のシェーダー モデルでサポートされています。
vs_4_0 | vs_4_1² | ps_4_0 | ps_4_1² | gs_4_0 | gs_4_1² |
---|---|---|---|---|---|
x¹ | x |
- Texture2DArray と TextureCubeArray は、シェーダー モデル 4.1 以降で使用できます。
- シェーダー モデル 4.1 は、Direct3D 10.1 以降で使用できます。
Note
SampleCmp は ps 4_0_level_9_1 でも使用でき、「 Direct3D 機能レベル 9 のシャドウ バッファーを実装する」で説明されている手法を使用する場合に4_0_level_9_3します。