![Page 1: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/1.jpg)
Introduction to the
Kevin Gee - XNA Developer Connection
Introduction to theDirect3D 11 Graphics Pipeline
© 2008 NVIDIA Corporation.
Microsoft Corporation
![Page 2: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/2.jpg)
Key Takeaways• Direct3D 11 focuses on
– Increasing scalability, Increasing scalability, – Improving the development experience, – Extending the reach of the GPU,– Improving Performance.
• Direct3D 11 is a strict superset of D3D 10 & 10.1Adds support for new features– Adds support for new features
– Start developing on Direct3D 10/10.1 today• Available on Windows Vista & future Windows Available on Windows Vista & future Windows
operating systems• Supports 10 / 10.1 level hardware
![Page 3: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/3.jpg)
Outline• Drilldown
– Tessellation– Tessellation– Compute Shader
Multithreading– Multithreading– Dynamic Shader Linkage
Improved Texture Compression– Improved Texture Compression– Quick Glance at Other Features
A il bili• Availability
![Page 4: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/4.jpg)
Character Authoring PipelineCharacter Authoring Pipeline(Rocket Frog Taken From Loop &Schaefer, "Approximating Catmull-Clark Subdivision Surfaces with Bicubic Patches“)
Sub-D Modeling Animation Displacement Map
Polygon Mesh Generate LODs
![Page 5: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/5.jpg)
Character Authoring (Cont’d)• Trends
– Denser meshes, more detailed characters,• ~5K triangles -> 30-100K triangles
– Complex animationsA i i l h i l• Animations on polygon mesh vertices more costly
• ResultIntegration in authoring pipeline painful– Integration in authoring pipeline painful
– Larger memory footprints causing painful I/O issues
• Solution• Solution– Use the higher-level surface representation longer
• Animate control cage (~5K vertices)• Generate displacement & normal maps
![Page 6: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/6.jpg)
Direct3D 11 Pipeline
Direct3D 10 pipelinel
Input Assembler
Vertex Shader
PlusThree new stages for
Hull Shader
ll TessellationTessellator
Domain Shader
Rasterizer
Geometry Shader Stream Output
Pixel Shader
Output Merger
![Page 7: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/7.jpg)
Hull Shader (HS)
HS input:patch control pts One Hull Shader
Hull Shader
patch control ptsinvocation per patch
Hull Shader
HS output:Patch control pts after
HS output:• TessFactors (how much to tessellate)
Tessellator
Patch control pts afterBasis conversion
• TessFactors (how much to tessellate) • fixed tessellator mode declarations
DomainShader
![Page 8: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/8.jpg)
Fixed-Function Tessellator (TS)Hull Shader
TS i tNote: Tessellator
TS input:• TessFactors (how much to tessellate)• fixed tessellator mode declarations
does not see control points
Tessellator
TS output: TS output:
Domain Sh d
TS output:• U V {W} domain points
TS output:• topology(to primitive assembly)
Shader
Tessellator operates per operates per patch
![Page 9: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/9.jpg)
Domain Shader (DS)
Hull Shader
Tessellator
DS input:
DS input:• control points
T F DS input:• U V {W} domain points
• TessFactors
Domain Shader
O D i Sh d DS output:• one vertex
One Domain Shader invocation per point from pTessellator
![Page 10: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/10.jpg)
Direct3D 11 Pipeline
• D3D11 HW Feature
Input Assembler
Vertex ShaderD3D11 HW Feature
• D3D11 OnlyF d l
Hull Shader
ll • Fundamental primitive is patch ( t t i l )
Tessellator
Domain Shader
(not triangle)• Superset of Xbox 360 Rasterizer
Geometry Shader Stream Output
tessellationPixel Shader
Output Merger
![Page 11: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/11.jpg)
Example Surface Processing PipelineSi gl !
domain shadervertex shader
Single-pass process!hull shader tessellator
Evaluate surface
including
Animate/skinControl
Transform basis,Determine how
Tess Factors Tessellate! including
displacementPoints much to tessellateFactors
patchcontrol points
transformedcontrol points
control pointsin Bezier patch
U V {W} domain points
displacementmap
Sub-D Patch Bezier Patch
![Page 12: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/12.jpg)
New Authoring PipelineNew Authoring Pipeline(Rocket Frog Taken From Loop &Schaefer, "Approximating Catmull-Clark Subdivision Surfaces with Bicubic Patches“)
Sub-D Modeling Animation Displacement Map
Optimally Tessellated Mesh
GPU
![Page 13: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/13.jpg)
Tessellation: Summary• Provides
– Smooth silhouettes – Richer animations for less
• Scale visual quality across hardware configurationsq y g• Supports performance improvements
– Coarse model = compression, faster I/0 to GPU– Cheaper skinning and simulation– Improve pixel shader quad utilization– Scalable rendering for each end user’s hardware
• Render content as artists intend it!
![Page 14: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/14.jpg)
Outline• Drilldown
– Tessellation– Tessellation– Compute Shader
Multithreading– Multithreading– Dynamic Shader Linkage
Improved Texture Compression– Improved Texture Compression– Quick Glance at Other Features
A il bili• Availability
![Page 15: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/15.jpg)
GPGPU & Data Parallel Computing
• GPU performance continues to grow• Many applications scale well to massive
parallelism without tricky code changesp y g• Direct3D is the API for talking to GPU• How do we expand Direct3D to GPGPU?• How do we expand Direct3D to GPGPU?
![Page 16: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/16.jpg)
Direct3D 11 Pipeline
Direct3D 10 pipelinel
Input Assembler
Vertex Shader
PlusThree new stages for
Hull Shader
ll TessellationPlus
Tessellator
Domain Shader lusCompute Shader
Rasterizer
Geometry Shader Stream Output
Pixel Shader
Output Merger
Compute ShaderData Structure
![Page 17: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/17.jpg)
Integration with Direct3D
• Fully supports all Direct3D resources• Targets graphics/media data types• Evolution of DirectX HLSLEvolution of DirectX HLSL• Graphics pipeline updated to emit general
data structuresdata structures…• …which can then be manipulated by
h dcompute shader…• And then rendered by Direct3D again
![Page 18: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/18.jpg)
Example Scenario• Render scene
Write out scene image
Input Assembler
Vertex Shader
• Write out scene image• Use Compute for
Hull Shader
ll image post-processing• Output final image
Tessellator
Domain Shader
Rasterizer
Geometry Shader Stream Output
Pixel Shader
Output Merger
Compute ShaderData Structure
![Page 19: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/19.jpg)
Target Applications
• Image/Post processing:– Image Reduction– Image Histogramg g– Image Convolution– Image FFTImage FFT
• A-Buffer/OIT• Ray tracing radiosity etc• Ray-tracing, radiosity, etc.• Physics• AI
![Page 20: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/20.jpg)
Compute Shader: Summary
• Enables much more general algorithms• Transparent parallel processing model• Full cross-vendor supportFull cross vendor support
– Broadest possible installed base
![Page 21: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/21.jpg)
Outline• Overview• Drilldown• Drilldown
– TessellationC t Sh d– Compute Shader
– MultithreadingD i Sh d Li k– Dynamic Shader Linkage
– Improved Texture Compression– Quick Glance at Other Features
• Availability
![Page 22: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/22.jpg)
D3D11 Multithreading Goals• Asynchronous resource loading
– Upload resources create shaders create state – Upload resources, create shaders, create state objects in parallel
– Concurrent with renderingConcurrent with rendering
• Multithreaded draw & state submissionSpread out render work across many threads– Spread out render work across many threads
• Limited support for per-object display lists
![Page 23: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/23.jpg)
Devices and Contexts• D3D device functionality now split into
three separate interfacesthree separate interfaces• Device, Immediate Context, Deferred
ContextContext– Device has free threaded resource creation
I di t C t t i i l i – Immediate Context is your single primary device for state, draws, and queriesDeferred Contexts are your per thread devices – Deferred Contexts are your per-thread devices for state & draws
![Page 24: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/24.jpg)
D3D11 Interfaces
Render Thread Load Thread 2Load Thread 1
ImmediateContext
DeviceContext
DrawPrimCreateTexture
CreateShaderCreateTexture
CreateVBDrawPrim
DrawPrimCreateShaderCreateShader
DrawPrim
DrawPrimCreateVBCreateIB
DrawPrim
![Page 25: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/25.jpg)
Async Resources• Use the Device interface for resource
creationcreation• All functions are free threaded
Uses fine grained sync primitives– Uses fine-grained sync primitives
• Resource upload and shader compilation h tlcan happen concurrently
![Page 26: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/26.jpg)
State & Draw Submission• First priority: multithreaded submission
– Single-use display lists– Single-use display lists
• Lower priority: per-object display listsM lti l – Multiple reuse
• D3D11 display lists are immutable
![Page 27: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/27.jpg)
D3D11 InterfacesImmediate
ContextDeferredContext
DeferredContextContext Context Context
Display List Display List
DrawPrim
DrawPrim
DrawPrim
DrawPrim
DrawPrim
DrawPrim
DrawPrim DrawPrimDrawPrim
Execute
ExecuteExecute
![Page 28: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/28.jpg)
Deferred Contexts• Can create many deferred contexts
– Each one is single threaded (thread unsafe)Each one is single threaded (thread unsafe)
• Deferred context generates a Display List– Display List is consumed by Immediate or – Display List is consumed by Immediate or
Deferred contexts
• No read-backs or downloads from the GPUNo read backs or downloads from the GPU– Queries– Resource lockingResource locking
• Lock with DISCARD is supported on deferred contextsdeferred contexts
![Page 29: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/29.jpg)
D3D11 on D3D10 H/W• Deferred contexts are implemented at an
API-capture levelAPI capture level• Async resource creation uses coarse sync
primitivesprimitives– No longer free threaded; thread safe though
D3D10 d i b d t d t b tt • D3D10 drivers can be updated to better support D3D11 features
• Will work on Windows Vista as well as future Windows releases
![Page 30: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/30.jpg)
Outline• Overview• Drilldown• Drilldown
– TessellationC t Sh d– Compute Shader
– MultithreadingD i Sh d Li k– Dynamic Shader Linkage
– Improved Texture Compression– Quick Glance at Other Features
• Availability
![Page 31: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/31.jpg)
Shader Issues Today• Shaders getting bigger, more complex• Shaders need to target wide range of hardwareShaders need to target wide range of hardware• Optimization of different shader configurations
drives shader specializationp
![Page 32: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/32.jpg)
Options: Über-shader
Über-shaderfoo (…) {
if (m == 1) { // d t i l 1// do material 1
} else if (m == 2) {// do material 2
}}if (l == 1) {
// do light model 1} l if (l 2) {} else if (l == 2) {
// do light model 2}
}}
![Page 33: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/33.jpg)
Options: Über-shader“One Shader to Rule them All”• Good:• Good:
– All functionality in one placeR d t t h t ti– Reduces state changes at runtime
– One compile stepS b l di h d– Seems to be most popular coding method
• Bad:– Complex, unorganized shaders– Register usage is always worst case path
![Page 34: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/34.jpg)
Options: SpecializationMultiple specialized shaders for each
combination of settingscombination of settings• Good:
Always optimal register usage– Always optimal register usage– Easier to target optimizations
B d• Bad:– Huge number of resulting shaders– Pain to manage at runtime
![Page 35: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/35.jpg)
Combinatorial ExplosionNumber of Lights
Num
ber of Materiaals
![Page 36: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/36.jpg)
Solution: Dynamic Shader Linkage & OOP
I t d i OOP f t t HLSL• Introducing new OOP features to HLSL– Interfaces– Classes
• Can be used for static code• Also used as the mechanism for linking
specific functionality at runtimep y
![Page 37: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/37.jpg)
Interfaces
interface Lightinterface Light{
float3 GetDirection(float3 eye);
float3 GetColor();};
![Page 38: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/38.jpg)
Classesclass DirectionalLight : Light{
float3 GetDirection(float3 eye)float3 GetDirection(float3 eye){
return m_direction;}}
float3 GetColor(){
return m_color;}
float3 m_direction;float3 m_color;
};
![Page 39: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/39.jpg)
Dynamic Shader Linkage
Über-shader Dynamic Subroutinefoo (…) {
if (m == 1) { // d t i l 1
yMaterial1(…) { … }Material2(…) { … }
// do material 1} else if (m == 2) {
// do material 2}
Light1(…) { … }Light2(…) { … }
}if (l == 1) {
// do light model 1} l if (l 2) {
foo(…) {myMaterial.Evaluate(…);myLight Evaluate( );} else if (l == 2) {
// do light model 2}
}
myLight.Evaluate(…);}
}
![Page 40: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/40.jpg)
In the Runtime• Select specific class instances you want• Runtime will inline class methods• Runtime will inline class methods
– Equivalent register usage to a specialized shadershader
• Inlining is done in the native assemblyF i– Fast operation
• Applies to all subsequent Draw(…) calls
![Page 41: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/41.jpg)
Outline• Overview• Drilldown• Drilldown
– TessellationC t Sh d– Compute Shader
– MultithreadingD i Sh d Li k– Dynamic Shader Linkage
– Improved Texture Compression– Quick Glance at Other Features
• Availability
![Page 42: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/42.jpg)
Why New Texture Formats?• Existing block palette interpolations too
simplesimple• Results often rife with blocking artifacts
N hi h d i (HDR) t• No high dynamic range (HDR) support• NB: All are issues we heard from developers
![Page 43: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/43.jpg)
Two New BC’s for Direct3D11• BC6 (aka BC6H)
– High dynamic range– High dynamic range– 6:1 compression (16 bpc RGB)
Targeting high (not lossless) visual quality– Targeting high (not lossless) visual quality
• BC7LDR i h l h – LDR with alpha
– 3:1 compression for RGB or 4:1 for RGBA– High visual quality
![Page 44: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/44.jpg)
New BC’s: Compression• Block compression (unchanged)
– Each block independent– Each block independent– Fixed compression ratios
Multiple block types (new)• Multiple block types (new)– Tailored to different types of content
S h di i l – Smooth gradients vs. noisy normal maps– Varied alpha vs. constant alpha
Also new: decompression results must be bit-accurate with spec
![Page 45: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/45.jpg)
Multiple Block Types• Different numbers of color interpolation lines
– Less variance in one block means:• 1 color line• Higher-precision endpoints
More variance in one block means:– More variance in one block means:• 2 (BC6 & 7) or 3 (BC7 only) color lines• Lower-precision endpoints and interpolation bits
• Different numbers of index bits– 2 or 3 bits to express position on color line
• Alpha– Some blocks have implied 1.0 alpha– Others encode alpha
![Page 46: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/46.jpg)
Partitions• When using multiple color lines, each pixel
needs to be associated with a color lineneeds to be associated with a color line– Individual bits to choose is expensive
• For a 4x4 block with 2 color lines• For a 4x4 block with 2 color lines– 216 possible partition patterns
16 t 64 ll h titi tt i – 16 to 64 well-chosen partition patterns give a good approximation of the full setBC6H: 32 partitions– BC6H: 32 partitions
– BC7: 64 partitions, shares first 32 with BC6H
![Page 47: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/47.jpg)
Example Partition Table
A 32-partition table for 2 color linesp
![Page 48: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/48.jpg)
Comparisons
Orig BC3
Orig BC7
Abs Error
![Page 49: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/49.jpg)
Comparisons
Orig BC3
Orig BC7
Abs Error
![Page 50: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/50.jpg)
Comparisons
Abs ErrorHDR Original at BC6 atAbs ErrorHDR Original atgiven exposure
BC6 atgiven exposure
![Page 51: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/51.jpg)
Outline• Overview• Drilldown• Drilldown
– TessellationC t Sh d– Compute Shader
– MultithreadingD i Sh d Li k– Dynamic Shader Linkage
– Improved Texture Compression– Quick Glance at Other Features
• Availability
![Page 52: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/52.jpg)
Lots of Other FeaturesLots of Other Features• Addressable Stream Out• Draw Indirect
• Conservative oDepth• 2 GB Resources
• Pull-model attribute eval• Improved Gather4
• Geometry shader instance programming modelOptional double support• Min-LOD texture clamps
• 16K texture limits• Required 8 bit subtexel
• Optional double support• Read-only depth or stencil
views• Required 8-bit subtexel, submip filtering precision
![Page 53: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/53.jpg)
Outline• Overview• Drilldown• Drilldown
– TessellationC t Sh d– Compute Shader
– MultithreadingD i Sh d Li k– Dynamic Shader Linkage
– Improved Texture Compression– Quick Glance at Other Features
• Availability
![Page 54: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/54.jpg)
Questions?Questions?Questions?Questions?
![Page 55: Introduction to the Direct3D 11 Graphics Pipeline€¦ · • Ai i l h i lAnimations on polygon mesh vertices more costly • Result – Integration in authoring pipeline painful](https://reader033.vdocuments.net/reader033/viewer/2022042822/5f4f245ef9d6c327652fa4d1/html5/thumbnails/55.jpg)
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.