HLSL 並排顯示的資源曝光
需要新的Microsoft高階著色器語言 (HLSL) 語法,才能支援 著色器模型 5中的磚資源。
新的 HLSL 語法只允許在支援並排顯示資源的裝置上。 下表中磚資源的每個相關 HLSL 方法都會接受一個(意見反應)或兩個(依此順序限制和意見反應)其他選擇性參數。 例如,Sample 方法是:
Sample(sampler, location [, offset [, clamp [, feedback] ] ])
Sample 方法的範例是 Texture2D.Sample(S,float,int,float,uint)。
位移、夾板和意見反應參數是選擇性的。 您必須指定所有選擇性參數,以符合預設函式自變數的C++規則。 例如,如果需要意見反應狀態,即使可能不需要邏輯,還是必須明確提供位移和固定參數給 Sample。
clamp 參數是純量浮點數。 clamp=0.0f 的常值表示不會執行夾子作業。
feedback 參數是 uint 變數,您可以提供給記憶體存取查詢內部 CheckAccessFullyMapped 函式。 您不得修改或解譯意見反應參數的值;但是,編譯程式不會提供任何進階分析和診斷來偵測您是否修改了值。
以下是 checkAccessFullyMapped 語法:
bool CheckAccessFullyMapped(in uint FeedbackVar):
CheckAccessFullyMapped 解譯 FeedbackVar 的值,如果存取的所有數據都對應在資源中,則會傳回 true;否則,CheckAccessFullyMapped 會傳回 false。
如果有固定或意見反應參數存在,編譯程式會發出基本指令的變體。 例如,磚化資源的範例會產生 sample_cl_s
指令。 如果未指定限制或意見反應,編譯程式會發出基本指令,因此目前的行為不會有任何變更。 0.0f 的夾點值表示不會執行任何夾子;因此,驅動程式編譯程式可以進一步量身打造目標硬體的指示。 如果意見反應是指示中的NULL緩存器,表示意見反應未使用;因此,驅動程式編譯程式可以進一步量身打造目標架構的指示。
如果 HLSL 編譯程式推斷限制為 0.0f 且意見反應未使用,則編譯程式會發出對應的基本指令(例如,sample
而不是 sample_cl_s
)。
如果磚式資源存取是由數個組成位元組程序代碼指示所組成,例如,針對結構化資源,編譯程式會透過 OR 作業匯總個別的意見反應值,以產生最終的意見反應值。 因此,您會看到這類複雜存取的單一意見反應值。
這是 HLSL 方法的摘要表,這些方法已變更為支援意見反應和/或限制。 這些都適用於所有維度的並排和非磚資源。 非並排顯示的資源一律會完全對應。
HLSL 物件 | 具有意見反應選項的內建方法 \ - 也有固定選項 |
---|---|
[RW]Texture2D [RW]Texture2DArray TextureCUBE TextureCUBEArray |
收集 GatherRed GatherGreen GatherBlue GatherAlpha GatherCmp GatherCmpRed GatherCmpGreen GatherCmpBlue GatherCmpAlpha |
[RW]Texture1D [RW]Texture1DArray [RW]Texture2D [RW]Texture2DArray [RW]Texture3D TextureCUBE TextureCUBEArray |
樣本* SampleBias* SampleCmp* SampleCmpLevelZero SampleGrad* SampleLevel |
[RW]Texture1D [RW]Texture1DArray [RW]Texture2D Texture2DMS [RW]Texture2DArray Texture2DArrayMS [RW]Texture3D [RW]緩衝區 [RW]ByteAddressBuffer [RW]StructuredBuffer |
負荷 |