Maths - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

Maths

Description:

Maths & Technologies for Games DirectX 11 New Features Tessellation & Displacement Mapping CO3303 Week 19 Today s Lecture Direct3D 11 New features Direct3D ... – PowerPoint PPT presentation

Number of Views:94
Avg rating:3.0/5.0
Slides: 19
Provided by: Lauren256
Category:
Tags: maths | nurbs

less

Transcript and Presenter's Notes

Title: Maths


1
Maths Technologies for GamesDirectX 11 New
FeaturesTessellation Displacement Mapping
  • CO3303
  • Week 19

2
Todays Lecture
  1. Direct3D 11 New features
  2. Direct3D 11 Changes from Direct3D 10
  3. New DX11 Pipeline
  4. Tessellation Overview
  5. Patches
  6. Details Hull Shader / Tessellation Stage /
    Domain Shader
  7. Displacement Mapping
  8. Technical Considerations and Issues

3
DirectX 11 New Features
  • DirectX 11 was introduced with Windows 7
  • But is also supported on Windows Vista
  • Major new features introduced in DX11
  • Multithreaded rendering
  • A single device can have several contexts
  • Different threads that can render using the same
    resources
  • Tessellation
  • Introduced in this lecture
  • Compute Shaders
  • General purpose (non-graphics) programming on the
    GPU
  • More recently, support has been added for DX10
    hardware
  • Shader Model 5.0 extra shader language features
  • High quality texture compression formats

4
Converting from DX10 to DX11
  • DirectX 11 is a strict superset of DX10.1
  • Nearly everything in DX10 works with minimal
    change
  • Not like the huge changes from DX9 to DX10
  • Key points when converting
  • The device pointer (g_pD3DDevice) has been split
    in two
  • A device pointer for overall control a context
    pointer for each thread
  • Use the immediate context pointer for single
    threaded work
  • Context pointer used for most rendering Draw,
    SetXXShader etc.
  • The Effects framework (.fx) is not in the
    provided libraries
  • Compile it ourselves (add an extra Effects11
    project to our solution)
  • DX maths libraries not in 11, now provided as an
    extra download
  • No font support in the D3DX libraries (now an
    extra download)
  • Or use Direct2D, DirectWrite, or a 3rd party
    library
  • Minor changes to a few DX structures require code
    tweaks

5
New DX11 Pipeline Stages
  • In order to support tessellation, DX11 adds three
    new stages to the rendering pipeline
  • Two programmable stages
  • Hull Shader
  • Domain Shader
  • One fixed stage in between
  • Tessellation stage
  • No shader
  • All three must be used together
  • Only used when tessellating
  • Disabled otherwise

6
Tessellation - Overview
  • Input geometry is made of patches and control
    points
  • Not strictly vertices and polygons
  • Each patch has several control points, from 1 to
    32
  • The vertex shader processes each control point
  • Likely to convert into world space
  • But probably not into viewport space since they
    are not ready for rendering
  • The hull shader also processes each control point
  • But can access all points for a patch
  • Used for patch-specific transforms

7
Tessellation - Overview
  • Hull shader has an associated patch constant
    function
  • Called once per patch
  • Determines the amount of tessellation required
    for that patch
  • The tessellation stage tessellates the patch as
    required
  • Tessellation occurs in generic 0-gt1 space, not
    world space
  • The domain shader takes the generic tessellation
    and control points and creates final vertices
  • Which are sent to the geometry / pixel shaders as
    normal

Tessellation Stage Generic tessellations with
different tessellation factors
Domain Shader Control points shape the generic
tessellation to create final mesh
8
Patches / Control Points
  • Model geometry for tessellation uses patches and
    control points
  • A patch is a line, triangle or quad, which is
    bent or shaped by some number of control points
  • For example, a Bezier spline
  • DirectX does not specify the available patch
    types
  • We can choose any and implement it in hull and
    domain shaders
  • This is potentially a huge change for game asset
    creation
  • Patches suit artwork creation much better than
    polygonal modelling

A quad patch and control points
Head made from quad patches
9
Hull Shader
  • The hull shader gets access to all the control
    points for a single patch and can process them in
    any way
  • It outputs the final control points used to shape
    the patch
  • It can output greater or fewer control points if
    necessary
  • For many tessellation purposes, we dont need to
    change the control points given
  • Often the vertex shader converts to world space
    theyre ready
  • So many hull shaders just copy input to output
  • However, they can be used for advanced purposes
  • Approximating complex input splines using simpler
    output splines
  • Providing per-control-point information to help
    the patch constant function (see next slide)

