New DirectX11 Hardware Features
Next, let's take a look at some
of the hardware specific features DirectX 11 brings.
New Hardware Stages for Tessellation
DirectX 11 brings three new
stages (hull shader, tessellator, and domain shader) to the rendering pipeline.
These stages enable flexible, programmable hardware support of tessellation. The
hull and domain shaders are programmable parts; the tessellator is fixed
function but supports a number of insertion settings providing control over the
generated position data.
Hull Shader
This programmable unit allows transforms on input data to be performed as
it runs at the source control mesh frequency. When discussing applications of
the pipeline, we often mention performing a basis change in this shader, from one surface representation to another-for
example, from Catmull-Clark quad mesh to Bezier patch controls.
Tessellator
This fixed-function unit can be simply thought of as a data expander and as
a place where the IHVs can safely parallelize with the user-provided
algorithms. It takes tessellation factors as input and inserts vertices in surface
U,V space according to the chosen partitioning scheme.
Domain Shader
This unit executes once for every generated vertex, and as such is the place where surface formulations are evaluated. The inputs to this stage are provided in surface U,V domain ready for parametric surface
evaluation.
The pipeline supports several
input types (quad patch, triangle patch, or even poly-line), which allows
developers to target almost any surface formulation. One usage scenario that
has been strongly requested is support of sub-division surfaces for rendering
characters.
Sub-Division Surface Approximation
Schemes
Charles Loop and Scott Schaefer from Microsoft Research worked on a number
of approaches for approximating sub-division surfaces that can be applied to the
DirectX 11 pipeline. One of the approaches, provided as a DirectX 10 sample in
the DirectX SDK, changes a quad patch basis mesh into Bezier surfaces of fixed
tessellation. When applied to the DirectX 11 pipeline, this and other schemes
can be used to deliver real-time rendering of sub-division surface meshes.
Improved Texture Compression
Textures in games are often the
largest area of memory utilization, so it should be no surprise that further
improvements to texture compression are needed to keep working set size and memory
bandwidth consumption within the rates required for real-time rendering. DirectX
11 arms developers with new compression formats (BC6 and BC7) to help target high-quality
rendering without sacrificing performance. Here we will focus on two specific examples
of how DirectX 11 raises the bar for rendering quality. Some of you may be more
familiar with the older DXT-style naming convention, which was changed to the block
compressed (BC) naming convention for DirectX 10. The newer naming convention
is used here.
Compression of High Dynamic Range (HDR) Image Sources
High dynamic range image sources are very common in games these days. When
combined with intelligent tone map operators, HDR is often required to make
titles look photorealistic. The new block compression (BC) scheme, BC6, has
been designed to provide high-quality 6:1 compression of HDR image data with hardware
support for decompression.

Click for full size.
Here we can see a comparison
image for the HDR format. On the left is the HDR original image tone-mapped to
a given exposure, and on the right is the equivalent BC6 image. The absolute
error image is in the center. Notice how
the Abs image contains no obvious blocking errors, the errors we are seeing are
generally diffused noise errors. These are visually much less noticeable to the
human eye than edges introduced by blocking.
Low Dynamic Range (LDR)
/ Normal Map Compression
The new BC7 scheme provides support for 8-bit/low dynamic range (LDR) data
at 3:1 ratios. Here we compare the results of the new format with the existing
block compressed approach, BC3.

Click for full size.
You can clearly see the blocking artifacts
in the BC3 image, which are drastically reduced in the BC7 image. With this
feature, developers and artists can expect more from their linear texture
content and normal maps for the same or lower cost in memory size.