8
CG (Subject) / Normalmapping (Lesson)
- Wozu Normal Mapping - Texturen für Beleuchtungsmodelle simulieren - Vertices und Texels auch Höhenwerte übergeben -> Relief, aus dem im Shader Normale approximiert wird (Selbstverschattung nicht möglich)
- Implementierung vom Normalmapping Die Normalen werden als Farbtextur gespeichert. Die x,y,z-Werte der Normalen werden zu RGB-Werten. Eine Height-Map (Graustufen) kann im Alphakanal mitgespeichert werden.
- Wo befinden sich die Normalen in der NormalMap im lokalen KS der Fläche (Tangenten-Space) -> Zur Beleuchtung dieses System in Weltkoordinaten überführen oder Lichtquelle in Koordinatensystem, letzeres weniger rechenintensiv
- Wie berechnet sich die Position der Lichtquelle im Tangentenspace? über Skalarprodukte als Matrixprodukt Position Lichtquelle = (Vektor Tangente , Vektor Bitangente, Vektor Normale) * lw
- Wie werden t und b Vektoren berechnet? Im Regelfall verwendet das Polygon nur einen Ausschnitt der Normalen-Textur. Es müssen also die t- und b- Achsen der gesamten Texur (im Welt-KS) bestimmt werden. Die Verbindungsvektoren der Polygon-Eckpunkte ergeben zwei Vektoren u und v , welche auf der Textur liegen.
- Bump Mapping - Pro Vertex Tangente und Bitangente berechnen - Vertex Shader = Lichtvektor in Tangentenspace transformiert - Fragment Shader = mittels interpoliertem Lichtvektor und Normal-Map Beleuchtungsmodell berechnen
- Prarallax Mapping Normalenberechnung pro Fragment -> Texturkoordinaten abhängig von der Blickrichtung verschoben werden können Aus Height Map (Alpha-Kanal der Textur) und Winkel T zwischen Blickrichtung und Normale -> Berechnen des Offsets, um welchen Textur verschoben wird Delta u = tan T * h
- Sphere Map Die Umgebung wird durch eine Textur repräsentiert, Spiegelungen durch dynamisch berechnete Texturkkoordinaten =^ Othografische Einheitskugel um den Ursprung eines Objektes Berechnung im Kamera Koordimatensystem, view Vektor wie oben reflektiert um r zu erzeugen
Advertisement