Veronika Shirochenkova provided a comprehensive guide on creating the glass blocks material with a fresh and cold feel and realistic cracks. The material was textured in Substance 3D Designer and then rendered in Marmoset Toolbag 4.
Introduction
Hi everyone! My name is Veronika Shirochenkova, and I am a Technical Artist at SCS Software. The biggest part of my work is creating materials.
Initially, I wanted to work in the game industry as a Prop Artist. But after I got my job, I got the opportunity to try myself as a Material Artist. That's how I discovered Substance 3D Designer. Of course, I knew about it. But I have never worked in it. I have always used Substance 3D Painter to texture models. But using it, I never got the full understanding of working with material creation. It can be said that I worked in it more intuitively than consciously. However, after a couple of months of working in Substance 3D Designer, I noticed a lot of progress in the quality of my materials. I had a better understanding of what I was doing and how things worked in texture creation. So, I realized that for me, material creation is a much more interesting, enjoyable, and less energy-consuming process than 3D modeling.
I can say that I found myself in a place where I least expected it. In the past, creating textures took a lot of time and effort for me, and I was more interested in modeling than texturing my models.
Why Use Substance 3D Designer for the Glass Blocks Project?
I am currently working on my portfolio and continuing to learn Substance 3D Designer. Most of all, I appreciate Substance 3D Designer for its functionality and flexibility. Before I started working with it, I didn't even realize how powerful it is or how incredible things can be done with it. Also, at the beginning of my journey, I was very inspired by the works of Jonathan BENAINOUS.
About the Glass Blocks Project
For inspiration, I usually use Pinterest and the real world around me. I think other material artists would agree with me that when you work a lot on realistic textures, you start to look around more and find interesting textures. You notice details you didn't pay attention to before.
For my portfolio projects, I usually don't purposely look for material references. Instead, I focus on the emotions and feelings I want to convey, trying to imagine and figure out what kind of material would best express them.
For the glass blocks, I aimed to evoke the feeling of a post-rain atmosphere — the cool (cold), fresh vibe. This idea brought to mind cool shades of green and blue, along with elements like rain, humidity, freshness, coolness, overcast sky, ice, and glass. I used these keywords to create a mood board on Pinterest, which sparked the concept for the glass block material. Once I gathered suitable references, I started working on the project.
Glass Properties in Detail
I had never worked with transparent textures such as glass, ice, or water before, and I had to figure out how to create them, as they are more complex than most other materials. To figure out how to get the results I wanted, I decided to find some tutorials on the subject. I did find a few tutorials that helped me get a general idea of the process.
I decided to start with the simple, focusing on what I already know and understand, and then move on to the more complex, progressing from the general to the specific.
Base Shape
I started with the general shape of a glass block — a square with rounded edges. It's pretty simple. I also made a second block shape with slightly more rounded edges.
If you look at some references on the Internet, you'll notice that there are many variations of patterns inside these blocks. I decided to use the standard grid pattern that I have often seen in real life. However, this pattern can easily be replaced with any other pattern by simply plugging another custom pattern into the input slot.
Tiles
After that, I used a Tile Sampler node to lay out the glass blocks. Since glass blocks are laid manually on cement and I chose the variant of old, weathered, and partially broken blocks, I slightly randomized their position/rotation by Position/Rotation Random sliders and tilt by Flood Fill to Gradient node.
Mortar
The easiest part of this project was creating the cement. I wanted it to look old, cracked, and with some chipped pieces. I achieved this by mixing a few noise nodes, and it was done.
Base Color
Getting the right color for the cement was easy, but getting the correct glass color was a bit more challenging for several reasons. I wanted to render in Marmoset Toolbag 4, but its rendering pipeline differs from Substance 3D Designer. Additionally, transparency, refraction index, and other glass properties affect the final result. The color of the glass also depends on the HDRI. Notice that the blocks in Substance 3D Designer have a green hue, but in the final renders, it's aquamarine. So, I had to export the textures multiple times and test them in Marmoset.
Roughness
To create the effect of slightly fogged glass, it is important to consider a few key features that can be seen in the references. First, the fogged areas become more matte, losing their transparency. Second, where the glass has been touched, there are greasy marks, and in those spots, water doesn't accumulate as much. These areas remain clearer and more transparent, creating a contrast between the fogged and "cleaned" areas. Additionally, glass blocks have a textured surface with multiple recesses, where water can accumulate too.
So the Dirt and the Grunge Leaks nodes are perfect for creating these areas. I also used the Non-Uniform Rotation Grayscale node to randomize the leaks' noise direction. For insurance, I used my Mortar Mask to lighten the areas between the blocks. This will ensure that when I add roughness to the cement later, the transition between the cement and the blocks won't appear shiny. As a finishing touch, I added a mask that reduces the appearance of fogging toward the center of the glass blocks. The reason is that the closer to the center, the more exposed the surface is to external factors like wind and mechanical impact, so as a result, there is less water.
After that, I used the Mortar Mask again to add a roughness to the cement between the blocks.
Cracks
I also wanted to add broken and cracked blocks. Of course, you can create cracks and holes manually and then place them with the Tile Generator. But then, there would be no way to procedurally change their appearance, size, etc. Proceduralism is one of the advantages of Substance 3D Designer, and I want to use it to the maximum. So, I decided to make a small crack generator. It can be used separately from this material.
Cracks Generator
In short, my generator receives the output of the Distance node as input. After that, it makes Edge Detect. The Flood Fill Mapper makes the hole mask and combines it with the result of Edge Detect. Then, it uses some Slope Blur. To get small cracks around the hole, it also uses the Flood Fill Mapper. But for filling, it uses Cells 4 instead of the Polygon 1 node.
In general, the generator has three parameters as input:
- Output of Distance node with the general shape of the cracks.
- Mask for small cracks.
- (Optional) hole mask if it is not possible to achieve the desired result with the previous two params.
The graph of all the cracks looks pretty well organized, as there are no large repeating blocks of nodes due to the generator.
Cracks to Other Textures
As you can see in the references, the edges of the cracks look lighter than the main glass, are more shiny, and are not transparent. All of these can be easily added using the masks received from the crack generator.
Parameters of the Final Material
Eventually, I have a material where I can easily replace the glass block pattern and add cracks with one click. I use the Switch node in the material graph to toggle between intact and cracked blocks. It's easy to use because the cracks are applied to the finished textures using the Blend node.
Setup for Rendering Glass
For me, rendering the glass, in general, was more challenging than creating it in Substance 3D Designer. First of all, as I already said, the work was complicated by the fact that the rendering pipeline of these two programs is different, and therefore the final result is different. So, I had to constantly export and check the result in Marmoset Toolbag 4.
All the basic maps, like Color/Normal/Height, et cetera, are nothing special, unlike two key aspects: transmission and reflectivity. I am not an expert in this, but I found a great tutorial on YouTube that clearly shows and explains how these two parameters work.
The Transmission parameter controls the passing of light through transparent objects, creating effects like glass or liquid. In the Transmission tab, I selected the Refraction option. The thicker the glass, the less light passes through it and the darker it looks. To convey the thickness of the glass around the edges of the blocks, I used a Depth Map. You can see the difference between those with and without this map.
The Index of Refraction determines the degree of distortion of the image behind this material.
To visualize the damage more realistically, I reduced the transparency on the edges of the cracks and made them as shiny as possible to make them clearly visible.
Final result:
Summary
I think I had a fear of the white sheet — a state of not knowing where to start and how to approach the work. Thanks to this project, I gained a little more experience in working with transparent materials. I had been putting off the moment of working with transparency for a long time, but when I finally took it on, it went surprisingly quickly and smoothly. I especially felt confident when I saw how beautiful the colors turned out in the test render. I completed the project in a few days and am happy with the result. I think I managed to convey the vibe I was aiming for.
I wish other material artists patience — I sometimes lack it to achieve the desired result or overcome challenges when working with complex materials. If you have never worked with a particular type of material, it is worthwhile to first study the available tutorials on this topic. This will help you avoid unnecessary work, save energy and time, and be prepared for possible difficulties. Most importantly, always finish your work.
Also, I want to thank 80 Level for the opportunity to share my experience of working on my "GlassBlocks" material! Some time ago, articles on 80.lv showed me what incredible things can be created in Substance 3D Designer and inspired me to do some experiments in this area.