11.03.2014 Aufrufe

Vorlesungsskript Computergraphik II - IWR

Vorlesungsskript Computergraphik II - IWR

Vorlesungsskript Computergraphik II - IWR

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!