Naprawdę nie ma dobrego sposobu na wykonanie tego skutecznie analitycznie we wszystkich przypadkach narożnych. Większość lub wszystkie komercyjne renderery 2D, które próbują wykonać analityczne obliczanie pokrycia, popełniają przewidywalne błędy, których nie robią metody wielopróbkowania.
Typowym problemem są dwa zachodzące na siebie kształty, które mają tę samą krawędź. Częstą sytuacją jest to, że kanały alfa sumują się do zbyt grubej krawędzi alfa, która lekko się aliasuje. Lub jeśli kształty mają różne kolory, system myli kolor tła. To jest bardzo denerwujące.
Zdjęcie 1 : Silnik renderujący myli zasięg i tworzy cienki biały kontur tam, gdzie nie powinien być żadnego konturu.
Drugi idealny zasięg to filtrowanie pudełkowe. Z pewnością możemy zrobić lepiej. Biorąc pod uwagę, że istnieje tak wiele specjalnych przypadków narożnych, które wymagałyby operacji logicznych na kształtach, aby zrobić poprawnie, super próbkowanie jest nadal lepsze. W rzeczywistości szacunki zasięgu można wykorzystać do skoncentrowania próbkowania tam, gdzie jest to najprawdopodobniej potrzebne.
Sytuację można uprościć do wielokątów na poziomach subpikseli, a następnie można rozwiązać dyskretne rozwiązanie analityczne. Ale to kosztem elastyczności. Na przykład nie jest wykluczone, że przyszłe systemy wektorowe mogą chcieć uwzględniać rozmyte linie o zmiennej szerokości, które stanowią problem dla rozwiązań analitycznych, podobnie jak inne obiekty o różnych kolorach.
Jak to zrobić analitycznie
Zdjęcie 2 : Załóżmy, że masz tę scenę, widok rozstrzelony po prawej stronie
Teraz nie możesz tego po prostu zrobić analitycznie, każdy kawałek osobno, a następnie scalić dane. Ponieważ powoduje to nieprawidłowe dane. Zobacz, jak mieszanie alfa pozwoliłoby niebieskiemu świecić przez luki, gdybyś to zrobił.
To, co musisz zrobić, to podzielić scenę, aby każdy kształt eliminował to, co jest pod drugim:
Zdjęcie 3 : Musisz wyciąć leżące poniżej powierzchnie.
Teraz, jeśli wszystko jest nieprzejrzyste, to wszystko jest proste. wystarczy obliczyć powierzchnię każdego elementu i pomnożyć to przez kolor i zsumować je razem. Teraz można użyć coś jak ten .
Wszystko się psuje, jeśli twoje indywidualne kształty nie są nieprzejrzyste, ale nawet to można zrobić na pewnym poziomie.
Zapamiętaj:
- Obliczenia AA należy wykonać w liniowej przestrzeni kolorów i przekonwertować z powrotem na przestrzeń użytkową.