Aracılığıyla paylaş


Derinlik Yanlılık (Direct3D 9)

3B alanınızda coplanar olan çokgenler, her birine bir z-sapma ekleyerek çift taraflı değil gibi gösterilebilir. Bu, bir sahnedeki gölgelerin düzgün görüntülenmesini sağlamak için yaygın olarak kullanılan bir tekniktir. Örneğin, bir duvardaki gölge büyük olasılıkla duvarla aynı derinlik değerine sahip olacaktır. Önce duvarı, sonra da gölgeyi işlerseniz, gölge görünür olmayabilir veya derinlik yapıtları görünebilir. Etkiyi tersine çevirme umuduyla coplanar nesnelerini işleme sırasını tersine çevirebilirsiniz, ancak derinlik yapıtları hala olasıdır.

Bir uygulama, sistemin coplanar poligon kümelerini işlerken kullandığı z değerlerine bir sapma ekleyerek coplanar çokgenlerinin düzgün işlenmesine yardımcı olabilir. Çokgen kümesine z-sapma eklemek için, bunları işlemeden hemen önce IDirect3DDevice9::SetRenderState yöntemini çağırın, State parametresini D3DRS_DEPTHBIAS olarak ayarlayın ve Value parametresini uygun bir kayan değere ayarlayın (örneğin, uygun bir değer -1,0 ile 1,0 arasında olabilir); Bu değeri SetRenderStategeçirmek için, değerini DWORDde atamanız gerekir. Daha yüksek bir z-sapma değeri, işlediğiniz çokgenlerin diğer coplanar poligonlarla görüntülendiğinde görünür olma olasılığını artırır.

Offset = m * D3DRS_SLOPESCALEDEPTHBIAS + D3DRS_DEPTHBIAS

burada m, işlenen üçgenin maksimum derinlik eğimidir.

m = max(abs(delta z / delta x), abs(delta z / delta y)) 

D3DRS_DEPTHBIAS ve D3DRS_SLOPESCALEDEPTHBIAS işleme durumlarının birimleri, z arabelleği veya w-buffering'in etkinleştirilip etkinleştirilmediğine bağlıdır. Uygulamanın uygun değerler sağlaması gerekir.

Yanlılık herhangi bir çizgiye ve nokta ilkeline uygulanmaz. Ancak bu sapmanın tel çerçeve modunda çizilen üçgenlere uygulanması gerekir.

// RenderStates
D3DRS_SLOPESCALEDEPTHBIAS, // Defaults to zero
D3DRS_DEPTHBIAS,           // Defaults to zero
// Caps
D3DPRASTERCAPS_DEPTHBIAS           
D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS 

Piksel İşlem Hattı