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) | 否 |