this is so cool! as someone who doesn't really understand the process of making simulations, i liked the explanations and it makes me appreciate the amount of work and creativity that's involved in making them.
Godot forever s2
Casper Wermuth showed how he created his Old Temple Floor material. The entire project was created with Substance Designer and rendered in Marmoset Toolbag.
My name is Casper Wermuth. I’m a Senior Lead Environment Artist at Ubisoft Blue Byte and I’m currently working on The Settlers. I have also worked on other projects such as Champions of Anteria and Devil’s Third, plus smaller freelance jobs on the title like Scrap Mechanic and Circuits & Shields.
Start of the Project
This Old Temple Floor project started simply as a small little exercise. I like doing full environments in my spare time as well, but they take so long, that I often feel like just pumping out a small and “easy” thing after that. This temple floor started like that and turned into being a Substance Designer exercise as well, as I would like to be stronger than I currently am.
I chose tiles like this just to have an excuse to make some naively painted patterns on it using the Diffusion node, actually. I simply liked the idea of that node but never had a chance to use it.
Usually, when I start off a new project, I simply google the first thing that comes to mind. In this case, it was something like “old mosaic floor” or anything similar. Then I just clicked on some stuff that caught my eye. Sometimes those pictures have other “related images” that can lead me on, and in the end, I just have a bunch of tabs open, drag them all into PureRef, and then boil them down to the essence of what I want to do.
I used to create huge boards full of on a ton of references, but I noticed I never really used more than just a few pics anyway. Therefore, I decided to make this one small and add new elements if I needed. In this project, I later realized I wanted some vegetation between cracks, and I was lacking a focal point, so why not drop a few coins in there.
I’ll admit, for personal projects are always like this, I rarely plan anything at all. I just gather a few references like shown above (which can take 2-5 mins) and go.
I want to have fun. I want to be free of deadlines, min spec, art direction, etc.
So I just start and do whatever I feel like. In this case – Opened Designer, and made some tiles!
The final graph looks like this. I didn’t ever expect to show this to anyone, so forgive me for the mess. I’m showing this so you can see how I try to break things into small simple graphs, and just blend them together. Some of the Juniors at work get a bit intimidated when they see the stuff like this, but as you begin examining each group, it’s actually really simple.
I’m a monkey in Designer. I do the same stuff everyone else is doing, without any kind of innovation, so I can’t show you any super secret techniques or something.
The base tiles are made using a Tile Sampler and distance. If you notice, the pattern is a bit imperfect.
This is followed by edge detect and floodfill. Flood gives some gradients, the edge detect feeds a bevel node and then I give that a casual Slope Blur. I find the Slope Blur often too brutal for what I want.
Therefore, I don’t Slope Blur the “mainline” in the graph, but instead branch it off, Slope Blur it, then blend it back down with a lower opacity. (In this case, using Min (darken) .24).
So the whole graph for the tiles looked like this.
To break up the tiles a bit more, I wanted some cracks. This is done in pretty much the exact same way.
Most of my graphs or groups start with a Tile Sampler. I simply love that shit. Also notice the DeteDirectionalWarp node by Daniel Thiger, which I often use. As Daniel is a beast, he gives it away for free!
So, they looked like this.
Adding some smaller imperfections to the tiles, plus the grout.
And that’s it for the tiles! Easy, huh?
I just do that for each element. For example, the clover-things is a simple shape, warped in 3 unique ways for variation, and then going into yet another Tile Sampler. These 3 Samplers are to create the little ‘cluster’.
As you can see, I input a bell or something on the inputs of the Tile Samplers. This drives color, mask threshold, and size, plus I can use the Vector output to kinda push them together or apart using the Vector Positions.
These 3 clusters go into… Guess what? Another Tile Sampler!
Here, I just took the edge detect from the initial base floor pattern, inverted it and used that as a mask. Now, the clovers only grow between the cracks of the tiles.
The floor is still pretty flat on a large scale. Therefore, I overlay a casual Perlin over the entire thing.
It gives the floor this nice rolling feeling. (A nice little bonus is, that it blends much more interesting with water – but at that point, I didn’t even know I wanted to add it).
To make the diffuse for the tiles, I took the very first node shown here, (the original tile sampler with a few dots and a distance node) and wired it up to another more casual distance node.
This then feeds the Reaction Diffusion nodes, that are blended together with different Histogram Selects from a Random Grayscale.
Mixing them together, and overlaying the Random Greyscale gave me this.
Then I just ran it through a gradient map
Using Flood Fill to Grayscale, I could then break up this pattern even more.
And add different gradient maps to those areas. You can also see here I removed the patterns on the majority of tiles because it looked too busy. This is, of course, a horrible tileable texture, but I wanted it to look great in 1 shot, not in an environment where the tiling would be noticeable.
That was most of the work for diffuse. Many of the other elements are just a single solid. I wasn’t going for realism and didn’t want to noise up the scene.
In the end, I casually added some curvature information to the diffuse. I will probably receive some threats or angry emails on this, but I just think it looks better. It has to be super subtle though. I usually go for a value that is so low, that I don’t actually see the 2D view change. But it still makes the render just pop a bit more I think.
So that leads us here.
Roughness is not worth talking about. Due to the stylized touch, these are just solids, except for single grunge on the tiles.
“Easy!”, I say.
“Lazy!”, you reply.
Then I run the whole thing through a Water Level node, for the (almost!) final result.
The water here, in my opinion, is a bit too perfect, so I wanted to just break up the mirror effect a bit. I’m actually not sure anyone even would notice this, but I added a few waves.
A little bit of noise, with a slight perlin warp.
Doing the same with a reaction-diffusion on the tiles.
Then just blended them and blurring to (hopefully) give an idea that some gentle waves are bouncing off the tiles. This goes into the Normal map, just before the final output.
In Marmoset, it’s the most simple scene: a plane, a sky, a light. The only thing worth noting is that I added alpha to the light for a more interestingly lit scene.
As you can see, I’m not a shark in Designer, I’m not doing anything complex or technical. It’s simply breaking stuff down into small manageable and easy chunks and then just mixing them together using either Blend or Height Blend.
If you have any comments or questions, please just reach out and ask me!
Casper Wermuth, Senior Lead Environment Artist at Ubisoft Blue Byte
Interview conducted by Arti Sergeev
Water Stains Pack by Emil Skriver is a set of high-quality 4K 16-bit textures. In 3D software, the textures are very powerful when used as material masks or as gloss, normal/bump or metallic variation. In that way, the textures will add definition to your materials that react in a realistic way.