TressFX

Last updated
AMD TressFX
Developer(s) AMD
Initial release2013
Stable release
4.1
Repository
Written in C++
License MIT License [1]
Website GPUOpen: 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.

Contents

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: [2]

Version 3.0

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

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. [4]

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. A integration into the Epic Games Unreal Engine 4.22 is provided including detailed documentation. [5]

PureHair

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

See also

Related Research Articles

<span class="mw-page-title-main">OpenGL</span> Cross-platform graphics API

OpenGL is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

<span class="mw-page-title-main">GeForce</span> Brand of GPUs by Nvidia

GeForce is a brand of graphics processing units (GPUs) designed by Nvidia and marketed for the performance market. As of the GeForce 40 series, there have been eighteen iterations of the design. The first GeForce products were discrete GPUs designed for add-on graphics boards, intended for the high-margin PC gaming market, and later diversification of the product line covered all tiers of the PC graphics market, ranging from cost-sensitive GPUs integrated on motherboards, to mainstream add-in retail boards. Most recently, GeForce technology has been introduced into Nvidia's line of embedded application processors, designed for electronic handhelds and mobile handsets.

<span class="mw-page-title-main">Graphics processing unit</span> Specialized electronic circuit; graphics accelerator

A graphics processing unit (GPU) is a specialized electronic circuit initially designed to accelerate computer graphics and image processing. After their initial design, GPUs were found to be useful for non-graphic calculations involving embarrassingly parallel problems due to their parallel structure. Other non-graphical uses include the training of neural networks and cryptocurrency mining.

A physics processing unit (PPU) is a dedicated microprocessor designed to handle the calculations of physics, especially in the physics engine of video games. It is an example of hardware acceleration.

<span class="mw-page-title-main">Free and open-source graphics device driver</span> Software that controls computer-graphics hardware

A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.

<span class="mw-page-title-main">CUDA</span> Parallel computing platform and programming model

Compute Unified Device Architecture (CUDA) is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for accelerated general-purpose processing, an approach called general-purpose computing on GPUs (GPGPU). CUDA API and its runtime: The CUDA API is an extension of the C programming language that adds the ability to specify thread-level parallelism in C and also to specify GPU device specific operations (like moving data between the CPU and the GPU). CUDA is a software layer that gives direct access to the GPU's virtual instruction set and parallel computational elements for the execution of compute kernels. In addition to drivers and runtime kernels, the CUDA platform includes compilers, libraries and developer tools to help programmers accelerate their applications.

nouveau (software) Open source software driver for Nvidia GPU

nouveau is a free and open-source graphics device driver for Nvidia video cards and the Tegra family of SoCs written by independent software engineers, with minor help from Nvidia employees.

<span class="mw-page-title-main">OpenCL</span> Open standard for programming heterogenous computing systems, such as CPUs or GPUs

OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs) and other processors or hardware accelerators. OpenCL specifies programming languages for programming these devices and application programming interfaces (APIs) to control the platform and execute programs on the compute devices. OpenCL provides a standard interface for parallel computing using task- and data-based parallelism.

Nvidia Optimus is a computer GPU switching technology created by Nvidia which, depending on the resource load generated by client software applications, will seamlessly switch between two graphics adapters within a computer system in order to provide either maximum performance or minimum power draw from the system's graphics rendering hardware.

<span class="mw-page-title-main">Radeon 9000 series</span> Series of video cards

The R300 GPU, introduced in August 2002 and developed by ATI Technologies, is its third generation of GPU used in Radeon graphics cards. This GPU features 3D acceleration based upon Direct3D 9.0 and OpenGL 2.0, a major improvement in features and performance compared to the preceding R200 design. R300 was the first fully Direct3D 9-capable consumer graphics chip. The processors also include 2D GUI acceleration, video acceleration, and multiple display outputs.

<span class="mw-page-title-main">Mantle (API)</span> Low-overhead rendering API

