Texturing and shading artist Pim Hendriks shared a thorough breakdown of his ‘Sunray Mosaic’ material. It is a complex substance that combines different elements and features a nice damage effect. Follow the steps below to build your own material in Substance Designer.
Why waste time re-inventing the wheel when someone figured out a nice way already? Mimicking is a great way of learning.
First things first. The “original” mosaic tile. A little silhouette warping goes a long way in terms of believability later on. Chipped edges sell. Nothing is ever really a perfect primitive.
Often times a simple solution is a “better” solution than a complex one. Expanding on simple solutions is easier than expanding on complex solution. Also, in the reference the random tile pattern is not super random. Don’t try to force randomness for the sake of randomness. It’s gotta keep its purpose.
Base background Mosaic, set up using a single Tile Generator to fill any empty space later on in the process. We’ll be able to copy any pattern on top of it.
Repetitive use of the Splatter Circular node will get you a nice and, more importantly, a randomized tile generation. This is also the time to add a slight luminance variation in the tracks to later feed into Gradient Maps for color control.
The masking of this is done by simply adding and subtracting shapes from a disc to the point of an inverted cogwheel.
Simplicity in complexity. Try to see primitive shapes and patterns in every aspect of your reference.
This shape originates in a sphere substracted from a slightly larged sphere, duplicated, rotated and added. The Splatter Circular node just makes it look cool.
Create a slight chamfer by blurring and using the Histogram Scan node to filter a small selection to highlight the high points and collision points of the ellipses.
Like I mentioned before, I really liked using the Splatter Circular node for all these round tasks. There’s in my opinion really no better node up for that specific task.
This is where things get a little bit unclear in the graph, so I feel a littlemore text is necessary.
The nodes down the chain are masking operations.
The moon is a simplified version of the sunrays. It utilizes only half of Circle Design 3 and is, again, Splatter Circular’ed into a sextet. It was important for these to be subtracted from the sunrays in the masking setup.
I start with two Shape nodes; a stretched / blurred square and a ridged bell. The ridged bell will support the base shape of the flame whereas the small line behaves as the ridge on top.
Use ‘d’ to Dock nodes that are necessary to map colorspace from greyscale to color and vice versa. Helps avoid clogging your scene.
I then, of course, Circular Splattered them around and added a ring of elevation for the flames to sprout from a source. I felt this was necessary to convincingly sell the origin of the flame.
I treated this the same way as the Metal Design. Blurring, Histogram Scanning and adding those results on top of eachother.
I initially didn’t want to go over this as the Edge Detect node, on which this setup relies heavily, is broken in SD6.
But, since it’s an important aspect of the height information I went back into SD5 to show the process of combining these cracks.
These cracks are specifically just for the concrete center piece and sun symbol. Not for the mosaic.
A Tile Generator does the heavy lifting by providing a random dot generation.
The Distance node fills the gaps by growing each value from its point of origin until it touches the next.
The Edge Detect node.. detects edges.
I used a single Slope Blur, set to Min, to get a little damage to the cuts.
The results are warped several times and multiplied on top of the concrete shape but masked to make sure we’re not touching any of the lower leveled mosaic.
I decided here that, in terms of believability, the mosaic coming from the concrete should actually just be carved into it, thus inhereting that damage. Tiny design choice that lead to less masking.
Background mosaic, combined with both the Sunray and Moon mosaic using masks that cancel out underlying information. This gives cleaner results when, later, we give the mortar in between the tiles a color.
Adding all information on top of eachother with a mask. Quite an easy process though this is where you decide which shapes and features are going to be most prevalent. An important step nonetheless as this is also where you’ll come across most masking mistakes. Any unwanted height variations will become clear.
This is also where I decide to simplify my information for the Height (displacement) pass. It’s not necessary to keep grain and micro detail present in the height information since most information will be limited by the amount of times you’ll be smoothing your mesh.
I don’t really do anything special here. Mostly I do what everyone does and use Gradient Maps to feed in greyscale information to get a quick base color in. Then I do that a couple time and sometimes flip the information so it’s not always the height information that is directly responsible for the color information.
The only interesting thing I guess I can explain is that I’m using an Ambient Occlusion node to darken up the corners of height variance; dirt, moss, etc gets in those cracks.
Also worth noting is that now I’m using the luminance variance of the height mapping to get more colors in the mosaic. I’m masking all that out with the masks pulled from the original Splatter Circulars.
I add a Normal to get the grain and macro detail that I wouldn’t want to put in a height map.
The occlusion I’m using to get a little more “oomph” in my iRay renders, but I don’t use that map for anything else.
Roughness’ the same story. In this graph I really only overlaid one or two grunges to break up the whole. In hindsight I should have done more.
My advice, build a lot of variance in your roughness. It sells and definitely helps bringing your material to a next level.