Zrozumieć Premultiplied Alpha: Kompletny przewodnik dla deweloperów
W grafikach cyfrowych obrazy z przezroczystością są zazwyczaj zapisywane przy użyciu 'Straight Alpha'. Oznacza to, że plik zawiera cztery osobne kanały: Red, Green, Blue i Alpha (RGBA). Kanały kolorów są całkowicie niezależne od kanału przezroczystości. Na przykład piksel w 50% przezroczysty biały jest zapisywany jako R:255, G:255, B:255, A:127 (ponieważ 127 to w przybliżeniu połowa z 255). Format ten jest uniwersalnie obsługiwany przez przeglądarki obrazów i standardowe przeglądarki internetowe, co czyni go domyślnym dla plików PNG i WebP.
Jednak gdy deweloperzy gier i inżynierowie grafiki pracują z silnikami renderującymi, takimi jak WebGL, OpenGL, Unity czy Unreal Engine, Straight Alpha wprowadza znaczne problemy obliczeniowe i wizualne. Aby nałożyć teksturę Straight Alpha na tło, GPU musi wykonać złożone obliczenia: mnoży kolor tekstury przez jej alfę, mnoży kolor tła przez odwrotność alfy i dodaje je do siebie. Gdy masz tysiące nachodzących na siebie przezroczystych cząsteczek — takich jak dym, ogień lub efekty magii w grze wideo — wykonywanie tego mnożenia w czasie rzeczywistym dla każdego piksela drastycznie obniża płynność (FPS) i wydajność karty graficznej.
W tym miejscu niezbędny staje się Premultiplied Alpha. Obraz z pomnożoną alfą wbudowuje ten pierwszy krok mnożenia bezpośrednio w dane tekstury, zanim trafi ona do silnika. Korzystając z naszego wcześniejszego przykładu białego piksela o 50% przezroczystości, wersja pomnożona mnoży wartości RGB (255) przez wartość alfy (0,5), zapisując piksel jako R:127, G:127, B:127, A:127. Wykonując te obliczenia z wyprzedzeniem za pomocą naszego darmowego narzędzia, oszczędzasz GPU konieczności wykonywania tych działań w trakcie gry, co skutkuje znacznie wydajniejszym komponowaniem i płynniejszą rozgrywką.