Wstępnie pomnożona alfa, tak czy nie?

10

Czy powinienem używać wstępnie pomnożonej alfa? Czytając artykuł Toma Forsytha, wydaje się on nobrainer. Wstępnie zwielokrotniona alfa (mieszanie dodatków AKA) jest lepsza pod każdym względem.
Wydaje się jednak, że wstępnie pomnożona alfa ma jedną poważną wadę, nie jest dobrze obsługiwana za pomocą narzędzi.

Czy używałeś / aś wcześniej pomnożonej alfa?

W jaki sposób obsługiwane jest narzędzie?

W szczególności nie sądzę, aby gimp dobrze edytował wstępnie pomnożone obrazy alfa. Czy są jakieś wtyczki GIMP do eksportu wstępnie pomnożonej wersji alfa? Co powiesz na narzędzie zewnętrzne?

deft_code
źródło
Jestem dokładnie w tej samej pozycji co Ty - chcę go używać wszędzie, ale nie jestem pewien, jak łatwo mogę edytować moje zasoby, jeśli muszę opracować dodatkowe narzędzia.
Kylotan

Odpowiedzi:

4

Obecnie używam XNA 3.1 z wstępnie zmultiplikowaną alfa (natywna obsługa Premultiplied Alpha została dodana w 4.0).

Głównie oszczędza mi to czasu i upewniam się, że przezroczyste obszary moich zdjęć mają właściwe kolory. Przesyłam również do Silverlight, który domyślnie wykonuje multiplikację.

XNA ma potok treści, który sprawia, że dodawanie wstępnie przetworzonych wstępnych procesów alfa jest super łatwe.

Ten link zawiera kod do wykonania konwersji. Dla każdego piksela:

c.R = (byte)(c.R * c.A / 255);
c.G = (byte)(c.G * c.A / 255);
c.B = (byte)(c.B * c.A / 255);

Wiele można powiedzieć o potoku treści. Jeśli nie korzystasz z XNA, ale korzystasz z Visual Studio, możesz sam go połączyć . Wszelkie inne IDE / procesy kompilacji również powinny być w stanie.

I na koniec, jeśli nie masz etapu przetwarzania treści w swojej kompilacji (a więc istnieje duże prawdopodobieństwo, że nie masz dużo treści), równie łatwo możesz wykonać wstępne mnożenie w czasie wykonywania po załadowaniu tekstur. Doda to pewien stały czynnik do czasu ładowania tekstury.

(Jeśli implikacja nie była jasna: prawdopodobnie nie powinieneś edytować wstępnie zmultiplikowanych obrazów alfa. Wyeksportuj je wstępnie pomnożonych, jeśli możesz, lub lepiej je wstępnie przetworzyć.)

Andrew Russell
źródło
Dzięki. Powinno to oznaczać, że wstępnie pomnożona alfa jest wystarczająco dobrze obsługiwana w XNA (lub wkrótce będzie). Wciąż szukam narzędzi innych niż XNA do tworzenia mojego potoku.
deft_code
3

Jeśli akurat używasz XNA, istnieje spore wsparcie dla wstępnie pomnożonej alfa. Zwykle konwersja odbywa się w potoku treści, ale nic nie stoi na przeszkodzie, abyś zrobił to sam.

drxzcl
źródło
1

Domyślnie używam wstępnie pomnożonej alfa w moim silniku (artysta może wymusić niepoprawnie pomnożoną w pliku definicji materiału, jeśli jest to potrzebne do jakiegoś specjalnego efektu)

Narzędzia, jak zauważyłeś, nie radzą sobie dobrze ze wstępnie pomnożoną alfą - artysta może ustawić kanały kolorów i alfa całkowicie niezależnie. Skonfigurowałem rzeczy, aby mój artysta mógł tworzyć obrazy tekstur z nieprzygotowanym alfa (co wydaje się łatwiejsze w mózgach artystów), a narzędzie, które konwertuje na format tekstury silnika, domyślnie mnoży alfa. Istnieje przełącznik, który może zostać wygenerowany niepoprawnie, jeśli jest absolutnie potrzebny.

Branan
źródło