Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Aleit Radloff Geändert vor über 10 Jahren
1
Zwischenstand Herbst 2009 Tobias Zirr
3
C++ HLSL / FX C++/CLI C# DirectX 9 Assimp PhysX TinyXml zLib libPNG.NET Framework 2.0
4
beCorebeMathbeRenderbeRenderDXbeEntitySystembeScenebeSimulation(PhysX) Global HeapGarbage TrackerInfo StreamFile System Resource Management Interfaces Container Templates TimerSTL Container Wrappers Optimierte Speicherverwaltung Optimiertes Einfüge- / Löschverhalten Vektoren & Matrizen Strahlen & EbenenKugeln & Boxen Intersection Tests Hauptsächlich zu Culling- & Picking-Zwecken UtilitiesDirectX 9 Device WrapperEffect Framework Erweiterte HLSL Semantics Setups (Dynamische Materialien) Resource ManagementState Management
5
beEntitySystembeScenebeSimulation(PhysX) Zweckgebundene Interfaces (Tags) Animation, Synchronisation, etc. Property System Generische Setter & Getter für Objektzustand Ermöglicht generische Konfiguration und Serialisierung (z.B. in einem Editor) Controller System Synchronisation zusammengehöriger Objekte Entities Position, Orientierung, Richtung, Caching Virtuelles Positionierungssystem (Präzision) Entity Nodes Entity-Container / Hierarchieelement Simulation Root Entity Node Timing Aktualisierung und Synchronisation der Entities Zweckgebundene Interfaces (Tags) Renderables, Lights, Scene Nodes Standard Mesh & Light EntitiesRendering PipelineGPU Helpers Clearing Normal Map Generation Mesh Manager Instancing Mesh Builders Resource Management Simulation (Szene) Root Scene Node Aufbau des Render Trees über Scene Nodes Kameraverwaltung PhyX Simulation Host Schnittstelle zwischen PhysX Simulation und Engine Thread-Synchronisation Resource Management Standard Physics Controllers Bounding, Shape, Mesh, Character Controllers Synchronisation der Besitzer-Entities mit ihren PhysX-Repräsentationen Simulation Verwaltung der Simulation Hosts Verteilung der Synchronisationsaufrufe Prototyp mehr dazu gleich
6
Einfacher Aufbau und Bedienung Geringer Integrationsaufwand bei der Entwicklung neuer Komponenten Umfangreiches Angebot flexibler Konzepte, die dem Entwickler als Rahmen dienen Properties, Controllers, Synchronization, Animation, Entities, Entity Nodes, Effect Binders, Renderables, Lights, Scene Nodes, Mesh Builders… breeze
8
Es war einmal… typedef struct D3DMATERIAL9 { D3DCOLORVALUE Diffuse; D3DCOLORVALUE Ambient; D3DCOLORVALUE Specular; D3DCOLORVALUE Emissive; float Power; } D3DMATERIAL9, *LPD3DMATERIAL9; Wohin mit neuen Materialeigenschaften?
9
Mögl. Verwaltung von Materialeigenschaften Verschiedene feste Datenstrukturen pro Shader(gruppe)
10
FFP Spezial-Shader Vorläufer-Projekt
11
Hartcodierte Spezial- Datenstruktur Vorläufer-Projekt
12
Mögl. Verwaltung von Materialeigenschaften Verschiedene feste Datenstrukturen pro Shader(gruppe) Erweiterte Über-Datenstrukturen mit selektiver Nutzung durch verschiedene Shader(gruppen)
13
Standard- Daten- struktur Zusatz- texturen Zusatz- konstanten Vorläufer-Projekt
14
Mögl. Verwaltung von Materialeigenschaften Verschiedene feste Datenstrukturen pro Shader(gruppe) Erweiterte Über-Datenstrukturen mit selektiver Nutzung durch verschiedene Shader(gruppen) Dynamische Datenstrukturen Keinerlei vorgegebene Daten Tweakables werden zur Laufzeit aus der Effect-Datei geladen und ergeben eine individuelle Datenstruktur
15
FFP-Kompatibilität erfordert vielerorts mehrere Render-Pfade Dynamische Materialien bieten in reiner Shader-Umgebung zugleich optimale Flexibilität und einfachste Handhabung Rendering API ohne FFP-Ballast wesentlich schlanker
16
FFP-Kompatibilität erfordert vielerorts mehrere Render-Pfade Dynamische Materialien bieten in reiner Shader-Umgebung zugleich optimale Flexibilität und einfachste Handhabung Rendering API ohne FFP-Ballast wesentlich schlanker if(shaderModel < 2) throw Go buy a new computer!; if(shaderModel < 2) throw Go buy a new computer!;
17
Live Demo
19
Pipeline Pipes (Rendering Scope) Render Targets Processing Pipelines Effect Binders Effect Binder Pools Render Tree
20
Perspectives LightsRender Queues Renderables Cached Affecting Lights PipeTransformation (View, Proj)Setup CallbackMatrix & Vector Cache Wird jedes Frame neu gebaut!
21
Pre-Pass Render Tree Traversal Depth Data Auxiliary Data Pre-Processing Lighting Shadow Projection AO … Main Pass Render Tree Traversal Color Data Post- Processing Fog God Rays DOF Tone Mapping Bloom Overlays
22
Pipe Render Targets Pass Information Render Tree Perspective Data Entity Data Effect Binder Pool Shared Parameters Parameter Indices Renderable Render Queue Effect Binder
23
Pipeline Effect Binder Pipe Effect Binder Lighting Effect Binder Processing Effect Binder Entity Effect Binder Perspective TransformationFlow Control (Pass Loops, Pre- & Post-Pass State)Timing Parameters Render Target SharingAutomated Clearing, Swapping & ScalingPass Type FilteringAutomated Light Querying & SortingPermutation-Sensitive Light PartitioningLight Parameter ManagementEntity TransformationRender Queues Screen Offsets & Scaling
24
Live Demo
26
Wichtige Gelenkstellen Transformation Einfaches Rendering Instanziertes Rendering Animation im Shader Beleuchtung Mehrere Lichter in beliebigen Licht-Typ-Kombinationen Schatten & Projezierte Texturen (Ein / Aus) Material Farb-, Normal- und Reflexionstexturen Vielfältige Varationen von Beleuchtungsmodellen
27
Lösungsansätze Über-/Super-Shader Static Branching Vorkompilierung aller genutzten Kombinationen Inferred (/ Deferred) Lighting Optimale Trennung von Transformation, Beleuchtung und Material macht vorkompilierte Kombinationen überflüssig In vielen bekannten Firmen im Kommen: The combination of deferred lighting and this technology allows CryENGINE® 3 to avoid the traditional shortcomings of Uber Shaders alone. – CryENGINE 3 Specifications, Crytek.com Dynamic Shader Linkage DirectX 9 Fragment Compiler DirectX 11 Interfaces
28
Ein Super-Shader-Kompromiss Material als höchstes Ordnungselement Verfügbare Licht-Kombinationen werden vom Shader-Entwickler als Passes mit entsprechender Markierung versehen und von den Effect Binders zur Laufzeit ausgewählt Transformation ist Teil einer zentralen Basisklasse, die ähnlich der Super-Shader-Technologie die Transformation für alle Entity-Typen durchführen kann Klassen und Interfaces in HLSL neu seit November 2008, auch in DirectX 9 verfügbar
29
Vorteile des Kompromisses Auswahl eines Shaders intuitiv, weil gleichbedeutend mit Festlegung der Beschaffenheit eines Objektes Reduzierung des Verwaltungsaufwands von 3 auf 2 Gelenkstellen Aufgeräumte Shader dank Abstrahierung mit Hilfe der neuen HLSL Sprachfeatures Nachteile des Kompromisses Reduzierung der Komplexität nur nach Außen, effektiv werden weiterhin alle Permutationen vorkompiliert
31
Szenenklasse beschränkt sich auf einfaches Frustum Culling Keine Information über die Szenenstruktur Spezialisierung durch Implementierung des Scene Node Interfaces Landschaften besitzen von sich aus Quadtrees Portal-Sektor-System als extra Scene Node
33
Synchronize Synchronisation aller Threads Abfragen der Resultate Controller führen die parallel gewonnenen Daten im Entity zusammen Step Abfragen der vergangenen Zeit Animation durch Entities Animation durch Controllers Weitergabe des Zeitschrittes an parallele Threads (z.B. PhysX) Flush Aktualisierung der parallelen Daten nach Animation Anstoßen der parallelen Threads mit den neuen Daten
34
Live Demo
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.