DirectX Graphics: Direct3D 10 and Beyond

DirectX Graphics:
Direct3D 10 and Beyond
Sam Z. Glassenberg
Lead Program Manager
Graphics Platforms Unit
Microsoft Corporation
Graphics Core In Windows Vista
WPF
DWM
PIX
GDI
Media
Foundation
Legacy
D3D APIs
DX
VA
D3D9
Microsoftwritten code
IHV-written
code
MIL
D3D9 Direct3D
DXGI OpenGL
Ex
10
OpenGL
ICD
Common pipeline (DDI)
User-Mode
Driver
User Mode
Kernel Mode
Win32 Kernel
DXG Kernel
Kernel-Mode
Driver
Graphics Core In Windows Vista
Direct3D
10
Outline
The next few years
Direct3D 10 and Direct3D “10.1”
Design Imperatives
Features and Capabilities
Applications
The Situation Today
No single graphics hardware target
CPU-bound games and applications
Bandwidth and CPU cycles are the
bottleneck in multiple areas (physics, AI)
Large amount of CPU resources spent
directing the GPU
GPU
CPU
The Situation Today
No single graphics hardware target
CPU-bound games and applications
Bandwidth and CPU cycles are the
bottleneck in multiple areas (physics, AI)
Large amount of CPU resources spent
directing the GPU
GPU overly-specialized
Direct3D 10
Unleashing the power of the GPU
Consistency – guarantee a common
feature-set with strict requirements
Performance –
Render MORE
objects, materials, clutter, vegetation, shadows
with LESS
CPU cycles, stalls, and bandwidth cost
Visual Effects – unprecedented graphics
Capability – empower the GPU to handle
a new series of applications
Direct3D 10
Rebuilt from the ground-up
Direct3D 10 changes the way applications
think about…
Material management
GPU State, constants, shaders, …
CPU/GPU load-balancing
Vastly reduced API/driver overhead
More robust GPU capability
CPU-like precision and behavior requirements
Direct3D 10 Applications
Increasing breadth of applicability
Cutting-edge Windows Vista games
Workstation graphics
Image, video, and data processing
Shared-Exponent HDR
Compression
Stream Output(RGBE)
Direct3D 10 Features
Block-Compressed
Formats
Resource
Views maps
for bump/normal
Input
Assembler
Vertex Buffer
Index Buffer
Input
Assembler
128 texture
slots
Immediate
offset on Memory
8
Render
targets
Access
More
interstageInstructions
Integer/Bitwise
communication
Comparison Filtering
Instance, Vertex,
Primitive identifiers
Constant Buffers
Vertex
Shader
Texture
Geometry
Shader
Texture
Stream Output
Rasterizer/
Interpolator
Pixel
Shader
Output
Merger
Per-primitive Clip distance
State Objects
Texture
Depth/Stencil
Render Target
Direct3D 10
Geometry Shader Applications
Full control over the whole triangle
All-GPU Material Systems
Better materials
Hi-quality interpolation and derivatives
Wrinkle models
Cartoon and falloff effects
Geometry/data amplification
Fur/Fins
Procedural geometry/detailing
All-GPU Particle Systems
Data visualization techniques
Wide lines and strokes
…
Geometry Shader
Geometry
Shader
Geometry Shader Example
Shadow volume generation
Geometry Shader Example
Generalized displacement maps
Normal mapping
(Direct3D 9)
Geometry Shader Example
Generalized displacement maps
Displacement Mapping
(Direct3D 10)
Single Pass Render-To-Cubemap
Geometry Shader
v
u
y z
x
Single Pass Render-To-Cubemap
Render-To-Volume
Geometry
Shader
Stream Output
Dynamic procedural content example
Shader Model 4.0
A new level of programmability
Common Shader Core
Full integer/bitwise instruction set
Massively parallel image and data processing
Custom decompression schemes
Buffer Load – CPU-like unfiltered memory access
Switch statements and subroutines
No limits
More interstage registers, samplers, textures
Unlimited instruction count
Direct3D 10 Performance
Doing more in a single call
Set a bulk of render state with state objects
Render to an entire cubemap/volume
Render multiple specialized objects using
advanced instancing features
Generate procedural detail
Juggle multiple materials in a single shader
Direct3D 10
GPU material management
Render a multitude of unique materials
without taxing the CPU
Unlimited instruction length
Switch statements
Texture arrays
Geometry shader
Constant buffers
Access to material descriptions
Direct3D 10 Performance
Maximizing bandwidth efficiency
Constant Buffers
Update shader constant data (light positions,
material info, camera info, etc.) in bulk, only
when needed
Streamlined GPU resource
update mechanisms
Fast CPU readback via staging
New compression formats
Consistency
Strictly-defined, consistent
behavior throughout
IEEE floating-point compliance (almost)
Precise FP32 sampling/blending/math/conversion
rules; i.e.
FP32 shader ops – precise to 1.0 ULP
FP32 to Integer – precise to 0.6 ULP per op
FP16 blending – precise to 0.6 ULP per op
32-bit blending required
Exact line/triangle/anti-aliased
drawing rules
No Caps In Direct3D 10!
Direct3D 10 Optional Format Support
>1 Sample MSAA
32-bit FP filtering
RGB32 Rendertarget (RGBA32 is required)
Hardware (and applications) will scale
on perf, not feature selection
Increases breadth of applicability
Performance is critical
for a good experience
Direct3D10: An Inflection Point
The API exposes Direct3D 10-class hardware
Performance-focused API
No downlevel hardware support
Clean and consistent API
Application
All features guaranteed
Direct3D 10 takes full
advantage of WDDM
Direct3D 10 is
Windows Vista/WDDM-only
WDDM-basic guaranteed to
Direct3D 10 developers
Direct3D
User-Mode Driver
User Mode
Kernel Mode
DXGKml
GPU
Mem Mgr.
GPU
Scheduler
Kernel-Mode Driver
Graphics Hardware
Direct3D 10 Status
Hardware spec frozen for over a year
First publicly-available Tech Preview in
December 2005
Aligned with Windows Vista CTP’s
Updates bimonthly
Direct3D 10 Beta in Windows Vista Beta 2
RTM in Windows Vista
Currently underway
IHV driver development
Conformance test development
Launch titles
The Next Step: “Direct3D 10.1”
Direct3D 10.1
Design imperatives
Incremental hardware and software
update to Direct3D 10
Strict superset of Direct3D 10 features
API support for Direct3D 10
and 10.1 hardware
Direct3D 10.1
Goals
Guarantee WDDM 2.1-level capability
to developers and end-users
Lower CPU overhead
Massive datasets
Increase capability and performance
“Complete” Direct3D 10
Boost image quality: Improved
anti-aliasing
Direct3D 10.1 Features
Full anti-aliasing control
Application control over:
Multi-sample AA (smooth edges)
or
Super-sample AA (smooth edges and interior)
Selecting sample patterns
Pixel coverage mask
High-quality vegetation, motion blur, particles…
Minimum of 4 samples/pixel required
Direct3D 10.1 Features
Increased pipeline and shader capability
Improved shader resource access
Greater control over MSAA readback
Custom downsample filters
Improved shadow filtering
Float32 filtering requirement
Better HDR
Enhanced blending
Independent blend modes per-rendertarget
New blend-able rendertarget formats
Increased pipeline precision
Direct3D 10.1 Features
Performance enhancements
Enable applications to further exploit
multicore for rendering
Fewer API calls for reflections and refractions
Support for indexable, generalized cubemap arrays
y z
y z
y z
y z
x
x
x
x
Call To Action
Invest in performant Direct3D graphics –
end-user value scales with performance
Not just games!
(but games will look much better)
Direct3D 10 and WDDM for 2007
Direct3D 10.1 and WDDM 2.1 for “next”
Additional Resources
DirectX Developer Center
http://msdn.microsoft.com/DirectX
Direct3D 10 Tech Preview
Available in the DirectX SDK
Includes ~25 samples and tutorials –
with videos
Direct3D 10 reference rasterizer,
documentation, tools…
Game Developer Conference 2006
and PDC 2005 Direct3D 10 presentations
Related sessions
Future Directions in Graphics
WDDM v2 and Beyond
© 2006 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.