Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Zwischenstand Herbst 2009 Tobias Zirr. C++ HLSL / FX C++/CLI C# DirectX 9 Assimp PhysX TinyXml zLib libPNG.NET Framework 2.0.

Ähnliche Präsentationen


Präsentation zum Thema: "Zwischenstand Herbst 2009 Tobias Zirr. C++ HLSL / FX C++/CLI C# DirectX 9 Assimp PhysX TinyXml zLib libPNG.NET Framework 2.0."—  Präsentation transkript:

1 Zwischenstand Herbst 2009 Tobias Zirr

2

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

7

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

18

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

25

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

30

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

32

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

35

36

37


Herunterladen ppt "Zwischenstand Herbst 2009 Tobias Zirr. C++ HLSL / FX C++/CLI C# DirectX 9 Assimp PhysX TinyXml zLib libPNG.NET Framework 2.0."

Ähnliche Präsentationen


Google-Anzeigen