Dezember 2007
Hydra
Alles andere als staubige Mythologie
Hydra ist kein Seeungeheuer, aber es macht ungeheuer Spaß. Denn mit Hydra hat man Zugriff auf die geballte Rechenpower.
Text: Frank Reitberger
Mit der Hydra verbindet man eigentlich ein neunköpfiges Seeungeheuer aus der griechischen Mythologie. Mit dem Ende der Keynote auf der Adobe MAX in Chicago sollte diese Begrifflichkeit einen neuen Namen bekommen. Hinter dem Codenamen "Hydra" verbirgt Adobe kurzerhand eine neue Programmiersprache, die dazu benutzt werden kann, Algorithmen zur Bildbearbeitung und Manipulation, kurz gesagt Filter u.v.m, zu entwickeln. Das Ganze kommt mit dem Preview-Release von Adobes neuem "Adobe Image Foundation" (AIF) Toolkit. Hydra selbst ist in diesem Kontext keine weitere Unterart eines Reptils, sondern basiert als Programmiersprache auf GLSL, welche wiederum auf C fußt, d.h. die Basis-Syntax sollte C-Programmierern sehr vertraut vorkommen.
Eine weitere Programmiersprache – na und?
Diejenigen, die Adobe After Effects CS3 benutzen, mögen jetzt nicht wirklich überwältigt sein, denn diese Technologie ist dort längst implementiert. Flashern sei gesagt: Die nächste Version des Flash Players, Codename "Astro", wird Hydra einsetzen, um es Entwicklern zu ermöglichen, eigene Filter, Effekte und Blend Modes für Flash zu entwickeln. Na, wenn das mal nicht gewaltig die Euphorie steigert!
Frische Kost dann doch mit Einschränkungen
Diesen leckeren Happen kann man sich derzeit einfach als Preview-Version für PC und Macintosh bei Adobe Labs herunterladen und installieren, vorrausgesetzt, die eigene Videokarte wird vom AIF-Toolkit unterstützt. Gesagt und getan, trifft man dann doch recht schnell, spätestens aber beim Öffnen der Language Reference, auf einen kleinen Dämpfer – denn nur ein Subset der Programmiersprache wird für den Flash Player verfügbar und somit verwendbar sein. Das hängt einfach damit zusammen, dass der Flash Player einem möglichst breiten Spektrum an Hardware zur Verfügung steht, und da das natürlich auch weiter so sein soll, erklärt sich dieser kleine Haken fast von selbst.
Trotzdem, ran an den Speck
Das sollte aber niemanden davon abhalten, doch mit Hydra zu arbeiten – im Gegenteil. Der Einstieg fällt denkbar einfach, denn kurz nach Veröffentlichung der Keynote auf der Adobe MAX hatte Joa Ebert die ersten 3rd-Party Beispiele samt Sourcecodes auf seinem Blog bereitgestellt – wobei seine Umsetzung des Kuwahara-Filters mein derzeitiger Favorit ist.
"Kuwahara... nie gehört ?". Nun, das ist ein nicht linearer 2D-Filter, welcher Störungen im Bild reduziert und das Bild glättet, ohne die Bildschärfe und – wenn möglich – ohne die Position der Ecken zu zerstören. Des Weiteren hält die Galerie auf Adobe Labs eine Menge Beispiele für den Einstieg in Hydra bereit. Wer schon mal versucht hat, solche Filter halbwegs performant in ActionScript 3 zu programmieren, der wird recht schnell an die Grenzen des Machbaren stoßen, denn an dieser Stelle ist auch AS3 oftmals nicht praktikabel.
Kurz zum Aufbau: Hydras Kernel
Die Basis für die Programmierung der Bildbearbeitung in Hydra bilden die Kernels. Ein Kernel ist ein Objekt, welches das Ergebnis eines einzelnen Output-Pixels als eine Funktion einer beliebigen Nummer an Input-Pixeln definiert. Jedes Hydra-Programm wird in einem einzelnen Kernel definiert.
Ein Kernel wird wie folgt spezifiziert:
kernel <name>[kernel metadata]{<kernel members>}
Arbeitet man nun noch mit Parametern, die man dem Kernel voranstellt, so kann man innerhalb des AIF Toolkits recht passable kleine GUI's erstellen – Slider beispielsweise, über die per Benutzereingabe die Intensität eines Filters gezielt gesteuert werden kann.
parameter float colorIndex<minVal: 0.0;maxVal: 255.0;defVal: 125.0;>
Zur Motivation
Ich habe Joa Ebert um ein kleines Statement gebeten: Was sind die Vorteile von Hydra und warum sollte man mit Hydra arbeiten?
"Mit Hydra hat man einfach Zugriff auf die geballte Rechenpower, die man Flash mit AS3 nicht entlocken kann. Daher kann man ganz fantastische Filter bauen, die als AS3-Version "mehrere" Sekunden rechnen würden und in Hydra mit 25 fps laufen. Man kann also mehr mit Bildern anstellen – deswegen nutze ich Hydra. Der schlaue Programmierer wird sich das natürlich zu Nutze machen und vielleicht die ein oder andere Rechnung als 2D Shader in Hydra schreiben und nicht mit großen Arrays hantieren. Wie das mit Flash zusammen aussehen wird und ob auch dort die GPU genutzt wird, weiß man zwar noch nicht, aber in absehbarer Zeit sollte es dazu auch Informationen geben."
Als Fazit kann man sagen, dass man Hydra, gerade in Beziehung zu Flash, nicht als mythologischen Exoten betrachten sollte, sondern als eine Programmiersprache, die zukünftig eine Menge kreatives Potenzial freisetzen wird.
Frank Reitberger arbeitet und entwickelt als Flash-Teamleiter für anyMOTION GRAPHICS Internet- und Offlineanwendungen im B2C- und B2B-Bereich. Frank veröffentlicht unter seinem Nickname "pwdVergesser" auch viele seiner kleinen Flash-Snippets im Flashforum


























