Wyliczanie kolorów na warstwach z różnym kryciem


(Kamiljano) #1

Piszę mały programik graficzny obsługujący warstwy. Każda warstwa ma macierz pikseli w formacie RGB i jakiś współczynnik krycia. Pytanie jest jak obliczyć wartość wyświetlanego koloru jeżeli krycie wierzchniej warstwy jest mniejsze niż 100%? (np. Warstwa A jest cała biała, warstwa B cała czarna, ale ma krycie 48%, więc wyświetla się jakiś tam odcień szarego)


(Ryan) #2

Warstwa niżej - A, wyżej - B, przezroczystość (0...1) B - P

S = ((1 - P) * A) + (P * B)

Jeśli masz wiele warstw, liczysz dla dwóch najniższych, następnie liczysz dla wyniku tych dwóch i trzeciej w kolejności, itd. Kolejność ma znaczenie. Są też algorytmy niezależne od kolejności. Generalnie metod jest masa - poszukaj "transparency", "alpha" albo "order independent transparency" i "premultiplied alpha". Tylko przygotuj się na wyniki bazujące na HLSL/GLSL.