Diplomarbeit 5HDO7LPH6SHFLDO (IIHFWV Neue Möglichkeiten durch programmierbare Shader Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker Betreut von: Paul Grimm, Ralf Dörner Beginn: 01.04.02 Abgabe: 30.09.02 1
Gliederung des Vortrags: 1. (LQI KUXQJLQGLH7KHPDWLN 2. 0HLQH9RUJHKHQVZHLVH 3. (UJHEQLVVH 4. $XVEOLFN 5. )HHGEDFN 1. (LQI KUXQJLQGLH7KHPDWLN 2
Neue Grafikkarten-Generation *H)RUFH von 19,',$ Shader-Programme Erstmals können Teile des Hardware-Rendering- Prozesses SURJUDPPLHUW werden. Diese Programme nennen sich 6KDGHU. Shader werden vollständig auf der GPU ausgeführt. Vorteil: Mehr Flexibilität bei vollständiger Hardware-Beschleunigung 3
Shader-Programme (2) Programmierbar sind ]ZHL.RPSRQHQWHQ der Rendering-Pipeline 9HUWH[6KDGHU 3L[HO6KDGHU Beeinflusst die Verarbeitung auf Vertex-Ebene Beeinflusst die Verabeitung auf Pixel-Ebene Vertex Data High-Order Primitive Tesselation Vertex Shader Transform. & Lightning Clipping, Culling, Viewport Mapping, Rasterization GeForce3 Rendering Pipeline [NVID02] Pixel Shader Multi- Texturing Fog Blending Alpha, Stencil & Depth Testing Frame Buffer Blending 4
Einige Eigenschaften: 6KDGHU VLQG)XQNWLRQHQ: 9HUWH[/3L[HO 6WUHDP 6KDGHU 7UDQVIRUPLHUWH 9HUWLFHV3L[HO 6KDGHU N QQHQNHLQH'DWHQHU]HXJHQ, VRQGHUQQXUWUDQVIRUPLHUHQ Einige Eigenschaften (2) 6KDGHU VLQG]XVWDQGVORV Die Ausführung eines Shaders für ein Fragment ist also unabhängig von vorherigen Berechnungen. 6KDGHU3URJUDPPHVLQGOLQHDU Verzweigungen im Ausführungspfad sind nicht erlaubt. 5
Ziel der Arbeit 'HPRQVWUDWLRQGHU/HLVWXQJVIlKLJNHLW von Vertex- und Pixel-Shadern (durch Entwicklung von Effekt-Prototypen), und %HZHUWXQJ dieser neuen Technik 2. 0HLQH9RUJHKHQVZHLVH 6
Drei Schritte 1. Verschiedene Studien zur Aneignung von Basiswissen 2. Entwicklung einfacher Prototypen 3. Dokumentation der Zwischenergebnisse Studie über Real-Time-Rendering: Wie sah Hardware-Beschleunigung bisher aus? Welche Spezialeffekte waren bisher möglich? Welche Ansätze für programmierbare Grafik- Architekturen gab es bisher? 7
Studie über Shader-Sprachen Welche Shader-Sprachen gibt es? Wo liegen die Unterschiede/Gemeinsamkeiten? Fokus auf Shader-Sprachen für Real-Time Rendering Studie über Vertex- und Pixel-Shader Wie ist die GeForce3 aufgebaut? Wie funktionieren 9HUWH[- und 3L[HO6KDGHU? Wie wurden die Shader-Sprachen in DirectX8 und OPENGL implementiert? 8
Studie über Shader-Demos Welche neuen Effekte wurden bisher mit der neuen Technik realisiert? Wie wurden diese Effekte realisiert? Demos im Nvidia Effects-Browser Beispiele: Sinuswellen Deformation Fell mit Per-Pixel-Lightning Toon Shading, Rainbow Rendering Lichtbrechung 9
Entwicklung einfacher Prototypen Programmiersprache: C++ API: DirectX8.1 Grafikkarte: GeForce3 1. Entwicklung von Prototypen auf Basis H[LVWLHUHQGHU Shader-Demos 2. Entwicklung HLJHQHU Effekte (vom Entwurf bis zur Implementierung) 3. (UJHEQLVVH 10
Entwickelte Prototypen Einfache Effekte (Lichtbrechung, Deformation, Morphing, Cartoon-Shading) Gras-Simulation Wasser-Simulation Simulation von Gras 11
Gras Bewegung durch Rotation von Vertices Stark vereinfachte Beleuchtungsrechnung Steuerung durch Parameter: Windrichtung Stärke Frequenz und Amplitude der Windschwankung Gras (Besonderheiten) Selektion von Vertices durch neues Attribut relative Höhe (=: +U. Vertices werden rotiert (~ +U ) Relative Höhe Keine Rotation 12
Simulation von Wasser Wasserfläche: Wasser 2x Per-Pixel Environment-Mapping (ein Textur für Spiegelung, eine für Brechung) Bewegung: Überlagerung Sinusfunktionen verschiedener Amplituden, Frequenzen und Phasen Hohe Frequenzen: Bump Map Niedrige Frequenzen: Transformation von Vertices 13
Ergebnisse der Studien & Dokumentation 1(*$7,9 Vertex- und Pixel-Shader sind sehr aufwendig zu programmieren (Low-Level Assemblersprache) Nicht abstrakt genug: Jede GPU mit Shadern besitzt z. Z. seine eigene Pixel-Shader-Version 1(*$7,9 (Fortsetzung): Beschränkte Möglichkeiten aufgrund knapper Ressourcen (Programmlänge und Register sind zu knapp bemessen) Shader sind QLFKWNRPELQLHUEDU. Es darf immer nur ein Vertex- und ein Pixel-Shader aktiv sein. 14
1(*$7,9 (Fortsetzung): Starke Bindung zwischen Applikation und Shader- Programmen erschwert Lesbarkeit, Wartbarkeit und Portabilität beider Programmteile Gegenteil zu Information Hiding 326,7,9 Deutlich flexiblere Rendering-Pipeline mehr Raum für Kreativität Shader-Sprachen sind eleganter erweiterbar, als das alte Steuerungssystem über Flags und Zustände 15
326,7,9(Fortsetzung): Schritt in die richtige Richtung: Kommende GPU-Generationen werden die Restriktionen sukzessive aufweichen. 4. $XVEOLFN 16
Die nächsten drei Monate Prototyp-Entwicklung: Verfeinerung der Gras- und Wassersimulation Entwicklung nicht-photorealistischer Schattierungsverfahren Prototypische Architektur zur Kombination verschiedener Shader-Effekte Weitere Ideen? (Æ Feedback) Die nächsten drei Monate (2) Bewertung: Diskussion der gemachten Erfahrungen Aufzeigen von Schwächen/Verbesserungsvorschläge Leistungsvergleich mit Off-Line-Techniken (z.b. mit 5HQGHU0DQ von PIXAR), Ausblick auf Kommendes: prozedurale Sprache &Jvon NVIDIA, 'LUHFW; 17
5. )HHGEDFN Vielen Dank für eine halbe Stunde Aufmerksamkeit und für Anregungen zum weiteren Verlauf der Arbeit! 18