die welt der shader universität zu köln ws 14/15 softwaretechnologie ii (teil 1) prof. dr. manfred...
TRANSCRIPT
![Page 1: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/1.jpg)
Die Welt der ShaderDie Welt der Shader
Universität zu KölnWS 14/15 Softwaretechnologie II (Teil 1)Prof. Dr. Manfred ThallerReferent: Lukas Kley
Fortgeschrittene Techniken III
![Page 2: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/2.jpg)
GliederungGliederung1. Was ist ein Shader?2. Verschiedene Shader
2.1 Vertex-Shader2.2 Pixel-Shader
3. Einsatzbeispiele3.1 Per-Pixel-Beleuchtungsmodell3.2 Realistische Wasseroberflächen
![Page 3: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/3.jpg)
1. Was ist ein Shader?1. Was ist ein Shader?
● Kleines Programm, das einmal pro Vertex oder Pixel aufgerufen wird
● Wird vom Grafikprozessor ausgeführt=> sehr schnell
![Page 4: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/4.jpg)
● Geschrieben in speziellen Shader-Assembler-Sprachen
● Seit DirectX 9 innnerhalb einer Effektdatei auch in gewöhnlicher C(++)-Syntax -> High Level Shader Language (HLSL)
![Page 5: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/5.jpg)
● Einsatzgebiet:Aufwändige Spezialeffekte
Fixe Rendering-Pipeline wird durch Shadereinsatz selbst definierbar
![Page 6: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/6.jpg)
2. Verschiedene Shader2. Verschiedene Shader2.1 Vertex-ShaderBeispiel:
Glow-Effekt:
“Hülle” mit Alpha-Blending in der Glühfarbe
Entstehung der Hülle: Jeder Vertex wird entlang seines Normalenvektors verschoben
![Page 7: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/7.jpg)
![Page 8: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/8.jpg)
2.2 Pixel-Shader
Meist kleiner als Vertex-Shader=> werden öfter aufgerufen
Interessant für Per-Pixel Beleuchtung (Bump-Mapping)
Darstellung detaillierter Oberflächen (Wasser, Haut)
![Page 9: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/9.jpg)
![Page 10: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/10.jpg)
3. Einsatzbeispiele3. Einsatzbeispiele3.1 Per-Pixel Beleuchtungsmodell
Nachteile des Direct3D-Beleuchtungsmodells:
Nur auf Vertexbasis
Keine eigenen Lichtberechnungen (Normal-Mapping)
Begrenzte Anzahl von Lichtquellen
![Page 11: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/11.jpg)
Multi-Pass-Verfahren
Anzahl an Registern bei frühen Pixel-Shader Versionen stark begrenzt=> mehrere Durchgänge (Passes) nötig
Ambient-Pass
Pro Lichtquelle ein weiterer Pass (mit Alpha-Blending)
![Page 12: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/12.jpg)
![Page 13: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/13.jpg)
Single-Pass-Verfahren (spätere Vers.)
Einschränkungen der früheren Versionen werden gelockert=>Mehrere Lichtquellen in einem Pass
Seperate Pixel-Shader für 1,2,3,4 Lichtquellen
Vorteil ggü. Multi-Pass:Vertex-Shader wird nur ein Mal aufgerufen
![Page 14: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/14.jpg)
Normal-Mapping
Normalenvektor bestimmt, wie viel Licht eine Oberfläche empfängt
x-, y- und z-Komponenten eines Normalenvektors in den drei Farbkanälen der Textur kodieren:
Vektor (1,0,-0,5) => Farbe (255,127,63)Transformation der Normalenvektoren in
Weltkoordinaten:
![Page 15: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/15.jpg)
![Page 16: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/16.jpg)
3.2 Realistische WasseroberflächenWasseroberflächen reflektieren und brechen Licht
Je flacher der Einfallswinkel des Lichtstrahls auf die Oberfläche, desto höher der Reflexionsanteil
Ansatz: Zwei Render-Targets (Reflexion und Brechung), ein Pixel-Shader
Pixel-Shader sampelt beide Render-Targets und rechnet gewichtet nach Lichtanteil zusammen
Zufällige Verschiebung der Texturkoordinaten für Welleneindruck
![Page 17: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/17.jpg)
ReflexionClipping-Ebene:
Clipping-Ebene an der Wasseroberfläche
Vertex-Shader übergibt Entfernung jedes Vertex zur Clipping-Ebene an Pixel-Shader
Wenn Wert <0: Pixel wird verworfen (s. HLSL-Funktion clip)
![Page 18: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/18.jpg)
Spiegelung:Transformationsmatrix: D3DXMatrixReflect
Culling-Modus umkehren: D3DCULL_CCW auf D3DCULL_CW
Spiegelung der sichtbaren Objekte und Lichtquellen
Alpha-Kanal des Render-Targets: Entfernung des Pixels zur Wasseroberfläche
![Page 19: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/19.jpg)
![Page 20: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/20.jpg)
BrechungEntfernung zur Clipping-Ebene >0: Verwerfen
Stauchung der Szene entlang der y-Achse mit Wasseroberfläche als Zentrum
Auch alle Lichtquellen stauchen
Alpha-Kanal: Entfernung zur Oberfläche
Trübheitseffekt mit Nebel; Nebelstärke abhängig von der Teilstrecke Wasseroberfläche-Pixel
![Page 21: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/21.jpg)
Zusammenfügen der SzenenWasseroberfläche aus zwei Dreiecken
Pixel-Shader berechnet Winkel zwischen Normalenvektor und Verbindungsvektor Kamera-Pixel
Sampeln der Render-Targets mit vPos.
Welleneindruck durch Verschiebung der Koordinaten anhand einer Normal-Map
![Page 22: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/22.jpg)
![Page 23: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/23.jpg)
Alpha-Kanal des Pixels als Faktor für Verschiebung durch die Wellen
Reflektierte und gerenderte Szene mit leicht vergrößertem FoV rendern zur Vermeidung von Fehlern am Rand
Glitzern auf Wasseroberfläche durch Specular Highlighting mit hoher Glanzkraft
![Page 24: Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken](https://reader035.vdocuments.pub/reader035/viewer/2022070310/55204d8649795902118d9e13/html5/thumbnails/24.jpg)
Weiterführende Infos zu Shadern im DirectX-SDK, auf msdn.microsoft.com oder in der DirectX-Dokumentation
Vielen Dank für die Aufmerksamkeit!