44
Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit zur Erlangung des Grades eines Bachelor of Science (B.Sc.) im Studiengang Computervisualistik vorgelegt von Andreas Hellwig Erstgutachter: Prof. Dr.-Ing. Stefan Müller (Institut für Computervisualistik, AG Computergraphik) Zweitgutachter: Dipl.-Inform. Niklas Henrich (Institut für Computervisualistik, AG Computergraphik) Koblenz, im Oktober 2010

Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Fachbereich 4: Informatik

Deferred shading mit spektralemRendering auf der GPU

Bachelorarbeitzur Erlangung des Grades eines Bachelor of Science (B.Sc.)

im Studiengang Computervisualistik

vorgelegt von

Andreas Hellwig

Erstgutachter: Prof. Dr.-Ing. Stefan Müller(Institut für Computervisualistik, AG Computergraphik)

Zweitgutachter: Dipl.-Inform. Niklas Henrich(Institut für Computervisualistik, AG Computergraphik)

Koblenz, im Oktober 2010

Page 2: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Erklärung

Ich versichere, dass ich die vorliegende Arbeit selbständig verfasst und kei-ne anderen als die angegebenen Quellen und Hilfsmittel benutzt habe.

Ja Nein

Mit der Einstellung der Arbeit in die Bibliothek bin ich einverstanden. � �

Der Veröffentlichung dieser Arbeit im Internet stimme ich zu. � �

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .(Ort, Datum) (Unterschrift)

Page 3: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Zusammenfassung

Diese Arbeit befasst sich mit der Entwicklung und Implementation einesRenderingsystems, das den deferred-shading-Ansatz implementiert undBeleuchtung nicht auf herkömmlichem Wege, mittels der üblichen RGB-Farbkanäle, simuliert, sondern mit diskreten Spektren, integriert als n-di-mensionale Vektoren. Der Fokus liegt hierbei auf dem spektralem Rende-ring.

Weiterhin strebt diese Arbeit einen Vergleich hinsichtlich der Perfor-manz zwischen dem konventionellen RGB-Ansatz und dem des spektra-len Renderings an, um zu untersuchen, wie viel Mehraufwand wirklich zuerwarten ist, um genauer und physikalisch korrekter mittels Spektren zurechnen.

Abstract

This thesis deals with the development and implementation of a rende-ring system, which itself implements the deferred-shading-approach andsimulates illumination not by conventional means, with the aid of the usu-al rgb color system, but through the use of spectra which are integrated byn-dimensional vectors. The focus is thereby on the spectral rendering.

Furthermore, this thesis targets a comparison between the rgb approachand the spectral rendering with regard to their performance, to examinehow much additional effort can really be expected if calculated more accu-rate and physically correct through the use of spectra.

i

Page 4: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Inhaltsverzeichnis

1 Einleitung 11.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Aufbau dieser Arbeit . . . . . . . . . . . . . . . . . . . . . . . 1

2 Grundlagen 22.1 Programmierung der GPU mittels OpenGL . . . . . . . . . . 22.2 Funktionsweise von deferred shading . . . . . . . . . . . . . 32.3 Licht und Farbe . . . . . . . . . . . . . . . . . . . . . . . . . . 62.4 Menschliche Farbwahrnehmung . . . . . . . . . . . . . . . . 72.5 Farbräume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.5.1 CIE XYZ . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5.2 sRGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.6 Diskrete Farbmetrik . . . . . . . . . . . . . . . . . . . . . . . . 122.7 Beleuchtungssimulation im Rendering – Strategien . . . . . 14

2.7.1 Konventioneller RGB-Ansatz . . . . . . . . . . . . . . 142.7.2 N-Samples-Ansatz . . . . . . . . . . . . . . . . . . . . 17

3 Implementierung 193.1 Verwendete Bibliotheken . . . . . . . . . . . . . . . . . . . . . 193.2 Verwendete Daten . . . . . . . . . . . . . . . . . . . . . . . . . 193.3 Vorkehrungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.3.1 Deferred shading . . . . . . . . . . . . . . . . . . . . . 213.3.2 Spektrales Rendering . . . . . . . . . . . . . . . . . . . 22

3.4 Ablauf eines Rendering-Vorgangs . . . . . . . . . . . . . . . . 263.5 Genauere Betrachtung einzelner Komponenten . . . . . . . . 27

3.5.1 Rediskretisierung der spektralen Messwerte . . . . . 283.5.2 Tone Mapping nach Reinhard et al. . . . . . . . . . . . 29

4 Ergebnisse 334.1 Performanz-Vergleich mit konventionellem RGB-Ansatz . . 33

5 Fazit 36

Literatur 37

ii

Page 5: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Abbildungsverzeichnis

2.1 OpenGL Rendering Pipeline . . . . . . . . . . . . . . . . . . . 22.2 Texturen des G-Buffer und finale Zusammensetzung einer

Beispielszene . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.3 Elektromagnetisches Spektrum . . . . . . . . . . . . . . . . . 62.4 Spektrale Absorptionskurven von Zapfen (S, M, L) und Stäb-

