SampleCmp (DirectX HLSL テクスチャ オブジェクト)

テクスチャをサンプリングし、1 つのコンポーネントを指定された比較値と比較します。

float Object.SampleCmp(
SamplerComparisonState S、
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
  1. Texture2DArray と TextureCubeArray は、シェーダー モデル 4.1 以降で使用できます。
  2. シェーダー モデル 4.1 は、Direct3D 10.1 以降で使用できます。

Note

SampleCmp は ps 4_0_level_9_1 でも使用でき、「 Direct3D 機能レベル 9 のシャドウ バッファーを実装する」で説明されている手法を使用する場合に4_0_level_9_3します。

Texture-Object