niedziela, 11 maja 2008

Pixel Bender

Szukając informacji o tym jakie technologie będą w Flash Player 10. Pomyślałem że jest coś takiego jak Adobe Image Foundation. W kwietniu jakoś po cichu wprowadzono AIF Toolkit Technology Preview 2. W maju Adobe postanowiło zmienić nazwę technologii na Pixel Bender (bo chyba termin Hydra uknuli z mitologii podobnie jak z Apollo). Wcześniejszej wersji nie mogłem przetestować bo była ograniczona do pewnych kart GPU. Obecna wersja pozwala już przetwarzać na procesorach CPU, co daje już możliwości pokazania jak może wyglądać obsługa efektów mieszania w Flash Player 10. Oczywiście że Flash Player ma już wsparcie ze strony GPU jak oglądamy w trybie pełnoekranowym, ale nie mamy wpływu na to jak to działa. Z technologią Pixel Bender będziemy mieli wpływ na obsługę efektów. Od strony technologicznej wygląda na to że zostanie wykorzystane LLVM obsługujące tą technologię.

Czym jest LLVM? Niskopoziomową biblioteką pozwalającą programistom C i C++ wykorzystywać dobrodziejstwa z takich rzeczy jak JIT czy obsługa kodu źródłowego w "locie" wraz z jego weryfikacją. W praktyce można by powiedzieć że wystarczy napisać kod w takim języku niskopoziomowym (coś w stylu asemblera) to przy pomocy odpowiednich narzędzi wygeneruje kod dla danego języka programowania bądź już skompilowaną bibliotekę którą można użyć w innych projektach. Bardziej przystępnej informacji można się dowiedzieć na tej stronie Dość kusząca staje się wizja w którym kod w C/C++ może zostać skonwertowany do postaci języka niskopoziomowego/bajtkodu a taki kod wystarczy potem załadować do Flash Playera. Na razie Adobe wybrało tą technologię do wykorzystywania CPU w Pixel Bender.
Jak to może wyglądać w Flash Player 10? Kod napisany w Pixel Bender jest przekształcany do postaci bajtkodu ABC dzięki LLVM. Następnie dzięki wsparciu ze strony karty graficznej zostaje bajtkod wykorzystywany do generowania efektów. Może Flash Player zechce bezpośrednio przekształcać kod binarny z LLVM to byłaby rewolucja, ze względu na to że skompilowanie kodu źródłowego w C/C++ Flash Playera czy Adobe AIR sprawiłoby, że otrzymalibyśmy takiego samego Flash Playera czy Adobe AIR prawie na wszystkie platformy. To już spekulacja z mojej strony.

Programowanie w Pixel Bender nie należy do łatwych jeżeli ktoś wcześniej nie programował shaderów. Trzeba wejść na stronę i pobrać AIF Toolkit. Zainstalować. Należy przeczytać wprowadzenie (pokazuje przykład jak robić filtr naświetlania - ekspozycji) i plik specyfikacji języka Hydra 1.0 (w AIF Toolkit wystarczy kliknąć CTRL+H)
Jak komuś się to spodoba to może wejść na stronę Galerii gdzie są prezentowane różne przykłady (większość z nich wymaga przepisania na nowo ze względu na zmiany w kodowaniu)
Bardzo ciekawe są przykłady użycia klasycznego mieszania obrazów (teorię można poczytać w tym miejscu) . Zawsze warto mieć w zakładkach blogi ludzi związanych z Pixel Bender - Kevina Goldsmitha i jak Briana Ronana.
Dla niecierpliwych proponuję zapoznanie się z biblioteką ImageProcessing z tym przykładem w Flex 2.

Brak komentarzy: