sample_c (sm4 - asm)

執行比較篩選。

sample_c[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource.r, srcSampler, srcReferenceValue
項目 說明
dest
[in]作業結果的位址。
srcAddress
[in]一組紋理座標。 如需詳細資訊, 請參閱範例 指示。
srcResource
[in]紋理暫存器。 如需詳細資訊, 請參閱範例 指示。 必須是 .r swizzle。
srcSampler
[in]取樣器暫存器。 如需詳細資訊, 請參閱範例 指示。
srcReferenceValue
[in]已選取單一元件的暫存器,用於比較。

備註

此指示的主要目的是提供百分比-更近深度篩選的建置組塊。 sample_c 中的 「c」 代表 [比較]。

要sample_c 的運算元 與範例 指令相同 ,不同之處在于有額外的 float32 來源運算元 srcReferenceValue ,必須是已選取單一元件或純量常值的暫存器。

srcResource 參數必須有 .r (紅色) 的旋轉。 sample_c以獨佔方式在紅色元件上運作,並傳回單一值。 srcResource 上的 .r swizzle 表示純量結果會複寫到所有元件。

作業的順序為 srcReferenceValue {ComparisonFunction} texel.R

當深度緩衝區設定為輸入紋理時,深度值會顯示在紅色元件中。

如果此指令與不是 Texture1D/2D/2D/2DArray/Cube/CubeArray 的資源搭配使用,則會產生未定義的結果。

執行此指令時,取樣硬體會根據 srcAddress 中提供的座標 ,使用目前 Sampler 的 ComparisonFunction 來比較 srcReferenceValue 與來源資源的紅色元件值。

比較發生在 srcReferenceValue 已量化為紋理格式的精確度之後 ,與 z 在輸出合併可見度測試的深度比較之前,將 z 量化為深度緩衝區精確度完全相同。 這包括 UNORM 格式的格式範圍夾點(例如 [0..1]。

來源紋素的 Red 元件會與量化 srcReferenceValue 進行比較。 對於從 Resource 卸載的紋素,紅色元件值取決於從 Sampler 套用位址模式 (如果處於框線模式則為 BorderColorR)。 比較會接受所有 D3D11 浮點比較規則,在此情況下紋理格式為浮點。

傳遞的每個比較都會傳回 1.0f 做為紋素的紅色元件值,而失敗的每個比較都會傳回 0.0f 做為紋理的 Red 值。 然後,篩選會與 Sampler 狀態所指定、只在 Red 元件中運作,並將單一純量篩選結果傳回著色器,並複寫到所有遮罩 的 dest 元件。

使用sample_c 與其他所有一般用途篩選控制項是正交的。 sample_c 與其他一般用途篩選模式順暢地運作。 sample_c變更一般用途篩選的行為,讓篩選的值都因為比較結果而變成 1.0f 或 0.0f。

從沒有任何系結至的輸入位置擷取會針對所有元件傳回 0。

如需詳細資訊,請參閱 範例 指示。

此指示適用于下列著色器階段:

頂點著色器 幾何著色器 像素著色器
x

最小著色器模型

下列著色器模型中支援此函式。

著色器模型 支援
著色器模型 5
著色器模型 4.1
著色器模型 4
著色器模型 3 (DirectX HLSL)
著色器模型 2 (DirectX HLSL)
著色器模型 1 (DirectX HLSL)

著色器模型 4 元件 (DirectX HLSL)