chen (R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5 CIE 1931 2-deg (standard observer) XYZ Colour Matching

Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.6 Farbmischexperiment . . . . . . . . . . . . . . . . . . . . . . . 102.7 Ansätze für das Rendern von Lichtreflexionen . . . . . . . . 153.1 GretagMacbeth Digital ColorChecker SG . . . . . . . . . . . 203.2 Textur (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.3 Textur (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.4 Zusammensetzung der Texturen zur Implementation von

deferred shading . . . . . . . . . . . . . . . . . . . . . . . . . 223.5 Beispielhafte Bildschirmausgaben des implementierten Ren-

derers. Verwendete Lichtquelle, links: D65, rechts: Halogen-metalldampflampe, Anzahl Samples: 36 . . . . . . . . . . . . 23

3.6 Material-Textur (36 Samples) . . . . . . . . . . . . . . . . . . 253.7 Licht-Textur (36 Samples) . . . . . . . . . . . . . . . . . . . . 253.8 XYZ-Textur (36 Samples) . . . . . . . . . . . . . . . . . . . . . 253.9 Material-Textur (24 Samples) . . . . . . . . . . . . . . . . . . 253.10 Licht-Textur (24 Samples) . . . . . . . . . . . . . . . . . . . . 253.11 XYZ-Textur (24 Samples) . . . . . . . . . . . . . . . . . . . . . 253.12 Kontinuierliches Spektrum . . . . . . . . . . . . . . . . . . . . 283.13 Kontinuierliche Boxfunktionen . . . . . . . . . . . . . . . . . 283.14 Diskretes Spektrum . . . . . . . . . . . . . . . . . . . . . . . . 283.15 Diskrete Boxfunktionen . . . . . . . . . . . . . . . . . . . . . 283.16 Beispielfälle (a) bis (e) bei der Rediskretisierung (siehe Glei-

chung 3.2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.1 Bildwiederholraten der angegebenen Rendering-Verfahren über

die Zeit, Auflösung: 512× 512 Pixel . . . . . . . . . . . . . . 344.2 Bildwiederholraten der angegebenen Rendering-Verfahren über

die Zeit, Auflösung: 1024× 1024 Pixel . . . . . . . . . . . . . 35

iii

Page 6: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Listingverzeichnis

3.1 Implementation der Rediskretisierungs–Methode . . . . . . 313.2 Vorausberechnungen der Variablen ’avgLuminance’ des To-

ne–Mapping–Operators nach Reinhard et al. . . . . . . . . . 323.3 Implementation des globalen Tone–Mapping–Operators nach

Reinhard et al. . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

iv

Page 7: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

1 Einleitung

1.1 Motivation

Der konventionelle RGB-Ansatz, mit dem die Computergrafik seit Jahr-zehnten arbeitet, scheint bei näherem Hinsehen nur durch einen Glücksfallder Mathematik akzeptable Ergebnisse zu liefern. Vor Jahrzehnten schiender Fehler, den man dabei begeht, und die resultierenden Abweichungenvon dem, was man erreichen wollte, noch vergleichsweise minimal unddaher tolerierbar.

Doch heute, in Zeiten, in denen photorealistische Computergrafik inSpielen, Filmen, Werbung, wissenschaftlichen Simulationen und vielleichtbald auch schon im Alltag eines Normalbürgers – Stichwort: AugmentedReality – eingesetzt wird, um die reale Welt nachzubilden oder neu zu er-schaffen, sollten die Voraussetzungen für ebenjene Anforderungen hinrei-chend erfüllt sein. Dies ist jedoch momentan nicht der Fall, obwohl Mittelund Wege existieren.

Eines dieser Mittel stellt einen Ansatz dar, bei dem versucht wird, Spek-tren mithilfe von n-dimensionalen Vektoren zu berücksichtigen, um dieFarbkonstanz während des Renderings zu maximieren und somit einenrealistischeren Farbeindruck von Bildern zu ermöglichen.

1.2 Zielsetzung

Ziel dieser Arbeit ist es, ein prototypisches Renderingsystem mit einemdeferred-shading-Ansatz zu implementieren. Der Schwerpunkt liegt da-bei auf der Erweiterung der Farbbehandlung, wobei statt der üblichen dreiFarbkanäle (RGB) ein Spektrum als n-dimensionaler Vektor berücksichtigtwerden soll.

1.3 Aufbau dieser Arbeit

Im folgenden Abschnitt Grundlagen wird der Grundstein für das Verständ-nis dieser Arbeit durch die Grundlagen der beiden Teilprobleme ’defer-red shading’ und ’spektrales Rendering’ gelegt. Anschließend wird im Ab-schnitt Implementierung erläutert, wie und unter Zuhilfenahme welcherschon vorhandenen Daten und Werkzeuge die festgelegten Ziele erreichtwurden und in welchen Bereichen Probleme auftraten. Im weiteren Verlauffindet im Abschnitt Ergebnisse die Veranschaulichung der gewonnenen Er-kenntnisse und dessen Bewertung statt, woraufhin im Abschnitt Fazit ab-schließend das Fazit dieser Arbeit folgt.

1

Page 8: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

2 Grundlagen

2.1 Programmierung der GPU mittels OpenGL

OpenGL eröffnet dem Programmierer die Möglichkeit, eigene Software-komponenten in OpenGL’s eigener Programmiersprache, der OpenGL Sha-ding Language – kurz: GLSL – zu schreiben und auf dem Grafikprozes-sor auszuführen. Ein solches Shader-Programm kann eine der program-mierbaren Stufen der OpenGL-Rendering-Pipeline ausführen und somitdie sonst fest vorgegebenen Verarbeitungsvorschriften, bekannt unter derFixed Function Pipeline, verändern respektive deren Funktionalität ersetzen.Diese Veränderungen sind mittlerweile – seit OpenGL-Version 3.2 bzw. seitVersion 1.1 unter Nutzung der EXT_geometry_shader4-Erweiterung (siehe[NVI06]) – an bis zu drei Stellen der Pipeline möglich. Diese sind:

• Vertex-Prozessor,

• Geometry-Prozessor und

• Fragment-Prozessor.

Für die vorliegende Arbeit sind jedoch nur zwei der drei genanntenStellen relevant: Die der Vertex- und der Fragment-Prozessoren. In Abbil-dung 2.1, welche die Rendering-Pipeline in stark vereinfachter Form zeigt,sind Vertex- und Fragment-Prozessor unter (1) und (2) eingetragen und eslässt sich ablesen, an welcher Stelle der Rendering-Pipeline sie vorkom-men. Gemäß dieser Positionen sind naturgemäß auch unterschiedliche Ar-ten von Zugriffen möglich; Vertex-Shader können einzelne Vertices – al-so Eckpunkte von Grafikprimitiven – manipulieren, während Fragment-Shader Zugriff auf die aus Interpolation und Rasterisierung der Grafikpri-mitive resultierenden Daten hat.

Abbildung 2.1: OpenGL Rendering Pipeline (siehe [RLKG+09], S. 39)

2

Page 9: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

2.2 Funktionsweise von deferred shading

Deferred shading beschreibt eine Vorgehensweise, die zur Verringerung desRechenaufwands bei der Simulation von Beleuchtung in 3D-Szenen ein-gesetzt werden kann. Die Idee besteht darin, während des Rendering-Vor-gangs die Geometrieverarbeitung von der Lichtberechnung zu trennen undsomit eine Möglichkeit zu schaffen, in hochkomplexen Szenen die Anzahlder Lichtquellen ohne allzu große Performanzeinbußen erhöhen zu kön-nen. Der theoretisch höchste Rechenaufwand (genauer: Die Komplexität)bei n Objekten und m Lichtquellen liegt unter Verwendung konventionel-ler Rendering-Methoden bei O(n ∗m), während mithilfe von deferred sha-ding eine Einordnung bei O(n+m) möglich ist.

Die erwähnte Trennung von Geometrie und Licht geschieht dadurch,dass in einem ersten Schritt die darzustellende Szene inklusive aller Ob-jekte zwar die Rendering-Pipeline durchläuft, sie jedoch mittels Fragment-Shader nicht beleuchtet und dargestellt wird, sondern die beleuchtungsre-levanten Daten der Szene erst einmal nur in einzelne Texturen geschriebenwerden. Genau genommen werden ausschließlich Daten der für die Bild-schirmausgabe relevanten 3D-Punkte in Texturen gespeichert.

Diese Reduktion der Daten geschieht automatisch, da auch nur relevan-te 3D-Punkte den Fragment-Prozessor durchlaufen; 3D-Punkte von Ob-jekten, die sich aus der Perspektive der Rendering-Kamera beispielswei-se komplett hinter opaken, also undurchsichtigen, Objekten befinden undsomit nicht sichtbar sind, sind (bei traditionellen Beleuchtungsmodellen)nicht relevant für die Bildschirmausgabe und durchlaufen den Fragment-Prozessor daher nicht. Dadurch bedingt müssen eben genannte Texturenauch genau so groß sein, wie die finale Bildschirmausgabe.

Diese Texturen – zusammengenommen häufig auch G-Buffer genannt– enthalten nun alle nötigen Informationen der einzelnen Fragmente imScreen Space und ihrer zugehörigen Punkte im 3D-View Space, wie 3D-Posi-tion, Normale und Materialeigenschaften. Die 3D-Position erfordert dreiZahlenwerte je Punkt, kann jedoch ebenso aus der z-Koordinate des jewei-ligen Punktes und den aktuellen Kamerakoordinaten berechnet werden,um Speicherplatz zu sparen. Eine Beispielszene, zerlegt in die Texturen ih-res G-Buffers, ist in Abbildung 2.2 zu sehen.

Mit all diesen Daten kann im nun folgenden zweiten Schritt, mithilfeanderer Vertex- und Fragment-Shader als noch beim ersten, die Beleuch-tung unter Einbeziehung der vorhandenen Informationen aus dem G-Buf-fer berechnet werden. Damit beim zweiten Rendering-Schritt jedoch nichtdie möglicherweise komplexe Geometrie erneut verarbeitet werden muss,genügt es, ein einziges bildschirmfüllendes Rechteck zu zeichnen, um füralle Fragmente der gewünschten Ausgabeauflösung den Fragment-Shaderauszuführen.

An dieser Stelle kann zu Optimierungszwecken stattdessen auch ei-

3

Page 10: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Abbildung 2.2: Texturen des G-Buffer und finale Zusammensetzung einer Bei-spielszene (zu finden bei [Wik10a])

4

Page 11: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

ne der Strahlenverteilung der aktuell verwendeten Lichtquelle angenäher-te Geometrie gezeichnet werden. Dies meint zum Beispiel eine Kugel fürPunktlichtquellen oder ein Kegel für Strahler. Das genannte bildschirmfül-lende Rechteck ist genau genommen das Pendant zum direktionalen Licht(parallele Lichtstrahlen) einer weit entfernten Lichtquelle wie der Sonne.Mithilfe dieser Praktik kann erreicht werden, dass Fragmente, welche sichauf von der Lichtquelle nicht betroffene 3D-Punkte beziehen, nicht unnötigden Fragment-Prozessor für die Beleuchtungsberechnung durchlaufen.

Wird der Fragment-Shader nun für ein relevantes Fragment aufgerufen,weiß er anhand der Bildschirmkoordinaten dieses Fragments, an welcherStelle in den verschiedenen Texturen des G-Buffers nachgeschaut werdenmuss, kann die Informationen hieraus kombinieren und somit die resultie-rende Farbe des Fragments bestimmen.

Erwartungsgemäß darf sich die Betrachterposition zwischen der Aus-führung der beiden Rendering-Vorgänge nicht ändern, damit die mit denFragmenten jeweils verknüpften 3D-Punkte im View Space während bei-den Vorgängen übereinstimmen. Durch wiederholtes Anwenden des zwei-ten Rendering-Schrittes mit verschiedenen Lichtquellen und anschließen-der Akkumulierung der Ergebnisse kann nun die oben erwähnte Komple-xität von O(n + m) bei n Objekten und m Lichtquellen erreicht werden,da die Geometrie nur im ersten Vorgang verarbeitet wird. Im Gegensatzdazu benötigt das traditionelle, sogenannte Forward-Rendering zwar nureinen Rendering-Schritt inklusive Licht- und Geometrieverarbeitung, die-ser muss jedoch für jede Lichtquelle implizit neu ausgeführt werden, so-dass die Komplexität hier bei O(n ∗m) liegt.

Jedoch entfällt beim Forward-Rendering die Zwischenspeicherung vonInformationen in Texturen und im Allgemeinen (vorausgesetzt, man möch-te keine Texturierung von 3D-Modellen betreiben) somit auch der Zugriffauf Texturen, welcher im Vergleich zu logischen und mathematischen Ope-rationen auf der Grafikkarte nicht sehr performant ist. Hier liegt somitder Vorteil beim Forward-Rendering, falls wenig Lichtquellen zum Einsatzkommen. Ein Nachteil von deferred shading ist zudem, dass kein hardwa-rebeschleunigtes Anti-Aliasing zur Kantenglättung möglich ist. Des Weite-ren müssen transparente Objekte gesondert behandelt werden, da im Nor-malfall für jedes Fragment angenommen wird, dass es zu einem bestimm-ten Objekt in der Szene mit bestimmten Materialeigenschaften gehört, wasbei transparenten Objekten Probleme verursacht.

Zusammenfassend lässt sich sagen, dass der deferred-shading-Ansatzdann sinnvoll ist, wenn eine sehr komplexe Geometrie mit sehr vielen (imUmfang von einigen hundert) Lichtquellen beleuchtet werden soll. Han-delt es sich beispielsweise um viele Lichtquellen, jedoch nur um sehr ein-fache Geometrie, kann bereits ein simpler Rendering-Vorgang zum Initiali-sieren des Z-Buffers – auch Depth-Only-Pass genannt – verhindern, dass fürunsichtbare Pixel unnötige Berechnungen durchgeführt werden.

5

Page 12: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

2.3 Licht und Farbe

Licht wird im Allgemeinen als der für den Menschen sichtbare Bereich deselektromagnetischen Spektrums verstanden. Dieser entspricht Wellenlän-gen von etwa 380nm bis 780nm, grenzt im unteren Bereich an ultraviolet-tes Licht und im oberen Bereich an Infrarotstrahlung (vgl. Abbildung 2.3).Er lässt sich jedoch nicht exakt eingrenzen, da die Empfindlichkeit desmenschlichen Auges in den Grenzbereichen graduell abnimmt und indi-viduellen Abweichungen unterliegt.

Abbildung 2.3: Elektromagnetisches Spektrum

Das für die Farbwahrnehmung ausschlaggebende Licht wird von selbst-leuchtenden (Licht emittierenden) Objekten erzeugt, so genannten Primär-strahlern. Das von diesen Objekten erzeugte Licht kann je nach Art der Pri-märstrahler entweder ausschließlich aus elektromagnetischen Wellen dergleichen Wellenlänge (monochromatisches Licht) bestehen, oder sich aus ver-schiedenen Wellenlängen zusammensetzen (polychromatisches Licht). Durchgleichmäßige, additive Farbmischung von sichtbarem Licht jeglicher Wel-lenlänge entsteht weißes Licht. Andere Farben (wie beispielsweise Braun)können durch Filtern von eben jenem weißen Licht erreicht werden.

Objekte, welche selbst kein Licht emittieren, werden als Sekundärstrah-ler bezeichnet. Diese reflektieren und/oder transmittieren Licht eines Pri-märstrahlers in unterschiedlicher Weise und sind daher ebenso für den re-sultierenden Farbeindruck verantwortlich. Das durch einen Primärstrahlererzeugte Licht kann somit also entweder auf direktem Weg, oder indirekt,nach eventuell mehrfacher Reflexion und Transmission durch Sekundär-strahler, auf das menschliche Auge treffen. Im Folgenden wird allein dieReflexion von Licht behandelt und Transmission außer Acht gelassen; je-doch lässt sich jede der sich auf Reflexion beziehenden Gleichungen ohneBeschränkung der Allgemeinheit auch auf Transmission anwenden.

Die Reflexion von Licht einer bestimmten Wellenlänge an einer Mate-rialoberfläche kann, physikalisch vereinfacht, mithilfe Gleichung 2.1 be-rechnet werden. R(λ) stellt dabei den spektralen Reflexionsgrad der Ma-terialoberfläche an einem Punkt oder einer Fläche dar und ist definiertals das Verhältnis des reflektierten Strahlungsfluss Ir(λ) zum einfallenden

6

Page 13: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Strahlungsfluss Ie(λ). R(λ) kann in diesem Fall keinesfalls Werte über 1annehmen, da nie mehr Licht reflektiert werden kann, als einfällt. In derNatur existiert weiterhin keine hundertprozentige Reflexion, sodass R(λ)ausschließlich Werte des Intervalls [0; 1] annehmen kann.

R(λ) =Ir(λ)

Ie(λ)(2.1)

R(λ) · Ie(λ) = Ir(λ) (2.2)

Durch Umstellen von Gleichung 2.1 gelangt man zu Gleichung 2.2, ander sich erkennen lässt, dass man mithilfe gegebener spektraler Energiever-teilung des Primärstrahlers und spektralem Reflexionsgrad eines Sekun-därstrahlers die entstehende, vom Sekundärstrahler ausgehende, Energie-verteilung bestimmen kann.

Wenn es sich um diffuse (ungerichtete) Reflexion von Licht handelt,spricht man auch von Remission. Die spektralen Reflexionseigenschafteneines Sekundärstrahlers, festgelegt als Funktion ρ(λ) über dem vom Men-schen sichtbaren Spektrum, nennt man in diesem Fall Remissionsspektrum.

Wie oben angedeutet, ist das von einer Materialoberfläche reflektier-te Licht physikalisch korrekt betrachtet nicht ausschließlich von der spek-tralen Energieverteilung der Lichtquelle sowie dem Reflexionsgrad einesObjektes abhängig. Um Reflexionen wirklich korrekt zu simulieren, sindkomplexe Reflexionsmodelle wie die BRDF, die Bidirectional Reflectance Dis-tribution Function, notwendig.

2.4 Menschliche Farbwahrnehmung

Die menschliche Farbwahrnehmung geschieht immer in einer gewissenAbfolge: Ein aus sichtbarem Licht bestehender Farbreiz trifft auf das Au-ge, durchdringt dieses durch Pupille und Linse und fällt auf den hinterenTeil des Augapfels, der Netzhaut, auch Retina genannt. Dort sorgen dieSinneszellen des Auges für die Umwandlung des Farbreizes in eine so be-zeichnete Farbvalenz, welche durch elektrische Impulse über den Sehnervzum Gehirn geleitet wird, wo sodann die sogenannte Farbempfindung ent-steht.

Bezüglich der Sinneszellen unterscheidet man zwischen zwei Typen,welche auf Farbreize unterschiedlich reagieren: Stäbchen und Zapfen. Wäh-rend Stäbchen farbunempfindlich und generell für das Sehen bei geringerHelligkeit (skotopisches Sehen) verantwortlich sind, sorgen Zapfen für daseigentliche Farbsehen bei ausreichender Helligkeit (Tagsehen oder pho-topisches Sehen). Man differenziert weiterhin drei verschiedenen Typenvon Zapfen, welche zur Wahrnehmung unterschiedlicher Farbwerte die-nen. Dies wird durch unterschiedliche spektrale Absorptionskurven ermög-

7

Page 14: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

licht, welche in Abbildung 2.4 zusammen mit der spektralen Absorptions-kurve der Stäbchen (R) zu sehen sind. Diese Kurven beschreiben die Rei-zantwort der Zapfen und Stäbchen in Abhängigkeit der Wellenlänge desReizes. Die verschiedenen Zapfentypen sind:

• S-Zapfen (short wavelength receptor), spezialisiert auf kurzwelligesLicht

• M-Zapfen (medium wavelength receptor), spezialisiert auf mittelwel-liges Licht

• L-Zapfen (long wavelength receptor), spezialisiert auf langwelligesLicht

Abbildung 2.4: Spektrale Absorptionskurven von Zapfen (S, M, L) und Stäbchen(R) (siehe [BD80])

2.5 Farbräume

2.5.1 CIE XYZ

Mit dem CIE XYZ-Farbraum (im englischsprachigen Raum oft unter Tristi-mulus-Farbraum bekannt) führte die Internationale Beleuchtungskommissi-on CIE (eigentlich Commission Internationale de l’Eclairage) 1931 einen inter-nationalen, in der heutigen Zeit noch immer gültigen, Standard zur Farb-spezifikation ein, mit dem alle vom Menschen wahrnehmbaren Farben be-schrieben werden können. Er baut somit auf der menschlichen Farbwahr-

8

Page 15: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

nehmung auf, ist geräteunabhängig und eignet sich weiterhin ideal als Aus-gangspunkt, von dem aus Transformationen in verschiedene geräteabhän-gige und -unabhängige Farbräume leicht und ohne Datenverlust möglichsind.

Diesem System liegt die Annahme zugrunde, jede Farbe ließe sich durchdrei Koeffizienten bezüglich drei Grundfarben (Primärvalenzen) beschrei-ben, welche als erstes Graßmann’sches Gesetz bezeichnet wird. X, Y und Zsind in diesem Farbraum also die Anteile der definierten Primärvalenzen,welche, mathematisch ausgedrückt, linear unabhängige Basisvektoren dar-stellen und gemeinsam einen dreidimensionalen Vektorraum aufspannen.Dieser Vektorraum wiederum enthält alle Farben, die durch Mischen derGrundfarben erzeugt werden können (Linearkombination).

Um ein Lichtspektrum auf seinen Farbwert in diesem Farbraum abzu-bilden, benötigt man die Sensitivitätskurven dieses Farbraums. Diese ent-sprechen der Umkehrabbildung der Primärvalenzen und werden gemein-hin als XYZ Colour Matching Functions bezeichnet (siehe Abbildung 2.5).Der Farbwert zu einem kontinuierlichen Spektrum L(λ) bezüglich der Sen-sitivitätskurven x(λ), y(λ) und z(λ) lässt sich somit mit den Gleichungen2.3 bis 2.5 berechnen.

X =

∫ 780nm

380nmL(λ) · x(λ) · dλ (2.3)

Y =

∫ 780nm

380nmL(λ) · y(λ) · dλ (2.4)

Z =

∫ 780nm

380nmL(λ) · z(λ) · dλ (2.5)

Grundlage der Definition des dreidimensionalen XYZ-Farbraums warein statistisches Experiment mit farbnormalsichtigen Personen, in dessenFolge ein durchschnittlich farbempfindender Mensch definiert wurde – derNormalbeobachter oder Standard Colorimetric Observer. Der Beobachter soll-te durch Änderung der jeweiligen Helligkeit dreier Lichtquellen (mit be-stimmten Primärfarben, beispielsweise Rot, Grün und Blau), welche aufden selben Punkt einer weißen Fläche gerichtet waren, den subjektivenFarbeindruck einer daneben liegenden, vorgegebenen Farbe nachstellen. Erblickte dabei auf eine Fläche mit einem Sichtfeld von 2◦ mittig zur Haupt-blickrichtung, da dieser Bereich der Zone des menschlichen Auges ent-spricht, in der die Dichte der farbempfindlichen Zapfen am höchsten ist.Dieses Farbmischexperiment wird in Abbildung 2.6 zur Veranschaulichungdargestellt.

Aus den Ergebnissen dieses Experiments entstanden Sensitivitätskur-ven, welche jedoch im Gegensatz zu den XYZ Colour Matching Functionsteilweise negative Werte annahmen. Dies ist dadurch zu begründen, dasssich manche der Referenzfarben während des Farbmischexperiments nicht

9

Page 16: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Abbildung 2.5: CIE 1931 2-deg (standard observer) XYZ Colour Matching Functi-ons (siehe [CIE31])

Abbildung 2.6: Farbmischexperiment (aus [GM09])

10

Page 17: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

durch eine Kombination der drei Primärfarben erzeugen ließen. In diesenFällen musste Licht einer der Primärfarben zusätzlich auf das Licht derjeweiligen Referenzfarbe addiert werden, was als Subtraktion von den Pri-märfarben interpretiert wurde und somit zu den teilweise negativen Wer-ten der Sensitivitätskurven führte.

Man entdeckte somit die Tatsache, dass keine drei physikalisch reali-sierbaren Primärvalenzen im Spektrum existieren, mit denen alle mögli-chen Farbeindrücke erzeugt werden können. Daher bedient sich der CIEXYZ-Farbraum virtueller Primärvalenzen, welche physikalisch nicht reali-sierbar sind, da ihre Spektren negative Werte annehmen. Dadurch können,wie bereits erwähnt, allerdings alle für den Menschen sichtbaren Farbendurch drei positive Koeffizienten beschrieben werden.

2.5.2 sRGB

Der Farbraum sRGB (ausgeschrieben: Standard-RGB) ist der derzeit amweitesten verbreitete, standardisierte RGB-Farbraum, welcher im Jahre 1996durch eine Kooperation der Firmen Hewlett-Packard und Microsoft ent-stand. Er wurde zu dieser Zeit für die damaligen CRT-Monitore entwickeltund sollte es möglich machen, bei direkter Darstellung der gespeichertendrei Farbwerte, ohne weiteres Farbmanagement, eine gute Farbwiederga-be zu erzielen. Daher wird im sRGB-Standard auf das durchschnittlicheSpannungsniveau von CRT-Monitoren (entspricht einem Gamma-Wert γvon etwa 2, 2) jener Zeit reagiert und dieses im Vorhinein, bei der Speiche-rung der Farbwerte, ausgeglichen. Damit sollte auf einem durchschnittli-chen CRT-Monitor, welche eine exponentielle Spannungskurve besitzt, ei-ne lineare Helligkeitsverteilung ermöglicht werden. Andere Hardware, wieFarbdrucker und aktuellere Monitore, wie beispielsweise LC-Bildschirme,werden heute, obwohl sie von sich aus keine solche exponentielle Hellig-keitsverteilung ausgeben, mit Kompensationsschaltkreisen oder Softwareausgestattet, sodass sie letzten Endes doch dem Standard folgen. Dies giltfür professionelle Hardware jedoch nur eingeschränkt.

Der Referenz-Weißpunkt des sRGB-Farbraums ist das D65-Weiß, wasbedeutet, dass ein Material mit einem konstanten Remissionsspektrum

ρ(λ) = 1 ∀ λ ∈ [380nm; 780nm]

beleuchtet durch das Normlicht D65 auf den sRGB-Wert (1, 1, 1)T abgebil-det wird, wenn man es mit einem sRGB-Eingabegerät (Kamera, Scanner,etc.) aufnimmt.

Der sRGB-Farbraum wurde von verschiedenen Industrieunternehmenübernommen und wird für Open-Source-Software wie dem Bildbearbei-tungsprogramm GIMP benutzt. Zudem wird er sowohl für firmenspezifi-sche, als auch offene grafische Formate, wie SVG oder PNG, eingesetzt.

11

Page 18: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Um eine Transformation einer Farbe im CIE XYZ-Farbraum zum sRGB-Farbraum vorzunehmen, genügt eine Linksmultiplikation des dreidimen-sionalen XYZ-Farbvektors mit einer festgelegten 3×3-MatrixM (siehe Glei-chung 2.6) und eine anschließende Gamma-Korrektur. Möchte man vomvom sRGB-Farbraum in den CIE XYZ-Farbraum transformieren, ist diesebenso einfach durch Bildung der inversen Matrix M−1 möglich (sieheGleichung 2.7). Mehr zu dieser Art von Farbtransformation findet sich in[Lin10]. rg

b

= M ·

XYZ

(2.6)

XYZ

= M−1 ·

rgb

(2.7)

Während eine minimal vereinfachte Gamma-Korrektur von γ = 2, 2 fürsRGB ausgeht und sich jeder endgültige Farbwert C ∈ {R,G,B} somit ausseinem vorläufigen Wert c ∈ {r, g, b} einfach durch C = c1/γ berechnenlässt, muss für die exakte Gamma-Korrektur jedes Kanals nach dem sRGB-Standard Gleichung 2.8 ([SACM96]) herangezogen werden.

C =

{12, 92 · c, c ≤ 0, 0031308

1, 055 · c1/2,4 − 0, 055, c > 0, 0031308(2.8)

2.6 Diskrete Farbmetrik

Da man kontinuierliche Spektren nur mit einer endlichen Anzahl von Wel-lenlängen abtasten kann und reale Lichtspektren im Allgemeinen nicht ingeschlossener Form (beispielsweise durch Polynome) darstellbar sind, istman in der Praxis oft darauf angewiesen, diskret zu rechnen. Die diskreteEntsprechung des Integrals der in Unterunterabschnitt CIE XYZ angege-benen Gleichungen 2.3 bis 2.5 ist die Summe über n sogenannte Samplesλi mit i ∈ [1..n] des sichtbaren elektromagnetischen Spektrums. Die XYZColour Matching Functions x(λ), y(λ) und z(λ) und ein kontinuierlichesLichtspektrum L(λ) werden also an den Stellen λi meist in gleichmäßigenAbständen von ∆λ abgetastet und die einzelnen Messwerte jeweils mitein-ander multipliziert. Zudem muss die eben erwähnte Summe über die mul-tiplizierten Samples letztlich noch mit dem Messintervall ∆λ multipliziertwerden, um die mit Anzahl der Samples steigende Summe auszugleichen.Somit gelangt man zu den Gleichungen 2.9 bis 2.11.

12

Page 19: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

X = ∆λ ·n∑i=1

L(λi) · x(λi) (2.9)

Y = ∆λ ·n∑i=1

L(λi) · y(λi) (2.10)

Z = ∆λ ·n∑i=1

L(λi) · z(λi) (2.11)

Das diskrete Spektrum L(λ) lässt sich jedoch ebenfalls als n-dimensio-naler Spaltenvektor ~L und die Sensitivitätskurven x(λ), y(λ) und z(λ) alsn-dimensionale Zeilenvektoren ~x, ~y und ~z darstellen, um durch Matrix-multiplikationen die Bildung der Summen überflüssig zu machen (sieheGleichungen 2.12 bis 2.14).

X = ∆λ ·(x1 x2 · · · xn

L1

L2...Ln

= ∆λ · ~x · ~L (2.12)

Y = ∆λ ·(y1 y2 · · · yn

L1

L2...Ln

= ∆λ · ~y · ~L (2.13)

Z = ∆λ ·(z1 z2 · · · zn

L1

L2...Ln

= ∆λ · ~z · ~L (2.14)

Um nun auch die, physikalisch vereinfachte, Berechnung von Lichtre-flexionen mit einzubeziehen, lässt sich ein diskretes Spektrum L eines Se-kundärstrahlers – wie in Gleichung 2.2 angedeutet – durch die Multiplika-tion von Remissionsspektrum und Spektrum eines Primärstrahlers, beideebenfalls diskret als n-dimensionale Spaltenvektoren angegeben, ersetzen.Im Kontext von für den Menschen sichtbarem Licht und der Umwandlungeines Spektrums in den CIE XYZ-Farbraum werden diese beiden Variablennachfolgend mit ρ für das Remissionsspektrum und E für das einfallendeLicht bezeichnet.

Um das Produkt zweier diskreter Funktionen auf Vektoren zu übertra-gen, müssen ebendiese komponentenweise miteinander multipliziert wer-den. Diese Verknüpfung von zwei Vektoren gleicher Dimension ist ein Son-derfall des sogenannten Hadamard-Produkts zweier Matrizen (vgl. [Wik10b])

13

Page 20: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

und wird im Folgenden durch das Symbol ◦ dargestellt.

XYZ

= ∆λ ·

x1 x2 · · · xny1 y2 · · · ynz1 z2 · · · zn

·ρ1ρ2...ρn

◦E1

E2...En

= ∆λ ·

~x~y~z

· (~ρ ◦ ~E)= ∆λ · S ·

(~ρ ◦ ~E

)(2.15)

In Gleichung 2.15 wurde oben erwähnte Substitution vorgenommenund zusätzlich die Zeilenvektoren ~x, ~y und ~z untereinander in eine 3 × n-Matrix S geschrieben, um die Berechnung der Werte für X, Y und Z in einereinzigen Gleichung zu ermöglichen. Schließlich zeigt sie eine Möglichkeit,um diskrete Lichtreflexionen auf spektraler Ebene zu berechnen und in denCIE XYZ-Farbraum zu transformieren, von welchem aus eine Transforma-tion in beliebige andere dreidimensionale Farbräume einfach und schnelldurchführbar ist.

2.7 Beleuchtungssimulation im Rendering – Strategien

Um Lichtreflexionen während des Renderings zu simulieren, existieren un-terschiedliche Ansätze. Zwei dieser Möglichkeiten, welche im Rahmen die-ser Arbeit bezüglich ihrer Performanz miteinander verglichen werden sol-len, sind in Abbildung 2.7 anschaulich dargestellt. Traditionell wird derRGB-Ansatz (a) verwendet und die Grafikhardware ist seit Jahren auf die-sen Ansatz spezialisiert, während dem korrekteren und genaueren Ansatzmit n Samples pro Farbe (b), welcher annähernd als spektrales Rendering be-zeichnet werden kann, ein enormer zusätzlicher Rechenaufwand, je nachAnzahl der Samples, nachgesagt wird. Was trotz dessen für letzteren An-satz spricht, wird im Folgenden genauer erörtert.

2.7.1 Konventioneller RGB-Ansatz

Wie sich in der Übersicht der Gleichungen 2.16 bis 2.18 erkennen lässt, wer-den beim konventionellen RGB-Ansatz im Rendering die Material- undLichtfarben (bezeichnet als ρ respektive E) einfach als RGB-Tripel einge-geben und zur Berechnung der Reflexion (dessen Farbe durch L dargestelltwird) komponentenweise multipliziert.

14

Page 21: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Abbildung 2.7: Ansätze für das Rendern von Lichtreflexionen (siehe [WP98], S.687)

spektral, kontinuierlich : L(λ) = ρ(λ) · E(λ) (2.16)

spektral, diskret : ~L = ~ρ ◦ ~E (2.17)

RGB :

LrLbLg

=

ρrρbρg

◦ErEbEg

(2.18)

Dieses Vorgehen scheint bei Betrachtung der Gleichung für spektraleund kontinuierliche Reflexion (Gleichung 2.16) sogar sinnvoll, da die dor-tigen Funktionen L(λ), ρ(λ) und E(λ) kurzerhand durch synonyme Vekto-ren mit jeweils drei Komponenten – den Werten für Rot, Grün und Blau –ersetzt wurden. Dabei wird jedoch ein Fehler begangen, der nachfolgendveranschaulicht wird.

Wie in den Unterabschnitten Farbräume und Diskrete Farbmetrik er-läutert, kann ein diskretes Spektrum mithilfe der XYZ Color Matching Func-tions in den geräteunabhängigen CIE XYZ-Farbraum transformiert wer-den, um die somit durch drei Werte eindeutig festgelegte Farbe daraufhinin beliebige geräteabhängige Farbräume wie beispielsweise sRGB zu trans-formieren und auf einem herkömmlichen Computermonitor anzeigen zulassen. Lässt man einzig die Transformation von XYZ in den finalen geräte-abhängigen Farbraum (welche durch eine lineare Matrixmultiplikation miteiner 3× 3-Matrix vollzogen werden kann und dessen Wegfall somit keine

15

Page 22: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Beschränkung der Allgemeinheit darstellt) außer Acht und versucht, von

L(λ) = ρ(λ) · E(λ)

(siehe Gleichung 2.16) durch mathematisch korrekte Umformungen zu demCIE XYZ-Pendant von Gleichung 2.18LxLy

Lz

=

ρxρyρz

◦ExEyEz

zu gelangen, wird die Stelle, an dem der Fehler begangen wird, erkennbar.

Aus Gründen der Übersichtlichkeit wird im Folgenden statt dem in Un-terabschnitt Diskrete Farbmetrik eingeführten Vektor (X,Y, Z)T der Vektor(Lx, Ly, Lz)

T für den resultierenden XYZ-Farbwert verwendet und zudemauf den ausgleichenden Faktor ∆λ (ebenfalls ohne Beschränkung der All-gemeinheit) verzichtet (betrifft Gleichung 2.21 und Gleichung 2.22).

L(λ) = ρ(λ) · E(λ) (2.19)

~L = ~ρ ◦ ~E (2.20)LxLyLz

= S ·(~ρ ◦ ~E

)(2.21)

LxLyLz

= S · ~ρ ◦ S · ~E (2.22)

LxLyLz

=

ρxρyρz

◦ExEyEz

(2.23)

Der Übergang von Gleichung 2.19 nach Gleichung 2.20 stellt die Dis-kretisierung der Reflexion dar, während man mithilfe einer Linksmulti-plikation der Matrix S (der Matrix mit den Sensitivitätskurven des XYZ-Farbraums als Zeilenvektoren, siehe Gleichung 2.15) auf beiden Seiten derGleichung von Gleichung 2.20 nach Gleichung 2.21 gelangt. Der durch-gestrichene Übergangspfeil zwischen Gleichung 2.21 und Gleichung 2.22bringt zum Ausdruck, dass an dieser Stelle der genannte Fehler liegt, dadie Matrixmultiplikation · bezüglich des Hadamard-Produkts ◦ nicht dis-tributiv ist. Somit kann eine korrekte Umformung von oben gefordertemnicht existieren.

16

Page 23: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Da jedoch Gleichung 2.17 für die diskrete Berechnung von spektralerReflexion gilt, könnte man argumentieren, dass die gängige Praxis der RGB-Reflexion einen Sonderfall dessen darstellt, bei welchem das diskrete Spek-trum ausschließlich durch drei Samples repräsentiert wird. Durch diesedrei Werte müsste sich das komplette Spektrum jedoch sehr gut, mithilfegeeigneter drei Basisfunktionen, wieder rekonstruieren lassen, um annä-hernd gute Ergebnisse zu erhalten. Denn bei einfachem Point-Sampling dessichtbaren Spektrums oder mittels Boxfunktionen (mehr zu diesem The-ma in [Gos08]) wären, bei Verwendung von ausschließlich drei Samples,enorme Abweichungen das Resultat. Da der RGB-Ansatz jedoch über kei-nerlei genormte Basisfunktionen (Primärvalenzen) verfügt, kann von obengenanntem Sonderfall keine Rede sein. Somit schafft dieses verbreitete Sys-tem keine Grundlage für einen gleichen Farbeindruck bei Verwendung un-terschiedlicher Ausgabegeräte (auch unter dem Begriff Farbmanagement be-kannt), denn im Farbsystem eines Computerbildschirms sind die Primär-valenzen durch die individuellen Lichtspektren definiert, welche von denroten, grünen und blauen Subpixeln erzeugt werden.

Damit trotz alledem vergleichsweise gute Bilder auf den heimischenComputerbildschirmen zu sehen sind, werden die RGB-Werte, zum Bei-spiel einer Reflexionsfläche, meist willkürlich festgelegt. Dabei wird ver-sucht, einen bestimmten Farbeindruck auf einem Ausgabegerät zu repro-duzieren und anschließend gehofft, dass dieser auf anderen Ausgabegerä-ten nicht merklich unpassend erscheint. Farben von Lichtquellen werdendarüber hinaus meist nicht sehr flexibel eingesetzt, d.h. in den meisten Be-leuchtungssimulationen werden annähernd weiße Lichtquellen (entspricht’flachen’ Spektren mit geringer lokaler Varianz) bevorzugt, die die angege-benen Material- bzw. Reflexionsfarben nur noch aufhellen respektive er-leuchten, jedoch keine zusätzliche Farbe mehr in die Reflexion mit einflie-ßen lassen.

Diese Unzulänglichkeiten des RGB-Ansatzes werden seit jeher wissent-lich in Kauf genommen, da Lichtsimulationen somit enorm vereinfacht wer-den und man trotz dessen zu akzeptablen Ergebnissen gelangt. Währendder Anfänge der Computergrafik schien dies zweifellos tolerierbar; heut-zutage sollte es jedoch vermieden werden, denn wenn realistische Farbein-drücke durch gerenderte Bilder – eventuell eingebettet in Augmented Rea-lity-Anwendungen – erzeugt werden sollen, ist eine physikalisch fundier-te Beleuchtungssimulation die Voraussetzung. Eine Fehlerabschätzung desRGB-Ansatzes mit Mitteln der Analysis findet sich in [Bor91].

2.7.2 N-Samples-Ansatz

Der n-Samples-Ansatz stellt, wie oben angedeutet, die praktische Imple-mentation der Referenzlösung für spektrales Rendering dar, da er die Rea-lität beliebig genau – natürlich nur mithilfe von ebenso genauer Abtastung

17

Page 24: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

der verwendeten Spektren – nachstellen kann. Dabei wird jedoch versucht,die mit Anzahl der Samples steigende Komplexität gegen die Genauig-keit der Berechnung, welche naturgemäß ebenfalls mit Anzahl der Samp-les steigt, abzuwägen. Das heißt, die Anzahl n der Samples des sichtba-ren Spektrums von etwa 380nm bis 780nm, welche mithilfe eines beliebi-gen Sampling-Verfahrens gewonnen werden, sollte so klein wie möglich,gleichzeitig jedoch so groß wie nötig sein, um allzu sichtbare Abweichun-gen von der Referenz auszuschließen. Bezüglich dessen sind, je nach gefor-derter Genauigkeit, Messintervalle von ∆λ = 10nm üblich.

In Unterabschnitt Diskrete Farbmetrik wurde bereits beschrieben, wieman mithilfe von Gleichung 2.15 von n Samples der Licht- und Remissi-onsspektren sowie n Samples der XYZ Colour Matching Functions zu denXYZ-Farbwerten des reflektierten Lichts gelangt.

Durch Multiplikation mit der 3 × 3-Matrix M , welche in Unterunter-abschnitt sRGB eingeführt wurde, und anschließender Gamma-Korrekturgelangt man weiterhin von XYZ- zu sRGB-Farbwerten, welche auf sRGB-konformen Ausgabegeräten zu adäquaten Farbeindrücken führen. Statt insRGB kann man ebenso in andere standardisierte RGB-Farbräume transfor-mieren. Zudem hat man die Möglichkeit, mithilfe eines Colorimeters einean den eigenen Monitor angepasste 3 × 3-Matrix für die Transformationvom CIE XYZ-Farbraum in den individuellen RGB-Farbraum des Moni-tors zu erstellen. Dazu lässt man nacheinander die Farben Rot, Grün undBlau mit jeweils voller Intensität durch den Monitor ausgeben und misst je-weils den entsprechenden XYZ-Farbwerte der Monitorausgabe. Daraufhinschreibt man die XYZ-Werte der drei Messungen nacheinander als Spal-ten in eine Matrix und invertiert diese, um eine Entsprechung der genann-ten Matrix M zu erhalten. Dieses Verfahren stellt jedoch nur eine Vereinfa-chung dar und ist Bestandteil der insgesamt wesentlich komplexeren Mo-nitorkalibrierung.

Es gilt weiterhin zu beachten, dass sich XYZ-Farbwerte, welche durchTransformation eines Spektrums mithilfe der XYZ Colour Matching Func-tions entstanden sind, ungefähr zwischen 0 und 100 befinden, sich jedochim Allgemeinen nicht auf dieses Intervall (bezüglich dessen oberer Gren-ze) beschränken lassen, da das vorherige Spektrum einen höheren Dyna-mikumfang aufweisen kann, als man mit herkömmlichen Ausgabegerätendarstellen kann. Möchte man also nicht, dass (nach Umwandlung in einengeräteabhängigen Farbraum) Farbwerte außerhalb des Intervalls [0; 1] wieüblich während des Rendering-Vorgangs abgeschnitten und auf die jeweilsnächste Intervallgrenze gesetzt werden, sollte man schon die XYZ-Werteauf ebenjenen Bereich normieren. Diese Normierung kann linear oder nicht-linear erfolgen und wird auch Tone Mapping genannt.

18

Page 25: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

3 Implementierung

3.1 Verwendete Bibliotheken

Für den Renderer wurden im Rahmen dieser Arbeit ausschließlich folgen-de Bibliotheken verwendet:

• OpenGL (siehe [Khrb]) zur Erzeugung und Darstellung von 3D-Sze-nen und Programmierung der GPU mittels GLSL

• GLUT API (siehe [Khra]) zur schnellen graphischen Ausgabe

• C++ CSV Parser (siehe [Zed09]) für das Einlesen der Spektren ausCSV-Dateien

• NewMat C++ Matrix Class (siehe [Dav06]) zur Implementierung derRediskretisierung mittels Matrix-Multiplikation

3.2 Verwendete Daten

Um Beleuchtungssimulationen auf spektraler Ebene durchführen zu kön-nen, wurden Messdaten verschiedener Spektren verwendet. Diese wurdendabei in Intervallen von 10nm abgetastet, sodass das vom Menschen wahr-nehmbare Licht von 380nm bis 730nm auf 36 Messwerte je Spektrum ver-teilt ist. Die Einschränkung des wahrnehmbaren Bereichs auf bis zu 730nmstatt dem in Unterabschnitt Licht und Farbe genannten Wert von 780nm istauf fehlende numerische Stabilität und Relevanz bezüglich des vom Men-schen noch wahrgenommenen Teils des Lichtes jenseits von 730nm zurück-zuführen. Folgende Spektren wurden zur Verfügung gestellt:

• Remissionsspektren von den 140 Farbflächen des GretagMacbeth Di-gital ColorChecker SG (vgl. Abbildung 3.1)

• Lichtspektren von den Normlichtern D65, TL84 und A von Panto-ne sowie von einer 100W Halogenlampe, einer Halogenmetalldampf-lampe und einer Bogenlampe

Weiterhin wurden die spektralen Werte der CIE 1931 2-deg (Standard ob-server) XYZ Colour Matching Functions, ebenfalls in 10nm-Intervallen von380nm bis 730nm vorliegend (verfügbar unter [Col31]), verwendet, umdie aus der Simulation resultierenden Spektralfarben anschließend in denXYZ-Farbraum umzuwandeln.

19

Page 26: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Abbildung 3.1: GretagMacbeth Digital ColorChecker SG mit 140 Farbflächen

3.3 Vorkehrungen

Um spektrales Rendering – also das Berechnen von Reflexionen unter Zu-hilfenahme von diskretisierten Licht- und Remissionsspektren – mithilfeeines deferred-shading-Ansatzes zu implementieren, müssen verschiede-ne Überlegungen im Vorhinein angestellt werden. Wichtig ist vor allem dieFrage nach der Form, in der die gegebenen 36 Samples der jeweiligen Spek-tren für die Berechnung im Fragment-Shader vorliegen sollen. Weiterhinmuss entschieden werden, welche Daten der einzelnen 3D-Objekte im ers-ten Rendering-Durchgang für die spätere Verwendung (im zweiten Durch-gang) in den Texturen des G-Buffers gespeichert werden sollen und wiediese optimal auf die einzelnen Texturen verteilt werden können, um denSpeicher- und Zugriffs-Aufwand möglichst gering zu halten. Im Folgendenwerden diese und andere Fragen beantwortet.

20

Page 27: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

3.3.1 Deferred shading

Deferred shading wurde im Rahmen dieser Arbeit mithilfe folgender Tex-turen im RGBA32F-Format, welches vier Fließkommawerte gemäß der Farb-kanäle für rot, grün, blau und alpha (für Transparenz) mit einer Genauig-keit von 32bit je Wert speichert, implementiert:

Textur (1): Textur zur Speicherung der 3D-Position im Raum, ausKamera-Sicht (vier Werte)

Textur (2): Textur zur Speicherung der Normalen (drei Werte) undder diffusen Reflexionsfarbe (ein Wert, realisiert durch ei-ne eindeutige ID, welche die Zuordnung zum jeweiligenRemissionsspektrum möglich macht)

Diese zwei Texturen sind ebenso groß wie die gewünschte Ausgabeauf-lösung. Somit kann während des Fragment-Processings auf 3D-Position,Normale und Materialeigenschaften jedes Punktes zugegriffen werden, dernachher als Farbwert eines Pixels zu sehen ist. Abbildung 3.4 verdeutlichtdie Zusammensetzung der Daten in den zwei Texturen; Abbildung 3.2 undAbbildung 3.3 zeigen die Texturen (1) und (2), als würden sie direkt ausge-geben (RGB-codiert).

Abbildung 3.2: Textur (1) Abbildung 3.3: Textur (2)

21

Page 28: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Abbildung 3.4: Zusammensetzung der Texturen zur Implementation vondeferred shading

3.3.2 Spektrales Rendering

Für die Implementation von spektraler Beleuchtungssimulation durch de-ferred shading sind ebenfalls Texturen notwendig, damit der Fragment-Shader während seiner Ausführung auf die diskreten Spektren zugreifenkann. Folgende Texturen wurden im RGB32F-Format angelegt, um, andersals bei den oben erwähnten Texturen, ausschließlich drei Fließkommawer-te, mit je 32bit Präzision, pro Texel (texture element) speichern zu können.Diese werden wie folgt ausgenutzt:

Textur (4): Material-Textur zur Speicherung aller diskretisierten Re-missionsspektren der Szene

Textur (5): Licht-Textur zur Speicherung aller diskretisierten Licht-spektren der Szene

Textur (6): XYZ-Textur zur Speicherung der diskretisierten XYZ Co-lour Matching Functions

22

Page 29: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

In diesem Fall sind die Ausmaße der Texturen somit nicht von der Aus-gabeauflösung abhängig, sondern von der Anzahl der Samples je Spek-trum, dem Textur-Format und der Anzahl der zu speichernden Spektren.Hier wurde sich dafür entschieden, die Spektren als Zeilen in die Texturenzu schreiben und, wie oben erwähnt, pro Texel nur 3 Samples speichernzu lassen. Letzteres ist der Tatsache geschuldet, dass die drei Werte jedesTexels somit vollständig als farbigen Pixel darstellbar, nachvollziehbar undüberprüfbar sind, während sich beispielsweise die vierte Komponente derTexel in Textur (2), die eindeutige ID der Materialfarbe, nicht gleichzei-tig mit den drei Komponenten der Normalen zur Überprüfung darstellenlässt.

Die Szene, welche im Rahmen dieser Arbeit gerendert wurde, stellt die140 Farbflächen des in Abbildung 3.1 abgebildeten GretagMacbeth DigitalColorChecker SG mittig, von vorne und mit schwarzem Hintergrund dar,um neben späteren Performanztests bezüglich dieser Vielfalt an Material-spektren ebenfalls kurzerhand Farbeindrücke vergleichen und auf Fehleruntersuchen zu können. Die Szene beinhaltet eine Punktlichtquelle, wel-che im selben Punkt wie die Kamera respektive der Betrachter des Color-Checkers liegt. In Abbildung 3.5 sind finale Ausgaben der Szene zu sehen.Hierbei wurden die Farbfelder mit dem Normlicht D65 beziehungsweisedem Spektrum einer Halogenmetalldampflampe beleuchtet und 36 Samp-les je Spektrum zur Berechnung herangezogen.

Abbildung 3.5: Beispielhafte Bildschirmausgaben des implementierten Rende-rers. Verwendete Lichtquelle, links: D65, rechts: Halogenmetall-dampflampe, Anzahl Samples: 36

Da diese Szene also 140 Remissionsspektren mit jeweils 36 Samplesbeinhaltet, von denen je drei zu einem Texel zusammengefasst sind, hatTextur (3) somit eine Größe von 140 × 12 Texel, 140 Zeilen und 12 Spal-ten. Die oben erwähnte eindeutige ID für Materialfarben bezieht sich im

23

Page 30: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Übrigen genau auf die Position der Remissionsspektren in der Textur undbesitzt somit gültige Werte von 0 bis einschließlich 139. Um alle 6 gegebe-nen diskreten Lichtspektren einzeln als Lichtquelle auswählen zu können,werden diese ebenfalls gleichzeitig in Textur (4) zum Abruf bereitgehalten,wodurch diese Textur auf eine Größe von 6 × 12 Texel kommt. Textur (5)beinhaltet die diskreten XYZ Colour Matching Functions als Zeilen und hatsomit eine Größe von 6× 12 Texel.

All diese Größenangaben beziehen sich auf den Fall, dass alle 36 zurVerfügung stehenden Samples zur Berechnung herangezogen werden. Dadiese Arbeit jedoch auch zum Ziel hat, verschiedene Werte für die Anzahlder Samples auf deren resultierenden Berechnungsaufwand zu untersu-chen, kann es vorkommen, dass weniger als 36 Samples in einer Zeile einerTextur stehen. Dazu werden die diskreten Spektren mithilfe eines Rediskre-tisierungsprozesses, welcher in Unterabschnitt Rediskretisierung der spek-tralen Messwerte näher erläutert wird, auf eine beliebige kleinere Anzahlvon Samples übertragen, um somit in der Folge Rechenzeit zu sparen – na-turgemäß auf Kosten der Simulationsgenauigkeit. Tatsächlich wurde dasFüllen der Texturen jedoch so implementiert, dass die ursprüngliche Grö-ße der Texturen auch beibehalten wird, falls weniger Samples je Spektrumgespeichert werden müssen.

Die diskreten Spektren liegen in Form von CSV-Dateien (Comma-Separa-ted Values) vor, in denen die 36 Werte je Spektrum untereinander geschrie-ben stehen. Die verschiedenen Spektren stehen also als Spalten nebenein-ander und sind durch Semikolons getrennt. Zu Beginn des Programmswerden die vollen zur Verfügung stehenden Licht- und Remissionsspek-tren sowie die abgetasteten Sensitivitätskurven des CIE XYZ-Farbraums –mithilfe eines CSV-Parsers, erhältlich unter [Zed09] – aus diesen Dateiengelesen und in die Texturen (3), (4) und (5) geschrieben. Bei jeder Ände-rung der Simulationsgenauigkeit (Anzahl der Samples) geschieht dies er-neut und die Texturen werden, nach eventueller Projektion auf eine gerin-ger Anzahl an Samples, abermals mit Werten gefüllt.

Werden also oben genannte Texturen einmal mit 36 und einmal mit 24Werten je Spektrum gefüllt und anschließend einzeln und in RGB codiertauf die Ausgabeauflösung projiziert, ergeben sich die in den Abbildungen3.6 bis 3.8 bzw. Abbildungen 3.9 bis 3.11 gezeigten Ausgaben, welche zurbesseren Abgrenzung gegenüber dem Weiß des Hintergrunds grau um-rahmt wurden.

24

Page 31: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Abbildung 3.6: Material-Textur(36 Samples)

Abbildung 3.7: Licht-Textur (36Samples)

Abbildung 3.8: XYZ-Textur (36Samples)

Abbildung 3.9: Material-Textur(24 Samples)

Abbildung 3.10: Licht-Textur(24 Samples)

Abbildung 3.11: XYZ-Textur(24 Samples)

25

Page 32: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

3.4 Ablauf eines Rendering-Vorgangs

Nachdem die Vorüberlegungen erläutert wurden, wird nachfolgend dieAbfolge der wesentlichen Aktionen während eines einzelnen Rendering-Vorgangs (bei OpenGL unter der display-Methode bekannt) kurz beschrie-ben, um einen Überblick über den entwickelten Renderer zu geben. Ehernicht relevante Punkte werden dabei ausgelassen. Vor dem Start des Ren-derings an sich müssen natürlich die Texturen erstellt und beschrieben, so-wie die Shader geladen und die Parameter für den gewünschten OpenGL-Rendermodus gesetzt werden.

Zu Beginn eines Rendering-Vorgangs wird nachgeschaut, ob sich diegewünschte Anzahl der Samples geändert hat. Falls dem so ist, werdendie diskreten Samples, wie schon erwähnt, erneut aus den CSV-Dateiengelesen, eventuell rediskretisiert und anschließend in die drei Texturen zurSpeicherung der Spektren geschrieben. Daraufhin wird das erste Shader-Paar (nachfolgend mit texFill-Shader benannt), bestehend aus Vertex- undFragment-Shader, aktiviert und die Texturen für 3D-Position und Normaleplus Material-ID als render target eingestellt und vorsorglich geleert. Dasheißt, dass Vertex- und Fragment-Shader künftig auf diese zwei Texturenlesend sowie schreibend zugreifen können.

Anschließend wird die Kameraposition definiert und die schon beschrie-bene Szene gezeichnet. Dabei geschieht mithilfe der texFill-Shadern Fol-gendes: Der Vertex-Shader wendet die üblichen Transformationen zur Wei-terverarbeitung des Vertices auf diesen an, speichert währenddessen aberPosition und Normale des Punktes in Variablen, die er dem Fragment-Shader zugänglich macht. Dieser wird daraufhin nur für Fragmente auf-gerufen, deren zugehörige 3D-Punkte auch in der aktuellen Bildschirm-ausgabe zu sehen wären (würde man sie ausgeben), und speichert für ge-nau diese Fragmente 3D-Position und Normale in den zwei Texturen ab.Wie in Unterunterabschnitt Deferred shading erläutert, wird in der zweitenTextur ebenfalls eine eindeutige Material-ID, als vierten und letzten Fließ-kommawert, abgelegt. Diese ID wird dem Fragment-Shader jedoch nichtvom Vertex-Shader, sondern vom OpenGL-Programm, direkt während desZeichnens der verschiedenen Farbflächen, dem Fragment-Shader (als soge-nannte Uniform-Variable) übergeben.

Nachdem somit der erste von zwei Rendering-Schritten auf dem Wegzum vollständigen deferred shading beendet wurde, wird das zweite Sha-der-Paar, verantwortlich für die Beleuchtung und daher künftig mit ligh-ting bezeichnet, zur Benutzung aktiviert. Zudem werden die vorhin einge-stellten Texturen als render targets abgestellt und der somit als aktuellesZiel des Renderings gesetzte Framebuffer, der Bildspeicher der Grafikkar-te, welcher für die Bildschirmausgabe mit Farbwerten gefüllt wird, geleert.Im Anschluss daran werden sämtliche beleuchtungsrelevanten Daten perUniform-Variablen an das Shader-Paar übergeben. Diese enthalten unter

26

Page 33: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

anderem:

• Position und Einflussradius der Punktlichtquelle

• ID des aktuell verwendeten Lichtspektrums (aufgrundder Anzahl der Spektren zwischen 0 und einschließlich5 liegend)

• Höhe und Breite der drei Texturen, welche die diskretenSpektren enthalten

• aktuell gewünschte Anzahl der Samples

Im weiteren Verlauf wird ein bildschirmfüllendes Rechteck gezeichnet.Dies bewirkt, dass der aktuelle lighting-Fragment-Shader für alle Frag-mente der Ausgabeauflösung aufgerufen wird und somit für diese Frag-mente die jeweils resultierende Farbe durch Kombination der spektralenDaten, wie in Unterunterabschnitt N-Samples-Ansatz beschrieben, bestim-men und, nach Transformation in den sRGB-Farbraum, im Framebuffer anden jeweils entsprechenden Stellen des Ausgabefensters ablegen kann.

Damit ist auch der zweite Rendering-Schritt für deferred shading abge-schlossen. Der lighting-Vertex-Shader imitiert ausschließlich die OpenGLFixed Function Pipeline bezüglich der Vertex-Transformation und ist dahernicht relevant. Einzig das Tone Mapping, welches der lighting-Fragment-Shader ebenfalls übernimmt, um die XYZ-Farbwerte auf einen entspre-chenden Zahlenbereich für die spätere Transformation in den finalen RGB-Farbraum zu komprimieren, ist erwähnenswert und wird daher in Unter-unterabschnitt Tone Mapping nach Reinhard et al näher beleuchtet.

Ferner enthält der Renderer weitere Funktionen, wie die Möglichkeit,vorausberechnete RGB-Farbwerte der Lichtquellen und Materialien stattder spektralen Werte in den entsprechenden Texturen abzuspeichern, umsomit Vergleiche zwischen RGB- und spektraler Rechnung hinsichtlich ih-rer Performanz anstellen zu können. Kleinere Funktionen sind zudem dasmögliche automatische Abspeichern des Verlaufs der Bildwiederholrate (inframes/second, kurz: fps) über die Zeit, der Texturmodus, welcher die ver-wendeten fünf Texturen (in RGB codiert) auf dem Bildschirm ausgibt, unddie Möglichkeit, Pixel, deren RGB-Farbe im Resultat nicht darstellbar ist, daeiner der Farbwerte außerhalb des Intervalls [0; 1] liegt, blinken zu lassen.

3.5 Genauere Betrachtung einzelner Komponenten

Im Folgenden wird speziell auf die Komponenten Rediskretisierung undTone Mapping eingegangen. Vor allem die eingesetzte Methode der Redis-kretisierung wird genauer erläutert.

27

Page 34: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

3.5.1 Rediskretisierung der spektralen Messwerte

Die Rediskretisierung der Samples geschieht mittels diskreten Boxfunktio-nen, welche das diskrete Spektrum in n gleich große Intervalle aufteilen.Im Falle von kontinuierlichen Boxfunktionen hat in jedem dieser Interval-le genau eine Funktion einen konstanten Wert c > 0, sodass ihr Integral 1beträgt. Im Falle von diskreten Boxfunktionen muss somit die Summe derFunktionswerte gleich 1 ergeben.

Jedoch existiert dabei für diskrete Intervalle nicht immer eine gleichmä-ßig Einteilung, da sich die Intervallgrenzen ebenfalls nur an diskreten Posi-tionen befinden können. Somit gelten oben genannte Forderungen, dass anjedem Funktionswert genau eine Boxfunktion einen Wert größer 0 besitztund dass dieser Wert über den kompletten Definitionsbereich der Funkti-on konstant ist, für die diskrete Variante nicht. An folgendem Beispiel wirddies deutlich. Angenommen, man möchte das kontinuierliche Spektrumaus Abbildung 3.12 durch sechs diskrete Samples darstellen, so könnte mandies durch Abtasten mittels der Boxfunktionen aus Abbildung 3.13 errei-chen. Hat man daraus nun die sechs Werte aus Abbildung 3.14 erhaltenund möchte diese durch nunmehr vier Samples darstellen, ist dies durcheine Rediskretisierung mittels diskreter Boxfunktionen möglich, welche inAbbildung 3.15 zum besseren Vergleich ebenfalls in das komplette Spek-trum gezeichnet wurden. Wie man hieran erkennt, überlappen sich jeweilszwei der vier Boxfunktionen teilweise und keine der Boxfunktionen istmehr konstant.

Abbildung 3.12: KontinuierlichesSpektrum

Abbildung 3.13: Kontinuierliche Box-funktionen

Abbildung 3.14: Diskretes Spektrum

Abbildung 3.15: Diskrete Boxfunktio-nen

Um diskrete Spektren, vorliegend als Spaltenvektoren, nun zu redis-

28

Page 35: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

kretisieren, können diese von links mit einer Matrix multipliziert werden,welche oben genannten diskrete Boxfunktionen repräsentiert. Eine m × n-Matrix R ist somit in der Lage, einen n-dimensionalen auf einen m-dimen-sionalen Spaltenvektor L abzubilden. Gleichung 3.1 zeigt diesen Zusam-menhang nochmals.

~Lm = Rm×n · ~Ln (3.1)

Die WerteRj,i mit j ∈ [1..m] , i ∈ [1..n]

der Matrix R lassen sich wie in Gleichung 3.2 beschrieben berechnen, wo-bei die dafür nötigen Konstanten ilinks, irechts, jlinks und jrechts, welche dielinken und rechten Intervallgrenzen der i-ten respektive j-ten Boxfunktiondarstellen, in Gleichung 3.3 definiert und zusammen mit den möglichenFällen (a) bis (e) in Abbildung 3.16 veranschaulicht werden.

Rj,i =1

0, irechts ≤ jlinks (a)

0, ilinks ≥ jrechts (b)

irechts − jlinks, ilinks < jlinks (c)

jrechts − ilinks, irechts > jrechts (d)

m, sonst (e)

(3.2)

ilinks = (i− 1) ·mirechts = i ·mjlinks = (j − 1) · njrechts = j · n

(3.3)

Die Implementierung einer Funktion in C++, welche diese Rediskreti-sierungsmethode auf eine Eingabematrix (die gleich mehrere diskrete Spek-tren mit gleicher Anzahl an Samples als Spaltenvektoren enthalten kann)anwendet, gestaltet sich somit wie in Listing 3.1 dargestellt.

3.5.2 Tone Mapping nach Reinhard et al.

Um die XYZ-Farbwerte mit teilweise sehr hohem Dynamikumfang auf dasIntervall [0; 1] abzubilden, wurde der globale Tone-Mapping-Operator nachReinhard et al., zu finden in [RSSF02], implementiert. Dieses Verfahren hatdie Eigenschaft, sich sehr stark an den in der Fotografie genutzten Tone-Mapping-Techniken zu orientieren und dadurch vor allem helle Regionenzu komprimieren.

Listing 3.2 zeigt die Vorausberechnungen des Wertes für avgLuminance(mittlere Helligkeit aller Pixel), welcher für das Tone Mapping jedes Pixel-Farbwertes wichtig ist, jedoch natürlich nur durch eine Iteration über alle

29

Page 36: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Abbildung 3.16: Beispielfälle (a) bis (e) bei der Rediskretisierung (siehe Glei-chung 3.2)

Pixel berechnet werden kann. Da sich die zu rendernde Szene aber nichtändert (bis auf die Spektren der Lichtquelle), lässt sich dieser Wert für je-des diskrete Lichtspektrum vorausberechnen und während des Renderingsabfragen. In Listing 3.3 ist sodann die Implementation des globalen Tone-Mapping-Operators gelistet. Beide Listings sind in der Programmierspra-che Octave, welche dem gleichnamigen Open-Source-Projekt dient, gehal-ten. Für die Implementation in den Renderer wurde Listing 3.3 auf die Pro-grammiersprache GLSL portiert.

30

Page 37: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

1 Matrix rediscretize(int newSampleCount, intoldSampleCount, Matrix& samples)

2 {3 if (samples.Nrows() != oldSampleCount)4 {5 [...] // Warnhinweis wird ausgeben6 }78 int rows = newSampleCount, cols = oldSampleCount;9 Matrix R(rows, cols);

1011 double m = rows, n = cols;12 double iLinks, iRechts, jLinks, jRechts;13 double result;14 int i, j;1516 for (i = 1; i <= cols; i++)17 {18 for (j = 1; j <= rows; j++)19 {20 iLinks = (i - 1) * m;21 iRechts = i * m;22 jLinks = (j - 1) * n;23 jRechts = j * n;2425 if (iRechts <= jLinks) result = 0;26 else if (iLinks >= jRechts) result = 0;27 else if (iLinks < jLinks) result = iRechts -

jLinks;28 else if (iRechts > jRechts) result = jRechts -

iLinks;29 else result = m;3031 R(j, i) = result / n;32 }33 }3435 Matrix newSamples = R * samples;3637 return newSamples;38 }

Listing 3.1: Implementation der Rediskretisierungs–Methode

31

Page 38: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

1 % Hinweis: ’XYZ’ ist eine 3xN-Matrix, in der die XYZ-Werte aller Pixel der Ausgabeauflösung enthaltensind.

2 width = columns(XYZ);3 avgLuminance = 0;45 for i = 1 : width6 Yxy_Y = XYZ(2, i);7 avgLuminance += log10(Yxy_Y + 0.000001);8 endfor9

10 avgLuminance = exp((1/width) * avgLuminance)

Listing 3.2: Vorausberechnungen der Variablen ’avgLuminance’ desTone–Mapping–Operators nach Reinhard et al.

1 % Hinweis: ’avgLuminance’ steht aus obiger Berechnungzur Verfügung.

2 % XYZ -> Yxy conversion3 Yxy_Y = XYZ_Y;4 Yxy_x = XYZ_X / (XYZ_X + XYZ_Y + XYZ_Z);5 Yxy_y = XYZ_Y / (XYZ_X + XYZ_Y + XYZ_Z);67 % tone mapping by reinhard8 exposure = 0.72;9 whitePoint = 2.5;

10 Lp = Yxy_Y * exposure / avgLuminance;11 Yxy_Y = (Lp * (1.0 + Lp/(whitePoint * whitePoint))) /

(1.0 + Lp);1213 % Yxy -> XYZ conversion14 XYZ_X = Yxy_Y * Yxy_x / Yxy_y;15 XYZ_Y = Yxy_Y;16 XYZ_Z = Yxy_Y * (1.0 - Yxy_x - Yxy_y) / Yxy_y;

Listing 3.3: Implementation des globalen Tone–Mapping–Operators nachReinhard et al.

32

Page 39: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

4 Ergebnisse

Mithilfe der erwähnten Funktion des Renderers, Bildwiederholraten alsfps-Werte über eine bestimmte Zeit hinweg aufzuzeichnen und abzuspei-chern, wurden die in Abbildung 4.1 und Abbildung 4.2 abgebildeten Li-niendiagramme erstellt. Die Aufzeichnungen wurden mit einem System,bestehend aus dem Prozessor INTEL Core 2 Duo E6600 (2 × 2,4 GHz) undder Grafikkarte NVIDIA GeForce 7900 GT (mit 256 MB RAM), getätigt.

4.1 Performanz-Vergleich mit konventionellem RGB-Ansatz

Die Diagramme vergleichen Bildwiederholraten von spektralem Rende-ring mit 36, 30, 24, 18 und 12 Samples und dem Rendering mit im Vorausberechneten RGB-Farben für Licht und Materialien, welches das konven-tionelle RGB-Rendering-Verfahren simuliert. Zudem veranschaulichen sieden Einfluss der Ausgabeauflösung, welche sich naturgemäß direkt auf dieAnzahl der Texturzugriffe im Fragment-Shader auswirkt, auf die Bildwie-derholrate. Abbildung 4.1 bezieht sich auf eine Auflösung von 512 × 512Pixeln, während Abbildung 4.2 eine Auflösung von 1024× 1024 Pixeln zu-grunde liegt.

Bei der Betrachtung der Diagramme fällt auf, dass sich zwischen demRendering mit 36 Samples und der Simulation des RGB-Renderings einein beiden Diagrammen ähnliche Relation vermuten lässt, nämlich ein Fak-tor bezüglich der Performanz, welcher grob zwischen 1 : 2 und 1 : 3 liegt.Einfacher ausgedrückt bedeutet dies, dass sich auf Grundlage dieser Beob-achtungen die Aussage treffen lässt, Spektrales Rendering mit – durchausüblichen – 36 Samples pro Spektrum sei etwa drei mal so aufwendig wieder konventionelle RGB-Ansatz.

Weiterhin lässt sich anhand der Diagramme behaupten, dass der Auf-wand von spektralem Rendering nicht proportional zur Anzahl der ver-wendeten Samples pro Spektrum zunimmt, sondern hier eine Beziehungexistiert, welche den Aufwand mit stetig steigender Anzahl der Samplesimmer langsamer ansteigen lässt; der Aufwand steigt also weniger schnellan als die Anzahl der Samples.

Außerdem wurde die Vermutung bestätigt, dass sich die Komplexitätdes Renderings, bedingt durch den deferred-shading-Ansatz, proportionalzur Ausgabeauflösung verhält, denn die Erhöhung der Auflösung von 5122

auf 10242 Pixel resultiert annähernd in einer Vervierfachung des Aufwandsrespektive einer Viertelung der Bildwiederholraten.

Insgesamt lässt sich durch den Vergleich ein durchweg positives Fazitziehen, welches durchaus dazu anregen könnte, in Zukunft mehr Aufwandin den Versuch zu investieren, Farbe bezüglich Lichtreflexionen physika-lisch korrekter zu simulieren. Denn der Ansatz des spektralen Renderingsist scheinbar nicht derart komplex, wie ihm nachgesagt wird.

33

Page 40: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Abb

ildu

ng4.

1:Bi

ldw

iede

rhol

rate

nde

ran

gege

bene

nR

ende

ring

-Ver

fahr

enüb

erdi

eZ

eit,

Aufl

ösun

g:512×

512

Pixe

l

34

Page 41: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Abb

ildu

ng4.

2:Bi

ldw

iede

rhol

rate

nde

ran

gege

bene

nR

ende

ring

-Ver

fahr

enüb

erdi

eZ

eit,

Aufl

ösun

g:1024×

1024

Pixe

l

35

Page 42: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

5 Fazit

Durch die Nutzung von spektralem Rendering kann ein realistischerer Far-beindruck von computergenerierten Bildern erreicht werden. Dieser Vor-teil ist vermutlich besonders im Kontext von Augmented Reality bemerk-bar, da dort aufgenommene Bilder der Realität mit computergeneriertenverschmelzen. Unter der Voraussetzung, dass die Aufnahmeprozesse ei-ne hinreichende Farbtreue aufweisen, können somit möglicherweise unge-ahnt realistisch wirkende, durch die Computergrafik angereicherte Bilderder Realität erzeugt werden. Dies erfordert jedoch zusätzlich verbesserteMöglichkeiten, Farbmanagement zu betreiben, um erreichen zu können,dass gerenderte Bilder auf annähernd jedem Ausgabegerät einen gleichenFarbeindruck hervorrufen.

Abschließend lässt sich sagen, dass mittels spektralem Rendering heut-zutage die Möglichkeit, physikalisch annähernd korrekte Lichtreflexionenzu simulieren, in greifbare Nähe gerückt ist, da die benötigten Ressourcenmittlerweile zur Verfügung stehen.

Durch die steigende Leistungsfähigkeit der Grafikhardware wird diesesVerfahren künftig sicher auch für kommerzielle Projekte attraktiv werdenund es dadurch irgendwann möglicherweise schaffen, die Spezialisierungder Grafikhardware auf das System der RGB-Werte zu verdrängen. Dazubenötigt es jedoch auch eine Vielzahl an neuen Technologien, welche einespektrale Erfassung mit räumlicher Auflösung einfach und schnell ermög-licht, um so genügend sepktrale Eingabedaten für die Zukunft des Rende-rings zu erhalten.

36

Page 43: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

Literatur

[BD80] BOWMAKER, J. K. ; DARTNALL, H. J. A.: Visual pigments ofrods and cones in a human retina. In: The Journal of Physiology298 (1980), S. 501–511

[Bor91] BORGES, Carlos F.: Trichromatic approximation for computergraphics illumination models. In: SIGGRAPH ’91: Proceedingsof the 18th annual conference on Computer graphics and interactivetechniques. New York, NY, USA : ACM, 1991. – ISBN 0–89791–436–8, S. 101–104

[CIE31] CIE: Commission Internationale de l’Eclairage Proceedings. Cam-bridge, UK : Cambridge University Press, 1931

[Col31] COLOR AND VISION RESEARCH LABS (Hrsg.): CIE 1931 2-degXYZ Colour Matching Functions. Version: 1931. http://www.cvrl.org/, Abruf: 22.09.2010

[Dav06] DAVIES, Robert: NewMat C++ Matrix Class. Version: 2006.http://ideas.repec.org/c/cod/ccplus/newmat.html, Abruf: 19.09.2010. C/C++ codes

[GM09] GIORGIANNI, Edward J. ; MADDEN, Thomas E.: Digital ColorManagement: Encoding Solutions. Second Edition. Hoboken, NJ,USA : John Wiley & Sons, 2009. – ISBN 047051244X

[Gos08] GOSSOW, David: Effiziente Verfahren zum Rendern von Mate-rialfarben unter beliebiger Beleuchtung, Fachbereich Informatik,Institut für Computervisualistik, Universität Koblenz-Landau,Campus Koblenz, Studienarbeit, 2008

[Khra] KHRONOS GROUP (Hrsg.): GLUT - The OpenGL Utility Tool-kit. http://www.opengl.org/resources/libraries/glut/, Abruf: 07.09.2010

[Khrb] KHRONOS GROUP (Hrsg.): OpenGL. http://www.opengl.org/, Abruf: 07.09.2010

[Küp04] KÜPPERS, Harald: Das Grundgesetz der Farbenlehre. Köln : Du-Mont Literatur und Kunst Verlag, 2004. – ISBN 3832110577

[Lin10] LINDBLOOM, Bruce: Bruce Lindbloom’s web site. Version: 2010.http://www.brucelindbloom.com/, Abruf: 22.09.2010

[NVI06] NVIDIA CORPORATION (Hrsg.): API-Definition zurOpenGL-Extension EXT_geometry_shader4. Version: 2006.http://www.opengl.org/registry/specs/EXT/geometry_shader4.txt, Abruf: 07.09.2010

37

Page 44: Deferred shading mit spektralem Rendering auf der GPUcg/Bachelorarbeiten/BA_AndreasHell... · Fachbereich 4: Informatik Deferred shading mit spektralem Rendering auf der GPU Bachelorarbeit

[Pee93] PEERCY, Mark S.: Linear color representations for full speedspectral rendering. In: SIGGRAPH ’93: Proceedings of the 20thannual conference on Computer graphics and interactive techniques.New York, NY, USA : ACM, 1993. – ISBN 0–89791–601–8, S.191–198

[RLKG+09] ROST, Randi J. ; LICEA-KANE, Bill ; GINSBURG, Dan ; KES-SENICH, John M. ; LICHTENBELT, Barthold ; MALAN, Hugh; WEIBLEN, Mike: OpenGL Shading Language. Third Editi-on. Reading, MA, USA : Addison-Wesley, 2009. – ISBN0321637631, 9780321637635

[RSSF02] REINHARD, Erik ; STARK, Michael ; SHIRLEY, Peter ; FERWER-DA, James: J.A.: Photographic tone reproduction for digitalimages. In: Proc. of SIGGRAPH’02. New York, NY, USA :ACM Press, 2002, S. 267–276. – Full paper available at http://www.cs.utah.edu/~reinhard/cdrom/

[SACM96] STOKES, Michael ; ANDERSON, Matthew ; CHANDRASEKAR,Srinivasan ; MOTTA, Ricardo: A Standard Default Color Spacefor the Internet - sRGB. Version: 1996. http://www.w3.org/Graphics/Color/sRGB/, Abruf: 22.09.2010

[Wik10a] WIKIMEDIA FOUNDATION (Hrsg.): (Example pictures for) De-ferred Shading. Version: 2010. http://en.wikipedia.org/wiki/Deferred_shading, Abruf: 01.10.2010

[Wik10b] WIKIMEDIA FOUNDATION (Hrsg.): Matrix multiplicati-on – Hadamard product. Version: 2010. http://en.wikipedia.org/wiki/Matrix_multiplication#Hadamard_product, Abruf: 01.10.2010

[WP98] WATT, Alan ; POLICARPO, Fabio: The Computer Image. Rea-ding, MA, USA : Addison-Wesley, 1998. – ISBN 0201422980

[Zed09] ZEDWOOD DIGITAL (Hrsg.): C++ CSV Parser.Version: 2009. http://www.zedwood.com/article/112/cpp-csv-parser, Abruf: 19.09.2010. C/C++ codes

38