The Leo demo showcases a real-time, DirectX® 11 based lighting pipeline that is designed to allow for rendering scenes made of arbitrarily complex materials (including transparencies), multiple lighting models, and minimal restrictions on the number of lights that can be used — all while supporting hardware MSAA and efficient memory usage.
Specifically, this demo uses DirectCompute to cull and manage lights in a scene. The end result is a per-pixel or per-tile list of lights that forward-render based shaders use for lighting each pixel. This technique also allows for adding one bounce global illumination effects by spawning virtual point light sources where light strikes a surface. Finally, the lighting in this demo is physically based in that it is fully HDR and the material and reflection models take advantage of the ALU power of the AMD Radeon HD 7900 GPU to calculate physically accurate light and surface interactions (multiple BRDF equations, realistic use of index of refraction, absorption based on wavelength for metals, etc).
Demo: EXE v1.1 (755 MB)*
* This demo requires Windows Vista® or above operating system, latest AMD Catalyst™ software, a dual- or quad-core CPU, and 4GB of RAM. Runs best on an AMD Radeon HD 7900 Series graphics processor. Compatible with any DirectX 11 capable graphics processor from AMD.
Ptex and PRT Technology Preview
This technology preview, using OpenGL, demonstrates a way to implement Ptex (http://ptex.us/) in real time, making one of the latest film industry techniques practical for use in games. Ptex greatly simplifies the process of texture mapping and is already supported in a number of industry standard tools. Because Ptex also naturally eliminates seams, techniques such as vector displacement are easily enabled without need for manual seam fixup. Real-time Ptex per-primitive resolution control and the more efficient packing relative to traditional methods allow for higher quality textures, yet with very little computational overhead. Partially resident textures (PRT), accessible through an OpenGL extension, also allow for simpler Ptex addressing methods by enabling variable-sized slices in texture arrays, an addressing method which would otherwise be far too costly in memory usage.
Packed Ptex gives each primitive its own little texture. Here we see the packed Ptex textures for Leo’s face, including color, ambient occlusion, and world space normal on the left, and specular coefficients and vector displacement on the right.
Vector displacement allows for more drastic changes in shape than standard displacement mapping. Here we show how the folded-up cuffs on Leo’s shirt are formed from a simple blob with just two levels of tessellation.
An ear is an example where artists often struggle to manually fix seams caused by standard displacement mapping. However, the vector displacement map for Leo was created from the high and low resolution meshes with just a few button clicks and no manual tweaking.