Search Unity

[DEPRECATED] PIDI - XFur Studio. Please follow the link inside to XFur Studio 2, our new version

Discussion in 'Assets and Asset Store' started by IrrSoft, Apr 11, 2018.

  1. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    First patch for XFur version 1.1 is coming very very soon (just waiting for approval). It contains the following updates :

    - Minor bug fixes where some fur grooming appeared in world coordinates instead of local coordinates
    - XFur Painter now supports user-defined resolution for the maps. Any resolution from 256x256 to 1024x1024 is now supported when creating new Fur Maps.
    - XFur Painter also supports now interrupted workflows. If you export your fur maps and set them as "Read / Write Enabled" in the Unity Editor, you can then reassign them to the material before starting another session and resume your work!
    - The Triplanar Fix component has now been improved. It is required now that you keep it assigned to at least one instance of your mesh, but its performance has been improved.
    - Local Wind can now be set up to ultra-high speeds making it easier to work with models that are too little to appreciate the wind effects at the normal 0 to 1 values.

    I hope this patch will be helpful for all of you! :)
     
  2. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    There will be a few small patches, bug fixes and minor improvements for XFur for the next month or so before the next major update (v 1.2).

    Right now the roadmap for the tool on v 1.2 is the following :

    • Unified workflow. XFur_LOD, XFur_Physics, XFur_TriplanarFix and several other in-development utilities will be integrated into a single component called XFur_System with an easy to use interface that contains all modules. This in turn will make it much easier to upgrade in the future as more and more functions are added to the tool, by simply switching them on or off in the custom interface. This will also mean that as long as your model has the XFur_System component attached it will take advantage of all new features without having to add/remove any other components. It will automatically read any assigned XFur components and clone their parameters so you don't have to set them up again by hand.
    • Stiffness painting. XFur will allow for a stiffness value to be painted on the fur (by using the currently empty alpha channel of the grooming map). This will let you paint which zones of the fur will be affected by wind/physics and which ones won't , as well as the intensity of the effect over them.
    • New fur maps and new transparency methods to improve the fur's look.
    The following features are still under research and heavy development and may not be fully usable/ available on version 1.2, as they will be in a Beta state.
    • First iteration of the Advanced Physics module. A module that simulates basic physics over the fur influenced by the model's movement and animation. This one is tricky as I am working hard to balance both performance and quality. It will probably be most useful only on models without too many polygons (~5k)
    • New coloring options for fur variation. Color randomization based on gradients is being researched at the moment to allow multiple creatures using the same material to show slight variations in coloration without needing additional textures/materials
    • Mesh volume reduction (to avoid models getting "fat" when adding fur).

    XFur is a long term project that will only get more feature rich and complete in the upcoming months, I hope this small roadmap looks as exciting for you as it does for me, and that at least some of the features you want from this tool are included on it :)

    Thanks for supporting the development of this tool, and have a great weekend!
     
    Mark_01 and gecko like this.
  3. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    XFur patch 1.11 has just been approved. It contains the following updates :

    • Minor bug fixes where some fur grooming appeared in world coordinates instead of local coordinates
    • XFur Painter now supports user-defined resolution for the maps. Any resolution from 256x256 to 1024x1024 is now supported when creating new Fur Maps.
    • XFur Painter also supports now interrupted workflows. If you export your fur maps and set them as "Read / Write Enabled" in the Unity Editor, you can then reassign them to the material before starting another session and resume your work!
    • The Triplanar Fix component has now been improved. It is required now that you keep it assigned to at least one instance of your mesh, but its performance has been improved.
    • Local Wind can now be set up to ultra-high speeds making it easier to work with models that are too little to appreciate the wind effects at the normal 0 to 1 values. The value now goes from 0 to 64

    I hope this patch will be helpful for all of you! :)
     
  4. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    The new UI for the XFur System component is currently in the works, as are the many MANY new features coming to XFur version 1.2 in early June.

    upload_2018-5-15_0-9-31.png

    The main goal of this version is to streamline all XFur features to allow me to develop and release updates more easily as well as to add new features without any compatibility issues.

    Here is where the XFur System component will be a great help, by allowing you to enable only the features that you really need while new features (even those that are in a "beta" state) are automatically loaded and ready to use in all your furry objects :)

    Once it is done, enabling weather effects, physics, LOD, triplanar projections, color variations etc. will be as easy as turning on a toggle and setting up the specific module settings :)

    There will be more updates soon!
     
    Mark_01, Malbers, gecko and 1 other person like this.
  5. Malbers

    Malbers

    Joined:
    Aug 7, 2015
    Posts:
    2,558
    Amazing!!! you rock guys!!

    Hopefully I will be testing those new features with my next animal (raccoon) which is due to june too
     
    NeatWolf and IrrSoft like this.
  6. Mark_01

    Mark_01

    Joined:
    Mar 31, 2016
    Posts:
    632
    Agree 100 % WOW nice ...
     
    IrrSoft likes this.
  7. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526

    Thank you very much for your support and comments, I really hope you will like a lot this upcoming version! :)

    And hopefully the first videos of the new Physics Module will start coming very very soon so you can take an early look at XFur 1.2! :D
     
    Malbers and Mark_01 like this.
  8. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Quick bug patch will be submitted tomorrow morning on the Xfur_MapsPacker script. To solve it in the meantime, simply add the following line

    #if UNITY_EDITOR

    at the very beginning of the script , like this :

    upload_2018-5-17_21-13-35.png

    And #endif at the very end, like this :

    upload_2018-5-17_21-13-54.png

    This will allow you to build your application if you are having any errors in the console with this script :)
     
    Mark_01 likes this.
  9. NeatWolf

    NeatWolf

    Joined:
    Sep 27, 2013
    Posts:
    924
    Hi there!

    I'm particularly interested in this feature!
    Is it going to support skinned meshes (maybe leveraging motion vectors)? I guess that's one major feature that really could make a difference on any rapidly-limb-swinging model! (especially on mace-wielding-yetis :D)

    Yet, limiting it to 5K polys models isn't going to severely limiting the feature? I really hope you're going to come up with some clever trick to boost its performance! :)

    (or, maybe, I could split the fur system using different ones on the fast moving limbs only, on a per-bone basis, thus relying on each bone's velocity and rotation? Would they blend well?)
     
    Last edited: May 18, 2018
    Mark_01 and IrrSoft like this.
  10. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Hi there!

    The 5k polygon limit is...well, an early estimate for this first iteration :)

    It does quite a bit of operations on the vertices of the mesh so the more vertices the more demanding it gets. If you are using it only on a few characters at a time or only on some sections it should be usable with higher polygon counts :)

    And about skinned meshes...it is being designed specifically with skinned meshes in mind ;)

    Right now it is in an early prototype stage so I've been reluctant to share the precise workflow and details about how to prepare your characters for this system (though ideally it should require no preparation outside of what you can do inside xfur painter) but more information will be ready to share very soon, don't worry :)

    I'm glad you are interested, hopefully you will like the results!!!
     
    Mark_01 and NeatWolf like this.
  11. NeatWolf

    NeatWolf

    Joined:
    Sep 27, 2013
    Posts:
    924
    That's great to hear! :)

    I'm no shader programming expert but, since you're explicitly targeting skinned meshes instead of generic shapechanging models, wouldn't it be possible to track bone Transforms only?
    Wouldn't be motion vectors or Skinned Motion Vectors useful for rendering fur-covered skinned meshes?
    Could these resources be of inspiration?
    http://www.klemenlozar.com/frame-blending-with-motion-vectors/
    https://github.com/keijiro/ParticleMotionVector
    https://github.com/keijiro/KvantWig/blob/master/Assets/Kvant/Wig/Shader/Filament.shader

    Just my clumsy attempt of contributing :)

    Looking forward to test the next iteration, I've got smooth ogres looking for their fur! :D
     
    Mark_01 likes this.
  12. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526

    Thank you very much for sending these resources, I will make sure to check them well! :)

    Something similar to motion vectors is being used at this moment ( since the solution needs to work on older Unity versions too I am developing some methods to calculate it and store it on my own ) but I will be sure to check these links to see if there are some faster ways to calculate the motion data I need :)

    And don't worry, those ogres will have their fur soon! :D
     
    NeatWolf likes this.
  13. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Bug patch for the XFur Maps packer utility has been sent for approval. Should be available in a couple of days! :)
     
    NeatWolf, Mark_01 and Malbers like this.
  14. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    As said before, there will be small fixes and updates for XFur while we all wait for version 1.2 to be ready :)

    One of those updates, version 1.13 coming next week, is an improved color management for the fur (which will allow you to solve some issues with a few textures/materials appearing too dark in linear rendering) as well as a slightly improved occlusion on the fur.

    I have noticed that it takes a considerable amount of time (around 2-5 minutes) to re-import the whole 68 shaders with the updates, so I am working on solving this for version 1.2 to make the updates easy to implement on my side and easy and fast to import on your end! :)
     
  15. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Some small news about update to XFur 1.2 :

    While many features will start to roll out during June, I am taking enough time to make sure every system works as stable and bug-free as possible and that all the modules are integrated to each other without any issues since this version will be the foundation of all future updates and improvements. It involves a whole new level of streamlined management of all your furry objects that will make the workflow with XFur Studio much easier not only to use it in a game but also to, if needed, extend it and customize it :)

    This is achieved thanks to the use of the new "XFur Modules". These modules contain code that can be executed at different points of the fur rendering and movement process and work on a per-instance basis rather than a per-material one.

    This means that if you have a group of, let's say, 50 horses, you could add different fur parameters such as LOD, wind speed, fur length, fur color, coating, patterns, gradients and overlay effects (more on this coming later! ;) ) while keeping them sharing a single material.

    upload_2018-5-23_22-1-41.png

    Modules can interact with each other through easily accessible parameters. For the most advanced technical oriented users, this means that the behavior of the fur will be easily adjustable at run-time through code while for the more artistic-oriented users this means TONS of new fur configurations and possibilities in your hands. all through easy to understand and control settings inside a unified, well organized UI :)

    upload_2018-5-23_22-3-39.png

    Modules are stored as assets that can be added to XFur System, each one with its own parameters. Easily switchable, easily configured and easily upgradeable!

    But many of these modules are VERY complex pieces of software that require a lot of iterations to get a perfect balance between performance and quality. Just as with version 1.1 multi-directional grooming was added in a way that required NO splines nor any particular modelling tool or 3D expertise, in the same way all the new modules are being developed in a way that anyone can take full advantage of them.

    Shaders are being also re-worked to allow for better optimization and less shader files thanks to a more unified code. I will have more news and more info about each module ,what they do and small videos showcasing upcoming features soon enough. This is more a small "please be patient, updates are coming!" since version 1.2 will be considerably bigger as an update than version 1.1! :D

    I hope this small update was, however, interesting! :)
     
    Last edited: May 24, 2018
    Malbers, Mark_01 and gecko like this.
  16. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Another small update, this time about the upgrading process to v1.2 :)

    To make sure that the upgrading process is as easy as possible :

    upload_2018-5-26_18-15-18.png
    I am including an auto-upgrade tool. Once you have added the new XFur System component to your models you will need to point the index of the fur material on the materials list of your model's Mesh/SkinnedMesh renderer and assign the Base Fur Material that will be used as a reference (this is to be able to switch between per-instance parameters or the parameters existing on the original base material as well as to automate most LOD operations).

    An upgraded material allows you to set up most of its properties on a per-instance or per-material basis (you can freely use either the instance-based parameters or the original ones from your material).
    With this new workflow, if taken to the extreme, you could theoretically have a single fur material shared through all creatures of your game by setting its textures, fur parameters, grooming, physics etc. per instance/prefab rather than per material


    In this picture, all 3 models share the same fur material and the specific fur properties are set through the new XFur System component

    upload_2018-5-26_18-21-36.png
    The shared material as it appears on the Unity inspector
    It represents a little more work to set things up this way, but it also greatly reduces the amount of memory assigned for individual materials, the build size and the performance cost of rendering multiple instances. And most important of all, it allows an unprecedented level of control over creature variations, randomization and customization.This workflow is currently in an early stage but it is being polished really fast for the release of v1.2.

    Upgrading your existing materials to this new workflow will be as easy as pushing a button and further customization over a reference material (the Base Fur Material seen above) is very easy as on the first time it is assigned to the component all its original parameters are passed as the basis over which you can further customize every single aspect of your fur :)

    Also, thanks to this new system, the amount of shaders moving forward will go from 68 to ~8. These 8 shaders do everything the version 1.1 shaders could do and much, much more. More news coming soon! :)
     
    gecko, Mark_01 and Malbers like this.
  17. Mark_01

    Mark_01

    Joined:
    Mar 31, 2016
    Posts:
    632
    Great news! Thank you for all the hard work. I think the system is incredible and will become
    even more so. :):)
     
    IrrSoft likes this.
  18. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Thank you very much! :)

    I am trying to make this a very useful update, so there are many things being tested right now. One of them, a small (VERY) early implementation of "curly-like" fur :

    upload_2018-5-26_21-42-24.png

    With many more things to come :)

    Again, thank you very much for your kind words, I will keep doing my best to improve XFur with every new version! :)

    Have a great weekend!
     
  19. coverpage

    coverpage

    Joined:
    Mar 3, 2016
    Posts:
    385
    Wow that looks brilliant. Is it possible to use vertexmotion ( https://assetstore.unity.com/packages/tools/animation/vertexmotion-pro-25127 ) with this asset?
     
    IrrSoft likes this.
  20. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Hi there!

    Thanks for your interest in this tool :)

    I'm not fully aware of how vertExmotion works but it seems it stores information in the vertices of the mesh and mixes that with some shader manipulation. Since this asset is based on the shells technique and also stores information on the vertices it is almost sure that both tools would conflict with each other, I'm sorry :(

    However, if you wanted to use vertExmotion for physics don't worry, a physics module is in the works for this tool as well!

    I hope this helps :)
     
  21. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,241
    that curly fur is amazing!
     
    IrrSoft likes this.
  22. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Thanks! It's still an early WIP but hopefully it will be ready along with everything else for v1.2 :)

    In a few days I'll also start showing the new FX module for snow, blood and others and after that, the first iterations of the physics module :)

    Lots of work, but thankfully going well! :)
     
    Mark_01 and gecko like this.
  23. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,493
    Oh! that curly stuff looks promising!

    - It's different of what I was expecting (there is technique that simply offset UV in circle "along the strand axis" ie basically along the shell extrusion)

    - I can't wait to see if you are able to better the rendering. It seems like you are using a good texture as an heightmap, but it fails at grazing angle for obvious reason.

    - Suggestion, feel free to ignore:
    The problem is that curl overlap, I would suggest to treat the curl heightmap as having a thickness too, so that it raise the "thickness" (ie it only apply to a certain range of shell vertically). And overlap would be made by sampling different curl at different offset and mixing them across the vertical shell. A single curl wouldn't overlap itself though.
     
  24. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526

    Hi there,

    Thanks, I'm glad you like it! :)
    This is an early EARLY WIP as I said, so there's a lot to improve! :D
    The only reason I am not using the UV rotation (yet) while extruding the shells is because there is only so much detail you can get with a limited amount of shells. However, there will be improvements on this as well :)

    Thanks for your suggestion about the heightmaps too, I'll see what I can test on it, and I will keep researching and trying to find better ways to implement curls :)

    Thanks again for commenting!
     
    Mark_01 and neoshaman like this.
  25. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    This is a small tease of how the triplanar mode works in v1.2 :

    upload_2018-5-27_21-5-21.png

    upload_2018-5-27_21-5-43.png

    No additional components required. Just click the "Triplanar Mode" toggle on the XFur System component and your mesh will use triplanar coordinates to project the fur. The algorithm to calculate this projection has also been improved, giving a much nicer, seamless result :)

    And once again, the triplanar mode can be enabled on a per-instance basis even if the same material is shared across triplanar/no triplanar entities :)
     
    Malbers likes this.
  26. TDCreationStudios

    TDCreationStudios

    Joined:
    May 16, 2018
    Posts:
    18
    Hi there, quite interested in this tool.

    I have a few questions, before purchasing, though.

    1). Do you have any links for demos of this used with hair? If so, that would be appreciated. I've been literally scouring the internet for some sort of real time physics based hair system; and this seems to be the best option.

    2). Does it work with wind-zones?

    3). How is it like, performance wise?
     
  27. TDCreationStudios

    TDCreationStudios

    Joined:
    May 16, 2018
    Posts:
    18
    Oh, sorry, just read the post; it does seem to be working with wind zones; amazing!

    What about the new HDRP/LWRP? And SRP?
     
  28. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Hi there and thank you for your interest in XFur,

    The wind zones it uses are NOT Unity's own wind zones. However, the XFur specific wind zones work just the same and are as easy to set up as a normal Wind Zone. However, due to how parameters are stored in this shader, a custom windzone was required :)

    This system is not really suited for hair (understood here as human hair), it is oriented to fur rendering and fur-like mechanics. While some amount of hair ( especially short hair) might be doable, the purpose of this tool is to render creature/animal fur :)

    Performance depends entirely on the complexity of the geometry you are using. The shader won't have any noticeable impact in meshes around 5k-7k triangles. If you try to render several 20k meshes completely covered in fur and cast 4-5 shadowed lights on it THEN you would run into some performance issues.

    Here is a small demo of XFur version 1.0 so you can test performance in the Painter scene.
    https://www.dropbox.com/home/Fur Shader DX11

    Since then, performance has improved quite a lot but I haven't released more demos yet (including about physics) since those features are currently in development for v1.2 and the next demo to be released with it will be packed to the brim with all these new advanced features! :)

    HDRP and LWRP are, at this moment, Beta and Experimental pipelines that do not handle nicely custom shaders (especially HDRP). Documentation is scarce at best and completely non-existant at worst. This asset is receiving constant upgrades and improvements monthly with new features and stability patches coming often. Because of this, no SRP support is planned for the near future. LWRP support is planned along the way but it won't arrive till near the end of the year at best since the priority for now is to make it as feature rich and stable for the Standard pipeline as possible, since that is the workflow most people are using right now :)

    HDRP support won't be researched nor implemented until the pipeline itself is stable and well documented, since trying to support a feature currently labeled as experimental may break compatibility with other platforms and, in the end, take away a lot of time I could use to develop new useful features. I am not saying HDRP will never be supported, just that SRPs are not recommended by Unity as production ready features, so it is not a priority right now to give support to a feature so early in its development cycle and that may change drastically at any moment :)


    I hope this helps, and again, thank you for your interest in XFur!
     
  29. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    And here is a demo of v1.1 that includes the multi-directional grooming in a basic, demonstration mesh :)

    https://www.dropbox.com/s/0ch5tcztet4rr9l/FurRelease.zip?dl=0
     
  30. TDCreationStudios

    TDCreationStudios

    Joined:
    May 16, 2018
    Posts:
    18
    Ahhh, I see.

    Yes, I was quite interested in human hair rendering; mainly quite long hair. It is a shame as this really seems to be a very nice asset for creating hair.

    What exactly makes it unsuitable? Have you tried it before; or is this just your best guess, so to speak?

    Thank you very much for taking your time to get back to me.


    Would there be any chance of you taking this; and rewriting a small amount of it (well, I'm not sure how much you'd have to rewrite, haha) and get it working better and more suitably for human type hair?

    Thank you again.
     
  31. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Following the tri-planar post from yesterday :

    Triplanar projections have been completely redesigned in v 1.2 to work much better, with better performance and be fully compatible with both skinned meshes and ragdolls! :)

    Here is a small demo video :

    These triplanar projections are heavily used by the FX module to project accurately snow, blood etc. over the fur :)
    Hi again,

    XFur not being suited for human hair is my best guess and based on a few tests I made for similar scenarios and for the technique used in XFur. It can be used effectively for short hair but not for long one.

    This asset is a shader that generates fur using the shells method, which consists, in a very general and simplified way, of redrawing the mesh over and over and then using transparencies to simulate layers of fur as dots/specks on each redraw which, together, give the illusion of individual fur strands. The longer the fur, the more re-draws you need or the layers start to show up and the illusion is broken. Of course, the more times you re-draw the mesh the more expensive it gets to render.

    Fur and human hair are quite different between them at least from a real-time graphics standpoint. The best technique that can be used for both human hair and animal fur is to use DX11/OpenGLCore based tesellation to generate strands, however this is not the technique used on this asset as that would severely limit the amount of platforms it can be used on and also reduce its performance.

    In most current games, however, human hair is still rendered using mesh planes or flakes with a high quality texture. That is, for example, the technique used in games as Uncharted 4, with very good results. Long human hair is made in a similar fashion with a certain number of strands that are then either animated or influenced by physics. This is a completely different technique from the one used in XFur so it would be much more a completely different tool rather than a re-write or modification to achieve human hair :)

    This is the kind of long fur you can render with XFur :


    Fur can get a bit longer than that if a higher sample count shader is used. However, as you can see here, it wouldn't suit a human head. The amount of samples required to make, for example, a long hair for a female character would be way too high to keep an acceptable performance.:(

    In short, if you want hair like in games such as Alice Madness Returns or similar, with full per-strand physics and dynamics, that is well outside what XFur can do since that type of hair would require tesellation and compute shaders or a clever combination of modeled planes as hair strands and Unity's cloth physics.

    XFur will keep improving and along the line there might be some support for strands based fur in the future, but that is far ahead in the distance yet, sorry :(

    EDIT : In short, because I notice I kind of rambled a bit, I think XFur doesn't give good enough results for long human like-hair if you are going to make it dynamic. It might work for a more static haircut but the performance impact would be higher than a clever mesh/planes based haircut.

    You could try to see if you can get a good result with XFur but as far as I have tested and for the way this technique works, I am quite sure it is not suited for what you want to do. I hope this makes it a bit more clear :)
     
  32. Rotock

    Rotock

    Joined:
    Jun 29, 2014
    Posts:
    18
    Is this Fur System VR compatible?
    If yes, how would be the performance with a character that has 27k tris ?
     
  33. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Hi there,

    Disclaimers first, I do not own any VR device nor will be able to get one in the near future. However, since this shader is not view dependent and in both the Mock VIVE and the non-head split stereo modes inside the Unity Editor it performs just fine in both single pass and multipass I have no reasons to believe VR would be a problem, but I have no way to test it in a real device.

    Having said that, any shell based fur shader like this one works by re-sampling the geometry up to 24 times + shadow passes if you are using shadows so for a 27k character you would be looking at around 500K triangles and 24~30 passes being sent to the graphics card for the highest quality and between 150~250k triangles and 8~20 passes for a mid-high range of quality.

    Depending on the hardware you are targeting is if it will be able to handle this amount of polygons and draw calls or not :)

    As a reference, a laptop with a GeForce GTX1050 (no Ti) can handle ~16-25 10k instances at high quality without LOD (with the included XFur 1.2 LOD module I mean ) and keep a FPS count of >170 FPS. With good LOD management performance could easily be doubled.

    A single 10k instance in the same graphics card gives me ~980 FPS. Of course this is in a demo scene, so performance would depend entirely on the complexity of your environment, the amount of furry characters you display on scene at once, how you use the LOD manager, amount of lights, shadows, forward vs deferred etc.

    Besides this, the new v1.2 comes with new shader methods that can either increase or reduce the performance cost (LOD management and some new shader variants reduce it greatly compared to the current version, while physics and FX modules make it slightly more expensive to render due to all the additional calculations).

    In short, performance depends on what you want to do and how well you optimize your character (which I seriously recommend if you want to use it with a shell based shader since 27k triangles is a bit high for this method) and how you optimize XFur using the included modules :)

    I hope this helps!
     
  34. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Again, this depends entirely on your graphics card too :

    Animated 30k character with 16 fur samples ( lower-high quality settings, no LOD, no Physics, 1 directional light + shadows )

    upload_2018-5-30_13-13-14.png

    ~400 FPS at 1616x909 inside the editor, ~450 at 1920x1080 on a build.

    For comparison sake :
    Same character, default Unity material :

    upload_2018-5-30_13-15-18.png

    Same conditions, 640 FPS average.

    In short : a character with high quality fur will render at around 60% the performance of a character without fur. This is exponential however, so after the 4th or 5th 30k triangles character :

    upload_2018-5-30_13-18-35.png

    We are looking at a heavier performance loss. Now, if on top of this, we use VR you can imagine that the performance gets even more compromised. So once again, my recommendation if you want to use XFur in your project is :

    • Test that your graphics card can handle your model properly. If on an empty scene on a brand new Unity project your PC cannot handle more than 3 or 4 copies of the mesh by themselves, it is most surely it won't handle the fur shader well.
    • Reduce the polygon count of your mesh in any case, whether you use fur or not. Unity can handle up to 64k triangles (at least in Unity 5) and the skinning for animated models is still done relying heavily on the CPU which means that the more vertices your model has the heavier everything is for your CPU AND your GPU. If you need characters with more detail, I recommend tesellation since the graphics card can push far more triangles than the CPU can :)
    • If you buy XFur, make heavy use of the new LOD functions coming this June for v1.2 and don't go above 16 samples. 16 samples give a very high quality look in most furs (except the VERY long ones) while keeping performance under control.
    I hope this gives you a better understanding of how XFur works, its performance considerations and the potential issues with the character you are using :)
     
    Last edited: May 30, 2018
  35. Rotock

    Rotock

    Joined:
    Jun 29, 2014
    Posts:
    18
    Wow, i don't expected this immense answer. And its way over my experience.

    I already bought a shell based shader "Hair Designer" and there i was also informed, that the tries count is a critical point, due to the fact, that the shader replicates the geometry to stack dots.

    So i created an low poly version of the 27k mesh with 1,5k and tried it with that, but that had also produced lags for me.
    I also got much of serialization and GUI errors with them.

    Luckily i got a refund.

    I'm hoping that this system here works better.
     
  36. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    I'm sorry to hear the other system you tried didn't work. I am not sure how Hair Designer works and how much of its work is made through code, but XFur works mostly through shader code with a limited amount of information being passed through code so there should be no serialization/GUI errors :)

    Thanks for your interest in XFur, I hope that it will help you with your project and that will work well for your character :)
     
  37. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Another small development update! :)

    Here is a small teaser showing, in video form, how the basic parameters of the new XFur System component in v1.2 work :


    The LOD module as well as all the basic features from XFur v1.1 are already in place, and the FX and physics modules are currently in active and fast development :)

    upload_2018-5-31_0-8-37.png

    The FX one will hopefully be ready to show during the weekend and the physics one during the first weeks of June. I hope you all like this small update! :)
     
    Mark_01 and gecko like this.
  38. Rotock

    Rotock

    Joined:
    Jun 29, 2014
    Posts:
    18
    So, bought your XFur System and allready have problems.

    1. BaseMesh/Skin not using the standard shader.
    Ok, thats maybe wishfull thinking of mine.

    2. No option to turn off skin drawing, to use it on an duplicated mesh over the over mesh.
    Mesh #1 would be 27k Base, with the standard shader
    Mesh #2 would be low poly, with your fur shader.

    3. Odd coloring/shading.
    The fur roots don't have the same color as the skin.
    Rim Power and Occulusion are off. But Rim Color and Specular color sems to screw up things.
    I also have the skin color map in the fur color mat slot.

    One good thing. The performance seems good in VR, with this one single character in the scene.
    But then i go very close to the fur, to search for vr fleas, it gets laggy.

    Testet with...
    16sample
    shadow/no shadow
    Specular/Anisotropic
    ...on the 27k Mesh Material.
     

    Attached Files:

  39. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Hi there,

    Points 1 and 2 : Sorry, you should have really told me the idea you had before using this shader. No fur shader works by drawing the fur ONLY since using it on top of another mesh is never the intended use (unless you are creating the fur geometry by code/3D app which is, by itself, a very different workflow). The way you want to use them is very far from the standard use of XFur. Fur materials are like the standard material, they are supposed to be used on their own and not really with overlapping geometry :)

    However, you can turn the skin off in the shader by going to the shader you are using and going to the very first CGPROGRAM line in the code (usually line 55~58) and remove all the code from that line till the first ENDCG (usually line 77)

    Then, to solve the slowdown when up close or at least make it less noticeable (this slowdown exists only in forward rendering due to how it works, but I know you have to use it for VR so here is a small workaround) in the same shader you have to delete every line that says Blend SrcAlpha OneMinusSrcAlpha

    This will force the shader to compile and run as a cutoff shader which is much more efficient :)

    And since there won't be any fur roots nor skin anymore ( you will see the base high poly mesh directly ) this should help the coloring issue as well. But please be aware that, just like with any other set of materials, fur and skin are not the same kind of materials so coloring will never match 1:1 between them just like a red cloth shader will never match red skin when put side by side, since their rendering properties are different.

    upload_2018-5-31_7-5-28.png

    Here is the patched shader with a duplicated mesh using the standard shader underneath.

    Here is the patched shader without that mesh :

    upload_2018-5-31_7-6-12.png

    I hope this helps :)

    Please, if you have troubles patching the shader like this, contact me to support@irreverent-software.com and I will send you the patched shader code through that email :)

    EDIT : Also be aware that this shaders are using the Specular workflow (matching the Standard Specular shaders) so using them with the Standard / Metallic shader for the skin instead will always produce a difference in the final color. The workarounds I provided you will hopefully help you but when working with complex shaders like a fur shader you need a small compromise if you are going to integrate them with other materials or use them in a way that gets far from the standard workflow since you are making them work in ways they were not originally designed to work :)
     
    Rotock likes this.
  40. Rotock

    Rotock

    Joined:
    Jun 29, 2014
    Posts:
    18
    So i removed the lines for "NoSkin" and simply duplicated the SkinnedMesh and applied the Specular furshader 16 noshadow.

    I have not yet removed the things for the "forced cutout"

    I also made modifications in FurColor ShaderHelper, to get better control of the weird Rim Color and Fade, that gave odd colors in light and shadow. (Modifications per pm)

    Finally got this RESULT:



    Now the rim color is added to the Base Color and the higher the Passes, the more the rim color is added.
    This gives an "outside -> in" Color Effect, instead of "inside -> out".
    And finally the Base of the fur roots color matches the non fur mesh color map with standard shader.

    Tomorrow, i test the performance.
     
    Mark_01 and IrrSoft like this.
  41. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Hi there!
    It looks really really cool! :D

    I am glad to hear you are making good progress with this version of XFur (and I am making sure to add a no-skin option on v1.2 for users with a similar situation to yours and so you can upgrade your project without issues ;) ) and can't wait to see what you can achieve once v1.2 is out !

    I hope XFur keeps helping you with your project and, if you have performance issues during the close ups, I believe that forcing the shader into cutoff mode while adding some antialiasing will give you a very good quality with a lighter performance cost :)

    Have a great day!
     
    Mark_01 likes this.
  42. Rotock

    Rotock

    Joined:
    Jun 29, 2014
    Posts:
    18
    Ok got another problem. Then the Character with the Fur stand behind an object that makes an shadow.
    The fur, that not have a mesh under it, in the projection, is unlit/light.

     
  43. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Hi there,

    That's the expected behavior since you are using a no-shadows variant of the shader :)

    If you want your fur to receive shadows, you need to use the shadows enabled variants AND force it to render in cutoff mode, since in forward rendering (by the way Unity is designed) transparencies do not cast nor receive shadows.
    EDIT : All these issues/difficulties have been already solved and ironed out in v1.2, so do not worry about having to patch anything again once the new version rolls out! :)

    EDIT2 : I am working on a small fix for you, since it seems forward rendering gives quite a bit of trouble with shadows in Unity. Please stay tuned!
     
    Last edited: Jun 1, 2018
    Rotock likes this.
  44. Rotock

    Rotock

    Joined:
    Jun 29, 2014
    Posts:
    18
    I already used the forced cutoff patch with Shader Shadow Recive

    That's why i got panicked. :confused:
     
  45. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    A solution for complex fur shadows has been found! :)

    It is completely functional already, but its workflow is not polished up yet. If you want to try it, please contact us to our support email with your invoice number to send you a preview copy. If you can wait, we recommend you to do so since a full, more stable and optimized integration is being added to version 1.2 where now even each strand of fur has shadows! :)

    upload_2018-6-1_6-51-32.png

    upload_2018-6-1_6-51-46.png

    But please be aware, even with the additional optimizations, better shadows mean a heavier performance cost compared to the current method so this will be an entirely optional setting and NOT the default one
     
    Mark_01, gecko, Rotock and 1 other person like this.
  46. Rotock

    Rotock

    Joined:
    Jun 29, 2014
    Posts:
    18
    With the workaround one post above and 2 days trying to tame Unity 5.6.5f1 to do all that correctly, its finaly working.....



    I can only throw me on the floor, bow my head down and say:

    Much Much Thanks for the help these 2 Days, to get the Xfur System working in another beautiful way.
     
    Mark_01, IrrSoft and wetcircuit like this.
  47. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    It looks really cool!
    And don't worry about it, I'm very very glad to have been able to help you so your character can take full advantage of this tool :)

    Again, thank you very much for choosing XFur for your project and for your kind words! :)
     
    Rotock and Mark_01 like this.
  48. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Hi there, here is a small tiny update and teaser for the FX Module included in version 1.2 :)

    In this video, you can see the FX Module in action generating a snow effect. Please take into account that this effect is being applied without any masks nor snow textures, just with a solid color on a per-vertex basis as it is still a WIP. This video is to showcase mostly the coverage that is used by the shader, not the final appearance of the snow.



    Despite being in progress however, here are some of the features of the FX module that are already available :
    • Snow effect can have a specific global direction or be applied on collision over a defined set of vertices (same for the blood, dirt and water effects)
    • Snow effect has a customizable bias to determine which areas of the model can get covered in snow, so you can decide if only the faces pointing upwards for example will get covered or how much snow will the faces pointing sideways will receive.
    • Customizable falling and melting intensity. Snow that has covered the character will melt over time (or not at all!) allowing you full artistic control over how the snow behaves over the fur. These parameters are available for all effects (so blood can dry up and fade too, if wanted)
    • Update rate of the effects is customizable. Higher update rates give a smoother fading of the effects at some performance cost, while a lower update rate allows for many more characters receiving full effects influence.
    • Fully compatible with the LOD module so the effects stop being updated when the character is either outside the camera or too far in the distance, or updates at a much lower rate (1 update per 5 seconds at full influence without transitions) to achieve maximum performance.
    • Effect penetration in the fur. Should the effect be present up to the fur roots (like with blood) or just on the outer parts (as in snow) ? Should its intensity go from the outer part towards the skin or from the skin towards the fur tips? All these parameters can be controlled for each effect :)

    This module is being highly prioritized for 1.2 and right now it is in a beta stage. Soon I will show more videos this time with a more finished up quality and the final snow textures and masks applied for a much more natural appearance :)

    EDIT : While up to 65536 vertices can be used with this module, due to performance constraints it is recommended to not have more than ~5-10k fur triangles (triangles that effectively use the fur shader) while using this module, especially if several instances will be updating it at a rate higher than 5-10 times per second.

    I hope you like it!
     
    Mark_01, gecko and Rotary-Heart like this.
  49. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,241
    Fan-freaking-tastic!!
     
    IrrSoft likes this.
  50. IrrSoft

    IrrSoft

    Joined:
    Jul 6, 2012
    Posts:
    1,526
    Glad to see you like it! :D

    There's still some work to be done on the quality and rendering side, but it is working quite well so far! :)