Real-Time Hair Rendering with Hair Meshes

A scene with 100 characters, each with a unique hair model comprising of 100 thousand strands, rasterized in only 2 ms on an NVIDIA GTX 4090 GPU (with 8x MSAA) using our real-time hair rendering method with hair meshes and our level-of-detail techniques. All 100 hair mesh models in this scene fit in 1.7 MB (between 13 KB and 21 KB per model).

Abstract

Hair meshes are known to be effective for modeling and animating hair in computer graphics. We present how the hair mesh structure can be used for efficiently rendering strand-based hair models on the GPU with on-the-fly geometry generation that provides orders of magnitude reduction in storage and memory bandwidth. We use mesh shaders to carefully distribute the computation and a custom texture layout for offloading a part of the computation to the hardware texture units. We also present a set of procedural styling operations to achieve hair strand variations for a wide range of hairstyles and a consistent coordinate-frame generation approach to attach these variations to an animating/deforming hair mesh. Finally, we describe level-of-detail techniques for improving the performance of rendering distant hair models. Our results show an unprecedented level of performance with strand-based hair rendering, achieving hundreds of full hair models animated and rendered at real-time frame rates on a consumer GPU.

Hair meshes are protected by US and Internal patents. Hair Meshes form the core of my Hair Farm software. If you would like to use hair meshes in your personal/commercial applications or for research purposes, please contact me.

Images

A hair mesh and different hairstyles generated from it, rendered using our method without LOD and with 8x MSAA. All hair models have 100 thousand hair strands and take 1 ms to rasterize on an NVIDIA GTX4090 GPU. The hair mesh has 185 vertices and the hair models take 13 KB storage each. The character model by Lee Perry-Smith.

A hair mesh and different hairstyles generated from it, rendered using our method without LOD and with 8x MSAA. All hair models have 100 thousand hair strands and take 1 ms to rasterize on an NVIDIA GTX4090 GPU. The hair mesh has 477 vertices and the hair models take 34 KB storage each. The character model by Lee Perry-Smith.

A hair mesh and different hairstyles generated from it, rendered using our method without LOD and with 8x MSAA. All hair models have 100 thousand hair strands and take 1.8 ms to rasterize on an NVIDIA GTX4090 GPU. The hair mesh has 1316 vertices and the hair models take 94 KB storage each. The character model by Alexander Tomchuk.

Videos

SIGGRAPH 2024 paper video for "Real-Time Hair Rendering with Hair Meshes." Many thanks to Lee Perry-Smith, Dani Garcia, and Alexander Tomchuk, who prepared the models used in this video.

WebGL Demo

You can check out the interactive online demo using a WebGL implementation of hair rendering with hair meshes. This demo should work on mobile devices as well.

Publications

Cem Yuksel, Scott Schaefer, John KeyserHair MeshesACM Transactions on Graphics (Proceedings of SIGGRAPH Asia 2009), 28, 5, 2009
Cem YukselHair MeshesUS and International Patent, 2011

Related Links