A work-in-progress hair ray-tracer built using Vulkan and the VK_KHR_ray_tracing_pipeline extension with the aim to compare different hair geometry rendering algorithms. The renderer supports a wide range of 3D hair model formats using polylines via Assimp, enabling the import of virtually any format supported by the library.
The project currently supports 3 out of 4 planned hair rendering techniques.
- The
Phantom Hair Ray Intersectorresearched and developed by Alexander Reshtov and David Luebke. - Nvidia's
Disjoint Orthogonal Triangle Strips. - Nvidia's
Linear Swept Sphere.
The only one left and currently work-in-progress algorithm is based on Unreal Engine 5's voxalized foliage rendering showcased in the Witcher 4 demo, where the hair will be represented using voxels, will use LODs and try to imitate accurate normals for shading purposes.
The project currently only supports Windows. First you'll have to install the VulkanSDK.
Clone the project to your device:
git clone --recursive https://github.com/mmzala/vkhrt.git
To setup the project use the following cmake command:
cmake CMakeLists.txt
To build the project, use any compiler you want. But either Clang or GCC is recommended as these 2 compilers are tested regularly.
All the build files can be found in the root directory inside the build folder.