Alpha Testing kontra Shadow Mapping

Uwaga! Informacje na tej stronie mają ponad 5 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

# Alpha Testing kontra Shadow Mapping

Sun
18
Nov 2007

Alpha Testing to funkcja przydatna tam, gdzie skomplikowany kształt obiektu określają przezroczyste miejsca na teksturze zamiast układu geometrii - np. do rysowania drzew, trawy itp. Problem w tym, że taki alfa-test trzeba też wykonać przy rysowaniu obiektu do Shadow Mapy, Shadow Mapa jest często w formacie zmiennoprzecinkowym (np. R32F), a przy renderowaniu do tekstur w formatach zmiennoprzecinkowych ustawienia takie jak alfa-blending i alfa-testing często nie działają.

Rozwiązaniem jest napisanie sobie alfa-testu samemu w Pixel Shaderze za pomocą instrukcji anulującej rysowanie piksela - texkill. W języku HLSL odpowiada jej funkcja clip. Przykładowy kod wygląda tak:

// Zadeklarowane jest: out float4 Out : COLOR0
// Wypełniam Out, łącznie z kanałem alfa
// Zakładam granicę alfa = 128, czyli 0.5
// Na końcu Pixel Shadera dodaję:
clip(Out.a - 0.5);

Jeszcze większy problem z obiektami używającymi alfa-testu mają ci, którzy realizują cienie za pomocą drugiej techniki - Shadow Volume. Z inicjatywy Skalniaka próbowaliśmy niedawno przedyskutować tą sprawę w tym wątku forum.

Comments | #rendering #directx Share

Comments

STAT NO AD
[Stat] [STAT NO AD] [Download] [Dropbox] [pub] [Mirror] [Privacy policy]
Copyright © 2004-2019