Thank you Richard. If I find some more ways to improvise for optimization, then I'll tell you definitely
would love to see the substance graph.
The visual shader system will be great for modular asset pack makers. You see some incredibly high quality modular asset packs on the Unreal store, whilst the ones for Unity are so-so, which I think is down to the ease of creating shaders on Unreal vs Unity. Alternatively you have to make your shaders in something like Uber Shader system which immediately splits your customer base.
Hi, my name is Ilan Shoshan, I’m from Brussels, Belgium. I just graduated from the University College Albert Jacquard (situated in Namur, Belgium) Game Art program.
I worked with 3 other students on a video game for our final year project for about 6 months. The game is intended to be played by 4 players with an asymmetrical gameplay of 3 players against 1. It is powered by Unity and runs on Playstation 4. I am currently looking for a job, but surely am open to any opportunity !
Actually, I’ve barely used Substance Designer. When I started the game art program at school, we had a few lessons about the SD texturing workflow, but it was absolutely not intuitive. We had to use it for one exercise, but it didn’t show how powerful SD is.
That nodal system was kind of scary.
So I looked for another way to make my textures, and I heard about the Quixel SUITE. Since then I only use this amazing software. That’s how I usually work with the material! But I can say that I regret that choice a bit because the Substance products are extremely powerful and capable, and I should have used both SD and Quixel for each of their strengths. So I am trying to catch up now! For the references, I try to find three kinds of pictures.
The first one is the easiest to find because it’s a standard picture of the material I want to create. I am looking for low or mid angles and contrasted lighting. This way I can easily understand the volume and the way it reacts to the light.
The second kind of pictures I am looking for are close ups. I want to be able to see every detail, every consequence of the material’s exposure to the environment and time.
The last kind of references I search are more texture like pictures for the albedo. I try to find perpendicular angles, a regular brightness for the light. I don’t want it to be influenced by any shadows.
This way, with all these references, I can try to capture the material’s life. How it has been treated, how old it is… Basically, I want it to tell you a story.
All these references are usually found over the internet. Google Image is your friend, especially with the Tools button that lets you filter the results.
But one of the best ways to gather references, if not the best, is to go outside and look around you.
There are so many details on every surface, and I am able to capture them with my phone camera.
Now remember that you need to create a realistic material, so the references must be consistent with each other. If you want to make it work, try to avoid mixing two unlikely environments, for example (a very extreme one) a stone wall in snowy mountains and another stone wall in a desert village.
The stones might have the same shape, but their core colors are certainly different, and probably their chemical/mineral composition too. So there’s a big chance they react completely different to light, to weather and many other things. Therefore, you might end up with an inconsistent material. So my main advice for starting a material is to understand how is it built in real life and how it “lives”.
Learning from Athos Kele
When I had wanted to use SD again, I was wanting to create something fully made inside the software; a 100% SD tileable material. But I absolutely had no idea where to start. I had already been using Substance again for 2 days to create the Ivy and my lessons had started to come back to me, but I had no idea on how to start that project.
So I was thinking “there’s no miracle… Youtube’s my friend, I’m sure he’s got some good tutorials”.
That’s when I found Sharpstance’s tutorial on tileable stone floor. I didn’t know what material I exactly wanted to do, but this tutorial gave me the inspiration to work on a stone floor.
I had just wanted to look at the tutorial to learn the basic nodes for creating a correct material, but after following it with adding my own variations and style I finished with different results that I actually preferred! I then figured that I should continue with it by making a more complex material.
I think this tutorial is awesome for two reasons :
1) The final result is already there. I mean you can see the material at any time, so every tweak is understandable. You don’t have to imagine how it will look. This way, I can understand the purpose of every node he uses. For new ones, I was thinking “Okay, now let’s see what it does”. Discovering nodes this way feels like gathering knowledge at speedlight and still being able to remember it by practicing. You can’t remember the utility of the node and the node itself if you don’t understand its capabilities and its purpose.
2) It is slow, clear and he keeps it simple. He takes new users into consideration and doesn’t hesitate to explain what he is doing. He talks about his graph as if he is building it in front of us. This allowed me to build my own unique graph without fear of achieving another result as I knew what I was doing.
The first important thing that I learned is to keep it simple . You always will have the time after to complexify the material and to add whatever you like to it. For example, my stones were very simple at the beginning; they were more flat, more clean and less high. Then I tweaked the height map, the ground mask and the pebbles resulting in bigger and heavier stones with more damage. While I was walking outside one day I saw moss between the stones on the floor, so… I made moss !
The second thing that this video taught me is the paramount importance of the height map as it is the strong base of this workflow.
You start by creating a detailed and readable height map (which can take time), then you can go for every other output. Therefore any tweak on the base mask will automatically influence the rest of the graph. I know it might be basic knowledge for SD masters out there, but starting with this workflow seems a great idea to me. I’ll definitely try this one on my next material !
Everything was made in Substance Designer. No Zbrush sculpt.
Indeed, the basic tile grid for the stones is pretty simple yet very efficient. I think that adding the gradient to each stone is really important and powerful, because the little blend allows you to create a much more interesting height map, giving each stone its own place in the ground as though they were manually placed there. After, when I tweak the ground mask and the height map, they “enter” in the ground in a very specific way: not all the stones at once.
Additionally, tweaking the angle of the first directional warp node gives me a completely different pattern. This hypothetically allows me to create variations of patterns to use in Unreal Engine where I can then blend with the vertex painting allowing me to break the tiling effect for large surfaces.
To achieve a mix of flat and rough surfaces, I used a combination of slope blur grayscale nodes. One is used to break the square shape of the stones but on the large perspective, thereby leaving more flat and clean surfaces.
I blend the result with a second slope blur grayscale, which is much more accurate and strong, but applies mostly on the edges. This results in a nice chipping effect and I then repeated the operation to gain more variety.
The additional elements you’re talking about are all the large and fine detail of the stones themselves. For the cracks I used a Cells 3 node as the base mask. I wanted the cracks to be only on the surface so I played with the histogram scan node and the slope blur again to make it look as such. The higher the contrast, the deeper the cracks and it will look like the stones are broken. The sharpen node at the end allowed me to add some grain inside the cracks so the inner surface would be more interesting to look at.
The other interesting element is the rock spots. It’s just a simple dirt noise generator turned into tiny little holes on the stone surface. It’s the erosion, the effect of the rain and time on the rock.
This makes the roughness map and the albedo much more interesting to look at and it’s all in the height map!
The other elements that I like are the white spots and the edges’ highlight. The white spots represent the effect of efflorescence (not sure about that, but still exists on stone: it’s the mineral deposit of evaporated water) and are generated the same way the tiny holes are. The edges’ highlight part is a mix of a desaturated gradient map (after a warping process) blended with the last color result I got, all masked by the Edges Damages node. This one is great because it gives you an edge mask with customizable scratches on it. So when I blend this with the white spots, it improves the efflorescence effect and it gives me nice wear on more sensitive parts of the stones.
The last additional node is a magic one! It is called the Dirt node and it improves the consistency of the material so much. Basically, it’s a mask that allows you to put a dirt layer all over the surface based on your curvature and ambient occlusion. So I’ll have more dirt between the stones and less, but enough, on them to create a nice blending. Furthermore, it creates a kind of contour of the stones and the pebbles, resulting in a more contrasted albedo.
The pebbles are made with the splatter circular node. It goes through a slope blur to modify their generic circular shape. I just blend it in the end with the ground noise.
But I wanted to add a variation of size and shape to them. So I created a shape with the shape node and the slope blur, then sent it to a splatter circular, and again a slope blur. The cool thing with the slope blur is that it can give you either blurred or very sharp shapes. That’s how I made bigger pebbles / small rocks. When I’m done, it’s only a story of blending with the height map of the tiles that I’ve got. When all that is blended together, you play with the Levels node and eventually get your final height map.
The core of the moss is pretty easy. I just had to generate a shape that I wanted multiplied all over the surface. So I checked for references and also found on your website a tutorial (that I sadly can’t find anymore) just to understand how to create a leaf shape. Then it’s only manipulation with the transformation 2D node and the result goes in a circular splatter node.
In the splatter, I can tweak the scale, the rotation and other little things to give variation.
The color and the other outputs were the hardest parts. I wanted to create a moss carpet, not a foliage invasion. So the “leaves” had to stay really small, but large enough to understand the moss shapes and avoid a flat green color.
I also wanted to give the feeling that the moss was already there for a moment, but still grows fresh leaves. I used a gradient to mix a variety of greens and browns masked by a Moisture noise and a Clouds noise. It was correct and the blending with the Stone albedo sold the idea. I’m still not proud of the result… I’m going to practice this for sure !
Make different materials work together
To me the albedo, the roughness and the metalness are of the most importance. Although they don’t work really well without the normal map…
These are the parameters that respond to light and light is the first element that allows you to see colors and understand shapes, volume and texture.
If you have the wrong colors such as too much saturation, it will burn your eyes when lit.
A nice and readable albedo is the key base in achieving a good material. So when working on my albedo I don’t pick colors haphazardly; I gather references, and check combinations on the Adobe Kuler color wheel. This is just color theory, but is quite important. In my opinion, the best combo is the cold-warm one. The best example I have in mind is the work done in The Division made by Ubisoft. You can see blue and orange everywhere. And it rocks. This combo is also very natural as you can find it at a large scale… for example the sky versus the landscape.
Additionally, the albedo is where you put 90% of all the details. When you have some details too small to be visible in the normal map or the AO, the albedo will save you as long as you have enough pixels 🙂
To make all the materials work together, you just need to be sure that you understand enough of PBR theory to create consistent outputs maps. In my heavy stones for example, the roughness can’t have a too radical contrast between the stones and the moss. If the moss is really wet then the stones must have been exposed to the same source of humidity, so I can’t make them rough while the moss is completely glossy. Of course this advice is not true for all materials, and the best safety check you can do is to look at real pictures (not photoshopped) and to go outside. Make experiments ! It’s free to go outside and observe. Actually I think that observation is another key parameter to make it work.
You need to develop a keen eye for detail, but also for the bigger picture.