Video summary
The tutorial introduces Material Maker 1.6, a powerful tool for creating procedural materials primarily designed for the Godot game engine but also compatible with Unity, Unreal Engine, and Blender via GLTF export. The presenter begins by exploring the main menu bar, highlighting features such as loading community-created projects to learn from others' workflows and exporting materials in various formats including standard PBR textures and channel-packed OM files for better performance. A key tip shared early on is adjusting the idle FPS limit in preferences to one frame per second when the application loses focus, which significantly reduces graphics card load during non-active periods. The interface overview continues with a look at the environment editor, where users can download and apply different lighting setups like a Venice sunset, and the help section, setting the stage for a deep dive into the node-based creation system.
The core of the workflow involves using the left-side library panel to drag nodes onto the canvas, where connections are made to define material properties. The presenter emphasizes the versatility of noise generation, particularly Fractional Brownian Motion (FBM) noise, which is essential for creating chaotic yet semi-coherent natural patterns. A crucial concept explained is the random seed; nodes that generate randomness possess a die icon allowing users to click to regenerate patterns or right-click to lock a specific seed for consistency. The tutorial demonstrates how to manipulate these nodes to create complex textures, such as using an edge detection node combined with an invert node to isolate specific areas of a pattern. This isolated data is then connected to the roughness input of a material node, allowing the creator to make certain parts of the object shiny while keeping others matte, effectively simulating materials like silver wire on a black ball.
To refine the quality of the generated textures, the video addresses resolution and filtering issues that often result in jagged edges or pixelation. The presenter explains that Material Maker generates separate textures for albedo, metallic, roughness, and normal maps, which can be exported individually or packed into a single OM file. To smooth out jagged lines without losing detail, the tutorial introduces the "super sample" node, which works by copying the input texture, shifting it slightly, and averaging the overlapping pixels to create a smoother result. The presenter also showcases an efficient workflow trick using reroute nodes to quickly insert math operations into existing chains of connected nodes without manually reconnecting every single wire. Finally, the material is exported as both a source project file for editing in Material Maker and as texture files ready for use in game engines, concluding with a successful test where the created material is applied to 3D objects like barrels and containers within Godot.
Read the full video transcript
Hey, I'm Anfa. Welcome to this tutorial
for Material Maker. I hope to show you
the basics.
We're going to go from broad strokes to
fine detail.
Let's go. So, when you start material
maker, this is what you're going to see.
On the top we have the menu bar
and there we have various things
regarding creating loading projects. A
notable thing here is load material from
website where you can explore materials
created by the community
and you can find some that I made
myself. You can double click on any of
them, open them up, and see how they are
made, which is an incredible way to
learn material maker. But we're going to
check this out later.
So, other things of note here is
exporting material. So, material maker
is
has support for a few game engines. This
is GDAU game engine 3 and 4, Unity and
Unreal Engine 4 and five. It can also
export a generic glTF plane for a
standard PBR materials that can be in
gltf files. So, this should work in
anything. And also Blender, which is
kind of a hack on top of the GDO export
because it really exports a good thing,
but well, there's a different texture
layout. Never mind. And of course, we
can close and quit.
Next, edit. Here, the important thing is
preferences on set theme. If you like
light themes or something else, colorful
themes, you can use this in preferences.
Something I always do is
go here and change the idle FPS limit
from 20 to one. [clears throat] This
makes material maker,
if I click away from it, so it loses
focus, you can see that it switches to
one frame per second. And this helps
reduce load on your graphics card when
you are not really working with material
maker at the second. So highly recommend
it. Next we have view.
You can open different panels here.
These are mainly used for painting the
brushes, layers and parameters. So we're
not going to use those. You have tools.
You can create a group.
Make selected nodes editable. I
generally don't access this menu. I just
use Ctrl G and Ctrl W shortcuts.
You can also create any node and this
this is useful because some of these
nodes are not accessible through other
means because some of them are
specifically meant for painting.
Uh but well this is something we should
investigate further. Then there's add
selection to library. You can create
your so your own libraries. I have
created a library called Anfa PBR
workflow. I'm going to show it to you
later, much later. And we can create a
screenshot of the current graph, which
will
zoom around this canvas and show us all
the different nodes and stitch it
together into a nice big screenshot. So,
we can print it in A2
format and put it on your wall [snorts]
or on a t-shirt.
So, that's the tools environment editor.
This is when you can where you can
download extra environments. I really
like this Venice sunset one. So I click
okay.
It's going to download it. And now you
can change your environment here. So I
can click Venice sunset. I can also
deselect clear background to
see the actual
um environment map in action. So that's
that's a thing. That's the environment
editor. And finally, help. There's stuff
here. Well, we can learn. What is this?
Material maker 1.6 made with GDO engine.
Cool.
All righty. So, that's the top menu.
Now, the left panel here, you have
something called library. And there's a
bunch of colorful buttons. These
colorful buttons
move you to a category of nodes. So
there's for example pattern nodes which
we can click and drag and this is one
kind of a pattern we can have. We can
change the parameters of this pattern
[snorts]
noise.
Something we're going to use over and
over is FBM or fre
>> [gasps]
>> fractional brownian motion noise.
My tongue isn't exactly
swift these days.
This is something we're going to use
over and over and over because if FBM is
basic tool of modeling chaotic yet
semi-coherent
things that happen in the world.
I'm going to disable I'm going to do
clear BG. So we have a defaultish view
and I'm going to go with studio because
that's kind of the default way thing we
have. Going to zoom this in. I'm doing
this with mouse wheel by the way. It's
not showing in here but this mouse
wheel. By the way, I've run a program
that shows you the keys I'm pressing. So
if I type A B CD FG, you can see that
I'm typing.
That hopefully helps you follow along.
Cool. So now we made two different
things. We we've dragged some nodes.
Um it's incredibly fun to explore what
all of these do and what you can make
with them.
We're going to slowly slowly chew
through some of them at least. It's
going to be hard to cover all because
there's just so much, but they're all
amazing and very useful.
Okay, so this is the library tab. On the
bottom you also have browse community
nodes. This is similar to the
open project from website but here it's
not entire projects it's just nodes. So
you can scroll and select something and
decide okay I want that. Voronoi++
for example is a very interesting no
node and it's made by uh author of
author of material maker and it's really
interesting because we can feed density
and
we can do crazy crazy crazy crazy
things.
like uh yeah
something that is uh much more varied
and different.
So that's our library. We have a filter
so we can search for noise for example
and you'll find all kinds of different
noises.
And of course you can just click and
drag.
Here's white noise. So this generates
completely random pixels at a given
resolution.
Now since we're talking about randoms
noise and things, you might wonder what
is this little die icon? Well, this is
to control random seed. So some nodes
you can see not all of them. Okay, let's
let's find something that doesn't have a
this this doesn't have a an random seed.
Okay, maybe we can have something else
like
pattern generic. Yeah, this also this
doesn't have a a a random seed. So, any
node that can generate something random,
it's going to have a random seed. If you
leftclick, it's going to just create a
new random seed. So, you can just change
the pattern. This is very useful. I use
this all the time, especially for the
FBM noise, because right out of the box,
if you just keep the defaults, it's
going to look the same every time. And
we don't want that. We want this noise
to be different every time. So, this is
just you can, you know, randomize until
you find something that looks better.
Like, I like this cuz it's more bit more
uniform. There's not this very low
frequency content here. Now, if you
right click here, you can lock the seed
to make it impossible to change it. So
you can't click this if you're like
that's the seed I want and nothing else.
You can unlock it or you can copy seed
and paste it somewhere else. Now these
both use the same seed.
Neat. So that's the random seed and you
can see we moved from library to the
canvas.
So this is canvas. This is the place
where you place nodes where you make
connections between them. You navigate
by clicking and holding your middle
mouse button.
You use your mouse wheel to zoom out and
in.
If you left click, you can select a
node. If you left click and drag, you
can box select multiple nodes.
Using
control, you can click and select
multiple nodes.
I think using shift doesn't do that.
Yeah, if you click and drag with
control, you can add to your selection.
And if you click on something that is
selected, you can deselect it.
But you can't deselect with box
selection. At least I can see a way to
do that.
If you right click,
what happens is a quick pallet pops up.
And this is a very interesting thing. So
first thing we have the filter. This is
kind of like a mini version of the
library we have on the left.
So what happens here if we can type
noise
if we do noiser then we found dinoiser
and we can just hit enter and it's going
to create the node that we found which
is neat. Now we can also just scroll
here and look at cool things and say oh
I like this. What does that do? Uh,
what does
detect edges simple do? Okay, let's go
here. Let's put this through that and
see. Um, it seems like it drew some
edges which is interesting. Maybe we can
do this other one.
Right. So you can see that um
if I click on a node
it's topmost output is going to be
selected and presented in this 2D
preview. So we're now talking about this
right hand side. The right hand side is
our previews.
Above we have preview 2D and below we
have preview 3D. So preview 3D gives us
the an a look of our entire material. So
you can see here is our material output
node or like how is this called the
material node. Yeah. So this is where we
feed our output. So if I take this click
here click on this output click and drag
put it into albido.
Now this weird spider web actually not
spider but some kind of web pattern is
the albido map or the albido texture for
our material. If I zoom in, you can see
we have some pixels here.
So this is how we make our material. Now
if I connect this to metallic as well.
Now the white parts should be metallic
but you can see maybe you can't see but
I can see they are not because metallic
is at zero. So if I rise this up now
they are metallic. Well, I would like to
make them more shiny. They seem kind of
diffused. So, I'm going to lower the
roughness here.
Okay, this this now is a nice
nice ball of shininess,
but it's all shiny. I just want the
silver parts to be shiny and the black
parts to be not shiny. So, again, now
I'm going to add an invert node. Right
click env.
Okay. Filter invert. It's on top. I can
use mouse uh sorry arrow buttons.
Arrow keys
to select what I want. Then hit enter.
Now another way to insert a node
from something is to click and drag and
then release. And it shows us this
pallet dialogue invert.
but it shows it in the context of what
are we going to connect to what we've
just created. So now this invert if I
click on it and it selects the first
output you can see this is the opposite
the
the edges are black and the regions are
white. So I'm going to click and drag
this to roughness.
I'm going to move this here. I'm going
to delete this extraneous. Yeah, you can
select anything and hit delete. So let's
delete the noiser.
Also you can undo. So Ctrl Z is going to
undo and Ctrl Y. No, Ctrl
R. No. What is Ctrl R?
Something happened. But
no, nothing happens. Okay. Yeah, you can
undo. Can you redo? You can. Control
shift Z. Okay. So [laughter]
yes, [snorts]
by the way, the menus are nice to
explore so we can learn hotkeys. I
really like that. Okay, so now we want
to up our roughness.
And you can see that if I go up to
here, our black parts are nice and
diffuse,
but our silvery parts are still shiny.
Now, I'd like to make the silvery parts
to pop out to look as if they are
kind of like a a wire laid on top of a
flat black ball.
So, I want this to become a normal map.
I can plug into here.
I'm going to move this here. Um, so to
do that, we need an extra node. So, I'm
going to click and drag and I'm going to
type normal. And you can see the thing
that comes on top is called normal map.
I'm going to hit enter.
And I'm going to click on this node to
select its output. You can see it
highlights on white. Now some nodes have
multiple outputs. By the way, it's this
is the right before we go into this. So
let me show you plus. If I click on it,
it highlights the first output. If I
click on another output, it shows that
output. And then there is fill. Fill is
a special type a green type of output
that encodes
a a set of different areas.
It so we can do various crazy things
like uh paint every area in a different
color or paint every area in a different
gray. Um,
fields are incredibly incredibly
powerful, but that's a topic for a next
video cuz I don't want to make this one
57 hours long. I don't think I have
enough disk space for that. Yeah. Okay.
So, back to our normal map. If you click
here, our first output is selected. And
you can see this is our normal map.
Let's try it. Let's click and drag here
into normal.
Now that's more like it.
Okay. So now
now our spidery [clears throat] silvery
web looks like it's popping out.
Something we can do with this preview to
kind of help us assess the the qualities
of our material is we can enable
automatic rotation. So if I click on
this little tab here, go to model and
press play,
I can now click away in my canvas and
this is going to rotate on its own.
Now you can see a little problem here
that this is a little bit pixelated and
it's also kind of pixelated here. So you
can see that our static PBR material
this thing here we have size 248x 248
that's the resolution of our material.
So this node static PBR material this
node creates a texture in the in the
computer's memory a texture for every
input and that size of that texture is
2048x 2048. If I change this size to say
256 x 256. Look what happens.
Now this is pixelated because our
texture is much smaller. Our texture
set. We're not making one texture. We're
making a set of textures. An albido
texture, a metallic texture, a roughness
texture, and a normal texture. So if I
were to export this now, we would get 1
2 3 four five four files each 256 x 256
in size.
Of course that's a simplification. We
could have less files because the some
channels can be combined into a single
file like metallic and roughness can be
combined into a single file
and our LBO and normal are would be
separate. So we would actually get three
files if we export it for like uh say
export material GDO
GDO for OM OM stands for occlusion
roughness metallic and it's a standard
way of channel packing different PBR
material properties into a single
texture for the sake of improving
performance and storage. [snorts]
um
efficiency.
So, OM would take metallic roughness and
ambient occlusion in a different order,
but it would put them into red,
red, O, green roughness, and M metallic,
red, green, blue channels of a texture.
And then whatever you put that in would
unpack these and use them to render your
texture. Okay, let's go and see the
smallest possible size. Now, material
maker is pretty cool and it when you set
this small size, it disables texture
filtering. So, we have nice chunky
pixels.
I think at 120 it still does that. 256
it turns on filtering. Okay, let's go
with 1024 cuz that's the resolution of
our norma map. Now, this is still
it's not as chunky and blocky, but it's
still kind of jagged. we can do better.
So I'm going to go and we can do a very
cool thing which is super sample this.
So I'm going to take this output, drag
it and type super and we have filter
super sample on top.
Let's click on this and see. You can see
it became a little bit blurriier.
If we change the resolution to the size
to 256, you can see it's even blurriier
still,
but we want our texture to be 1024 x
1024. So, let's set this to 1024 x 1024.
And now you can see that there is no
difference between our normal map output
and our super sampled normal map output.
I mean, there is the tiniest of
differences. It doesn't really smooth
out these jaggies.
But if I change the resolution of the
input normal map,
look what we got. Now the normal map
here is
high resolution
and kind of jaggy.
This is lower resolution but kind of
smooth. So let's up this more to 496.
That's humongous. And you can see that
it's much smoother.
Even here it's much smoother, but well,
this is too big. You can see that this
still is jagged in
in our material output because we're
basically taking every four pixels and
averaging them out. But we're doing this
in a stupid way. This is why we have so
much jaggies here.
If we push it through our super sample
node though,
let's see. Is that better?
It seems a little better. Now we can
change the count of super sample. So the
number of samples on each axis.
There are two axes X and Y. So
horizontal and vertical. So count of two
means we are taking four samples.
So we're taking let's say four pixels
and we're averaging them into one. And
the super sample node does this by
copying the input, shifting it a little
bit and making it semi-transparent. So
you can see our normal map we have one
thing in our super sample we have 1 2 3
4. The same thing is copied and offset
by a small amount that the amount
corresponds to the resolution. If I set
this to lower 256 or here you can very
clearly see what the super sample node
does. Not super sampled. You can see we
have one thing
super sampled. We have one, two, three,
four things, right? But if I count up
the count to three, that's going to be 3
* 3. So 9 1 2 3 4 5 6 7 8 9.
Cool. Let's set this back to 1024. And
you can see we have nine different
samples here. So that is becoming a
little bit smoother. Not perfect, but a
bit smoother. Now, probably
probably a problem with why is this so
jagged is that our normal map could be
based on a anti-aliased
input. So, instead of super sampling
after we make the normal map, we could
super sample before. Now maybe I'm
getting into the rabbit hole too much
now and we could actually skip this and
we'll go back to super sampling later
because it's a very deep topic and it's
important topic but I can spend all day
talking about just the super sampling
and well this isn't a tutorial for super
sampling specifically. I want to cover
more things. I want to just give you a
good introduction.
All right so
let's go. Let's move on.
Let's say I want to make the black parts
grainy. I want them to be like
rough concrete or or like roughen
plastic.
So, we're going to need some pattern
that was going to give us this
roughness. Now, we can do a regular
pattern with this pattern node. For
example, if I zoom right in, I can also
go to this view. No, center view. Ah,
center view. Yes, we can have this
pattern and you can see it creates these
white spots.
So, if I do, let's say 512x 512, that's
going to give me these. [gasps] Okay.
So, I want to mix this in with that to
create bumps on the black parts. Okay.
So, I'm going to rightclick and do a
math node. Enter.
I'm going to select all of this and put
it here.
Now, we're going to do a little trick.
So, you see what I want to do is I want
to insert this math node between this
simple edge detect node and all these
other nodes which is which are connected
to it. But that would take a lot of time
because I would have to do it like that.
this. And now manually reconnect every
single one, which is doable, but it
takes a lot of time. We can do a trick
though. Let's undo all of this thing
that we just did. Ctrl Z.
And instead of doing that, we can do a
super cool trick. Let's press shift. And
now right click on this.
You can see what happens. We have a
reroute node created for us here. I can
move it to the right. Now I can simply
route this in.
Bam.
All of these are now connected to my
math node. And now we can shift right
click again to remove this reroute node.
This is super super useful.
Okay. What I want to do with this math
node is add my bumps. So, I'm going to
just route this here
and let it think for a bit and see what
happens. Okay, let's go zoom in. All
right, that is
I would say. Okay, I'm going to disable
the rotation for a moment. Let's pause.
That is okay, but the silver parts are
also bumpy and I don't want that.
So, let's think because my edges are
already white. If I change the math
function here,
there's multiple things I can do to make
so so the white edges so the bumps do
not appear on the white. Now, we can't
see what's here because it's already
white. So, it's kind of all blown out,
but we can see that there the bumps are
there. We can't see them here, but they
are here. [gasps] However, if we click
this clamp thing,
what that is going to do is it going to
clamp the result of this math node
between zero and one. So, whatever we
see here, this is exactly what we get.
And you can see, tada, the bumps are
gone from our silver parts, from our
silver edges. So, we have a nice little
um kind of grip improving pattern.
However, the resolution is kind of
unsuitable. So, I'm going to I'm going
to make this smaller. Let's go 256 by
256.
Okay, I think that's pretty cool, but
the the pattern is a bit too strong.
So, I'm going to insert another math
node. Let's go click and drag. Let's go
again. Math.
And here, I'm gonna I want to make this
less. So I'm going to make a
multiply by 0.5. So that's going to make
my patterns if I if I click on this
darker. So all these bumps are going to
be smaller. So let's dr that in here and
observe what happens. Okay, our bumps
are less. Let's do even less. Let's do
0.1.
Okay, now we're talking.
That's really cool.
Okay, I think we're going to cut it here
cuz this tutorial is almost 30 minutes
and I think that's kind of enough. What
we're going to do is just export our
material. Maybe save it. So, file, save.
And I'm going to call this
well
blah
enter blah. Pex shortcut from procedural
texture I suppose. Now file export
material. I'm going to export to goodo
form.
Let's go. FA games.
Blur.
Let's just do this. Sweet. Um,
hold on.
Look, this these are our exported
textures. So, this is our blah alb
albido texture. This is our blah normal
texture. And this is our blah or
texture. ORM stands for occlusion
roughness metallic. So, it's our channel
pack texture that contains multiple
different pieces of information about
the material.
Now, I'm filtering this to only show PNG
files. But if I unfilter, we can see our
blah. PEX file, which is our source
project for material maker. This is
mmcr, which is material maker. Uh, copy
redundant. Uh, I don't know. This is
like um
copy for recovery. I don't know. This is
like for crash recovery file. And then
we have blah. T-RES. TRES means text
resource and that's a good file. And
we're going to be doing GDAU things
later on this channel. [snorts] But
maybe I'm going to just move this into a
GDO project and show you how it works in
a game. [clears throat]
Okay, let's try this. I'm not sure if
it's going to work, but I've selected
all the files. I'm going to click and
drag into good
into GDO's file manager.
Okay, we have blah. Let's click and
drag. [laughter]
Well, it it works. All right, here it
is. Our glorious material in a game.
It's horrible, [laughter]
but it's there. It works.
Now we can put it on a barrel.
There we go. Nice little barrel.
Barely as all barrels.
Let's put it in a container.
Nice.
Fantastic. Stellar work. Good job. Let's
I'll see you in another video. Take
care.