“Alien vs. Triangles” by NVIDIA Corporation

  • ©Mark Swain



    Alien vs. Triangles


Project Affiliation:

    NVIDIA Corporation


    Aliens vs. Triangles uses hardware tessellation to create more realistic and dynamic characters in real time. The demo uses an innovative method of blending multiple displacement maps to create a transformation of the alien’s skin. Touching the alien’s shoulder starts the transformation that slowly travels over the skin, turning him into a brutal soldier. On the other side of his body, when his hand is touched, an infection moves up his arm until he is fully transformed into a completely different mutant character. A laser blaster reveals the multiple levels of skin that can be blasted away to reveal his metal skeleton. The damage happens on several layers of displacements, starting with blisters, muscles, organs, and finally the metal skeleton. All of this is seamlessly blended using a multi-dimensional tessellation engine on a single-skinned and animated character.

    Highlights of the demo include:

    • Dynamic hardware tessellation to enable richer and more lifelike characters by dynamically increasing resolution based on eye-space distance, transformation maps, and damage maps.
    • Blending of multi-dimensional displacement maps to enable a single-skinned character to seamlessly transform using many displacement maps.
    • Tessallator knitting of each level of transformation and damage into a solid mesh, seamlessly integrating multiple displacement maps, tessellation amounts, and surface shaders.
    • Hardware tessellation for adding detail to the environment, optimized to add detail only where needed.
    • Seamless shader propagation and display of transformation and damage over a single-skinned character.
    • Animation blending driven by texture lookups into transformation and damage textures (using DirectX occlusion query).
    • DirectX Compute to calculate particle systems caused by laser blasts.


ACM Digital Library Publication:

Overview Page:


E-Tech Type: