All integrated and dedicated graphics cards have support for pixel shaders since a good while ago. The version of pixel shader supported as well as the speed that they can be executed with is different from graphics card to graphics card.
I cannot confirm if the shader works with Metal as I do not own any Macintosh hardware, but the shader is fully compatible with both DirectX and OpenGL so it should be no issue for it to run on Metal. It doesn’t use any tesellation features so no problems there either
About the performance, it depends on several things :
Amount of samples (passes) that the shader uses. In the package you have versions with 4,8 and 16 passes. The higher the number of passes the more demanding the shader becomes.
Size of the furry object relative to the screen. In some graphics cards, the closer you are to the fur or the larger the object appears on screen, the more demanding the shader gets. This is due mostly to the use of transparencies and can be reduced if you use deferred rendering.
Amount of furry characters. If you are rendering many furry characters at once this can affect the performance (take more than 80-100 on screen characters as many characters)
More than 2 lights and shadows affecting the furry objects at once. The shader gets more demanding with each light (in forward mode) and shadow that it needs to cast (both in deferred and forward) so be careful with that.
In my own tests using a laptop with a GeForce GTX 1050 (around the same performance as the GTX660) I can render up to 180 instances of the bison shown in the videos and screenshots above while keeping a framerate above 120 frames per second inside the Unity Editor. I believe the performance in the build will be even higher.
The shader is also compatible with Integrated graphics cards but it is noticeable slower in those, so you should always use lower sample amounts in integrated graphics cards, use the included LOD scripts and warn your end users that a dedicated graphics card with support for Pixel shader version 3.0 is recommended
I will try to compile an demo either today or tomorrow so you can see for yourself the performance of the tool more easily
thanks for the quick reply. definitely interested, but a demo would be really nice. Also: We are currently using heightmaps to control the fur length across the mesh. That’s the same as the fur map option, right?
I’d love to see the documentation if you’re willing to share it…or at least the inspector panels?
There are not many inspector panels per se, since most of the tool is based on shaders so most of the interfaces are the standard Shader interfaces. Here you have an example of one of them :
These options can be set by hand in the material or controlled with far more precision by using a fur map (the last texture slot).
Our fur maps are a bit more complex than just heightmaps since they store information for length, thickness, shadowing and mask on them. In the next version a secondary fur map will contain fur direction and scaling. The recommended way to generate fur maps for this shader is to use XFur Painter to create them but you can easily convert existing heightmaps into XFur compatible fur maps by storing the heightmap data into the green channel and setting all the other channels to white. If you need help with this you can contact me and I can give you a small tutorial on how to convert them using GIMP
Which makes me think it may be a good idea to add a simple auto-conversion tool to make this easier…it will be included in the next version, do not worry
Improved XFur Painter with support for grooming and improved UI.
New anisotropic based lighting model for better fur**. In BETA, might be pushed back to version 1.1**
Auto UV mapping for models with troublesome UV coordinates that cannot be edited (such as some models bought through the Asset Store). In BETA, might be pushed back to version 1.1
Small improvements on performance
Conversion tool to easily turn existing textures into XFur compatible fur maps.
Fur color tiling has been made independent from main texture tiling to allow more customization
This is so good and I am sure it will get better as time goes on. I am very glad I took the plunge and got this.
I will put up a review some time in the coming week. To any watching this thread…
I am sure the price could go up too… It is a very well thought out tool, with a lot of possibilities, with new cool updates coming. As soon as I can find the time next week, i will put in a proper review. I am just thinking on wording.
Here are two demos. Be warned though that they are a bit heavy since they are using high end features (shadows, several lights, post process, 16 samples) and one of them is compiled for a relatively slower platform (WebGL). Hopefully they will help give you an idea about if your graphics card can handle it well
To run the demo apps at full speed I recommend the following specs which are similar to the ones used for testing :
Intel Core i5 7300HQ (2.5Ghz)
GeForce GTX 1050 (2GB)
8GB in RAM
Windows 10
I do plan indeed to release a mobile version of this tool in the not so distant future, though that will require completely different algorithms and lighting functions ONLY for mobile. This means that most of the package will need to be re-designed so the only thing I am not sure about is if the mobile version will be included in this same package (with maybe a small price rise?) or if it will be its own package due to the many differences that there will be between both versions, but mobile support is indeed planned for the not so distant future
Thanks, that works, and was a lot of fun to play around with. Is there, or will there be, a way to make the fur tapered toward the tips? That frizzy-tip look is not ideal. (Maybe the frizziness is more pronounced with the wind? The fur in the bison video looks better, though it’s so dark I can’t really tell what the fur looks like.)
There are several ways to fix the look of the fur that you get with this shader, from using different noise textures (though the bison is using the default one!) to just adjusting the material parameters (especially the fur “Thickness” parameter) and taking a little time to work with XFur Painter to get the result that you want
This model is using the very very basic and default settings of the shader with no tampering so you can get exactly the look you want with the fur. The shader supports it already, it is just a matter of working with the tool and maps to get the exact result you want
I’m glad that you liked the software!
EDIT : Here is a really close close up shot from the fur in the same scene I sent you after I tampered a bit with the material’s fur thickness. In the upcoming update there is an even higher sample count shader (24 samples) and a smoother tapering curve which will give an even smoother result, but as you can see here the shader already supports tapered fur, it just wasn’t turned all the way up in the demo scene I posted
Again, this thickness ramp is being made smoother for even more precise control, but tapered fur is already possible in version 1.0 of XFur
Fur looks softer and thinner in Forward rendering due to the support of full transparencies. In deferred (such as in the demos) the fur looks a bit coarser but has the bonus of better performance
Both examples work in both forward and deferred modes, the difference is the path that the shader itself uses. This one, the bison one and the demos are all rendered in deferred mode
About the shadows :
Deferred rendering makes ALL objects receive shadows. This is not something you can disable on the shader itself, as it is handled by Unity on its own. If you disable shadows, the shader will fallback to forward mode automatically again thanks to the way Unity handles things.
Casting shadows is not too expensive, receiving them is the expensive part as it requires a re-draw of the mesh and all its passes. In deferred, there is no way to avoid that. However, if your scene is casting shadows only with a few lights affecting the mesh directly there should be no problem performance wise
EDIT :
To be a bit clearer, in deferred mode there is no way to disable shadow receiving since that is a limit in Unity’s deferred pipeline.
The shader’s are the same in forward and deferred mode, they just change the way they handle transparency. In deferred mode, the hair looks less soft (for the way Unity handles transparency being limited in deferred mode) but it can be tapered all the same
In version 1.05 I am adding new noise maps for different fur styles so you can have even more variety to choose from
Just as a small additional tip, if your target platform supports Unity’s PostFX stack and you enable Antialiasing in deferred (especially the temporal antialiasing) you can get a very soft and even better look for the fur in deferred compared to forward rendering
EDIT : Here is a small video showing the fur rendered in deferred mode with temporal antialiasing enabled
thanks for the videos, that does look promising…but could you crank up the lighting? They’re awfully dark (as are all the model shots for your products on the asset store) – really hard to see any detail.