High fidelity characters seem a bit out of reach of real-time apps (games).
10 to 30K chars not out of reach for 360/PS3
Striving for Cinematic Quality Characters
think in terms of triangles currently
Catmull-Clark subdivision surfaces
- Industry standard subdivision surface scheme
Modern implementations don’t require too smooth
Direct3D11
- Realtime rendering of Catmull-Clark
- 3 new pipelline stages
- Hardware design removes bandwidth bottlenecks from current implmentations
- Better use of multi-core processors and improved shader management
(dynamic shader linking)
Direct3D11 Pipeline
- Hull Shader
- Tesselator
- Domain Shader
Tessleation Data Flow
- Hull shader – executed per patch
- Tessellator – executed per patch (fixed-function) generates triangle
- Domain shader – per tessllated vertex
Hull Shader
- patch control points (input)
- output to Domain Shader
- two phases per patch(control points, patch constant)
- patch constant output to tessellator (modifies behavior of tessellator)
- control points go to domain shader
Tessellator
- state from D3D API
- input from Patch constant phase
- generates tessellated triangles
- out to later stages
Domain Shader
- Hull Shader and Tessellator output
- Smooth surface evaluated
- one vertex
- Control points are in GPU (saves bandwidth)
Where to use
- LOD of terrain
- Bezier patches from higher-order surfaces (Catmull-Clark)
Catmull-Clark
- Baked into content early
- Goal is real time
- Disadvantage (have to build offline and huge memory issues)
Loop-Schaefer approximation (D3D11), others exist
Benefits
- Content creation easier
- Save memory
- Easier LOD (doesn’t require sep meshes) so no use for MIP maps?
Pipeline
- offline Load control mesh
- offline compute adjacency for each quad
- offline compute texture tangent space for each vertex
- rt Morph & skin the quad mesh in the VS
- rt convert quad mesh into patches in hull shader
- rt Evaluate patches using domain shader
- rt apply displayment map
tangent patches (fixes up surface normals) extrodianry vertex (<4 or > 4)
Available in March 2009 DX SDK (today), next release in June 09
SubD11 sample
Optimization will be performed when hardware is finalized
Current shader design is not expected to perform well on hardware.
No comments:
Post a Comment