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

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

Embed Size (px)

Citation preview

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

Oliver Rahner – Hauptseminar Computer Graphics, SS 2007Oliver Rahner – Hauptseminar Computer Graphics, SS 2007

computer graphics & computer graphics & visualizationvisualization

DirectX 10 APIDirectX 10 API

Neuerungen in Direct3D 10Neuerungen in Direct3D 10

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Neuerungen in Direct3D 10Neuerungen in Direct3D 10

- Verarbeiten ganzer Primitive in der Verarbeiten ganzer Primitive in der Geometry Geometry Shader StageShader Stage

- Ausgabe pipeline-generierter Daten in der Ausgabe pipeline-generierter Daten in der Stream Stream Output StageOutput Stage

- Objekte und Modelle zur Reduzierung von CPU-Objekte und Modelle zur Reduzierung von CPU-OverheadOverhead

- Neue Ressourcentypen und –formateNeue Ressourcentypen und –formate

- Resource ViewsResource Views

- Wegfall von Capability BitsWegfall von Capability Bits

- Layered RuntimeLayered Runtime

- Common-Shader CoreCommon-Shader Core

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Neuerungen in Direct3D 10Neuerungen in Direct3D 10

Verarbeiten ganzer PrimitiveVerarbeiten ganzer Primitive

in der in der Geometry Shader StageGeometry Shader Stage

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Geometry ShaderGeometry Shader

- bekommt als Eingabe nicht Punkte sondern Primitivebekommt als Eingabe nicht Punkte sondern Primitive

- kann nicht nur vorhandene Vertices manipulieren, sondern kann nicht nur vorhandene Vertices manipulieren, sondern auch neue Primitive erstellenauch neue Primitive erstellen

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Geometry Shader in HLSL (1)Geometry Shader in HLSL (1)

- Definition des GS in der Technique: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() ) );

}

}

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Geometry Shader in HLSL (2)Geometry Shader in HLSL (2)

- der (nicht-modifizierende) GeometryShader:der (nicht-modifizierende) GeometryShader:[maxvertexcount(3)]

void GSScene( triangleadj GSSceneIn input[6], inout TriangleStream<PSSceneIn> 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();

}

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Einsatzmöglichkeiten von GSEinsatzmöglichkeiten von GS

- Expandierung von Point SpritesExpandierung von Point Sprites

- dynamische Partikelsystemedynamische Partikelsysteme

- Generierung von FellGenerierung von Fell

- Generierung von SchattenvolumenGenerierung von Schattenvolumen

- Single-Pass Cubemap-ErzeugungSingle-Pass Cubemap-Erzeugung

- ……

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Neuerungen in Direct3D 10Neuerungen in Direct3D 10

Ausgabe pipeline-generierter Ausgabe pipeline-generierter Daten in der Daten in der

Stream Output StageStream Output Stage

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Stream Output Stage (1)Stream Output Stage (1)

- Daten aus GS können in eine oder mehrere Buffer Daten aus GS können in eine oder mehrere Buffer Resources im Speicher geschrieben werdenResources im Speicher geschrieben werden

- können in einem späteren Rendering Pass können in einem späteren Rendering Pass wiederbenutztwiederbenutzt

oderoder

- zum Auslesen durch die CPU in eine Staging zum Auslesen durch die CPU in eine Staging Resource kopiert werdenResource kopiert werden

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Stream Output Stage (2)Stream Output Stage (2)

- GS liefert keine GS liefert keine vorhersehbare Datenmengevorhersehbare DatenmengeLänge des Streams kann Länge des Streams kann

variierenvariieren

- Lösung:Lösung:ID3D10Device::DrawAuto()ID3D10Device::DrawAuto()

CPU braucht die Größe des CPU braucht die Größe des Buffers nicht zu kennenBuffers nicht zu kennen

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

SO-Stage in C++/HLSL (1)SO-Stage in C++/HLSL (1)

- Definition des GS mit StreamOutput: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 );

}

}

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

SO-Stage in C++/HLSL (2)SO-Stage in C++/HLSL (2)

- Binden des Buffers an den Stream Output: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 );

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Neuerungen in Direct3D 10Neuerungen in Direct3D 10

Objekte und Modelle Objekte und Modelle

zur Reduzierung von CPU-Overheadzur Reduzierung von CPU-Overhead

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

State Objects (1)State Objects (1)

- 5 State-Objects5 State-Objects

- ermöglichen „billigen“ Wechsel von State Changesermöglichen „billigen“ Wechsel von State Changes

- jedes Objekt initialisiert einen bestimmten State in jedes Objekt initialisiert einen bestimmten State in der Pipelineder Pipeline

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

State Objects (2)State Objects (2)- Input-Layout StateInput-Layout State

Format und Umfang der Format und Umfang der geometrischen Daten im geometrischen Daten im EingangspufferEingangspuffer

- Rasterizer StateRasterizer State

- Depth-Stencil StateDepth-Stencil State

- Blend StateBlend State

- Sampler StateSampler State

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

State Objects (2)State Objects (2)- Input-Layout StateInput-Layout State

- Rasterizer StateRasterizer StateStatus des Rasterisierers, u.a. Status des Rasterisierers, u.a.

FillFill und und CullCull

- Depth-Stencil StateDepth-Stencil State

- Blend StateBlend State

- Sampler StateSampler State

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

State Objects (2)State Objects (2)- Input-Layout StateInput-Layout State

- Rasterizer StateRasterizer State

- Depth-Stencil StateDepth-Stencil StateKonfiguration Tiefenpuffer und Konfiguration Tiefenpuffer und

Stencil-TestStencil-Test

- Blend StateBlend State

- Sampler StateSampler State

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

State Objects (2)State Objects (2)- Input-Layout StateInput-Layout State

- Rasterizer StateRasterizer State

- Depth-Stencil StateDepth-Stencil State

- Blend StateBlend Statelegt fest, wie PS-Ausgabe und legt fest, wie PS-Ausgabe und

Renderziel von der OM-Stage Renderziel von der OM-Stage vermischt werdenvermischt werden

- Sampler StateSampler State

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

State Objects (2)State Objects (2)- Input-Layout StateInput-Layout State

- Rasterizer StateRasterizer State

- Depth-Stencil StateDepth-Stencil State

- Blend StateBlend State

- Sampler StateSampler Statelegt Texturmuster festlegt Texturmuster fest

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Shader ConstantsShader Constants- Shader Konstanten werden nur in Puffern abgelegtShader Konstanten werden nur in Puffern abgelegt

- 2 Typen:2 Typen:- Constant Buffer (cbuffer)Constant Buffer (cbuffer)

- Texture Buffer (tbuffer)Texture Buffer (tbuffer)

- Sollten nach Häufigkeit der Aktualisierung gruppiert Sollten nach Häufigkeit der Aktualisierung gruppiert werden werden Performancegewinn Performancegewinn

cbuffer cb0

{

float4x4 g_mWorldViewProj;

float4x4 g_mInvView;

};

tbuffer tbAnimMatrices

{

matrix g_mTexBoneWorld[MAX_BONE_MATRICES];

};

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Neuerungen in Direct3D 10Neuerungen in Direct3D 10

Neue Ressourcentypen und -formateNeue Ressourcentypen und -formate

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Buffer ResourcesBuffer Resources

- Vertex BufferVertex Buffer- wird vom Input-Assembler zu wird vom Input-Assembler zu

Primitiven zusammengesetztPrimitiven zusammengesetzt

- alle Werte im Vertex Buffer müssen alle Werte im Vertex Buffer müssen den gleichen Typ habenden gleichen Typ haben

- Index BufferIndex Buffer

- Shader-Constant BufferShader-Constant Buffer

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Buffer ResourcesBuffer Resources

- Vertex BufferVertex Buffer

- Index BufferIndex Buffer- enthält 16- oder 32-bit Indizesenthält 16- oder 32-bit Indizes

- Shader-Constant BufferShader-Constant Buffer

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Buffer ResourcesBuffer Resources

- Vertex BufferVertex Buffer

- Index BufferIndex Buffer

- Shader-Constant BufferShader-Constant Buffer- ähnlich dem Vertex Bufferähnlich dem Vertex Buffer

- wird per Flag wird per Flag (D3D10_BIND_CONSTANT_BUFFER) als (D3D10_BIND_CONSTANT_BUFFER) als Shader-Constant gekennzeichnetShader-Constant gekennzeichnet

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Texture ResourcesTexture Resources

- TexelsTexels- kleinste Einheit einer Texture, die von der Pipeline kleinste Einheit einer Texture, die von der Pipeline

gelesen/geschrieben werden kanngelesen/geschrieben werden kann

- 1 bis 4 Komponenten, je nach ausgewählten DXGI-Format 1 bis 4 Komponenten, je nach ausgewählten DXGI-Format angeordnet (z.B. R8G8B8A8_UINT)angeordnet (z.B. R8G8B8A8_UINT)

- Texture1D / Texture1DArrayTexture1D / Texture1DArray

- Texture2D / Texture2DArrayTexture2D / Texture2DArray

- Texture3DTexture3D

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Texture ResourcesTexture Resources

- TexelsTexels

- Texture1D / Texture1DArrayTexture1D / Texture1DArray

- Texture2D / Texture2DArrayTexture2D / Texture2DArray- werden durch werden durch

u(/v)-Werte/Vektoren adressiertu(/v)-Werte/Vektoren adressiert

- können MipMap-Levels können MipMap-Levels enthaltenenthalten

- Spezialfall 2D-Array:Spezialfall 2D-Array:CubeMapsCubeMaps

- Texture3DTexture3D

Texture2DArray

Texture2D

Texture2DArray als Cubemap

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Texture ResourcesTexture Resources

- TexelsTexels

- Texture1D / Texture1DArrayTexture1D / Texture1DArray

- Texture2D / Texture2DArrayTexture2D / Texture2DArray

- Texture3DTexture3D- adressiert durch (u,v,w)-Vektoradressiert durch (u,v,w)-Vektor

- verhält sich als Rendertarget wie ein 2D-Arrayverhält sich als Rendertarget wie ein 2D-Array

- kein Array-Konzept!kein Array-Konzept!

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Texture SubresourcesTexture Subresources

- Subresource: Kombination aus Textur-Ressource Subresource: Kombination aus Textur-Ressource und Mipmap-Levelund Mipmap-Level

- wird benutzt für Resource Viewswird benutzt für Resource Views

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Neuerungen in Direct3D 10Neuerungen in Direct3D 10

Resource ViewsResource Views

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Resource Views (1)Resource Views (1)

- legt die Hardware-Interpretation einer Ressource legt die Hardware-Interpretation einer Ressource im Speicher festim Speicher fest

- erlaubt Pipeline Stages, lediglich auf die erlaubt Pipeline Stages, lediglich auf die benötigten Subresourcen zuzugreifenbenötigten Subresourcen zuzugreifen

- Beispiel: Zugriff auf alle Mipmaps Level 2 eines Beispiel: Zugriff auf alle Mipmaps Level 2 eines Texture2DArrayTexture2DArray

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Resource Views (2)Resource Views (2)

Verwendung alsVerwendung als

- Render-Target ViewRender-Target View- nur ein Mipmap-Level darf Render-Target seinnur ein Mipmap-Level darf Render-Target sein

- zugehöriger Depth Stencil Viewzugehöriger Depth Stencil View

- Depth Stencil ViewDepth Stencil View

- Shader Resource ViewShader Resource View

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Resource Views (2)Resource Views (2)

Verwendung alsVerwendung als

- Render-Target ViewRender-Target View

- Depth Stencil ViewDepth Stencil View- wird zusammen mit dem zugehörigen Render-Target View wird zusammen mit dem zugehörigen Render-Target View

an die OM-Stage gebundenan die OM-Stage gebunden

- Shader Resource ViewShader Resource View

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Resource Views (2)Resource Views (2)

Verwendung alsVerwendung als

- Render-Target ViewRender-Target View

- Depth Stencil ViewDepth Stencil View

- Shader Resource ViewShader Resource View- bindet eine Ressource an eine Shader Stagebindet eine Ressource an eine Shader Stage

- dieser View kann eine Ressource als etwas anderes dieser View kann eine Ressource als etwas anderes interpretieren, als sie erzeugt wurdeinterpretieren, als sie erzeugt wurde

Texture2DArray Texture2DArray CubeMap CubeMap

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Neuerungen in Direct3D 10Neuerungen in Direct3D 10

Wegfall von Capability BitsWegfall von Capability Bits

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Wegfall von Capability BitsWegfall von Capability Bits

von Microsoft gepriesen:von Microsoft gepriesen:

- festgelegte Funktionalität von DirectX 10 – festgelegte Funktionalität von DirectX 10 – HardwareHardware

keine CAP Bits mehr nötigkeine CAP Bits mehr nötig

ABER:ABER:

für Ressourcen-Formate gibt es wiederum optionale für Ressourcen-Formate gibt es wiederum optionale FeaturesFeatures

u.a. für MSAA und FP32-Filterungu.a. für MSAA und FP32-Filterung

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Neuerungen in Direct3D 10Neuerungen in Direct3D 10

„„Layered Runtime“:Layered Runtime“:

in Ebenen angeordnete Laufzeitstrukturin Ebenen angeordnete Laufzeitstruktur

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Runtime LayersRuntime Layers

ermöglicht beim Erzeugen eines D3D10-Devices, die ermöglicht beim Erzeugen eines D3D10-Devices, die Funktionalität in „Schichten“ anzugebenFunktionalität in „Schichten“ anzugeben

- Core LayerCore Layer- bietet Grundfunktionenbietet Grundfunktionen

- ist die einzige obligatorische Ebeneist die einzige obligatorische Ebene

- Debug LayerDebug Layer

- Switch-To-Reference LayerSwitch-To-Reference Layer

- Thread-Safe LayerThread-Safe Layer

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Runtime LayersRuntime Layers

ermöglicht beim Erzeugen eines D3D10-Devices, die ermöglicht beim Erzeugen eines D3D10-Devices, die Funktionalität in „Schichten“ anzugebenFunktionalität in „Schichten“ anzugeben

- Core LayerCore Layer

- Debug LayerDebug Layer- ermöglicht Parameter- und Konsistenzvalidierungermöglicht Parameter- und Konsistenzvalidierung

- erzeugt Debugausgabenerzeugt Debugausgaben

- wie üblich: Device mit Debug Layer läuft merklich wie üblich: Device mit Debug Layer läuft merklich langsamerlangsamer

- Switch-To-Reference LayerSwitch-To-Reference Layer

- Thread-Safe LayerThread-Safe Layer

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Runtime LayersRuntime Layers

ermöglicht beim Erzeugen eines D3D10-Devices, die ermöglicht beim Erzeugen eines D3D10-Devices, die Funktionalität in „Schichten“ anzugebenFunktionalität in „Schichten“ anzugeben

- Core LayerCore Layer

- Debug LayerDebug Layer

- Switch-To-Reference LayerSwitch-To-Reference Layer- ermöglicht einer Anwendung den Wechsel auf die von ermöglicht einer Anwendung den Wechsel auf die von

Hardware-Device (HAL) auf Referenz-Device (REF)Hardware-Device (HAL) auf Referenz-Device (REF)

- Thread-Safe LayerThread-Safe Layer

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Runtime LayersRuntime Layersermöglicht beim Erzeugen eines D3D10-Devices, die ermöglicht beim Erzeugen eines D3D10-Devices, die

Funktionalität in „Schichten“ anzugebenFunktionalität in „Schichten“ anzugeben

- Core LayerCore Layer

- Debug LayerDebug Layer

- Switch-To-Reference LayerSwitch-To-Reference Layer

- Thread-Safe LayerThread-Safe Layer- ermöglicht Zugriff auf das Grafik-Device parallel aus ermöglicht Zugriff auf das Grafik-Device parallel aus

mehreren Threadsmehreren Threads

- Achtung! Achtung! Dieses Layer ist standardmäßig aktiv und muß Dieses Layer ist standardmäßig aktiv und muß explizit explizit ababgeschaltet werden, falls dies gewünscht ist!geschaltet werden, falls dies gewünscht ist! D3D10_CREATE_DEVICE_SINGLETHREADED D3D10_CREATE_DEVICE_SINGLETHREADED

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Neuerungen in Direct3D 10Neuerungen in Direct3D 10

Common-Shader CoreCommon-Shader Core

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Common-Shader Core (1)Common-Shader Core (1)

- Gedanke: alle Shader-Arten bieten dieselbe Gedanke: alle Shader-Arten bieten dieselbe GrundfunktionalitätGrundfunktionalität

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Common-Shader Core (2)Common-Shader Core (2)

- Input DataInput Data- Vertex ShaderVertex Shader: :

vom Input Assemblervom Input Assembler

- Pixel/Geometry ShaderPixel/Geometry Shader: : vom vorherigen Shadervom vorherigen Shader

- system-generierte Werte, system-generierte Werte, werden von der ersten werden von der ersten zutreffenden Pipeline-Einheit zutreffenden Pipeline-Einheit benutztbenutzt

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Common-Shader Core (2)Common-Shader Core (2)

- Output DataOutput Data- Shader geben Daten an die Shader geben Daten an die

nächste Stage weiternächste Stage weiter

- Menge an GS-Output kann Menge an GS-Output kann variierenvariieren

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Common-Shader Core (2)Common-Shader Core (2)

- Shader Code kann…Shader Code kann…- aus dem Speicher lesenaus dem Speicher lesen

- fp- und int-Arithmetik fp- und int-Arithmetik durchführendurchführen

- FlußkontrolleFlußkontrolle

- unbegrenzte Zahl von unbegrenzte Zahl von AnweisungenAnweisungen

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Common-Shader Core (2)Common-Shader Core (2)

- SamplersSamplers- definieren, wie Texturen definieren, wie Texturen

gesampled und gefiltert gesampled und gefiltert werdenwerden

- 16 Sampler pro Shader 16 Sampler pro Shader gleichzeitiggleichzeitig

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Common-Shader Core (2)Common-Shader Core (2)

- TexturesTextures- können per Sampler gefiltert können per Sampler gefiltert

oder texelweise mit load() oder texelweise mit load() gelesen werdengelesen werden

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Common-Shader Core (2)Common-Shader Core (2)

- BuffersBuffers- können nicht gefiltert können nicht gefiltert

werdenwerden

- werden elementweise per werden elementweise per load() gelesenload() gelesen

- 128 Buffer und Textures 128 Buffer und Textures gleichzeitig pro Shadergleichzeitig pro Shader

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

computer graphics & computer graphics & visualizationvisualization

Oliver Rahner - Hauptseminar Computer Graphics, SS 2007Oliver Rahner - Hauptseminar Computer Graphics, SS 2007

Common-Shader Core (2)Common-Shader Core (2)

- Constant BuffersConstant Buffers- optimiert für Shader-optimiert für Shader-

Constants, also für häufige Constants, also für häufige Updates durch die CPUUpdates durch die CPU

- 16 Constant Buffers 16 Constant Buffers gleichzeitig pro Shadergleichzeitig pro Shader