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. Veteran66

    Veteran66

    Joined:
    Jul 12, 2015
    Posts:
    21
    where i can buy the "Vegetation Studio Beta" ?
     
  2. olavrv

    olavrv

    Joined:
    May 26, 2015
    Posts:
    199
  3. sylon

    sylon

    Joined:
    Mar 5, 2017
    Posts:
    242
    Finally had the chance to try out MicroSplat, and I love it.
    It's really very well done.
    Results are stunning and somehow not affecting performance.
    I like fast stuff :)
    Will post a review in a few days. People need to know.

    btw. Some links to the modules in the Material inspector are off. Might want to look at that...
    [EDIT] skip that. Noticed not all modules have come through the Unity mill yet.
     
  4. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    @coverpage
    Hey, I noticed you've been setting up similar terrains with a bunch of different terrain shaders. I'd love to hear what you think after doing this; are there particular features from each that you like most, workflow preferences or issues, and performance differences?
     
  5. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    Yup, still waiting on 3 to be approved. Hopefully this week they'll show up..
     
  6. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,015
    Looks like MicroSplat doesn't like Metal Editor on Mac? I was thinking I had that enabled when I was first testing MicroS last week, but now, with Metal Editor definitely enabled, Unity crashes when I click the MicroS material. I suppose it's the same issue as with MegaSplat? Alas, I'm gonna need Metal now...but maybe Unity will figure it out, or do you think that's uncertain?
     
  7. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    I run in Metal sometimes and have had no issues, outside of the fact that Metal doesn't support certain shader models and features, and Unity doesn't support Tessellation in Metal yet. Basically, Metal is like a giant monkey wrench into the shader model system, but otherwise it does work.
     
  8. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,015
    Very glad to hear that...but Metal definitely crashes Unity every time, when I click the MicroSplat material. (I've tested it in two projects, and then had Metal off for awhile, configuring MicroS, then enabled it and when I clicked on the MS material, Unity crashed again.) Tesselation wasn't enabled any of these times. (And would Tessellation fail silently on Mac Metal normally?)

    Would you mind looking at the log to see if you can see anything useful? It's attached.
     

    Attached Files:

  9. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    It should just render black or pink if tessellation was enabled.

    It looks like it's actually crashing on another shader in your project: Hidden/VideoDecodeOSX. Though why it would trigger this when selecting a microsplat material I'm not sure. Does this happen in a fresh project with nothing else installed?
     
  10. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,015
    Good idea -- I created a new project, copied the MicroSplat and MicroSplatData folder over from my main project (for expediency---any reason why that would cause problems?) and tried a few tests, clicking the MicroSplat material:

    Default settings: No crash
    Metal Editor: No crash
    Metal Editor + Linear color space: Crash!

    EDIT: Well, now it doesn't crash even with Metal and Linear, after reimporting everything after that crash. Hmm...
     
    Last edited: Sep 6, 2017
  11. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    Welcome to Unity.. ;)
     
  12. coverpage

    coverpage

    Joined:
    Mar 3, 2016
    Posts:
    385
    Hi Jason, yes I sort of did. It was more of an artistic exercise on how each shader look aesthetically and to get better at the workflow. Also I want be familiar with aesthetically pleasing values for all the shaders. I can share the positives for all the shaders as that was what I was looking to find when I tested them.

    RTP
    I like the feature set of RTP. It has so many features integrated nicely into one package, all working nicely with each other. With this shader, many say that it is hard to use. But the difficulty is mostly on how to choose parameters to generate the right shader. Even this is made easier with a lot of inspector prompts and descriptions.

    The using of the shader itself is very intuitive. I like the super detail which is analogous to "near details" and height blending of this shader. I'm not sure I'd say its the most realistic, but its very pretty when you go up close to the textures. Its the best near detail noise I've seen, I keep coming back to the shader for this. There are many blending parameters lever which makes learning require some amount of extra time. The geological height patterns has a noise parameter that I think is important as in nature there are often some element of randomness and clean lines are rather rare.

    I wish it has displacement lever and also takes in more maps like roughness and AO. But I really like this shader because it looks good.

    CTS
    I think CTS and Microsplat are cousins as they both have the same type of workflow and uses texture arrays. Microsplat is possibly inspired by CTS. CTS is said to be great for beginners, and I think this is true to an extent. You have a serialized settings file called profiles, and since everyone has the same feature set (since it is not modular) it enables sharing of formulas that work. I'm still not sure if profiles can generate splatmaps, but it doesn't matter as I actually generate the splatmap myself.

    The blending in CTS is also far easier compared to RTP approach, you slide two levers and you get very pretty rocky mountain type of normals appear. The things that makes me a little apprehensive about CTS was that there are relatively fewer settings to play around with. Having control over parameters that make up a certain feature or just having more features to achieve a certain function in different ways, can lead to wonderful things. And secondly, there are multiple settings, just like in RTP that will cause artifacts when configured into extremes. This is not a big deal, just that troubleshooting what causes a certain artifact takes up time, and also you'd feel a bit disappointed with having to dial down the offending parameter. This is where microsplat does well, its very stable, each slider can go to extremes with lesser chance of creating artifacts.

    Now you would think so CTS is for beginners. But you'd be very wrong. CTS has a strong feature set, its own look and a unique workflow. It is up to us to exploit it. I decided to force myself to create something pretty for CTS. After having prior experiences on settings that look pretty, I was more confident to pull it off. And I was very happy with the results, it takes practice but you can get very beautiful outcome with CTS, very realistic. CTS is a very pretty shader.

    Microsplat
    Microsplat feels the most as a standard shader for photorealistic terrains every lever is nicely laid out and what they do is pretty clear. Like CTS height blending is done with two levers one for contrast (high contrast means one texture wins over the other, low contrast means that you'll see both superimposed on each other based on height intensities). So that's the first like about micosplat, just stable parameters with a standard shader worthy layout and intuitiveness. The other 'like' is the quality of the tessellation. Displacement just looks the most natural and controlled. I just need to adjust my heightmap in order to ensure that the shaping is correct. It is also a fast shader, this allows us to turn on many features practically.

    Also it lies in between CTS and RTP in terms to control of features. For example if you get the anti tiling module, you have the option of adding multiple noise normals to add detail and natural complexity to the map instead of just 1 and now geological height patterns has a line graph to shape these patterns. This theme of giving you more features or more control over the feature is really welcomed.

    I like microsplat a lot, it is the easiest to use for advanced users. It's absolutely ridiculous that it is 4 stars now, an absolute travesty.

    Conclusion
    Shaders are used to create art, even in the form of photorealistic scenes. And as such it is not straightforward to quantify which is best. Its about having a workflow, understanding the 'look' of the shader and having familiarity of the parameters.

    Then just being good at creating pretty scenes. Each shader will inspire and lead you to different outcomes all of which might be breathtaking in their own way.
     
    recon0303, jonfinlay, mons00n and 4 others like this.
  13. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    Great writeup Coverpage!

    Is this from the Parallax Occlusion Mapping? That's kind of the one feature RTP does that others don't, and in some situations POM can capture small details that tessellation just can't. I never added this to MegaSplat because the cost just wouldn't scale well to how that shader works, but within MicroSplat there are lots of ways to clamp down on the cost of something like POM, so I was fiddling with the technique the other night wondering if it's worth exploring.


    In some ways this is true- I was actually looking into why CTS performance is so bad on some machines and it got me thinking about how I would make a 16 texture shader that would be blazingly fast. Once I have an idea, it's hard for me not to implement it. I was also thinking about how to clean up some of the workflow and support issues that MegaSplat has, and it occurred to me that solving those issues outside of a massive code base like MegaSplat would be much easier. After 9 months of MegaSplat support, I had a pretty good idea what the average user wanted in a terrain shader too. This was compounded by not being able to get many of the terrain generation systems to integrate with MegaSplat (MegaSplat uses a very different splat mapping system to any other shader, with it's own benefits and downsides). So I figured having a shader which worked seamlessly with the rest of the eco-system would be a better fit for most people as well.

    So I just kinda started building it before having any real plan on what I'd do with it, and had the core of it up in a few days. As I optimized it and started taking advantage of it only being a terrain shader (MegaSplat works on arbitrary meshes as well as terrains), I started finding a lot of cool stuff I could do as well.

    For me, speed is something that allows you to have more features- be that in other parts of your game or where ever. It's also something that has to be in the design of your code- most of my optimization is actually done at the beginning of a project, in the design phase, not at the end.

    I'm a control freak- as a graphics coder, I want control over everything. I actually removed a ton of control from MicroSplat compared to MegaSplat, because people would get lost in the tradeoffs. So this is funny to me, because an internal theme for me building this has been "Make the choices for them as much as possible". Even little things, like hooking up textures automatically.

    Well, when you go free, then people can download your asset and 1 star it for free, and lets just say the asset store is a competitive environment where some people potentially benefit if I'm not 5 stars. Additionally, free assets are always rated a bit less than non-free ones.

    I think you got great results out of all of them, which was why I asked for the summary. Thanks for the writeup, it's super useful!
     
    jonfinlay, mons00n and coverpage like this.
  14. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,015
    Regarding the crash on Mac with Metal and Linear color space: I've tried reimporting the MS folder, and my MSData folder, doesn't help. BUT I can click on the MS materials in your demo folder no problem -- it's only the MS material that I generated from my terrains that then crashes Unity when I click on it. So something maybe is messed up in there? I've tried deleting and regenerating those several times.

    And now my simple test project is crashing again. This is the last line in the log before the crash -- is it meaningful?

    Shader 'MicroSplat/AmethystTerrain_x1_y1': dependency 'AddPassShader' shader 'Hidden/MicroSplat/AddPass' not found
    validateArgumentsForTextureViewOnDevice:984: failed assertion `(newLevelRange.location + newLevelRange.length)(11) must be <= [texture mipmapLevelCount](1).'

    And @coverpage: Very nice comparison -- could we see the terrains you made with each tool? (Though given the poor performance of CTS on my MacBook Pro, I think you understate the performance factor -- it's astounding to me how much better MicroSplat is.)
     
  15. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    The first line is it not finding the add pass shader, which is included in the MicroSplat Core package. So maybe that file got deleted somehow- but this wouldn't cause a crash. The second looks like some kind of mismatch in how many mip maps a texture thinks it has, but this looks like it's coming from Unity C++ code, not script related code. When you run in openGL everything is fine?
     
  16. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,015
    Figured it out. I was checking the mipmap setting on each splat texture when I noticed that some textures were 512 instead of 1024 -- I'd neglected to check that they were all the same size initially. And a few of the normal maps were inconsistent as well.

    So I set those to be consistent, and now...no crashes! Whew!
     
    Last edited: Sep 6, 2017
  17. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,015
    So now that that's solved....

    I don't mind slicing up the global textures....but then I'd need to duplicate the MS material so I had one for each terrain tile, right? So that'd be 16 versions of the otherwise-identical material/shader. This may be a tough request, but if it's problematic or beyond MS's scope to apply a global texture across all tiles, then it would be awfully nice to have an array for assigning per-tile global textures. Otherwise those global textures are not really usable on multi-tile terrains.
     
  18. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567

    That seems.. odd.. When you press Update on the array, it resizes all the textures to be the same size, so you shouldn't have to set them to the same size anymore. And none of that happens when selecting a material.

    If you look on the MicroSplatTerrain component, they each have a slot for a global tint texture. You assign them there, and each terrain will get a unique global texture assigned without having to make them separate terrains with separate materials.
     
  19. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,015
    Just tested it: I changed one of my splats back to 512, then clicked Update on the array, waited for that process to finish, then clicked the MS material -- crash! So I guess that's somehow not working? -- but only on the Metal+Linear combo.

    That's the component on each terrain? I don't see anything like that -- I just have Template Material and Per Texture Data -- which is empty but I guess I should assign the MicroSplat_propdata to it? Even after doing that, no additional fields are shown there. (I have global stuff enabled on the material.) So I must be overlooking something, sorry.
     
  20. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    If global tint is enabled, a texture option should show up there (one for global normals, one for global tint, and one for geotexture if they are enabled).
     
  21. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,489
    Haters from the CTS camp beating it down.
     
    jbooth likes this.
  22. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,015
    Ah, I have to assign the material also. There they are now. And that solves the issue, thanks!
     
  23. evilangel89

    evilangel89

    Joined:
    Feb 8, 2017
    Posts:
    268
    I can confirm . I have Gaia, Microsplat and Megasplat all in the same project because I wanted to compare Micro and Mega. There was no issue.
     
    jbooth likes this.
  24. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    Hi, Mr Booth, I've been using Microsplat with MapMagic to generate a base terrain like this:
    upload_2017-9-7_13-48-25.png
    Feels pretty cool with most of your features, but I've got some problems and will appreciate your advise~
     
  25. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    What may cause this stitch like seams at the border?
    upload_2017-9-7_13-52-10.png
     
  26. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    And feels like the second and third normal noise map didn't work on my terrain...only the first one works..
     
  27. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    And if this stretching effect at the blending edge could be solved by the triplannar feature?
    upload_2017-9-7_13-57-12.png
     
  28. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    What's more ,I've been using VertexToolsPro material on my model to blend with this terrain, things got weird when I use the default defered path rendering on my camera, but got right when I switched it to legacy defered..
    upload_2017-9-7_14-3-58.png
     
  29. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    However, both render path works fine when I use your demo scene to test this problem...
     
  30. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    Really expecting the rest of your features to be released, especially the triplannar one, the stretching cliff and blending borders having been bothering for a while...
     
  31. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    I would love to look at that if you can send me a scene. I haven't seen this before.

    Yep, triplanar will fix that, it was submitted over a week ago but is waiting on Unity.

    That's most likely an issue with VTP's material, but if you include it in the repro scene I'll take a look and see..
     
  32. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,595
    , I see this with all other tools as well, I don't trust reviews good or bad anymore, the review process is exploited to many friends down review other good reviews as well....I see this on terrain composer 2 reviews alot.. People down voting good reviews... So it happens with every tool so never trust reviews, ask others who used a tool.....TRUST your friends and other developers is the way to go in my opinion... I asked a friend of mine about MicroSplats, before I spent a dime.. I own Mega Splats, but I was unsure.. Since it was free and I wasnt sure how different it was.....So again I wouldn't trust reviews anyways, good or bad. Thats my 2 cents. So far I like MS a lot, I also like CTS, and RTP for different reasons..

    I doubt this is coming from the CTS devs, they aren't that way... they have no control over users, again I see this with other tools a lot..People love a tool and want to bash another its part of competition I suppose...but this is why I don't trust reviews. Jason is a damn good shader coder. and does great work..
     
  33. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    Hi, Mr Booth, thanks for your reply! I'll try to post you a scene while currently it's not so convenient. Here's a new clue I've found about this problem:
    upload_2017-9-8_16-37-11.png
    I used your demo scene to test this problem and use your standard material sphere ball. But when I switched the directional shadow type to soft shadow or hard shadow, I got this problem again. But still, when I go legacy defered with the scene camera, everything looks fine..
    upload_2017-9-8_16-41-17.png
     
  34. superkratos

    superkratos

    Joined:
    Sep 4, 2017
    Posts:
    86
    I wonder if I can use shadow and defered rendering at the same time without meeting this problem?
     
  35. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    Interesting - I'll see if I can repro this. Perhaps the geometry is getting shadowed twice, and that in deferred mode lighting needs to be off on the blend shader.
     
  36. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567

    Ok, I have a fix for this and will include it in the next patch. If you need it earlier, I can show you how to add it, just shoot me a PM with your invoice number..
     
  37. sarum

    sarum

    Joined:
    Mar 2, 2014
    Posts:
    208
    i had the same issue .. thanks for the quick fix :)

    would it be possible to add a slope feature in the blendable object script ?

    i am very happy with microsplat and the modules .. fantastic work !!
     
  38. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    Slope?
     
  39. sarum

    sarum

    Joined:
    Mar 2, 2014
    Posts:
    208
  40. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    Kats4, nxrighthere and iddqd like this.
  41. sarum

    sarum

    Joined:
    Mar 2, 2014
    Posts:
    208
  42. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,015
    I can't get Normal Noise to work on per-texture basis -- only the first normal noise texture does anything, the second and third do nothing even if I crank up the values to 2 and set the Strength on 5 or something crazy high like that.

    All three work fine if I don't enable Per-Texture. Any suggestions?

    thx
    Dave
     
  43. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    I'll see if I can repro this tonight.. Should be a simple fix.
     
  44. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
    i got an error when hitting play mode blending gets disabled!? compiler says
    ....has more materials (2) than subsets (1)
    UnityEditor.Build.BuildPipelineInterfaces:OnSceneProcess(Scene, Boolean)
     
    Lex4art likes this.
  45. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    This is fixed in the 1.01 update, but that didn't get pushed by Unity for some reason, so now I'm waiting for them to approve the other three modules before I can push out the 1.1 update. But the fix is simple. Add:

    void Start()
    {
    Sync();
    }

    To MicroSplatBlendableObject.cs
     
  46. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
    think its coming from using the std terrain brushes instead of the vertex painter
     
  47. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    No, this is MicroSplat, not MegaSplat - no vertex painter needed here..
     
  48. nbac

    nbac

    Joined:
    Jul 7, 2015
    Posts:
    239
    i know i have seen this artefact i think its not even a blend seam it is a terrain sculpt seam. the std brushes from unity terrain.
     
  49. Kats4

    Kats4

    Joined:
    Jan 12, 2013
    Posts:
    186
    Please, this is something extremely useful to us.:) I already bought almost all MicroSplat addons, if Surface existed it would be wonderful :D
     
    recon0303 likes this.
  50. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    3,567
    Already done. Now if Unity would just approve the other 3 modules I submitted 2 weeks ago so I can submit 1.1.

    Fixed as well.
     
    Kats4 likes this.