This is my M.Sc Thesis project that I have done in the Computer Graphics and Geometry Laboratory (LGG) at EPFL in 2011. The goal was to implement and compare different techniques for hair rendering in real-time.
There are two categories of hair rendering techniques. The first one simulates only single scattering which is the fact that a ray of light interacts only with a single hair fiber. In this category we have the model of Kajiya and Kay which is quite simple but not physically-based and the model of Marschner that is physically-based but more complex to implement.
The second category contains the models that account for multiple scattering through the hair. Multiple scattering models take into acount the fact that a ray of light interacts with multiple hair fibers on his path through the hair volume. Simulating multiple scattering is essential for realistic results, especially with light colored hairs. The current technique to simulate multiple scattering in hairs is the “Dual Scattering” model presented in 2008 by Zinke et al.
When we want to render the hair, we have to simulate shadows in the hair volume. Because hairs are not opaque but semi-transparent, we cannot use simple the Shadow Maps techique for shadowing. In this project, I have used the Deep Opacity Maps method to simulate shadowing. Because of the very high frequency of hair geometry, it is also very important to deal with aliasing in hairs. I have implemented a technique that approximate the back to front ordering of hair fragments using Occupancy Maps. With this, I was able to use alpha blending for anti-aliasing.
During this project, I have implemented the following hair scattering models.
- Kajiya and Kay’s model
- Marschner’s model
- Dual Scattering technique for multiple scattering
Here are some pictures that I have rendered during this project :