sample_c (sm4 - asm)
比較フィルターを実行します。
sample_c[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource.r, srcSampler, srcReferenceValue |
---|
Item | 説明 |
---|---|
dest |
[in] 操作の結果のアドレス。 |
srcAddress |
[in] テクスチャ座標のセット。 詳しくは、sample 命令を参照してください。 |
srcResource |
[in] テクスチャ レジスタ。 詳しくは、sample 命令を参照してください。 .r スウィズルである必要があります。 |
srcSampler |
[in] サンプラー レジスタ。 詳しくは、sample 命令を参照してください。 |
srcReferenceValue |
[in] 1 つの成分が選択されているレジスタ。比較で使用されます。 |
解説
この命令の主な目的は、Percentage-Closer Depth フィルタリングの構成要素を提供することです。 sample_c の "c" は比較 (Comparison) を表します。
sample_c のオペランドは、float32 のソース オペランド srcReferenceValue (1 つの成分が選択されたレジスタ、またはスカラー リテラルである必要があります) が追加されている点を除き、sample 命令と同じです。
srcResource パラメーターは、.r (赤) スウィズルである必要があります。 sample_c は赤成分のみを処理し、1 つの値を返します。 srcResource の .r スウィズルは、スカラーの結果がすべての成分にレプリケートされることを示します。
操作順序は srcReferenceValue {ComparisonFunction} texel.R
です。
深度バッファーが入力テクスチャとして設定されている場合、深度値は赤成分に表示されます。
この命令を Texture1D、2D、2DArray、Cube、CubeArray 以外のリソースで使用すると、結果は未定義になります。
この命令が実行されると、サンプリング ハードウェアは、現在のサンプラーの ComparisonFunction を使用して、srcAddress で指定されている座標に基づき、現在構成されているテクスチャ フィルターがカバーする各フィルター "タップ" 位置 (テクセル) において、srcReferenceValue を、ソース リソースの赤成分の値と比較します。
比較は、srcReferenceValue がテクスチャ形式の精度に量子化された後で行われます。これは、出力マージャー可視性テストで深度比較の前に z が深度バッファーの精度に量子化されるのとまったく同じ方法です。 これには、形式の範囲へのクランプが含まれます (例: UNORM 形式の場合は [0..1])。
ソース テクセルの赤成分は、量子化された srcReferenceValue と比較されます。 リソースに含まれないテクセルの赤成分の値は、サンプラーからアドレス モード (Border モードの場合は BorderColorR) を適用することによって決定されます。 テクスチャ形式が浮動小数点である場合、この比較ではすべての D3D11 浮動小数点比較規則が優先されます。
合格した各比較からはテクセルの赤成分の値として 1.0f が返され、失敗した各比較からはテクスチャの赤の値として 0.0f が返されます。 その後、サンプラーの状態で指定されているとおりにフィルター処理が行われて赤成分のみが操作され、1 つのスカラー フィルター結果がシェーダーに返されて、マスクされたすべての dest 成分にレプリケートされます。
sample_c の使用は、他のすべての汎用フィルター コントロールと直交しています。 sample_c は、他の汎用フィルター モードでシームレスに動作します。 sample_c は、フィルター処理されたすべての値が比較結果によって 1.0f または 0.0f になるように、汎用フィルターの動作を変更します。
何もバインドされていない入力スロットからフェッチすると、すべての成分に対して 0 が返されます。
詳しくは、sample 命令を参照してください。
この命令は、次のシェーダー ステージに適用されます。
頂点シェーダー | ジオメトリ シェーダー | ピクセル シェーダー |
---|---|---|
x |
最小シェーダー モデル
この関数は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 | はい |
シェーダー モデル 4.1 | はい |
シェーダー モデル 4 | はい |
シェーダー モデル 3 (DirectX HLSL) | いいえ |
シェーダー モデル 2 (DirectX HLSL) | いいえ |
シェーダー モデル 1 (DirectX HLSL) | いいえ |