共用方式為


Direct3D 11.3 保守點陣化

保守點陣化會對像素轉譯新增一些確定性,這對衝突偵測算法特別有説明。

概述

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

保守點陣化在一些情況下很有用,包括碰撞偵測、遮蔽撲殺和可見度偵測的確定性。

例如,下圖顯示使用保守點陣化呈現的綠色三角形。 棕色區域被稱為“不確定性區域”-一個區域,其中四捨五入錯誤和其他問題增加了一些不確定性到三角形的確切維度。 每個頂點的紅色三角形會顯示如何計算不確定性區域。 大型灰色方塊會顯示將轉譯的圖元。 粉紅色方塊會顯示使用「左上方規則」轉譯的圖元,當三角形的邊緣越過圖元的邊緣時,就會發揮作用。 系統通常會有誤判(不應該設定的圖元集),但並非一律會擷取。

顯示左上方規則

與管線的互動

如需保守點陣化與圖形管線互動方式的許多詳細數據,請參閱 D3D12 保守派點陣化

實作詳細數據

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

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

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

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

變質的三角形(索引緩衝區中的重複索引或 3D 中的共角),或在固定點轉換後變質(轉譯器中的共音點頂點),可能或可能不會被撲殺:兩者都是有效的行為。 變質的三角形必須視為反向,因此,如果應用程式需要特定行為,則可以使用後臉撲殺或測試正面。 變質的三角形會針對所有插補值使用指派給頂點 0 的值。

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

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

API 摘要

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