Direct3D 11.3 保守點陣化

保守的點陣化會將一些特定性新增至圖元轉譯,這特別適用于碰撞偵測演算法。

概觀

保守點陣化表示轉譯基本類型至少部分涵蓋的所有圖元都會點陣化,這表示會叫用圖元著色器。 一般行為是取樣,如果啟用保守點陣化,則不會使用此行為。

在數種情況下,保守點陣化很有用,包括衝突偵測、遮蔽擷取和可見度偵測的確定性。

例如,下圖顯示使用保守點陣化呈現的綠色三角形。 黑色區域稱為「不確定區域」- 四捨五入錯誤和其他問題的區域,會將一些不確定之處新增至三角形的確切維度。 每個頂點的紅色三角形會顯示如何計算不確定區域。 大型灰色方塊會顯示將轉譯的圖元。 粉紅色方塊會顯示使用「左上方規則」轉譯的圖元,當三角形的邊緣跨越圖元的邊緣時即會播放。 (圖元集可能會有誤判,但不應該) 系統正常但不一定為 null。

顯示左上方規則

與管線的互動

如需有關保守點陣化與圖形管線互動方式的許多詳細資料,請參閱 D3D12 保守點陣化

實作詳細資料

Direct3D 12 中支援的點陣化類型有時稱為「過度擷取的保守點陣化」。 另外還有「低度保守點陣化」的概念,這表示只有轉譯基本類型完全涵蓋的圖元會點陣化。 透過圖元著色器透過使用輸入涵蓋範圍資料,而只有過度擷取的保守點陣化可以做為點陣化模式來取得過度估計的保守點陣化資訊。

如果基本類型的任何部分與圖元重迭,則會將該圖元視為涵蓋,然後進行點陣化。 當基本專案的邊緣或角落落在圖元的邊緣或角落時,「左上角規則」的應用程式是實作特定的。 不過,對於支援變質三角形的實作,邊緣或角落的變質三角形必須至少涵蓋一個圖元。

保守的點陣化實作可能會因不同的硬體而有所不同,並產生誤判,這表示它們可能會不正確地決定所涵蓋的圖元。 這可能是因為實作特定的詳細資料,例如在點陣化中使用的固定點頂點座標固有的基本成長或貼齊錯誤。 對於固定點頂點) 座標而言,誤判 (是有效的原因是需要有一些誤判,才能對貼齊頂點進行涵蓋範圍評估 (,也就是已從浮點轉換成點陣化) 中使用的 16.8 固定點的頂點,但接受原始浮點頂點座標所產生的涵蓋範圍。

保守的點陣化實作不會針對非貼齊後基本類型產生浮點頂點座標產生誤判:如果基本類型的任何部分與圖元的任何部分重迭,則該圖元會點陣化。

在索引緩衝區或 3D) 中的重複索引 (重複索引的三角形,或在點陣化) 中的定點 (轉換後變成變質,或可能會在點陣化) 中的共弦頂點之後變成變質;兩者都是有效的行為。 變質的三角形必須視為反向,因此,如果應用程式需要特定行為,它可以使用正面反面擷取或測試。 三角形會針對所有插補值使用指派給 Vertex 0 的值。

除了硬體不支援這項功能的可能性之外,還有三層的硬體支援。

  • 第 1 層支援 1/2 圖元的不確定區域,而且沒有貼齊後變質。 這適用于磚轉譯、紋理圖集、光線地圖產生和子圖元陰影地圖。
  • 第 2 層會新增貼齊後變質,以及 1/256 不確定的區域。 它也新增對 CPU 型演算法加速的支援, (例如體素化) 。
  • 第 3 層新增了 1/512 不確定的區域、內部輸入涵蓋範圍,並支援遮蔽擷取。 輸入涵蓋範圍會將新值 SV_InnerCoverage 新增至高階網底語言 (HLSL) 。 這是 32 位純量整數,可在圖元著色器的輸入上指定,並代表 (所忽略的保守點陣化資訊,也就是圖元是否保證為完全涵蓋) 。

API summary

下列方法、結構、列舉和協助程式類別會參考保守的點陣化: