DirectX 10 API
description
Transcript of DirectX 10 API
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
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
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
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
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() ) );
}
}
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();
}
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
- ……
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
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
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
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 );
}
}
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 );
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
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
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
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
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
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
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
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];
};
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
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
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
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
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
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
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!
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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