- 建立意見反應對應資源,可以是 MinMip 意見反應或 MipRegionUsed 意見反應配置。
- 為意見反應對應資源建立無序存取檢視 (UAV) 描述元。
- 將資料從意見反應對應資源複製到標準 UAV (反之亦然),以便 CPU/GPU 讀回取樣器意見反應資料。
- 為 MinMip 對應建立著色器資源檢視 (SRV) 描述元。
- 為 MinMip 對應篩選建立取樣器描述元。
- 使用額外的檢視參數,為意見反應對應資源建立 UAV 描述元。
- 允許建立意見反應對應資源,以及直接以 CPU/GPU 存取意見反應對應資源,而不需使用標準 API 集中的意見反應資源格式與配置抽象。
適用於意見反應對應資源與檢視的新 ID3D12Device8 方法
使用標準 Direct3D 12 API 時,意見反應對應是透過抽象方式建立的。遊戲知道資源的邏輯維度與意見反應對應類型,但只有驅動程式知道實體維度與硬體格式。此抽象可支援各種硬體專屬的意見反應對應編碼。不過,在 XBOX Series X|S GPU 上,意見反應對應在內部一律使用 R8_UINT 格式,而意見反應對應的實體維度只需將圖格紋理維度除以取樣器意見反應 mip 區域維度即可輕鬆計算。CreateCommittedResource2 與 CreatePlacedResource1 建立 Direct3D 12 資源的方式與現有的 CreateCommittedResource 和 CreatePlacedResource API 類似,但額外也能建立意見反應對應資源。用來建立意見反應對應資源的 D3D12_RESOURCE_DESC1 結構,必須將格式指定為 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE 或 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE,並將配置指定為 D3D12_TEXTURE_LAYOUT_UNKNOWN。Width、Height、DepthOrArraySize 與 MipLevel 欄位必須與目標圖格紋理的值相符。SamplerFeedbackMipRegion 的每個維度都必須是 2 的乘冪值。
例如,若要為具有 mipmap 的 4096 × 4096 BC1_UNORM 紋理建立 MinMip 意見反應對應,並使用 512 × 256 的 mip 區域 (讓一個意見反應紋素涵蓋 mip 0 中的一個 64 KB 圖格),資源描述的設定方式如下。
GetResourceAllocationInfo2 會根據輸入的 D3D12_RESOURCE_DESC1 資源描述,傳回資源的大小與對齊方式。若要建立放置於 ID3D12Heap 上的意見反應對應,需要此資訊。
CreateSamplerFeedbackUnorderedAccessView 與 CreateSamplerFeedbackUnorderedAccessViewX 會根據目標資源與意見反應資源,建立取樣器意見反應的 UAV 描述元。延伸模組 API 也可接受選用的 UAV 描述,以支援意見反應陣列紋理資源的子資源檢視。此 API 可確保意見反應對應的維度符合針對目標資源收集取樣器意見反應時,2 的乘冪分數的硬體需求。
適用於 MinMip 對應檢視與取樣器的新 ID3D12Device8 延伸方法
CreateMinMipShaderResourceViewX 是一個 XBOX 延伸模組 API,可根據目標資源 (或描述) 結合 MinMip 資源,建立 MinMip 對應著色器資源檢視。與建立意見反應對應 UAV 類似,此 API 會將目標資源的屬性 (寬度、高度、mip 層級) 與 MinMip 對應資源的屬性 (寬度、高度、格式) 結合,以產生連結的資源描述元。
MinMip 對應資源必須具備下列條件:
- 維度為目標資源維度的 2 的乘冪分數
- 格式為 R8_UINT
- MipLevels 計數為 1
ID3D12Device::CreateSamplerX XBOX 延伸模組 API,並填入 D3D12XBOX_SAMPLER_DESC 結構中的新欄位與旗標。篩選器斜率與位移可使用 D3D12XBOX_MINMIP_FILTER_SLOPE 與 D3D12XBOX_MINMIP_FILTER_OFFSET 列舉中的值來指定。
新的 ID3D12GraphicsCommandList1::ResolveSubresourceRegion 方法行為
ResolveSubresourceRegion 方法已增強,可將資料複製到意見反應資源或從意見反應資源複製資料,並分別以標準 R8_UINT 紋理資源作為來源或目的地。
新的高階著色器語言 (HLSL) 物件與方法
HLSL 著色器模型 6.5 引進了意見反應對應的新 API 物件:FeedbackTexture2D 與 FeedbackTexture2DArray。 這些是在 HLSL 中繫結至 UAV (u#) 暫存器的唯寫資源。這些新物件可在所有著色器階段中使用,但某些方法將僅限於像素著色器使用,類似於部分 Texture2D 與 Texture2DArray 方法的現有限制。 這些新物件上的方法包括WriteSamplerFeedback*、WriteSamplerFeedbackBias*、WriteSamplerFeedbackLevelZero、WriteSamplerFeedbackGrad* 與 WriteSamplerFeedbackLevel。
FeedbackTexture2D::WriteSamplerFeedback 其中一個變體的函式原型類似下列程式碼範例。
