Durchbruch (in groß). Die Zweite.
Nachdem ich vor gut zwei Monaten an selber Stelle verkünden durfte, dass mir bei meiner Diplomarbeit der große algorithmische Durchbruch gelungen ist, gibt’s heute den nächsten Meilenstein zu feiern. Musste ich mir beim ersten mal noch alles selbst ausdenken konnte ich für meinen zweiten großen Erfolg auf zahlreiche Paper zurück greifen.
Zwar bin ich immer noch nicht dazu gekommen meine Diplomarbeit hier im Blog genauer und auch für Laien verständlich vorzustellen, jedoch kann man zum heutigen Meilenstein auch ohne große Einleitung einiges erzählen. Wie an den beiden Bildern unten zu erkennen ist, muss ich es offensichtlich geschafft haben, den Teapot und das Bunny zu rendern. Was soll daran nun so besonders sein? Mit OpenGL sollte sowas doch relativ schnell realisiert sein. Mit DirectX auch. Darüber hinaus sieht die Schattierung der beiden Modelle auch noch äußerst gewöhnungsbedürftig aus. Was ist da nun so toll dran?
Nun, gerendert wurden die Modelle weder mit OpenGL noch mit DirectX sondern mit meinem eigenen in CUDA geschriebenen Raytracer. Die Berechnungen zur Erstellung der Bilder werden also nicht vom Hauptprozessor sondern von der Grafikkarte durchgeführt mit dem Vorteil, dass ich 100%ige Kontrolle über den Programmfluss habe, was mir bei OpenGL und DirectX in dieser Form nicht möglich gewesen wäre.
Diese Kontrolle brauche ich, da es in meiner Diplomarbeit nicht primär um Visualisierungen von Dreiecksmengen geht sondern ich die grundlegende Algorithmik eines Raytracers für eine interne Simulation ohne grafische Ausgabe benötige. Auf diese Weise erklärt sich auch die merkwürdige Schattierung: Die Farbe eines Dreiecks korrespondiert nämlich mit dessen Indexnummer in der globalen Dreiecksliste und hat also nichts mit irgendwelchen Beleuchtungen zu tun.
Für all diejenigen, die sich ein wenig näher mit der Materie auskennen dürfte das jetzt alles recht trivial wirken. Jedoch steckt da im Hintergrund doch noch einiges an Intelligenz drin: Zur Beschleunigung werden die Dreiecke des Modells in einer hierarchischen Struktur, einer sogenannten Bounding Volume Hierarchy organisiert. Diese parallel auf der Grafikkarte zu traversieren war die eigentliche Herausforderung. Somit schaffe ich es im Moment pro Sekunde eine dreistellige Anzahl von Bildern in einer Auflösung von 1024×768 zu erstellen. Genau habe ich das noch nicht gebenchmarkt. Darüber hinaus handelt es sich bei den unteren beiden Bilder um das Ergebnis der allerersten Version meiner Software. Da ist noch nichts optimiert, weder irgendwelche Parameter noch eine Zeile Programmcode.

Diese Version des Teapot besteht aus 4032 Dreiecken. Mit größeren Dreiecksmengen kann ich im Moment noch nicht arbeiten, da zwar das Rendering bereits relativ effizient von Statten geht, der Aufbau der zugrunde liegenden Hierarchisierug des Modells noch äußerst ineffizient vom Hauptprozessor übernommen wird.

Das Modell des Bunny besteht aus 3999 Dreiecken.
1 Kommentar vorhanden
Hinterlasse einen Kommentar

Cooool! Und Respekt!
Der Osterhase ist echt süß geworden! Wann kommt der Weihnachtsmann nach??