Nieregularny bufor Z

Nieregularny bufor Z to algorytm zaprojektowany do rozwiązywania problemu widoczności w trójwymiarowej grafice komputerowej w czasie rzeczywistym. Jest podobny do klasycznego bufora Z , ponieważ zachowuje wartość głębi dla każdej próbki obrazu i używa ich do określenia, które elementy geometryczne sceny są widoczne. Jednak kluczowa różnica między klasycznym buforem Z a nieregularnym buforem Z polega na tym, że ten drugi umożliwia dowolne rozmieszczenie próbek obrazu na płaszczyźnie obrazu , podczas gdy ten pierwszy wymaga ułożenia próbek w regularną siatkę.

Te próbki głębokości są jawnie przechowywane w dwuwymiarowej przestrzennej strukturze danych. Podczas rasteryzacji trójkąty są rzutowane na płaszczyznę obrazu jak zwykle, a struktura danych jest sprawdzana w celu określenia, które próbki nakładają się na rzutowany trójkąt. Na koniec dla każdej nakładającej się próbki wykonywane jest standardowe porównanie Z i (warunkowa) aktualizacja bufora ramki.

Realizacja

Klasyczny algorytm rasteryzacji rzutuje każdy wielokąt na płaszczyznę obrazu i określa, które punkty próbki z regularnie rozmieszczonych zbiorów leżą wewnątrz rzutowanego wielokąta. Ponieważ lokalizacje tych próbek (tj. pikseli) są niejawne, określenie to można przeprowadzić przez testowanie krawędzi względem niejawnej siatki punktów próbkowania. Jeśli jednak lokalizacje punktów próbkowania są rozmieszczone w nieregularnych odstępach i nie można ich obliczyć ze wzoru, to podejście to nie działa. Nieregularny bufor Z rozwiązuje ten problem poprzez jawne przechowywanie lokalizacji próbek w dwuwymiarowej przestrzennej strukturze danych , a później zapytanie tej struktury, aby określić, które próbki znajdują się w rzutowanym trójkącie. Ten ostatni krok jest określany jako „nieregularna rasteryzacja”.

Chociaż konkretna struktura danych może się różnić w zależności od implementacji, dwa badane podejścia to kd-tree i siatka połączonych list. Zrównoważona implementacja kd-tree ma tę zaletę, że gwarantuje dostęp O(log(N)). Jego główną wadą jest to, że równoległa konstrukcja drzewa kd może być trudna, a przechodzenie wymaga kosztownych instrukcji rozgałęzień. Siatka list ma tę zaletę, że można ją skuteczniej zaimplementować na sprzęcie GPU , który jest przeznaczony przede wszystkim dla klasycznego Z-bufora.

Wraz z pojawieniem się CUDA programowalność obecnego sprzętu graficznego została drastycznie poprawiona. Praca magisterska „Szybka rasteryzacja trójkątów przy użyciu nieregularnego bufora Z w CUDA” (patrz Linki zewnętrzne) zawiera pełny opis implementacji oprogramowania do mapowania cieni opartego na nieregularnym buforze Z w CUDA. System renderowania działa całkowicie na procesorach graficznych. Jest w stanie generować cienie wolne od aliasingu z przepustowością dziesiątek milionów trójkątów na sekundę.

Aplikacje

Nieregularny bufor Z może być używany do dowolnej aplikacji, która wymaga obliczeń widoczności w dowolnych miejscach na płaszczyźnie obrazu. Wykazano, że jest szczególnie biegły w mapowaniu cieni , algorytmie przestrzeni obrazu do renderowania twardych cieni. Oprócz renderowania w cieniu, potencjalne zastosowania obejmują adaptacyjne wygładzanie krawędzi , próbkowanie drgań i mapowanie otoczenia .

Zobacz też

Linki zewnętrzne