Hi everyone. I am very pleased to announce Imperial Fur, my latest asset. I needed a fur shader, and the one I was looking at in the asset store apparently doesn’t work with Unity 5. That created a perfect opportunity for me to create a set of shaders that takes full advantage of everything Unity 5 has to offer.
The screen above shows the included demo scene with several furred spheres. Imperial Fur has a few features that I think really set it apart from the competition. The first being the option to use PBR surface shaders as can be seen in the shot above, and most noticeable in the metal bristles.
Here you can see the furred objects reacting realistically to the physics in the game. Not only can they react to RigidBody velocities, but the included script can also be set to calculate the velocities on its own for those cases where you may not have a rigid body attached to your object. A simple wind effect is also included in the script. Although, full disclosure, the wind doesn’t seem to work all that well on the grass shown below.
The alpha channel of the fur texture doubles as a height map so you can create some interesting effects. Shown here is grass on a dirt plane, but it could also be useful for creating a nicer fade in areas where there is no fur, such as a face.
You’ll also notice that it has an optional extra texture for the skin. The grass demo does a good job of showing how great that can be, as the dirt shows through the grass in areas where other fur shaders wouldn’t allow without creating a separate object.
If you choose to add a skin texture, you can use the alpha channel of that map to further control the opacity of the fur. Here is a pretty extreme example turning leopard spots into a peach fuzzy sort of look. But even at less extreme settings, a fair amount of opacity really helps the underlying skin to show through the gaps as the fur moves back and forth.
There is an option to add rim lighting for that halo effect that fur and hair can have. It can be set to use a custom color for a more prominent effect, or the ambient lighting color for something more subtle.
Like the Unity Standard Shader, it doesn’t use any texture slots that you don’t assign to, so having the metallic/specular maps and normal map slots have no effect on performance. You can choose between the standard metal style PBR, the specular style PBR, or a simple Blinn shader.
Also included is a set of simplified shaders that will improve performance if the PBR or surface based shaders are not needed. Those shaders still use standard surface shaders for the skin, but the expensive task of drawing the multiple shells on top are done with simplified vertex/fragment shaders. The simplified shaders also allow you to choose between metal, specular, and Blinn style shaders for the skin. There is also a no skin option for those. That option still uses a Blinn surface shader for the skin, but will do it with the material assigned to the fur. Because the skin and shells are rendered differently in the simplified shader, I needed to separate out the options.
The simple shaders have an option to add a cube map reflection so you can help them to fit in a little better with the rest of your scene. The cube map can be set to HDR or LDR so it works fine with whatever reflection probe you may be using.
The standard shaders come with 10 and 20 shell variants, with 40 shell variants zipped up in the package. Import and compile times are pretty resource intensive on the standard shader and my old iMac didn’t like the 40 shell versions too much. So I wanted people to have the option of whether to import those or not. The simple shaders have 10, 20, and 40 shell versions available right out of the package. The demo uses the 20 shell variant for both shader examples.
There are also two different methods for intra-fur shadowing that you can pick from. One will just make the fur shells at lower levels darker. The other shifts the UV texture over a pixel, grabs that color and converts it to grayscale based on the depth to get a shadow value. For some textures, the second method can look a little better. But I’ve found that a lot of time it isn’t worth whatever minimal performance impact it may have so I provide the option. You can adjust the strength of the shadowing to your liking in both methods.
I’ve submitted it to the Asset Store, so hopefully it will be available there soon. I’ll update the thread when it is. Until then, you can purchase it or check out the web player demo on my website:
Web Player Demo
This is the demo of Version 2.0, which has not yet been approved on the Asset Store.