architektur und programmierung von grafik- und ... · deferred shading - eine methode, bei der die...
TRANSCRIPT
Architektur und Programmierung von Grafik- undKoprozessoren
Rendering Algorithmen
Stefan Zellmann
Lehrstuhl fur Informatik, Universitat zu Koln
SS2018
Lernziele
1. Industrierelevante 3D Rendering Algorithmen - wir lernendrei Algorithmen kennen, die derzeit in Industrie undWissenschaft fur “Wissenschaftliche Visualisierung,“Spielegrafik” und “Photorealistische Grafik” relevant sind.
Rasterisierung - auf Grafikkarten als “fixed-function”implementiert, wird studiert, um spater GPU Architekturen zuverstehen.
Deferred Shading - eine Methode, bei der die fixed-functionGrafik Pipeline mit Beleuchtung im Bildraum kombiniert wird.
Ray Tracing - mit physikalisch basiertem Rendering basierendauf Strahlverfolgungsmethoden wird eine alternative Familievon Rendering Algorithmen eingefuhrt, die wir spater imThemengebiet GPGPU weiter studieren.
2. Paralleles Rendering - die Studenten lernen RenderingAlgorithmen fur parallele Architekturen mit geteiltem undverteiltem Speicher kennen.
Konzepte und Definitionen
Grundlegendes
Rendering
Der Zweck von 3D Computer Grafik ist es, ausgehend von einersystematischen Beschreibung von in einer virtuellen,dreidimensionalen Welt positionierten Entitaten 2D Rasterbilder zuerzeugen. Der damit einhergehende Prozess nennt sich Rendering.
Echtzeit Rendering Algorithmus
Rendering Algorithmus, der neue Bilder immer mit so niedrigerLatenz rendern kann, dass das menschliche Auge den Ubergangzwischen den Bildern als kontinuierlich wahrnimmt.
Fullratenlimitierung
Wenn die Rendering Performanz (oft gemessen in Frames proSekunde, FPS) proportional zur Bildauflosung ist, bezeichnet manden Rendering Algorithmus als fullratenlimitiert (engl.: fill ratelimited).
Vereinfachende Annahmen
Echtzeit Rendering Algorithmen treffen i. d. R. die folgendenAnnahmen.
Wir rendern solide Objekte, die sich in einem Vakuumbefinden.
Licht verhalt sich entsprechend Teilchen (Photonen), dieentlang gerader Bahnen verlaufen (Licht/Materie Interaktionunabhangig von Wellenlange des Lichts).
Es besteht keine Zeitabhangigkeit, solange Beschreibung dervirtuellen Welt unverandert.
Mit zunehmender Compute Power und/oder abnehmendenAnforderungen an Antwortzeiten werden diese Annahmen relaxiert.
Lichttransportgleichung
Die “ultimative”, dem Rendering Prozess zu Grunde liegendeGleichung ist die Lichttransportgleichung. In ihrer einfachsten Form(Vakuum, keine Wellenlangenabhangigkeit, keine Zeitabhangigkeit)lautet sie:
L(x, ωo) = Le(x, ωo) +
∫Ωf (x, ωi , ωo)L(x, ωi )cos(θi )d ωi . (1)
Sie wird uns im Verlauf der Vorlesung wieder begegnen.
Take-Away heute:
Wir wollen die ausgehende Lichtintensitat von Punkt x inRichtung ωi bestimmen.
Dazu integrieren wir das Licht, das aus allen Richtungenomegai aus der Hemisphare Ω in Richtung x reflektiert wird.
Die Gleichung ist rekursiv.
Polygone
Wir betrachten lediglich flache 3D Oberflachen reprasentiert durchPolygone. Mit diesen kann man die infinitesimal dunnen Ubergangezwischen zwei Medien (etwa Luft und Stein) modellieren. Wirabstrahieren (ohne Beschrankung der Allgemeinheit) davon, dassMaterialen eine Dicke haben. Das Dreieck ist das Basisprimitiv, mitHilfe dessen man alle anderen (konvexen oder konkaven) Polygonebeschreiben kann.
Dreiecksnetze
Dreiecksnetze werden aus Einzeldreiecken gebildet. Mit Hilfe vonDreiecksgeometrie lassen sich komplexe Strukturen erzeugen.
Abbildung: Modelle: Stanford Bunny (Stanford 3D Scanning Repository)und Blender 2.77 Racing Car (Pokedstudio, CC-BY-SA), Rendering:Stefan Zellmann
Oberflachennormalen
Einheitsvektoren, die senkrecht zur Oberflache sind.Elementarelement in der 3D Computergrafik, z. B. furOberflachenbeleuchtung und Sichtbarkeitstests.
Z
Y
Oberflachennormalen
Einfache “Dot-Product” Operationen mit Oberflachennormalen N.Sei V Einheitsvektor zum Betrachter, sei L Einheitsvektor zu einerPunktlichtquelle.
N · L < 0: Lichtquelle beleuchtet Objekt von hinten.
N · L ∈ (0..1]: Einfach(st)es Beleuchtungsmodell modelliertLicht proportional zum Winkel zwischen N und L.
N · V < 0: einfacher Sichtbarkeitstest fur geschlosseneObjekte.
Vertexnormalen
Normalen werden haufig fur jeden mit den Dreiecken assoziiertenVertex gespeichert. Dann werden meist alle benachbartenOberflachennormalen gemittelt.
for all v ∈ Vertices dovn← Vec3(0) ▷ Initalisiere mit 0-Vektorfor all n ∈ AdjacentSurfaceNormals do
vn← vn + nend forvn← vn / NumAdjacentNormal
end for
Werden solche Normalen zur Beleuchtung verwendet, ergibt sichauch fur niedrig aufgeloste Dreiecksstrukturen die Illusion, dasskantige Oberflachen glatt sind.
Vertexnormalen
Face Normals Interpolated Vertex Normals
Vertexnormalen werden (i. d. R. linear) uber derDreiecksoberflache interpoliert.
Vertexnormalen
Abbildung: 3D Model: Yusuke Yamada, CC-BY 4.0https://github.com/lighttransport/lighttransportequation-glass,Rendering: Stefan Zellmann
Affine Transformationen
Transformationen, die die Topologie erhalten, z. B. Bewegungeines Objekts im 3D Raum, Kamerafahrt durch eine 3DSzene, etc.
Die drei wichtigsten affinen Transformationen sind Rotation,Translation und Skalierung.
Diese drei Transformationen lassen sich in einer 4× 4 Matrixzusammenfassen und akkumulieren (Multiplikation).
Mit dieser Matrix kann man die Dreiecksverticestransformieren. Da wir 3D Primitive mit 3D Vertices haben,setzen wir die 4. Koordinate (“w” Koordinate) auf 1.
Affine Transformationen
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Y
Z
X
Mit Hilfe von Rotation um die kartesischen Hauptachsen,Translation/Verschiebung und Skalierung kann man eine virtuelleKamera im Raum positionieren. Die Kameratransformation lasstsich als eine 4× 4 Transformationsmatrix ausdrucken, die dieEinzeltransformationen akkumuliert.
Model- und Viewing Transformation
Wir gehen im Weiteren (o. B. d. A.) davon aus, dass wirstatische Geometrie anzeigen. Es entfallt daher die sog.“Model Transformation”, die Einzelobjekte vom“Weltkoordinatensystem” in ein spezifisches“Objektkoordinatensystem” transformiert.
Kameratransformation und Welttransformation unterscheidensich nur bzgl. des Bezugssystems. Wir gehen im Weiterendavon aus, dass es eine gemeinsame Transformationsmatrixgibt, die beide Transformationen subsummiert. Wir sprechenverallgemeinernd von der “Viewing Transformation”.
Perspektivische Transformation
Definiere Sichtbares Frustum mithilfevon Kamerablendenoffnungswinkel fsowie zwei Sichtbarkeitsebenen znearund zfar .
Objekte jenseits des Frustums sindunsichtbar (sie werden “geclipped”).
Es gibt eine 4× 4 Matrix (die“Projektionsmatrix”), dieVertexpositionen vom SichtbarenFrustum im Weltkoordinatensystem inden Einheitswurfel uberfuhrt.
Perspektivische Transformation
“Frustum Method”:
PR =
2near
right−left 0 right+leftright−left 0
0 2neartop−bottom
top+bottomtop−bottom 0
0 0 −(far+near)far−near
−2far ·nearfar−near
0 0 −1 0
Perspektivische Transformation
“Perspective Method”:
PR =
1
aspect·tan(FOV /2) 0 0 0
0 1tan(FOV /2) 0 0
0 0 near+farnear−far
2near ·farnear−far
0 0 −1 0
Perspektivische Transformation
Kamerakoordinaten
-z
camera coordinates
world coordinates
-z
Transformation 1: Weltkoordinaten ⇒ Kamerakoordinaten (auchAugkoordinaten): Betrachter im Ursprung, Blickrichtung entlang“negativem z”.
Perspektivische Transformation
Orthographische Koordinaten
camera coordinates
-z
orthographic coordinates
Transformation 2: uberfuhre in orthographischesKoordinatensystem.
Auch: Clip Koordinaten – APIs fuhren in diesemKoordinatensystem Clipping mit z-Near/z-Far sowie anderen,benutzerdefinierten Clip Ebenen durch.
Perspektivische Transformation
Normalisierte Geratekoordinaten
normalized device coordinatesorthographic coordinates
-1.0 1.0
1.0
-1.0
Transformation 3: uberfuhre in normalisiertes orthographischesKoordinatensystem (APIs: “normalized device coordinates”(NDC)). Wurfel im Ursprung mit Kantenlange 2. Orientierung jenach API unterschiedlich (z. B. OpenGL: “linkshandig”, Vulkanrechtshandig).
Perspektivische Transformation
Fensterkoordinaten
normalized device coordinates
-1.0 1.0
1.0
-1.0
window coordinates
y1 1.0
image plane
y2
0.0
Transformation 4: Viewport Transformation uberfuhrt von NDC inFensterkoordinaten. Je nach API Ursprung links unten (OpenGL)oder links oben (Direct3D, Vulkan).
Perspektivische Transformation
Orthographische Projektion
window coordinates
y1 1.0
image plane
y2
0.0
Projektion auf Bildschirmebene mit orthographischer Projektioneinfach. Daher wird perspektivische Projektion auf orthographischeProjektion zuruckgefuhrt.
Transformationen
Bemerkung zu Transformationen
Die mit Transformationen einhergehenden Konzepte sinddeutlich komplexer als hier angedeutet. Transformationenwerden in Tiefe in Computergrafik 1 behandelt.
Fur uns ist es wichtig zu verstehen: dass mit einer Kameraeinstellung zwei Transformationen
verbunden sind: die Perspektivische Transformation sowie dieViewing Transformation,
dass sich die Viewing Transformation andert, wenn sich dieKamera bewegt,
dass die Perspektivische Transformation intrinsischeKameraparameter speichert, die sich selten verandern,
und dass jede der beiden Transformationen durch eine einzelne4× 4 Matrix ausgedruckt wird, mit der die Vertices homogen(d. h. w = 1) transformiert werden.
Scan Konvertierung
Bildet ein transformiertes 3D Primitiv auf ein 2D Raster ab.
Basisoperation fur Rasterisierungsalgorithmus.
Es gibt eine Vielzahl von Verfahren fur verschiedene 3DPrimitive. Einfache Verfahren gehen zeilenweise das Bildrasterab und uberprufen fur ein Primitiv, ob es die Rasterposition(Pixel) uberdeckt.
Uns interessieren Verfahren, die effizient in paralleler Hardwareimplementierbar sind.
Scan Konvertierung
“Traditionell”: rastere Kanten des Polygons mit Algorithmuswie Bresenham oder DDA.
Interpoliere z-Werte und Vertex Attribute (Farbe, Normalen,Texturkoordinaten, etc.) zwischen den Kanten mit ScanlineVerfahren.
Vergleiche CGV 1.
Problem: sowohl Algorithmen zur Kantenberechnung als auchScanline Konversion seriell, ungunstig fur paralleleArchitekturen zu adaptieren.
Scan Konvertierung
Es existieren Scan Konvertierungs Algorithmen, die geeigneterfur parallele Architekturen wie GPUs sind.
Pineda: A Parallel Algorithm for Polygon Rasterization(Siggraph 1988).
A
B
C+
-
-
-
Scan Konvertierung
Einfache Idee: Kantengleichungen determinieren Halbraume. Unionder Halbraum ⇒ Dreiecksinnenflache. Gegeben: Dreieck v1, v2, v3,wobei vix und viy Rasterposition x- und y -Richtung.
1. Berechne Umbox von v1, v2 und v3
2. Berechne Kantenvektoren:
e1 = v1 − v3
e2 = v2 − v1
e3 = v3 − v2
3. Fur jedes Pixel x , y in Umbox parallel bestimme ob innerhalbDreiecksinnenflache gemaß
Ei (x , y) = (x − vix)eiy − (y − viy )eix , i ∈ 1, 2, 3.
4. Ei > 0⇒ innerhalb Dreiecksinnenflache, Ei = 0⇒ trifftKante, sonst außerhalb.
Scan Konvertierung
Besondere Eigenschaft:
Ei (x + 1, y) = Ei (x , y) + eiy ,
Ei (x − 1, y) = Ei (x , y)− eiy ,
Ei (x , y + 1) = Ei (x , y)− eix ,
Ei (x , y − 1) = Ei (x , y) + eix .
Ideal fur Rendering mit kleinen Kacheln: bestimme Ei (x , y) fur einPixel aus einer Kachel von z. B. 8× 8 oder 16× 16 Rasterpunkten.Die ubrigen Rasterpunkte konnen mit einfacher Integer Additiongetestet werden ⇒ ideal fur Hardware Implementierung.
Scan Konvertierung
Besondere Eigenschaft:
Ei (x + 1, y) = Ei (x , y) + eiy ,
Ei (x − 1, y) = Ei (x , y)− eiy ,
Ei (x , y + 1) = Ei (x , y)− eix ,
Ei (x , y − 1) = Ei (x , y) + eix .
Die Eigenschaft fuhrt Datenabhangigkeit ein. Abwagung: eherDatenabhangigkeit und dafur nur Integer Addition, oderParallelismus, dafur Integer Vektoroperation.
Der Algorithmus wird uns bei Besprechung von Raster Engines derGPU Pipeline wiederbegegnen.
Lichtquellen
Verschiedene Arten von Licht-Oberflachen Interaktion.
Manche 3D Entitaten (z. B. Festkorper, gasformigeAusdehnungen, etc.) konnen Licht emittieren.
Je nach Realismusgrad werden solche Entitatenunterschiedlich modelliert.
In einfachen Fallen modelliert man Lichtquelle ansausdehnungslosen Punkt mit konstanter Intensitat.
In komplexeren Szenarien simuliert man lichtemittierendeObjekte als Volumen oder mit Hilfe bestimmterMaterialeigenschaften.
Wir sprechen verallgemeinernd von Lichtquellen. Fur jedeLichtquelle muss es zumindest moglich sein:
die ankommende Intensitat an einem Punkt x im Raum, sowie einen Vektor hin zur Lichtquelle zu ermitteln.
Lichtquellen
Lichtemittierende Materialien
Materialeigenschaften
Wahrgenommene Farbe (Illuminanz) von Objekten durchTeilcheninteraktion von Licht und Materie.
Farbwahrnehmung: photometrische Großen, (Luminance,Luminous Flux, Illuminance,..), Licht/Materie Interaktion:radiometrische Großen (Radiance, Radiant Flux, Irradiance,..).Werden im Vorlesungsteil zu Anwendungen ausfuhrlichbehandelt.
Wichtig furs erste: sowohl Licht als auch Materie furFarbwahrnehmung verantwortlich, daher werden furOberflachen Materialeigenschaften definiert, die aufunterschiedliche Art gespeichert werden konnen.
Materialeigenschaften
Diffuse MaterialienLicht dringt in Objekt ein und tritt an zufalliger Position wiederaus ⇒ “Subsurface Scattering”.
ωi ωo
Materialeigenschaften
Diffuse MaterialienEchtes Subsurface Scattering aufwendig zu berechnen. Aus einerEntfernung sieht es außerdem im Mittel so aus, als wareAustrittsposition des reflektierten Lichts fur alle eintreffendenLichtteilchen (Photonen) gleich.
Daher haufig Approximation durch einfaches diffusesBeleuchtungsmodell.
Lr = max(0, dot(ωi , n) (2)
Materialeigenschaften
Diffuse Materialien
ωi ωoωi ωo
ωi ωoωi ωo
ωi ωoωi ωo
ωi ωoωi ωo
ωiωi
Materialeigenschaften
Raue Oberflachen
Werden i. d. R. statistisch als sog. Mikrofacetten modelliert.
Reflektieren Licht in praferierte Richtung.
Selbstverschattung und Okklusion zwischen Mikrofacettenwerden nicht explizit (Geometrie) sondern statistischmodelliert.
Materialeigenschaften
Raue Oberflachen
Abbildung: Mikrofacetten werden statistisch als Materialeigenschaftmodelliert. Abbildung in Anlehnung an Akenine Moller, Haines, Hoffman:Real-Time Rendering 3rd edition (2008).
Texture Mapping
Kleine Details bildet man aus Performanz- oderSpeicherplatzgrunden haufig nicht als Geometrie ab, sondernrendert stattdessen grob aufgeloste, flache Polygone und“uberzieht” diese mit Detailinformation aus 2D Rasterbildern.
Zu den Vertices werden Texturkoordinaten gespeichert, die indie 2D Rasterbilder zeigen. Bei der Abbildung vonTexturkoordinaten auf Rasterpunkte wird i. d. R. linearinterpoliert.
Texture Mapping
Lineare Interpolation beim Texture Mapping
[u|v] = (0.4,0.4)
Barycentric Interpolation
a.)
c.)
b.)
lerp(tc1,tc2, u)
(1-u) * tc1 + u * tc2
lerp(tc1,tc3, v)
(1-v) * tc1 + v * tc2
lerp(tc2,tc3, 1-u-v)
(1-(1-u-v)) * tc1 + (1-u-v) * tc2
Linear Interpolation
Bilinear Interpolation
Texture Mapping
Tabelle: Crytek Sponza 3D Modell: Frank Meinl, (CC-BY 3.0),Rendering: Stefan Zellmann
Normal Mapping
Variiere Normalenrichtung auf flacher Oberflache gemaßkomplexerer Geometrie. Geringer Speicherbedarf, Illusionfunktoniert, wenn Oberflache aus Entfernung betrachtet wird.
Normal Mapping
Abbildung: generiert mit https://cpetry.github.io/NormalMap-Online/
Bemerkungen
Makroskopisch vs. Mikroskopisch: Mikroskopisch: modelliere Rauheit als Teil der Materialfunktion
(z. B. BRDF, Gegenstand von Vorlesungsteil “Anwendungen”). Mesoskopisch: Texturen, perturbierte Normalen etc. (s. u.). Makroskopisch: Oberflachendetails explizit als Geometrie. (Real-Time Rendering Pramisse: wenig Geometrie!)
Physikalisch basierte Renderer verwenden oft mehrereTexturen fur Materialeigenschaften:
Diffus Normalen Albedo Rauheit ...
Tiefentest
Rasterpunkte: Tiefenpuffer Datenstruktur speichert Fragment mitz-Koordinate am nachsten zum Betrachter.
Alpha Blending: teiltransparente Fragmente determinierenzusammen Farbe an Bildrasterposition (Pixel).
Alpha Blending
Teiltransparente Geometrie
Abbildung: Teiltransparente Geometrie muss tiefenkorrekt gezeichnetwerden, da Alpha Blending Operation nicht kommutativ.
Alpha Blending
Der einfachste Ansatz ist es, bei jeder Kameraanderung (nur)die teiltransparente Geometrie gemaß der Blickrichtung zusortieren.
Fragmente, die sich im weiteren Verlauf ergeben, blendet manz. B. durch Vormultiplikation der Eingangsfarbe mit Alphaund der over Operation:
cdst = csrc + (1− αsrc)cdst , (3)
wobei Subscript src und dst jeweils Eingangs- undAusgangsfarbe bezeichnen.
Weiterfuhrende Methoden fur tiefenkorrektes Alpha Blending:Depth Peeling, Linked Lists auf Fragment-Basis.
Double Buffering
B0 B1
Graphic Controller,Graphic Controller,DAC, etc.DAC, etc.
Swap
Swap
Draw Commands