Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Oliver Rahner – Hauptseminar Computer Graphics, SS 2007 computer graphics & visualization DirectX 10 API Neuerungen in Direct3D 10.

Ähnliche Präsentationen


Präsentation zum Thema: "Oliver Rahner – Hauptseminar Computer Graphics, SS 2007 computer graphics & visualization DirectX 10 API Neuerungen in Direct3D 10."—  Präsentation transkript:

1 Oliver Rahner – Hauptseminar Computer Graphics, SS 2007 computer graphics & visualization DirectX 10 API Neuerungen in Direct3D 10

2 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Neuerungen in Direct3D 10 - Verarbeiten ganzer Primitive in der Geometry Shader Stage - Ausgabe pipeline-generierter Daten in der Stream Output Stage - Objekte und Modelle zur Reduzierung von CPU- Overhead - Neue Ressourcentypen und –formate - Resource Views - Wegfall von Capability Bits - Layered Runtime - Common-Shader Core

3 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Neuerungen in Direct3D 10 Verarbeiten ganzer Primitive in der Geometry Shader Stage

4 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Geometry Shader - bekommt als Eingabe nicht Punkte sondern Primitive - kann nicht nur vorhandene Vertices manipulieren, sondern auch neue Primitive erstellen

5 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Geometry Shader in HLSL (1) - Definition des GS in der Technique: technique10 RenderTextured { pass p0 { SetVertexShader( CompileShader( vs_4_0, VSScene() ) ); SetGeometryShader( CompileShader( gs_4_0, GSScene() ) ); SetPixelShader( CompileShader( ps_4_0, PSScene() ) ); }

6 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Geometry Shader in HLSL (2) - der (nicht-modifizierende) GeometryShader: [maxvertexcount(3)] void GSScene( triangleadj GSSceneIn input[6], inout TriangleStream OutputStream) { PSSceneIn output = (PSSceneIn)0; for( uint i=0; i<6; i+=2 ) { output.Pos = input[i].Pos; output.Norm = input[i].Norm; output.Tex = input[i].Tex; OutputStream.Append( output ); } OutputStream.RestartStrip(); }

7 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Einsatzmöglichkeiten von GS - Expandierung von Point Sprites - dynamische Partikelsysteme - Generierung von Fell - Generierung von Schattenvolumen - Single-Pass Cubemap-Erzeugung - …

8 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Neuerungen in Direct3D 10 Ausgabe pipeline-generierter Daten in der Stream Output Stage

9 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Stream Output Stage (1) - Daten aus GS können in eine oder mehrere Buffer Resources im Speicher geschrieben werden - können in einem späteren Rendering Pass wiederbenutzt oder - zum Auslesen durch die CPU in eine Staging Resource kopiert werden

10 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Stream Output Stage (2) - GS liefert keine vorhersehbare Datenmenge Länge des Streams kann variieren Länge des Streams kann variieren - Lösung: ID3D10Device::DrawAuto() CPU braucht die Größe des Buffers nicht zu kennen CPU braucht die Größe des Buffers nicht zu kennen

11 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 SO-Stage in C++/HLSL (1) - Definition des GS mit StreamOutput: GeometryShader gsStreamOut = ConstructGSWithSO( CompileShader( gs_4_0, GSAdvanceParticlesMain() ), "POSITION.xyz; NORMAL.xyz; TIMER.x; TYPE.x" ); technique10 AdvanceParticles { pass p0 { SetVertexShader( CompileShader( vs_4_0, VSPassThroughmain() ) ); SetGeometryShader( gsStreamOut ); SetPixelShader( NULL ); SetDepthStencilState( DisableDepth, 0 ); }

12 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 SO-Stage in C++/HLSL (2) - Binden des Buffers an den Stream Output: D3D10_BUFFER_DESC vbdesc = …; ID3D10Buffer* g_pParticleStreamTo; ID3D10Buffer*pBuffers[1]; pd3dDevice->CreateBuffer( &vbdesc, NULL, &g_pParticleStreamTo ); pBuffers[0] = g_pParticleStreamTo; pd3dDevice->SOSetTargets( 1, pBuffers, offset );

13 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Neuerungen in Direct3D 10 Objekte und Modelle zur Reduzierung von CPU-Overhead

14 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 State Objects (1) - 5 State-Objects - ermöglichen billigen Wechsel von State Changes - jedes Objekt initialisiert einen bestimmten State in der Pipeline

15 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 State Objects (2) - Input-Layout State Format und Umfang der geometrischen Daten im Eingangspuffer - Rasterizer State - Depth-Stencil State - Blend State - Sampler State

16 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 State Objects (2) - Input-Layout State - Rasterizer State Status des Rasterisierers, u.a. Fill und Cull - Depth-Stencil State - Blend State - Sampler State

17 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 State Objects (2) - Input-Layout State - Rasterizer State - Depth-Stencil State Konfiguration Tiefenpuffer und Stencil-Test - Blend State - Sampler State

18 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 State Objects (2) - Input-Layout State - Rasterizer State - Depth-Stencil State - Blend State legt fest, wie PS-Ausgabe und Renderziel von der OM-Stage vermischt werden - Sampler State

19 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 State Objects (2) - Input-Layout State - Rasterizer State - Depth-Stencil State - Blend State - Sampler State legt Texturmuster fest

20 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Shader Constants - Shader Konstanten werden nur in Puffern abgelegt - 2 Typen: - Constant Buffer (cbuffer) - Texture Buffer (tbuffer) - Sollten nach Häufigkeit der Aktualisierung gruppiert werden Performancegewinn cbuffer cb0 { float4x4 g_mWorldViewProj; float4x4 g_mInvView; }; tbuffer tbAnimMatrices { matrix g_mTexBoneWorld[MAX_BONE_MATRICES]; };

21 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Neuerungen in Direct3D 10 Neue Ressourcentypen und -formate

22 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Buffer Resources - Vertex Buffer - wird vom Input-Assembler zu Primitiven zusammengesetzt - alle Werte im Vertex Buffer müssen den gleichen Typ haben - Index Buffer - Shader-Constant Buffer

23 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Buffer Resources - Vertex Buffer - Index Buffer - enthält 16- oder 32-bit Indizes - Shader-Constant Buffer

24 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Buffer Resources - Vertex Buffer - Index Buffer - Shader-Constant Buffer - ähnlich dem Vertex Buffer - wird per Flag (D3D10_BIND_CONSTANT_BUFFER) als Shader-Constant gekennzeichnet

25 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Texture Resources - Texels - kleinste Einheit einer Texture, die von der Pipeline gelesen/geschrieben werden kann - 1 bis 4 Komponenten, je nach ausgewählten DXGI- Format angeordnet (z.B. R8G8B8A8_UINT) - Texture1D / Texture1DArray - Texture2D / Texture2DArray - Texture3D

26 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Texture Resources - Texels - Texture1D / Texture1DArray - Texture2D / Texture2DArray - werden durch u(/v)- Werte/Vektoren adressiert - können MipMap-Levels enthalten - Spezialfall 2D-Array: CubeMaps - Texture3D Texture2DArray Texture2D Texture2DArray als Cubemap

27 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Texture Resources - Texels - Texture1D / Texture1DArray - Texture2D / Texture2DArray - Texture3D - adressiert durch (u,v,w)-Vektor - verhält sich als Rendertarget wie ein 2D-Array - kein Array-Konzept!

28 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Texture Subresources - Subresource: Kombination aus Textur-Ressource und Mipmap-Level - wird benutzt für Resource Views

29 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Neuerungen in Direct3D 10 Resource Views

30 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Resource Views (1) - legt die Hardware-Interpretation einer Ressource im Speicher fest - erlaubt Pipeline Stages, lediglich auf die benötigten Subresourcen zuzugreifen - Beispiel: Zugriff auf alle Mipmaps Level 2 eines Texture2DArray

31 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Resource Views (2) Verwendung als - Render-Target View - nur ein Mipmap-Level darf Render-Target sein - zugehöriger Depth Stencil View - Depth Stencil View - Shader Resource View

32 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Resource Views (2) Verwendung als - Render-Target View - Depth Stencil View - wird zusammen mit dem zugehörigen Render-Target View an die OM-Stage gebunden - Shader Resource View

33 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Resource Views (2) Verwendung als - Render-Target View - Depth Stencil View - Shader Resource View - bindet eine Ressource an eine Shader Stage - dieser View kann eine Ressource als etwas anderes interpretieren, als sie erzeugt wurde Texture2DArray CubeMap Texture2DArray CubeMap

34 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Neuerungen in Direct3D 10 Wegfall von Capability Bits

35 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Wegfall von Capability Bits von Microsoft gepriesen: - festgelegte Funktionalität von DirectX 10 – Hardware keine CAP Bits mehr nötig keine CAP Bits mehr nötigABER: für Ressourcen-Formate gibt es wiederum optionale Features u.a. für MSAA und FP32-Filterung

36 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Neuerungen in Direct3D 10 Layered Runtime: in Ebenen angeordnete Laufzeitstruktur

37 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Runtime Layers ermöglicht beim Erzeugen eines D3D10-Devices, die Funktionalität in Schichten anzugeben - Core Layer - bietet Grundfunktionen - ist die einzige obligatorische Ebene - Debug Layer - Switch-To-Reference Layer - Thread-Safe Layer

38 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Runtime Layers ermöglicht beim Erzeugen eines D3D10-Devices, die Funktionalität in Schichten anzugeben - Core Layer - Debug Layer - ermöglicht Parameter- und Konsistenzvalidierung - erzeugt Debugausgaben - wie üblich: Device mit Debug Layer läuft merklich langsamer - Switch-To-Reference Layer - Thread-Safe Layer

39 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Runtime Layers ermöglicht beim Erzeugen eines D3D10-Devices, die Funktionalität in Schichten anzugeben - Core Layer - Debug Layer - Switch-To-Reference Layer - ermöglicht einer Anwendung den Wechsel auf die von Hardware-Device (HAL) auf Referenz-Device (REF) - Thread-Safe Layer

40 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Runtime Layers ermöglicht beim Erzeugen eines D3D10-Devices, die Funktionalität in Schichten anzugeben - Core Layer - Debug Layer - Switch-To-Reference Layer - Thread-Safe Layer - ermöglicht Zugriff auf das Grafik-Device parallel aus mehreren Threads - Achtung! Dieses Layer ist standardmäßig aktiv und muß explizit abgeschaltet werden, falls dies gewünscht ist! D3D10_CREATE_DEVICE_SINGLETHREADED D3D10_CREATE_DEVICE_SINGLETHREADED

41 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Neuerungen in Direct3D 10 Common-Shader Core

42 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Common-Shader Core (1) - Gedanke: alle Shader-Arten bieten dieselbe Grundfunktionalität

43 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Common-Shader Core (2) - Input Data - Vertex Shader: vom Input Assembler - Pixel/Geometry Shader: vom vorherigen Shader - system-generierte Werte, werden von der ersten zutreffenden Pipeline-Einheit benutzt

44 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Common-Shader Core (2) - Output Data - Shader geben Daten an die nächste Stage weiter - Menge an GS-Output kann variieren

45 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Common-Shader Core (2) - Shader Code kann… - aus dem Speicher lesen - fp- und int-Arithmetik durchführen - Flußkontrolle - unbegrenzte Zahl von Anweisungen

46 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Common-Shader Core (2) - Samplers - definieren, wie Texturen gesampled und gefiltert werden - 16 Sampler pro Shader gleichzeitig

47 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Common-Shader Core (2) - Textures - können per Sampler gefiltert oder texelweise mit load() gelesen werden

48 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Common-Shader Core (2) - Buffers - können nicht gefiltert werden - werden elementweise per load() gelesen - 128 Buffer und Textures gleichzeitig pro Shader

49 computer graphics & visualization Oliver Rahner - Hauptseminar Computer Graphics, SS 2007 Common-Shader Core (2) - Constant Buffers - optimiert für Shader- Constants, also für häufige Updates durch die CPU - 16 Constant Buffers gleichzeitig pro Shader


Herunterladen ppt "Oliver Rahner – Hauptseminar Computer Graphics, SS 2007 computer graphics & visualization DirectX 10 API Neuerungen in Direct3D 10."

Ähnliche Präsentationen


Google-Anzeigen