# TressFX

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.
A competing solution offered by Nvidia is HairWorks which is part of their Nvidia GameWorks suite and is proprietary in nature.
Released as part of GPUOpen AMD TressFX is free and open-source software subject to the MIT License.

## 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.

## Versions
### Version 1.0

TressFX Hair 1.0 was AMD's first release of this software in 2013. 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

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.

### Version 3.0

The first game confirmed to use TressFX 3.0 is Deus Ex: Mankind Divided.

### Version 4.0

Version 4.0 of TressFX was released on the 20. April 2018 and brought a wide variety of improvements including DirectX 12 support. This release also focused on being much easier to import into existing rendering frameworks.

### Version 4.1

This version was released on the 20 January 2020. It includes some performance improvements, but mostly is focused on better integration in existing rendering frameworks. An integration into the Epic Games Unreal Engine 4.22 is provided including detailed documentation.

### PureHair

PureHair is a version of TressFX modified by Square Enix for use in Rise of the Tomb Raider.