Search Unity

[FREE]MicroSplat, a modular terrain shading system for Unity Terrains

Discussion in 'Assets and Asset Store' started by jbooth, Aug 9, 2017.

  1. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
  2. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    Which blending? The terrain/mesh blending?
     
  3. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    Yes, Mr Booth. It's the terrain/mesh blending area. I checked the example scene yesterday and there was not this problem on that terrain. So what could be the reason, Mr Booth? Could it be the light baking issue? When we add some fill lights in the dark areas in our project, the blended area on the object always seems darker than the surrounding terrain..
     
  4. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    Could you send me a small repro scene to take a look? There are so many different lighting pathways in Unity that it's nearly impossible to debug a lighting issue without one..
     
  5. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    OK, Mr Booth! I'm preparing for that.
     
    jbooth likes this.
  6. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    I've sent you a PM, Mr Booth. Please check out:)
     
  7. jlocke

    jlocke

    Joined:
    Dec 16, 2017
    Posts:
    62
    Hey .. just joined Unity galaxy .. I come from Cry and Unreal world . nice to see your tool @jbooth
    i was a bit disappointed by the default shader . .so nice to see your
    We work mostly on large terrains 16Kx16K and 2k resolution with a dedicated team for landscapes in Toronto ( I am from Canada ) and we gonna start a new large project for out customer usign Unity ( customer requirement )
    Surfing the store i found other 2 options .. RTP and CTS.My question is : how do you position microsplat ( and megasplat as I see you are the creator as well ) regarding those two ? Benefit and drawback
     
    blitzvb likes this.
  8. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    Performance is about 3x faster than CTS with similar feature specs, even better as you turn more features and the shaders get more complex. No possibility CTS ever closes this gap without a full bottom up rewrite and a new technique either - it's currently written in a shader graph and is extremely inefficient with it's code. MicroSplat does way more than CTS too - dynamic streams and lava, terrain blending, wind and glitter, Texture Clusters, Vegetation Studio integrations, etc. MicroSplat is also modular, so buy what you need instead of one package. Both MicroSplat/MegaSplat are actually shader generation systems which re-write the shader code depending on features chosen, which also helps them be much more optimized than any other systems can be. MicroSplat is also 2 clicks to setup, so it really doesn't get easier to use.

    VS RTP is a little harder to compare since RTP tops out at 8 textures. But from my tests MicroSplat is much faster, and offers a bunch of stuff RTP doesn't. RTP's feature layout is pretty different than most other systems as well, so any comparison can't really be direct. It's got a rep for being difficult to use though.

    MegaSplat's big draw is that it works on meshes and supports 256 textures in a single pass - but it's kind of an 'all in' tool, and not as simple as something like MicroSplat. You can find a comparison on MegaSplat.com, but I generally recommend MicroSplat unless you need a heavily mesh based workflow or 256 textures.
     
    Last edited: Dec 16, 2017
  9. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    1.7 version of MicroSplat submitted to the store.

    • Anti-Tile module has a new “Anti-Tile Array” feature. This allows you to have a unique Noise Normal, Detail Texture, and Distance Texture for each texture on your terrain instead of sharing them across all textures. These are packed in the Texture Array Config into a new array, and enabled in the shader.
    • Sampler style can now be selected as Default, LOD sampler, or Gradient Samplers. These are mostly useful when working with Per-Texture UVs when small black lines can appear between textures on some GPUs due to derivative mismatches in a pixel quad. The LOD sampler will choose a single mip map for all textures, and the gradient samplers will use the hardware to select the correct mip map for each pixel, but at a performance cost.
    • Wind and Glitter module has a fade range for glitter effects. Essentially 2 control distances and an opacity at each. This can be useful if you want to dampen the effect in the distance.
    • Terrain Blending module would sometimes create a small seem in the lighting between the blended object and the terrain. This was caused by something in the EXR save or import pipeline improperly applying a gamma curve to the normal textures. I now counteract this in the normal generation. Update your terrain descriptors for a much improved blend.
    • Fix to specular/normal blending in Texture Cluster mode
    • Fix issue where c2 array for texture clusters was being output when clusters aren’t being used
    • Fix to global puddle parameters
     
    Hitch42, antoripa, protopop and 2 others like this.
  10. protopop

    protopop

    Joined:
    May 19, 2009
    Posts:
    1,039
    Do you have an idea about this? On my iPad, if i enable and disable my microsplat terrain, when its re-enabled all the textures are gone, and its just flat white. It doesnt happen in the editor, but i can simulate what it looks like in the editor if i select the terrain and disable the microspat script that attaches itself to the terrain.
     
  11. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    Ah, yes- I see the issue. Comment out the #if UNITY_EDITOR and #endif in MicroSplatTerrain's OnEnable function. There was a crash in several versions of the Unity Editor that was triggered if you accessed the terrain too early in the startup cycle, and so these have become mismatched. I'll try to figure out which version of Unity had this issue and see if I can work around it with the OnEnable/OnDisable matched up again..
     
    protopop likes this.
  12. protopop

    protopop

    Joined:
    May 19, 2009
    Posts:
    1,039
    Thank you so much! I will try this out - i thought it might be something like this and I'm really happy you let me know.

    So far microsplat has had really great performance even on the iPod Touch 6 and other early devices like iPad Mini 2 and iPhone 6. I'm really impressed.
     
    gecko likes this.
  13. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    I do my a lot of my low-level profiling on iPhone hardware, because Instruments has the best GPU profiler for this, so core was actually optimized for that hardware (my iPhone 6, which I just upgraded). Which reminds me, it's likely time for another profile..
     
    hippocoder likes this.
  14. jlocke

    jlocke

    Joined:
    Dec 16, 2017
    Posts:
    62
    Hey Mr @jbooth thanks a lot for your answer .. we will proceed with microsplat . .RTP has limit of 8 texture and we did not get answer by CTS author .. my team agree and features are incredibile. I have one question about water and lava stream ? Is there anyware to apply on a mesh for a river ?
     
    Teila and blitzvb like this.
  15. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    No, the streams module in MicroSplat is part of the terrain rendering, so it's best for small streams and waterflows which interact with the terrain itself (that's actually one huge advantage is that it's tightly coupled with the terrain texturing). I have an asset in Beta now which is for larger river flows, and uses a separate mesh to draw deeper waters.
     
    mwituni and jlocke like this.
  16. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
    for just simple shorelines i do need the Puddles, Streams, Lava & Wetness module right?
     
  17. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    All the wetness code is in that module, so if you want to paint wetness or set it based on height, that's the one..
     
    JamesArndt likes this.
  18. jbonastre

    jbonastre

    Joined:
    Oct 10, 2016
    Posts:
    6
    Hi @jbooth,

    I´m going to change my terrains from RTP to Microsplats and I´d like to use the splatmap used with the red channel for grass, green for rocks, blue for sand and alpha channel for another kind of sand.

    Is it possible to use this splatmap with the Core (and free) microsplat or shall I buy the texture cluster module?

    Best regards
     
  19. jlocke

    jlocke

    Joined:
    Dec 16, 2017
    Posts:
    62
    nice to know.
    i will be in europe for all the week ( in airport right now ), but next week we are going to proceed with the purchase.
    thanks a lot for your time . much appreciated
     
    Teila likes this.
  20. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    The existing splat map will just work- MicroSplat reads the terrain data from Unity's terrain. The texture cluster module is for when you want to mix 2 or 3 textures for each of those textures to get a more complex texturing; so red = a mix of grass_01, grass_02, and grass_03.
     
  21. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
    terrain detail meshes can be terrain blended!? and does triplanar module prevend blending very straight angle objects from stretched texture blendes?
    and btw. the parallax module has very strange effects on blended objects. even with very low parallax height.
     
    Last edited: Dec 19, 2017
  22. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    I've never actually tried that, it depends if Unity will draw the second material or not. Using triplanar can help with the blend if you have "straight walls", which obviously won't texture well with a top down projection like the terrain is.
     
  23. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
    applying the script on the detail prefab has no effect since ms does not detect terrain below mesh maybe you can get it to work. this would be awesome
     
  24. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
    this line is caused by the parallax effect its moving with camera position at the blended areas
     
  25. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    I'll give this a test tonight and see if I can work around it. It is likely Unity's shader compiler thinking the viewDir variable is unused and stripping it from the shader incorrectly - I've had it do this before and had to hack around it..
     
  26. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
    thank you. i did purchase the triplanar module now. it improves the terrain blending a lot. in general i really like the idea of having those modules but some modules really depend on others anti tiling and cluster / blending and triplanar etc.. you should mention that in your videos and maybe you should consider a discount for customers with x amounts of modules.
     
  27. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    I actually do mention these in my development logs - modules don't depend on each other in any way, but if I see a particular way they can improve each other, I do it. For instance, the object blend module can put snow on the top of objects that aren't part of the terrain - it would be nice if this was part of the snow module, but 99% of the tech for that is already in the object blend module and already computed in that shader, so putting it into the snow shader would mean computing the data twice, so it makes sense to make it a bonus of the object blend shader. This is just the way it kind of works out if you want to be efficient about it.

    In your case, triplanar happens to improve object blending on walls because your triplanar texturing the terrain, and it's just computing the terrain as it always does- so the fact that it helps is just a side effect of the way the terrain texturing is computed rather that a specific feature of the object blend shader. Same if you were detail texturing the terrain with the anti-tile module, or cluster texturing it, etc. Those features would be reflected into the object blend shader.

    As for discounts, the asset store doesn't really allow for these types of things, and managing it via extra packages would be problematic. A lot of people have asked for a "the whole thing" package, for instance, but there are modules coming out soon that were not written by me, so I can't really offer that up.

    I think, though, if you spend $50 on MicroSplat modules that it compares very well to any other package on the store - and you get the exact features you need and nothing you don't.
     
    jlocke likes this.
  28. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    Ok, I have a fix for this. Doing a bit more testing and will update the terrain blend module again soon, or send an invoice if you want it early..
     
  29. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
    there are assets with kind of a discount system - rtp uber shader for example. compared to other products the price for the hole package is okay but how many modules will be added and what new features will be added to existing modules. (if it fits) it is a bit unpredictable but i guess its just a personal thing.
     
  30. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
     
  31. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    You can do this by having one package be an upgrade of a previous one- but that doesn't work across multiple packages and introduces a rather odd purchase order to the whole thing. And personally I think everything is well priced for the value given, especially considered how underpriced things are in the asset store already. A package like MicroSplat would have sold for $20,000 to $50,000 a license a few years ago, and the work involved will likely never equal my consulting rate, so from a purely monetary perspective I'm operating at a loss for my time.

    The thing with the everything in one package model is that it only works if adding things to your package increases sales- I have not found that to be the case in the asset store, where marketing and Unity favorability/featuring matters far more than any other factor. I added an incredible number of features to MegaSplat over the year it's been out, and sales are about the same as they have always been. Packages tent to plateau at some point, where no amount of features increases their sales, and they sell about the same number of units from then on out. You can see this in the relative stability of the rankings- packages at the top of the listing get more sales because they are at the top of the listing and are heavily featured by Unity for being at the top of the listing, maintaining their advantage. A small band of packages hang out in a middle zone, getting a relatively consistent number of sales a day, and things at the bottom of the listings jump around a lot, because even one sale jumps them 20+ ranking positions.

    The module approach encourages me to come up with new features which are compelling to my users - if they are not, then they don't sell. MicroSplat already features a number of features you can't find in any other shader on the store, or even find in AAA games, and coming up with cool and interesting shader techniques is a thing I really love doing - it also does just about every feature that is available in any other terrain shaders on the store. Modules also increase my visibility on the asset store when I have 10+ slots on the page instead of 1, and soon there will be a new module on the store that I did not create, which I find very exciting. How many modules will there eventually be? No idea- but you can consider the value proposition of each of them for your game and choose accordingly.

    There are only 2 reasons you should buy anything on the asset store; A) You needed to build that feature for your game and it saves you time to not have to build it or b) it's a clear enhancement to what you were going to build anyway, so bonus. If it isn't one of those reasons, then you are collecting technology as a hobby (which is cool, but own that). In either case, whatever I charge for the module that solves either of these is chump change for what you are getting, and the same is true of every other asset on the store. As an example, if your game needs lush, efficient vegetation, then Vegetation Studio is unbelievably cheap for $90 - That represents about 1 hour of work in a professional studio, and 12 hours of work for someone earning minimum wage. But it takes thousands of hours of work and years of hard earned experience to create a package like that. If you buy an asset pack for $50, and you only end up using one texture out of it, you have likely saved money vs. creating that texture yourself. Unless you value your time at, say, 1 cent an hour, maybe - but I'm pretty sure everyone here values their time more than that, even if they're broke..
     
  32. SilverStorm

    SilverStorm

    Joined:
    Aug 25, 2011
    Posts:
    542
    In reply to the above comment there are pretty much 2 reasons like A and B but what happens when you end up like me where buying assets actually ends up wasting time and money rather and the consumer loses. Every now and then I buy an asset and that ends up not working as described and ends up wasting time and money due to unexpected bugs or whatever you name it..

    I never ended up using Megasplat because it took me quite a bit of time to learn and when I finally did learn to use it the main feature I bought it for was mesh blending which didn't work well at all so I was left with a waste of time and money trying to sort that out and failed. Then I ended up purchasing a microsplat blending module and it ended up bugging out....so I lost more time and money and way too many hours with all that and have nothing to show for it but more forum posting and waiting for bugs to get fixed.

    Right now I know there was a new update to Microsplat which hopefully fixes my bug.
    If it doesn't and It doesn't support 2017.3 by now then it will be a real shame.

    Just my 2 cents as sometimes these complex systems don't always work out for everyone.
     
    Last edited: Dec 21, 2017
  33. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,674
    I am in the same boat. I have bought many assets that did not work for what I needed to do. Sometimes they were buggy, but more often than not the developer abandoned the asset or it took too long to be updated, or something like that. Sometimes, and I think that is the case with a lot of assets right now, Unity bugs have made the assets difficult to use. Hopefully things will stabilize. Usually the problem is just me....I do not get it so give up when something else comes out that works and is easier to use. But that is my problem.

    To be honest, if Microsplat were one big module, the problems would be much bigger. It would take longer to update each part of the module, new modules would take longer to come out, and you might end up paying for stuff that you do not need. And most definitely, you would not see so many cool things added. There is no incentive to add more when it means your $50 asset is now worth $80 and you still only get $50. And adding an update price only makes the people who need to pay the update angry....yes, and very vocal about it too.

    My suggestion, before buying an asset, talk to the developer and find out if it is what you need. Many buy when on sale, which is nice, but do your homework before the asset goes on sale. Binge buying almost always results in assets you will never use. I know. :)
     
    jlocke, StevenPicard and SilverStorm like this.
  34. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    As I recall you had some blending issue with a beta version of Unity but did not provide me with any kind of repro or scene for me to test this issue.

    About half the bug reports I get are not issues with my software, but I am willing to spend tons of time looking at users scenes to make sure it isn't something with my software, and maybe find ways to make things more robust to whatever systems a user might be using in their project. You provided no repro and when I asked you to provide an example scene you did not respond. That is not how you get good support.
     
    hippocoder, blitzvb and Teila like this.
  35. SilverStorm

    SilverStorm

    Joined:
    Aug 25, 2011
    Posts:
    542
    I sent the file weeks ago in an email. It says so in our conversation history and the email shows as sent....
    You even responded saying thanks and that you would look at it in my Unity convo inbox....
    For whatever reason here is the link again:
    https://1drv.ms/u/s!AjhzZ7qjdmSBhAbIBlIRWq_hRJYc

    ....
    By the way does Megasplat work with Unity 2017 and does Microsplat work with 2017?
     
  36. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    Thanks, I'll pop this to the front of the list to have a look. I might have passed over it due to the whole beta-unity thing - I tend to not test in Betas because, well, stuff is always breaking in them anyway.

    I currently test MegaSplat/MicroSplat in 5.6, 2017.1, 2017.2 and will add 2017.3 to my list now that it is out..
     
    mwituni likes this.
  37. Baraff

    Baraff

    Joined:
    Aug 16, 2014
    Posts:
    251
    Seeing how we are throwing in 2 cents worth here.. I just thought I would add that it stupid to expect a developer to test their product or suite of products against a Unity BETA. What an utter waste of time that would be given the nature of any BETA, not just Unity for that matter. If you have a problem with a BETA, report it the party running the BETA.. In this case that would be Unity. That is the point of the BETA program or perhaps some people don't understand that simple point, in which case they have no place participating in the BETA program.
    Hmmm, that's enough uppercase for now.
     
  38. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    Well, it would be nice if every developer tested against the latest beta's so we could let them know when things break, but it's just not practical since most of us have full time jobs and already have to test things against 3 to 7 versions of Unity.
     
    StevenPicard likes this.
  39. SilverStorm

    SilverStorm

    Joined:
    Aug 25, 2011
    Posts:
    542
    It's a sad state we are in. Unity is the only application where people fear upgrading to the latest version. They stuffed up mate....they stuffed up lol.
     
  40. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,674
    Beta is not the latest version. ;) It is the beta version, which means in testing. But...I agree. I am afraid to go to the latest released version!
     
    jlocke likes this.
  41. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    Nah, I fear this in all of my software. This is the new norm everywhere..
     
    Baraff and camta005 like this.
  42. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    Hey,
    So somehow the terrain blending material is assigned to use the standard shader instead of the terrain blending shader.



    Perhaps when you were messing with the shader on your object you accidentally switched the wrong one? Not exactly sure how it ended up this state, but I'm going to put an additional check in that will force the correct shader if it should be set to anything incorrectly. If you open MicroSplatTerrain.cs and swap the GetBlendMatInstance function with this one:

    Code (CSharp):
    1. public Material GetBlendMatInstance()
    2.    {
    3.       if (blendMat != null && terrainDesc != null)
    4.       {
    5.          if (blendMatInstance == null)
    6.          {
    7.             blendMatInstance = new Material(blendMat);
    8.             SyncBlendMat();
    9.          }
    10.          if (blendMatInstance.shader != blendMat.shader)
    11.          {
    12.             blendMatInstance.shader = blendMat.shader;
    13.             SyncBlendMat();
    14.          }
    15.       }
    16.       return blendMatInstance;
    17.    }
    Then add the MicroSplatBlendableObject component to your object and it will enforce that the correct shader is used.
     
  43. SilverStorm

    SilverStorm

    Joined:
    Aug 25, 2011
    Posts:
    542
    Actually now that I mention it I seen you in almost every asset store review board for almost every asset lol.
    What's your story?
     
    Teila likes this.
  44. SilverStorm

    SilverStorm

    Joined:
    Aug 25, 2011
    Posts:
    542
    Thanks. I will have a test when I get the time and let you know the results.
     
  45. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,674
    I am actually a robot who goes from thread to thread encouraging developers and users alike. ;)
     
  46. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
    hrhr :)
     
  47. SilverStorm

    SilverStorm

    Joined:
    Aug 25, 2011
    Posts:
    542
    I don't know why but that comment made me look at when I joined Unity forums....2011 Jesus Christ! I have made 450 comments and you 6000....you joined in 2013....you must be a robot to make that many comments because about 70% of my posts were support related posts so what could those 6000 possibly be :O.
     
    Teila likes this.
  48. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,674
    I am programmed to be a socializer. :) Most of my posts are discussions about topics.
     
    antoripa likes this.
  49. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,015
    I just got 1.7 and very excited to try the Anti-Tile Array. I've got it all set up correctly, but:

    1) The shader inspector shows more samplers in use than before -- there are samplers for detail noise and normal noise, AND there's the anti-tile sampler too.

    2) Similarly, in the MS material inspector, there are sections for detail noise, normal noise, and distance noise, as well as for the anti-tile array.

    I think I've set it up correctly, but obviously not. I've regenerated the shader many times, no help. Any idea what I'm doing wrong?

    msmaterial.png msshader.png
     
    antoripa likes this.
  50. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,573
    Yes, that's because you can use them all at once if you want. I'm not sure why you'd want more than one detail noise, etc, but this way I wasn't breaking compatibility with the old modes, and someone might come up with an interesting use for both.. Most likely, you want to turn off noise normal, detail noise, and distance noise and just use the new array feature to do all three..
     
    camta005 likes this.