10
Patch Constant Function
  • The patch constant function is called once per
    patch
  • It must decide how much to tessellate each patch
  • It can also output other custom per-patch data
  • It can access the input control points and the
    hull shader ouput control points (as arrays) to
    do its job
  • Patch tessellation is specified as one Interior
    Tessellation Factor and three or four Edge
    Tessellation Factors
  • That is for a triangle or quad patch. A line only
    has one factor
  • These factors specify how much to divide the
    edges and split up the interior of each patch
    (see next slides)
  • A simple patch constant function can just set
    fixed values
  • More commonly the factors are increased as models
    get nearer, or for more complex areas of the
    geometry

11
Tessellation Stage
  • The tessellation stage uses the factors specified
    in the patch constant function
  • Divides up a unit square, triangle or line based
    on the factors
  • It works in a generic 0-gt1 space
  • Usually referred to with UV axes
  • Outputs this generic geometry as vertices for the
    domain shader next
  • Several fixed algorithms are available for the
    tessellation
  • Specify in the hull shader code

Edge Factors 3,1,1,1Interior Factors
1,1(Horizontal / Vertical)
Edge Factors 1,1,1,1Interior Factors 4,4
Edge Factors 4,4,4,4Interior Factors 4,4
12
Domain Shader
  • The domain shader
  • Takes control points output from the hull shader
  • And the generic vertices output from the
    tessellation stage
  • Combine to create final tessellation for the
    scene
  • Exactly what this involves depends on the patch
    type
  • At least involves transforming generic vertices
    to world space
  • Then some manipulation based on the control points

Five Control points shaping a tessellated
quad Number of control points and formula used
for shaping decided by programmer, e.g. NURBs
Catmull-Clark surfaces, etc.
13
Distance / Density Variation
  • It is common to vary the amount of tessellation
    used based on the geometry distance or complexity
    (density)
  • Distance variation is simpler
  • The patch control function can look at the
    distance of the control points to the camera
  • Make tessellation factor decisions based on that
  • Density variation needs pre-processing
  • The patch control function can get an integer ID
    for each patch
  • So analyse the complexity of each patch offline
  • Store complexity in an array (1D texture) indexed
    by patch ID
  • Patch control function reads this array to choose
    tessellation factors

14
Water-tight Patch Seams
  • As soon as we vary tessellation per-patch, there
    are problems with patch seams
  • Cracks in the geometry appearing at the edges
    between patches of different tessellation
  • That is why we can control the edge tessellation
    separately
  • Ensure all edges have the same tessellation
    factor in the patch on each side (watertight
    seams)
  • Additional processing for the patch constant
    function / hull shader

Adjacent patches, different tessellation causes
crack at seam
Match edge tessellation to create watertight
seams
15
Displacement Mapping
  • Displacement mapping is adjusting the height of
    vertices based on heights stored in a texture (a
    height map)
  • Effectively, this is parallax mapping done
    properly
  • Result has correct silhouettes and no visual
    problems
  • Requires finely detailed geometry, so it works
    well with tessellation
  • A very effective method to provide fine geometry
    detail with less expense and to make most
    effective use of the tessellation
  • Can be used on most kinds of patch

Parallax Mapping
Tessellation Height Map
Displacement Mapping
16
Displacement Mapping
  • Control points and patches seem far from a games
    polygonal models
  • But, can use displacement mapping and
    tessellation on polygons too
  • Call each triangle a patch
  • Call the three vertices control points
  • Use tessellation to create interior vertices and
    triangles
  • Hull shader just copies control points
  • Domain shader transforms generic tessellated
    triangle to position of original triangle
    tangent-space work for this
  • Displacement mapping on result vertices
  • Need height map for displacement and a normal map
    for lighting
  • Same requirements as parallax mapping

Triangle TessellationUsed on polygonal mesh
17
Technical Issues
  • Tessellation has performance implications
  • A very efficient method to draw large number of
    polygons
  • However, minimise it dont tessellate
    off-screen, use lower tessellation in the
    distance, fall back to normal mapping etc.
  • Displacement mapping brings more seam issues
  • Any discontinuity in texture, e.g. where two
    different textures meet, will cause a
    discontinuity in displacement (i.e. cracks)
  • Even with the most careful mapping, this cannot
    be avoided
  • Solve by specifying a dominant texture at patch
    seams
  • Extra coding in the hull shader / patch constant
    function
  • Sharp edges cause cracks (use normal map or
    averaging at edges)
  • Models must be designed with displacement in mind
  • Very low polygon models wont work well. Start
    with the basic shape of the height map designed
    into the geometry (see lab)

18
Future for Tessellation in Games
  • Will see tessellation / displacement mapping on
    standard polygonal models in the lab
  • However, these technologies allow us to start
    using patch / control point based geometry
    instead
  • Artists have long used patch-basedmodelling for
    commercial animation
  • Catmull-Clark subdivision surfacesare quite well
    suited to GPU tessellation
  • A low polygon surface that mathematically defines
    a curved patch
  • There have been a few experiments with these in
    games already, expect to see variants of these
    used more frequently
  • The polygon is dead (soon)
Write a Comment
User Comments (0)
About PowerShow.com