Mantle was a low-overhead rendering API targeted at 3D video games. AMD originally developed Mantle in cooperation with DICE, starting in 2013. Mantle was designed as an alternative to Direct3D and OpenGL, primarily for use on personal computers, although Mantle supports the GPUs present in the PlayStation 4 and in the Xbox One. In 2015, Mantle's public development was suspended and in 2019 completely discontinued, as DirectX 12 and the Mantle-derived Vulkan rose in popularity.

CodeXL was an open-source software development tool suite which included a GPU debugger, a GPU profiler, a CPU profiler, a graphics frame analyzer and a static shader/kernel analyzer.

Video Code Engine is AMD's video encoding application-specific integrated circuit implementing the video codec H.264/MPEG-4 AVC. Since 2012 it was integrated into all of their GPUs and APUs except Oland.

GPU virtualization refers to technologies that allow the use of a GPU to accelerate graphics or GPGPU applications running on a virtual machine. GPU virtualization is used in various applications such as desktop virtualization, cloud gaming and computational science.

Stage3D is an Adobe Flash Player API for rendering interactive 3D graphics with GPU-acceleration, within Flash games and applications. Flash Player or AIR applications written in ActionScript 3 may use Stage3D to render 3D graphics, and such applications run natively on Windows, Mac OS X, Linux, Apple iOS and Google Android. Stage3D is similar in purpose and design to WebGL.

<span class="mw-page-title-main">Metal (API)</span> iOS, macOS, and tvOS graphics rendering API

Metal is a low-level, low-overhead hardware-accelerated 3D graphic and compute shader API created by Apple, debuting in iOS 8. Metal combines functions similar to OpenGL and OpenCL in one API. It is intended to improve performance by offering low-level access to the GPU hardware for apps on iOS, iPadOS, macOS, and tvOS. It can be compared to low-level APIs on other platforms such as Vulkan and DirectX 12.

Nvidia GameWorks is a middleware software suite developed by Nvidia. The Visual FX, PhysX, and Optix SDKs provide a wide range of enhancements pre-optimized for Nvidia GPUs. GameWorks is partially open-source. The competing solution being in development by AMD is GPUOpen, which was announced to be free and open-source software under the MIT License.

Vulkan is a low-level low-overhead, cross-platform API and open standard for 3D graphics and computing. It was intended to address the shortcomings of OpenGL, and allow developers more control over the GPU. It is designed to support a wide variety of GPUs, CPUs and operating systems, it is also designed to work with modern multi-core CPUs.

<span class="mw-page-title-main">GPUOpen</span> Middleware software suite

GPUOpen is a middleware software suite originally developed by AMD's Radeon Technologies Group that offers advanced visual effects for computer games. It was released in 2016. GPUOpen serves as an alternative to, and a direct competitor of Nvidia GameWorks. GPUOpen is similar to GameWorks in that it encompasses several different graphics technologies as its main components that were previously independent and separate from one another. However, GPUOpen is partially open source software, unlike GameWorks which is proprietary and closed.

<span class="mw-page-title-main">ROCm</span> Parallel computing platform: GPGPU libraries and application programming interface

ROCm is an Advanced Micro Devices (AMD) software stack for graphics processing unit (GPU) programming. ROCm spans several domains: general-purpose computing on graphics processing units (GPGPU), high performance computing (HPC), heterogeneous computing. It offers several programming models: HIP, OpenMP/Message Passing Interface (MPI), and OpenCL.

References

  1. "TressFX MIT License". GitHub . 2019-03-05.
  2. "TressFX Hair: Cross-platform and v2.0".
  3. "Dawn Engine – First Slide Showcasing AMD's TressFX 3.0".
  4. "TressFX 4.0 ReadeMe". GitHub . 2020-08-11.
  5. "TressFX 4.1 ReadeMe". GitHub . 2020-08-11.
  6. "Rise of the Tomb Raider will have improved TressFX".
  7. "Rise of the Tomb Raider uses modified version of TressFX".