Antyaliasing w wielu próbkach - Multisample anti-aliasing

Multisample anti-aliasing ( MSAA ) to rodzaj przestrzennego antyaliasingu , techniki używanej w grafice komputerowej do usuwania poszarpanych krawędzi .

Definicja

Termin ogólnie odnosi się do specjalnego przypadku supersamplingu . Początkowe implementacje antyaliasingu pełnej sceny ( FSAA ) działały koncepcyjnie, po prostu renderując scenę w wyższej rozdzielczości, a następnie zmniejszając próbkowanie do wyjścia o niższej rozdzielczości. Większość nowoczesnych procesorów graficznych obsługuje tę formę wygładzania krawędzi , ale znacznie obciąża zasoby, takie jak tekstura, przepustowość i szybkość wypełniania . (Jeśli program jest silnie związany z TCL lub CPU , można użyć supersamplingu bez większego spadku wydajności).

Zgodnie ze specyfikacją OpenGL GL_ARB_multisample, „multisampling” odnosi się do określonej optymalizacji supersamplingu. Specyfikacja nakazuje, aby moduł renderujący oceniał program fragmentów raz na piksel i tylko „prawdziwie” nadpróbkował wartości głębi i szablonu . (To nie to samo, co supersampling, ale zgodnie ze specyfikacją OpenGL 1.5 definicja została zaktualizowana tak, aby obejmowała również implementacje w pełni supersamplingu).

Ogólnie w literaturze graficznej „multisampling” odnosi się do każdego szczególnego przypadku supersamplingu, w którym niektóre elementy końcowego obrazu nie są w pełni supersamplowane. Poniższe listy odnoszą się konkretnie do definicji ARB_multisample.

Opis

W przypadku antyaliasingu superpróbek w każdym pikselu próbkowanych jest wiele lokalizacji, a każda z tych próbek jest w pełni renderowana i łączona z innymi w celu uzyskania ostatecznie wyświetlanego piksela. Jest to kosztowne obliczeniowo, ponieważ cały proces renderowania musi zostać powtórzony dla każdej lokalizacji próbki. Jest to również nieefektywne, ponieważ aliasing jest zwykle zauważany tylko w niektórych częściach obrazu, takich jak krawędzie, podczas gdy supersampling jest wykonywany dla każdego pojedynczego piksela.

W przypadku antyaliasingu wielopróbkowego, jeśli którakolwiek z lokalizacji wielu próbek w pikselu jest zakryta przez renderowany trójkąt, należy wykonać obliczenia cieniowania dla tego trójkąta. Jednak to obliczenie należy wykonać tylko raz dla całego piksela, niezależnie od tego, ile pozycji próbek jest objętych; wynik obliczenia cieniowania jest po prostu stosowany do wszystkich odpowiednich lokalizacji z wieloma próbkami.

W przypadku, gdy tylko jeden trójkąt pokrywa każdą lokalizację wielu próbek w pikselu, wykonywane jest tylko jedno obliczenie cieniowania, a piksele te są trochę droższe (i wynik nie jest inny) niż w obrazie bez wygładzania. Dotyczy to środka trójkątów, gdzie aliasing nie jest problemem. ( Wykrywanie krawędzi może to jeszcze bardziej zmniejszyć, wyraźnie ograniczając obliczenia MSAA do pikseli, których próbki obejmują wiele trójkątów lub trójkąty na różnych głębokościach). W skrajnym przypadku, gdy każda z lokalizacji wielu próbek jest pokryta innym trójkątem, inne obliczenia cieniowania zostanie przeprowadzona dla każdej lokalizacji, a następnie wyniki zostaną połączone w celu uzyskania końcowego piksela, a wynik i koszt obliczeniowy są takie same, jak na równoważnym obrazie supersamplowanym.

Obliczenie cieniowania nie jest jedyną operacją, jaką należy wykonać na danym pikselu; Implementacje multisamplingu mogą w różny sposób próbkować inne operacje, takie jak widoczność na różnych poziomach próbkowania.

Zalety

  • Moduł cieniujący pikseli zwykle wymaga oceny tylko raz na piksel.
  • Krawędzie wielokątów (najbardziej oczywiste źródło aliasingu w grafice 3D) są wygładzane.
  • Ponieważ próbkowanych jest wiele subpikseli na piksel, szczegóły wielokątne mniejsze niż jeden piksel, które mogłyby zostać pominięte bez MSAA, mogą zostać przechwycone i włączone do końcowego renderowanego obrazu, jeśli zostanie pobranych wystarczająca liczba próbek.

Niedogodności

Testy alfa

Testy alfa to technika powszechna w starszych grach wideo, używana do renderowania półprzezroczystych obiektów poprzez odrzucanie pikseli przed zapisywaniem do bufora ramki. Jeśli wartość alfa półprzezroczystego fragmentu nie mieści się w określonym zakresie, zostanie on odrzucony po wykonaniu testu alfa. Ponieważ jest to wykonywane na zasadzie piksel po pikselu, obraz nie uzyskuje korzyści wynikających z wielokrotnego próbkowania (wszystkie multisample w pikselu są odrzucane na podstawie testu alfa) dla tych pikseli. Wynikowy obraz może zawierać aliasy wzdłuż krawędzi przezroczystych obiektów lub krawędzi w teksturach, chociaż jakość obrazu nie będzie gorsza niż bez antyaliasingu. Przezroczyste obiekty, które są modelowane przy użyciu tekstur z testów alfa, będą również aliasowane z powodu testów alfa. Efekt ten można zminimalizować przez wielokrotne renderowanie obiektów z przezroczystymi teksturami, chociaż spowodowałoby to znaczne zmniejszenie wydajności scen zawierających wiele przezroczystych obiektów.

Aliasing

Ponieważ wielokrotne próbkowanie oblicza wewnętrzne fragmenty wielokątów tylko raz na piksel, aliasing i inne artefakty będą nadal widoczne wewnątrz renderowanych wielokątów, w których wyjście Fragment Shader zawiera komponenty o wysokiej częstotliwości.

Wydajność

Chociaż mniej wymagające wydajności niż SSAA (supersampling), w niektórych scenariuszach (sceny złożone ze złożonych fragmentów) MSAA może być wielokrotnie bardziej intensywne dla danej klatki niż techniki antyaliasingu końcowego przetwarzania, takie jak FXAA , SMAA i MLAA . Wczesne techniki w tej kategorii mają mniejszy wpływ na wydajność, ale mają problemy z dokładnością. Nowsze techniki antyaliasingu oparte na post-processingu, takie jak czasowe wygładzanie krawędzi (TAA), które redukują aliasing poprzez łączenie danych z wcześniej wyrenderowanych klatek, przyniosły odwrócenie tego trendu, ponieważ AA postprocessingu staje się zarówno bardziej wszechstronne, jak i bardziej drogie niż MSAA, które nie mogą usuwać całej ramki samodzielnie.

Metody pobierania próbek

Próbkowanie punktowe

W masce próbkowanej punktowo bit pokrycia dla każdej multisample jest ustawiany tylko wtedy, gdy multisample znajduje się wewnątrz renderowanego prymitywu. Próbki nigdy nie są pobierane spoza renderowanego prymitywu, więc obrazy utworzone przy użyciu próbkowania punktowego będą geometrycznie poprawne, ale jakość filtrowania może być niska, ponieważ proporcja bitów ustawiona w masce pokrycia piksela może nie być równa proporcji piksela, który jest faktycznie objęty przez dany fragment.

Pobieranie próbek powierzchniowych

Jakość filtrowania można poprawić, używając masek próbkowanych obszaru. W tej metodzie liczba bitów ustawiona w masce pokrycia piksela powinna być proporcjonalna do faktycznego pokrycia obszaru fragmentu. Spowoduje to ustawienie niektórych bitów pokrycia dla wielu próbek, które w rzeczywistości nie znajdują się w renderowanym prymitywie, i mogą powodować aliasing i inne artefakty.

Przykładowe wzory

Regularna siatka

Regularny wzorzec próbki siatki, w którym lokalizacje wielu próbek tworzą równomiernie rozmieszczoną siatkę w całym pikselu, jest łatwy do wdrożenia i upraszcza ocenę atrybutów (tj. Ustawianie masek subpikseli, próbkowanie koloru i głębi). Ta metoda jest kosztowna obliczeniowo ze względu na dużą liczbę próbek. Optymalizacja krawędzi jest słaba w przypadku krawędzi wyrównanych do ekranu, ale jakość obrazu jest dobra, gdy liczba multisampli jest duża.

Rzadka regularna siatka

Rzadka regularna próbka siatki jest podzbiorem próbek, które są wybierane z regularnego wzoru siatki. Podobnie jak w przypadku zwykłej siatki, ocena atrybutów jest uproszczona dzięki regularnym odstępom. Metoda jest mniej kosztowna obliczeniowo ze względu na mniejszą liczbę próbek. Optymalizacja krawędzi jest dobra w przypadku krawędzi wyrównanych na ekranie, a jakość obrazu jest dobra w przypadku średniej liczby multisampli.

Przykładowe wzorce stochastyczne

Stochastyczny wzorzec próbki to losowy rozkład wielu próbek w całym pikselu. Nieregularne rozmieszczenie próbek utrudnia ocenę atrybutów. Metoda jest opłacalna ze względu na małą liczbę próbek (w porównaniu ze zwykłymi wzorami siatki). Optymalizacja krawędzi tą metodą, chociaż nieoptymalna dla krawędzi wyrównanych na ekranie. Jakość obrazu jest doskonała dla średniej liczby próbek.

Jakość

W porównaniu do supersamplingu, wielopróbkowy antyaliasing może zapewnić podobną jakość przy wyższej wydajności lub lepszą jakość przy tej samej wydajności. Dalszą poprawę wyników można uzyskać, stosując maski subpikseli z obróconą siatką. Dodatkowa szerokość pasma wymagana przez wielokrotne próbkowanie jest rozsądnie niska, jeśli dostępna jest kompresja Z i kompresja koloru.

Większość nowoczesnych procesorów graficznych obsługuje próbki 2 ×, 4 × i 8 × MSAA. Wyższe wartości dają lepszą jakość, ale są wolniejsze.

Zobacz też

Bibliografia