共用方式為


HLSL 並排顯示的資源曝光

需要新的 Microsoft 高階著色器語言 (HLSL) 語法,才能支援 著色器模型 5中的並排資源。

新的 HLSL 語法只允許在具有磚資源支援的裝置上。 下表中磚資源的每個相關 HLSL 方法都會接受一個 (意見反應) 或兩個 (限制和意見反應,) 額外的選擇性參數。 例如,Sample 方法為:

範例 (取樣器, 位置 [, 位移 [, 限制 [, 意見反應] ] ])

Sample 方法的範例為 Texture2D.Sample(S,float,int,float,uint)

offset、clamp 和 feedback 參數為選用。 您必須指定所有選用參數,直到您需要的參數,這與 C++ 對於預設函數引數的規則相同。 例如,如果需要 feedback 狀態,offset 和 clamp 兩個參數就需要明確提供給 Sample,即使邏輯上可能不需要它們。

clamp 參數是純量浮點值。 clamp=0.0f 的常值表示 clamp 作業未執行。

feedback 參數是 uint 變數,您可以將它提供給記憶體存取查詢內建 CheckAccessFullyMapped 函數。 您不得修改或解譯 feedback 參數值;不過編譯器不會提供任何進階分析和診斷,來偵測您是否修改此值。

以下是 CheckAccessFullyMapped 的語法:

bool CheckAccessFullyMapped(in uint FeedbackVar);

CheckAccessFullyMapped 解譯 FeedbackVar 的值,並傳回 true,如果所有存取的資料都在資源中對應;否則 CheckAccessFullyMapped 傳回 false。

如果 clamp 或 feedback 參數存在,編譯器會發出基本指令的變化。 例如,磚式資源的範例會產生 sample_cl_s 指示。 如果 clamp 和 feedback 都未指定,編譯器就會發出基本指令,目前行為也就沒有變更。 clamp 值為 0.0f,表示不會執行 clamp;因此,驅動程式編譯器可進一步依照目標硬體建立指令。 如果 feedback 為指令中的 NULL 暫存器,則 feedback 未使用;因此,驅動程式編譯器可以進一步依照目標架構建立指令。

如果 HLSL 編譯器推斷 clamp 為 0.0f 且 feedback 未使用,則編譯器會發出對應的基本指令 (例如 sample 而非 sample_cl_s)。

如果並排資源存取是由數個組成位元組程式碼指令所組成,例如,針對結構化資源,編譯器會透過 OR 作業匯總個別的意見反應值,以產生最終的意見反應值。 因此,您會看到這類複雜存取的單一 feedback 值。

這是 HLSL 方法的摘要表,已變更為支援 feedback 和/或 clamp。 這些全都適用于所有維度的並排和非並排資源。 非並排顯示的資源一律會顯示為完全對應。

HLSL 物件 包含 feedback 選項 (*) 的內建方法 - 也有 clamp 選項
[RW]Texture2D
[RW]Texture2DArray
TextureCUBE
TextureCUBEArray
Gather
GatherRed
GatherGreen
GatherBlue
GatherAlpha
GatherCmp
GatherCmpRed
GatherCmpGreen
GatherCmpBlue
GatherCmpAlpha
[RW]Texture1D
[RW]Texture1DArray
[RW]Texture2D
[RW]Texture2DArray
[RW]Texture3D
TextureCUBE
TextureCUBEArray
Sample*
SampleBias*
SampleCmp*
SampleCmpLevelZero
SampleGrad*
SampleLevel
[RW]Texture1D
[RW]Texture1DArray
[RW]Texture2D
Texture2DMS
[RW]Texture2DArray
Texture2DArrayMS
[RW]Texture3D
[RW]Buffer
[RW]ByteAddressBuffer
[RW]StructuredBuffer
載入

磚式資源的管線存取