This article needs additional citations for verification. (August 2015) (Learn how and when to remove this template message)
AMD TressFX is a software library which provides for advanced simulation and rendering of hair, fur, and grass to be processed by the GPU. The initial library was written to perform well on AMD's GCN-based products. Version 3 was released on January 26, 2016, and works solely with Direct3D 11 and utilizes DirectCompute.
Motivations for Development and Origins
Traditionally, hair representation in video games has been sub-par for several reasons. For short hair (especially on male characters), hair has often been represented by a detailed texture on a character's skeleton. This makes it difficult to represent hair styles that are not pressed flat against the skull. Longer hair is often represented as a texture on a moving part of a skeleton and thus moves as a multi-jointed appendage. While this hair has more movement than the former, the movement is usually physically unrealistic – the hair moves as one body and movement is very often under or over damped.
In order to overcome this, AMD developed TressFX Hair. TressFX Hair models each of potentially thousands of strands of hair individually with dozens of links per strand of hair. Each strand reacts to different physical forces such as gravity, inertia, wind, and the movement of a character's head. This allows the hair to move in a much more physically realistic manner.
Because simulating thousands of strands of hair is much more computationally intense than displaying a texture over a character's skeleton, the impact of TressFX Hair on game performance and frame rates may not be trivial. High performance video cards may have enough resources available that the extra effort of rendering hair may produce negligible or acceptable frame rate losses. Conversely, older video cards may spend a large proportion of each frame's render time rendering hair, and this can noticeably reduce game performance. Of course, performance is interrelated with other game settings, resolution, the number of objects with hair to be rendered in the screen, amount of hair per object, and distance from the object.
TressFX Hair 1.0 was AMD's first release of this software in. Version 1.0 only offered support for hair and not fur or grass. The first game to use TressFX Hair was the 2013 game Tomb Raider.
Version 2.0 offers many improvements upon version 1.0 such as:
- Continuous Level of detail (LOD) is designed to improve performance by dynamically adjusting visual detail as TressFX-enabled objects move towards and away from the player’s point of view. This is done by rendering fewer hairs when far away from an object but making each hair thicker, thus reducing computational time but maintaining the same look and aesthetic.
- New functionality to support rendering for grass and fur in addition to hair.
- Hairs are arranged in groups. Hair naturally groups together on a person's head. Renderings produced by TressFX 1.0 however did not do this, and so the hair looks unnaturally separated.
- Gravity can be changed on the hair. For example, when swimming hair should be neutrally buoyant and should neither significantly sink nor float. In order to accomplish this, the gravity of the hair can be set to 0.
- Improved efficiency with many light sources and shaders via deferred rendering.
- Superior self-shadowing for better depth and texture in the hair.
- Even more robust scalability across GPUs of varying performance envelopes (vs. TressFX 1.0).
- Modular code and porting documentation.
- Stretchiness now respects the laws of physics.