Vorlesungsskript Computergraphik II - IWR
Vorlesungsskript Computergraphik II - IWR
Vorlesungsskript Computergraphik II - IWR
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Kapitel 2<br />
Graphikkarten Programmierung<br />
Moderne Grafikkarten sind dafür ausgelegt, den Prozess des Renderings eines Bildes sehr schnell auszuführen,<br />
um in Echtzeit Animationen mit qualitativ möglichst hochwertigen Effekten zu berechnen.<br />
Dabei resultiert der Geschwindigkeitsvorteil aus der einfach parallel zu bearbeitenden Bildberechnung,<br />
die auf die einzelnen Prozessoren einer GPU verteilt werden kann. Außerdem werden Vektoroperationen<br />
oder Matrix-Vektor-Produkte in einem einzigen Aufruf über sogenannte Packed arrays<br />
berechnet. Diese Single Instruction Multiple Data (SIMD) Berechnungen sind eine Art Rückkehr des<br />
Vektorrechners aus der Ecke der Hochleistungsrechner auf die Ebene der PC-Technologie. Früher<br />
musste der Programmierer zu einer Assembler-Sprache greifen und den Code auf den eingesetzten<br />
Grafikchip direkt anpassen, inzwischen gibt es dafür Hochsprachen (siehe [FK03]). Das macht es<br />
wiederum interessant, auf der GPU auch Berechnungen vorzunehmen, die typischerweise parallelen<br />
Code auf der CPU erfordern, wie beispielsweise Filterverfahren der Bildverarbeitung, aber auch<br />
einfache finite Differenzen für partielle Differentialgleichnungen, deren Ortsabhängigkeiten oder Geschwindigkeitsfelder<br />
in Texturen gespeichert und über Texturzugriffe neu berechnet werden können.<br />
2.1 Shader Programmierung<br />
Die Idee der Shader stammt aus den großen Studios für Animationsfilme. Ende der 80er Jahre wurde<br />
bei Pixar für ihr Rendering-Interface Renderman eine eigene Shader-Sprache entwickelt. Die Anwendung<br />
beschränkte sich jedoch auf das relativ langsame Batch-Rendering einzelner Filmframes. Mit<br />
einem Shader berechnen die Renderer für jeden Geometriepunkt respektive dargestellten Pixel das<br />
Aussehen, statt nur statisch eine einzige Farbe oder Textur zu verwenden. Trotz einfacher Geometrie<br />
erscheinen damit gerenderte Objekte mit komplexer Oberflächenstruktur. Diese Idee geht auf eine<br />
frühe Arbeit von Robert Cook [Coo84] zurück, der den Ablauf des Shading in einer Baumstruktur<br />
organisiert hat. In diese Bäume an unterschiedlichen Stufen eingreifen zu können, genügt ein rein<br />
knotenbasierter Ansatz nicht. Auf der viel tiefer liegenden Ebene der Rasterung dagegen erzielt man<br />
wie der Name schon sagt, das bessere Shading, die mit den Nachbarpunkten des Gitters abgestimm-<br />
17