Architektur und Programmierung von Grafik- und ... · Deferred Shading - eine Methode, bei der die...

Post on 19-Aug-2019

224 views 0 download

Transcript of Architektur und Programmierung von Grafik- und ... · Deferred Shading - eine Methode, bei der die...

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