Arrow
Arrow
PlayPause
Slider
Project

Splat Painter

Custom Tools

Splat Painter

Engines like Unity are great tools but they can sometimes be a little too generic. By catering to such a broad cross section of studios and possible applications, you can often find that sometimes you need to create your own solutions to aid project development. For an upcoming project I've been evaluating the Universal Render Pipeline that Unity first introduced some time ago. Being performant across a range of devices whilst still looking great was a big plus - but so was being able to use new tools like the Shader Graph.

During the planning phase for this project I felt like straight away, there was a need a for a new shader that would essentially allow a splat map workflow - like Unity's terrain system - but to be applied to a mesh. I've created a few shader variants for this, but the main one is a typical splat map type system. It takes the main splat map and splits off the red, green and blue channels. Each one of these channels then becomes it's own layer with specific inputs for the albedo, normal and roughness maps. On top of that I also added some additional controls - so the normal strength of a specific layer could be fine tuned, along with it's roughness and also included customisable tiling.

Once I had the shader in place it became clear that a custom painting tool would be really handy. Being able to see the results of the splat map - in real time - and "in engine" was going to be a big time saver because the alternative would mean painting almost blind in something like Photoshop - with only a UV map for guidance - then testing the results in Unity. That kind of back and forth is time consuming and cuts down efficiency. So, I created Splat Painter!

Splat Painter can work on any mesh that has a mesh collider. You can fill or paint by hand - the opacity, brush size and brush tip itself can also be customised. Once you've finished painting the splat map can be saved to disk and is ready for use in play mode.