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

From the creator of MegaSplat comes MicroSplat, a modular terrain shading system designed around performance and ease of use. MicroSplat is a replacement shader system for Unity Terrains. The base package is free to download, and can be extended via optional paid modules.

MicroSplat’s Core shader package features:

  • Up to 32 textures on one terrain in a single pass
  • Significantly faster than any other terrain shader on the asset store when run with a similar feature set
  • Full PBR based shader
  • Automatic Texture conversion and packing. MicroSplat will generate missing normal, height, smoothness, and ambient occlusion maps from the best available source.
  • Convert directly from substances at design time
  • Linear or Height based Blending
  • Supports full mesh workflows for non-terrain objects with the Mesh Workflow module

Per Texture Controls are available for:

  • UV Scale and Offset
  • Albedo Tint, Contrast and Brightness
  • Metallic value
  • Smoothness Strength
  • Normal Strength
  • AO Strength
  • Interpolation Contrast
  • Subsurface Scattering
  • Fuzzy Shading
  • Micro Shadows
  • And more with additional modules…

Converting to MicroSplat is incredibly easy. Just add the MicroSplatTerrain component to any number of terrains in the scene, press the conversion button, and MicroSplat will read the textures off the existing terrain and set everything up for you. If you don’t have a full set of PBR based textures available, MicroSplat will generate the missing data for you.

MicroSplat can be expanded with additional modules, each of which adds features to the core package.

Bonus integration module for Vegetation Studio included in the free Core module.

MicroSplat is unbelievably fast, often several times faster than competing shaders with the same feature set turned on, and is optimized for both high end and low end hardware. MicroSplat uses a unique shader generation system which re-writes the shader code based on what features are selected, so all features not in use are compiled out of the code, ensuring that you only pay for what you use. MicroSplat is based on a new shading optimization technique which greatly minimizes the amount of work the shader has to do verses traditional techniques. In many cases, there is so much headroom available that you can turn on complex features like Tessellation, Triplanar, and Distance Resampling and still be much faster than other shaders.

MicroSplat requires support for Texture Arrays, which are not available in OpenGLES 2.0, DirectX9 or WebGL 1.0. Minimum Unity Version 5.6.

A Discord channel is available here.

Modules:

MicroSplat is infinitely expandable via custom modules, each of which adds many new features to the system. Some videos of these in action are listed below:

The Tessellation and Parallax Module for MicroSplat adds support for GPU based tessellation and displacement, as well as Parallax Offset Mapping for tessellated and non-tessellated surfaces. When enabled, a simple set of controls is available to control the tessellation, displacement, and parallax globally, or via per-texture controls.

The Terrain Blending module for MicroSplat makes blending meshes with the terrain incredibly easy. No messing around painting transitions, trying to get various shader parameters to line up, or being forced to use special shaders for your meshes. Simply turn the feature on in your terrain, press a button to generate the needed data, and add a component to any mesh which you want to blend to the terrain.

Each mesh can have its own blend controls, allowing you to tweak the overall effect on a per mesh basis. Any changes to the terrain shader automatically propagate to the meshes, and adjustments to the mesh object position update the blend in real-time.

22 Likes

The Dynamic Snow module for MicroSplat adds snow to your scenes. Easily have snow build up on the scene, age and turn icy, and melt over time.
Integrated with the World API for control by various weather systems.

Anti-TIling

The Anti-Tiling module for MicroSplat adds a collection of techniques to add large and small scale details to surfaces to increase effective resolution and hide texture tiling. Features added include:

  • Normal Noise. Choose up to 3 normal textures to blend into each texture on a per texture basis
  • Distance Resampling, a common trick to prevent noticeable tiling on terrains, optimized to be extremely fast for MicroSplat
  • Detail Noise, which blends a detail texture into the terrain at close distance
  • Distance Noise, which blends a macro texture into the terrain on distant areas

The strength of each texture can be controlled on a per-texture basis.

9 Likes
8 Likes

Texture Cluster Module

Wind and Glitter:

2 Likes

Runtime Procedural Texturing:

Mesh Terrains:

Mesh Workflow

Mesh Vertex Workflow:

Optimizations

1 Like

Looks great.

2 Likes

Fantastic! Congrats, and thank you!

Is the only real difference between mega and micro the modularity? Or is the workflow different as well? In other words, for someone who already owns mega is there any reason to pick up micro? Either way looks great!

1 Like

The simplest way I can explain it is:

MicroSplat - 32 textures, free with (paid) expansions, focused on ease of use. I make many decisions for you.
MegaSplat - 256 textures, paid, focused on exposing all the options and tradeoffs

Additionally, the two shaders have quite a different look and performance characteristics due to fundamental technology differences. Your needs will dictate which one makes sense for you. MegaSplat also has a much larger feature set, in that it has mesh based workflows, where as MicroSplat is really a replacement for the stock Unity terrain shader.

5 Likes

Thanks for the explanation!

Fantastic, Jason! As much as I love MegaSplat, this may actually be a better choice for some of my projects, especially those on the Wii U. Except last time we talked you said it required Unity 5.6. Is that still going to be the case or can this be made to work on 5.5?

Unfortunately it won’t work on 5.5 because I take advantage of some 5.6 features for the new PerTexture property workflow.

Ugh! All my hopes dashed again. lol. Well, maybe we can get an answer to the texture array gradient sampler issue from the Unity guys soon. Or maybe they’ll give us a 5.6 version soon. Here’s hoping.

Looks awesome and I can’t wait to see the texture packer (and hopefully some day the improved texture blending modes) in MegaSplat too. Being able to use Substances directly is a huge plus for me as it saves an extra error-prone step in my asset pipeline. Keep up the awesome work!

Jason, would you mind adding the geometric blending to megasplat as well ? It’s something some of us really wanted in it.

1 Like

The port of the texture packer and upgrade to 5.6 need to come first, then I’ll look into the feasibility of something like this. Basically, the technique used here isn’t directly applicable to all of MegaSplat’s workflows, and would likely only be able to be done with Unity terrains instead of arbitrary meshes.

2 Likes

Thanks. Sounds good. I actually use Unity Terrain.

Great asset

Wow Jason, this is awesome.
It’s like you listened to my questions about MegaSplat and made me a custom solution.
Can’t wait to try it out.
Thanks for the good news.

This was submitted, along with the following modules, tonight:

MicroSplat Core
MicroSplat - Tessellation and Parallax Module
MicroSplat - Terrain Blending Module
MicroSplat - Anti Tiling Module
MicroSplat - Dynamic Snow Module
MicroSplat - Global Texturing Module

This process usually takes about a week.

3 Likes