A Walk Through Direct3D SDK 11
Back in March, we released a new version of our Graphics SDK, with a host of new samples focusing on exploiting new DirectX 11 features and some exciting technologies that can be exploited in either DirectX 11 or older APIs. In order to help get the word out and direct people to the samples that are of the greatest interest, we've written up quick walk-through of the SDK 11. For more information on any of these, please visit the Direct3D Graphics SDK 11 page on the Nvidia Developer Zone to download source and whitepapers.
The first major DirectX 11 feature that the SDK covers is hardware-accellerated tessellation. For those not familiar, DirectX 11 adds several stages to the geometry pipeline, which allow new classes of shaders to determine if and how each polygon produced by the Vertex Shader should be subdivided; the GPU generates the desired mesh accordingly, and then then, a second shader runs on the resulting geometry so that it can be manipulated as the programmer sees fit.
The first sample pictured above, Tessellation Pattern Viewer, provides a simple visual explanation of how the subdivision is controlled, as well as examples of the various modes that DirectX 11 tessellation can run in.
Tessellation is a natural solution for geometry that is largely data-derived and where the players view may vary widely within a scene. The Island sample demonstrates how tessllation can be used for objects like terrain and water, deriving the desired tessellation level from the camera position and using texture data to generate geometry at the desired detail level on the fly. Meanwhile, the Terrain Tessellation sample takes this a step further, demonstrating how this can be applied to a massive streaming dataset, dynamically loading new terrain sections and showing how to adjust tessellation factors so that T-junctions aren't visible at the seams.
The last two samples demonstrate everything you need to know to extend tessellation technology to artist-generated content. The PN-Triangles and Gregory ACC samples each show how to determine scaling factors, offset tessellated vertices using interpolated positions and normals, and avoid gaps at seams.
DirectCompute and Simulation
The second major addition to DirectX 11 is DirectCompute -- an extension of the API that allows DirectX programs direct access to the tremendous parallel processing performance Nvidia's GPUs can provide. Applications can use this power for a variety of purposes, from Physical Simulation to AI to advanced rendering techniques that might not fit perfectly into the traditional graphics pipeline. SDK 11 includes a few samples that show the basics of how such systems could be written, as well as some techniques which are useful on their own.
N-Body Interaction demonstrates how to efficiently access memory and run calculations on a large number of independant objects, like you might find in a physical simulation. Constant Time Gaussian Blur takes some of those same techniques and applies them to 2D image processing, showing how to quickly blur an image efficiently and independant of kernel width. Horizon-Based Ambient Occlusion using Compute shaders provides an example of a Screen-Space Ambient Occlusion effect done using Direct Compute. Finally, Hair takes advantage of both DirectCompute and tessellation to render convincing, physically interactive hair, while FFT Ocean shows how you can perform complex data transforms efficiently on the GPU to generate realistic ocean waves.
Shadows and Lighting
The new SDK is not restricted to just new features like Tessellation and Compute -- we've included several samples that focus on more conventional rendering problems like particles, shadows, and lighting as well.
Opacity Mapping is a technique for rendering dense particle volumes with plausible self-shadowing from multiple light source. The sample provides a set of techniques to make this otherwise expensive process efficient, including rendering to off-screen targets at varying resolutions and a creative use of DirectX 11 tessellation. Multi-View Soft Shadows demonstrates an efficient method for rendering contact-hardening soft shadows, providing important scale and depth cues to 3D scenes. Last, Diffuse Global Illumination is an implementation of the "Cascaded Light Propogation Volumes for Real-Time Indirect Illumination" first described by Crytek in 2010, and shows one way of approximating indirect illumination effects in a dynamic scene.
Last but not least, the SDK includes a few samples that demonstrate technology that is not dependant on DirectX 11 features, but which may nonetheless very interesting to developers. The first such sample is Image-Based Anti-Aliasing, which provides a reference implementation of the FXAA anti-aliasing algorithm. FXAA provides much better performance than traditional MSAA, and better quality than many other image-based anti-aliasing methods, and has versions for both DirectX 11 and DirectX 9 pipelines. Next, Stochastic Transparency implements an innovative approach to solving the order-independant transparency problem in an efficient manner. Finally, 3D Vision Sample provides a reference for applications aiming for compatibility with Nvidia's 3D Vision automated support. The sample demonstrates several of the most common issues developers run into, and the best ways to resolve them.