Das Thema meiner Diplomarbeit lautet "Entwicklung und Implementierung eines raycastingbasierten Algorithmus zum Rendern von Metaballs mit Hilfe von Hardware-Shadern". Dieser doch recht lange Titel ist typisch für Diplomarbeiten - aber kaum einer kann etwas damit anfangen.
Metaballs sind Objekte, die mathematisch beschrieben werden. Für jeden Punkt im Raum kann ein Wert berechnet werden, der von den Positionen der einzelnen Metaballs abhängt. Übersteigt dieser errechnete Wert einen Grenzwert, so wird der Punkt zum Objekt gezählt. Der Raum wird also in zwei Teilmengen aufgeteilt. Die Punkte innerhalb des Objekts und diejenigen außerhalbt. Zwischen diesen beiden Mengen entsteht die Oberfläche der Objekte. Durch die Addition der Werte eines jeden Metaballs ergeben sich die weichen Übergänge zwischen den Metaballs.
Um diese Objekte zu zeichnen, habe ich einen Raytracing-Ansatz benutzt. Dabei wird der Schnittpunkt jedoch nicht direkt errechnet, sondern der Strahl entlanggewandert bis er das Objekt schneidet.
Der ganze Algorithmus wurde zunächst als CPU-Version entwickelt und dann auf die Grafik-Hardware poritert. Das entgültige Programm lief also vollständig im Pixel-Shader der Grafikkarte ab. Die Ausarbeitung sowie die CPU-Version des Programms können weiter unten heruntergeladen werden.