The other day, someone on Discord asked a question about how to approach fur shading. I hadn't thought about it for a while, but the traditional approach of using multiple offset poly "shells" with alpha masked fur is still a solid method. It's easy enough on performance that it was a viable solution in the PS2 era, and the results speak for themselves.
Here's an excellent breakdown of how it was done in Shadow of the Colossus on PS2:
https://www.froyok.fr/blog/2012-10-breakdown-shadow-of-the-colossus-pal-ps2/
Little has changed since then, but I thought of a couple of small improvements that take advantage of modern rendering engines - in particular the temporal accumulation that happens with TAA (and derivatives such as TSR, DLSS, FSR, XeSS, etc)
By injecting some noise into a height offset in the UVs, we can make a single layer "blur" in the direction of the vertex normal. Here's a before/after comparison:
Because of that, we can get away with using fewer layers. This demo uses only 5.
The other change I made was to subtly bend the normals on the outside (fresnel) toward the sun's direction, causing it to catch more light and resulting in a subtle rimlight, while also enhancing the shadow terminator to show more detail in the furry bumps:
If you want to play around with it, you can grab it here:
https://www.artstation.com/marketplace/p/56N7v/fur-shader

