A downloadable tool for Windows and Linux

Download NowName your own price

Material Maker is a simple procedural materials authoring tool, based on the Godot Engine. Materials are defined as graphs where nodes create or transform textures, and can be exported for the Godot, Unity and Unreal game engines.

Most nodes are defined as GLSL shaders, and when connecting them, Material Maker will generate combined shaders (instead of rendering an image for each node). It is also possible to create new nodes either by combining and grouping existing nodes, or by writing your own GLSL shaders.

The source code is available on GitHub, as well as the online documentation. Github is also where you can report bugs or suggest new features.

Material Maker also has its own subreddit, and this is where you can ask (and answer) questions and share the awesome materials you created!


Download

Download NowName your own price

Click download now to get access to the following files:

material_maker_0_92_windows.zip 38 MB
material_maker_0_92_linux.tar.gz 39 MB
material_maker_0_91_experiment_windows.zip 38 MB
material_maker_0_9_windows.zip 37 MB
material_maker_0_9_linux.tgz 39 MB

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

hello.
exists the node to scale images?

Hmm if I understand what you need, the "Scale" (only in 0.92) and "Transform" nodes should do the trick.

Hi there. I tried updating to 0.92 from the itch app on linux but got an error saying "no manager for installer unknown." I can send you the stack trace if that helps. Thanks.

I'm afraid the download is just a .tgz file. Maybe I should take a look at this itch app. ;)

(+1)

Hmmm, strange. Did it used to be packed in a zip file? Because previous versions worked fine in the app, but now it complains that there's no handler for the .tgz format when installing, even with 0.90, which I had previously installed from the app but no longer can since it's also a .tgz file in the current downloads. Installing the Windows .zip file works fine from the Windows itch app, by the way. 

Of course, I can just download from the browser and it works fine, but the itch app is a nice way to install software and keep it updated when it works.

Linux release has always been a .tgz file. I'll investigate this and try to fix the problem.

It seems renaming the .tgz file to .tar.gz fixed the problem. Thanks for reporting the issue. ;)

(+1)

Nice, that did the trick. Thanks!


this person posted a video on youtube using material maker.

It talks about a "raymatching" addon but where do I get that addoon?

(+1)

Paulo Falcao shared his raymarching addon on reddit.

he say´s:

The code is here
https://pastebin.com/raw/m58gX1cH
Use with copy-paste in
https://rodzilla.itch.io/material-maker

but i dont underestand where ¿making a new material? ¿inside ? ¿where? thx

(1) Create a new material with File->New material. (2) select the (JSON) text from the pastebin address. (3) paste it into the graph view in Material Maker.

are opensource?

(+3)

Maybe you want to read the description carefully. :p

(+1)

Thank you for this masterpiece.

(2 edits)

Is there an option to export as glsl or as json? I'm using a custom engine, so exporting to a mainstream engine isn't an option for me, and I woudn't waste the benefits of a procedural texture by exporting a PNG. Otherwise, this tool seems perfect!

(+1)

You can use the Debug node to get GLSL code. Not sure what you wanna do with JSON (everything is described as JSON but you'd need to interpret it in your engine).

Please it's telling not responding after showing rodlabz

(1 edit)

Hmm could you give me more information? Which release did you try, on which operating system? Information about your graphics card would also be useful.

Thanks a lot in advance!

Amd CPU with Radeon graphics.asus notebook PC windows 10

Hmm and which release of Material Maker ?

0.8

(+1)

Try the latest version (0.9). It uses a newer Godot version as a base, which fixes some crashes on startup with low-end GPUs.

(+3)

What a great tool! For a long time I've been searching for an alternative to proprietary programs like Substance Designer. This is exactly what I needed! There are some small issues and probably some features are missing, but it's being actively developed. I hope the author continues improving this awesome app.

Hey, wasn't sure if you were aware (checked the github issues but I didn't see any mention of this) Both DirectX and OpenGL style normalmaps generated in this are wrong. Not sure about the packed normal maps (2 channel normal map variant labeled as "default" in this program) are correct. I imagine they are wrong, but not entirely sure. Anyway, both DirectX and OpenGL style normal maps have the red channel represent the right side of the normals, meaning if you have something that protrudes outwards like bricks the red channel for each brick should be on the right, that in not the case in this program. They are on the left side. Super easy fix for people making textures in this: Use the decompose node and invert the red channel (top) and then recombine using the combine node.

Will note that the generated meshes here seem to give incorrect results with the corrected red channel which leads me to believe there is an issue with the tangents on these meshes. Could be a Godot issue because I do recall seeing this issue before in it.

(+1)

That format parameter in the Normal node should not be used anymore. Just let it generate the "default" normals, which should render correctly in the preview. Correct normals are then generated when exporting for each engine.

And yes, the tangents on the preview are wrong (was an issue in Godot's default meshes when I started Material Maker, and fixed since then).

You can indeed trivially modify the normals format as needed using Decompose and Combine, but I'd recommend SwapChannels that is easier. And if you need new export options, please ask. :)

Thanks for the reply!

(1 edit)

Is the issue with broken tangents on Godot's primitive meshes reported on GitHub? This was supposedly fixed in Godot 3.1: https://github.com/godotengine/godot/issues/16009

(+1)

No, it is now fixed, but the first releases of Material Maker used a Godot release with the flipped tangents problem. All normal map conversion should now be done in the Material node, the format parameter of the Normal node should not be used anymore.

A cool and very promising program!  Already quite stable and usable from my experience so far.

Some notes:

- Clicking and dragging on an output (or input) of a node would often drag the node around instead of creating a new connection line or removing the existing one.  Scrolling or playing around with the zoom level can solve the issue temporarily but it keeps recurring.

- From a UX standpoint - although the manual is quite thorough and that deserves praise by itself - I'd really love to see some in-app tooltips (and previews, when possible) on the various outputs of a node. 

- I'd love to have random value ranges for more parameters. UI-wise, this can be a small button next to a parameter field that when clicked will split the field into two fields- one for the minimum value and one for the max. It can be very useful to easily create variation. (e.g. in a node such as scratches it can be used to randomize the width or length of individual scratches.)

- Is there a way to set the screen rendering resolution independently of the output resolution?

-  Zooming-in in the 3d preview pane tends to make the perspective a bit extreme. Is there a way to adjust the FOV?

- Is there a way to zoom in or out  the 2d preview pane?

- tooltips everywhere is planned. most code is written, but tooltips themselves are not. ;)

- That's an interesting upgrade for the scratches node (it would be a couple new "randomness" parameters that affect length and width, so the new node remains compatible with older graphs).

- the rendering resolution is the one on the screen for 2D views and the output resolution for the 3D views.

- zooming in/out 2D preview: not yet, but planned.

That's awesome, thanks.

Some extra minor suggestions:

- Add opacity and opacity randomness parameters for the splatter node.  A mix mode would be quite useful too.

- Add a small outline to the gradient stops in the gradient editors to make them easier to see.

- Allow zooming in and out of the node tree with Ctrl-Plus and Minus (Old dog's muscle memory)

(3 edits)

Alright, I just took a sneak peek at it but it looks really great so far. I love the viewport and some features like wireless connections. Iwas always on the lookout for something like this. But there are some important nodes missing IMO which are quite crucial to my SD workflow.

-LEVELS!

-Distance Node

-Shape Splatter/Tile Sampler

-Flood Fill (and all the companion nodes) (You already have some of this in the Beehive pattern)

-Directional Warp+Blur

-Non Uniform Warp+Blur

-Slope Blur

-Histogram Scan

-Histogram Range

-Make it Tile

-More gradient points in the colorize node (maybe I'm stupid)

I think with these implemented this could be a serious replacement for SD (for the most part).

Minor wishes:

More control on the scratches generator (fade only start or both end and start, warping of individual scratches - you know the drill :)

More Noises/Grunge Maps to work with as an artist

UX/UI:

Mousewheel pans for me. It should zoom instead. Panning can be done with spacebar. A great feature would be to ctrl+mousewheelclick to orbit the 3D view in the background.

Wishful thinking:

Every paramter drivable by map input (Substance says no cuz performance)

Anyway, you rock man. This looks super promising and I'll see if I can't make some regular donations of 10-20€/month to this project.


Bugs?:

The decompose/channel split won't connect with the color outputs from the beehive floodfill-like outputs.

Also exposing parameters would be really important aswell. Also with math functions. Though this shouldn't be too complicated. Usually you just need basic maths to remap a value range or lessen the effect of a slider controlling two different things. It's really useful at times.

I started implementing math expressions in (floating point) parameters. Not completely sure how this can be used/improved...

Oh, and a promt to save before closing would be cool as well :P

Indeed...

- Look at the "Tones" node in the 0.91 (experimental) release
- I must investigate how to implement distance, but it is not a shader-friendly function
- Splatter/Tiler nodes exist already. Please tell me if they need more features/parameters
- Flood fill is not shader friendly either. Hmm how is this related to beehive ?

I answer you in the reddit thread :)

(+1)

OK. Answered also. Twice. What a mess. :D

haha my head is spinning

Does it work for blender?

Not sure I understand your question. If you want to use generated textures in Blender, yes it will work (I think you will have to use the "Unity" export option to get correct normal maps).

(+1)

Installing MM 0.9 doesn't currently work from the Itch desktop app, at least on Linux. It actually tries to install the 0.8 version instead. Some sort of configuration typo in the package definition?

(+1)

Oops, my fault, I forgot to mark the download as "Linux".

Should be fixed now, sorry for that and thanks for reporting!

(+1)

I actually like where it went with the last update, it has real cool nodes. It is real hard to navigate through the library though. There should be a shortcut that pops a menu up with a search box for adding nodes quickly. 
I would like some nodes have 'inputs'. For example, why do we have to pass consonants to the brick node's parameters? I am not exactly sure how much this makes sense but passing maps to these could be a nice freedom to have.  I guess I saw something like that on youtube somewhere.
Apart from these, correct me if I'm wrong, there isn't any math nodes for adding, subtracting or multiplying? and there is no sine node?

Again, I do like the project and wish to help if I can. Keep up!  :')

Thanks a lot for your feedback.

You can focus the library's search box using Ctrl-F, but sure you still have to drag'n'drop the node. Showing the library as a popup to directly add nodes (either with a shortcut or when connecting an output to empty space in the graph view) is somewhere on the roadmap. ;)

About parameters, would you like to have them as inputs ? And have math nodes to build expressions for those parameters ? I think this is too complicated and I cannot find a good reason for that. Please don't hesitate to describe a use case so I can think about how to solve it.

(+1)

here is an example on bricks. He puts some map on bevel to give it variety, and also to the mortar input later on the video.

About the math nodes, well they are not only for the inputs I mentioned above, more like for using math expression on maps. For example, how can I make a star shape appear only on white parts of a perlin noise? I would probably multiply star shape with the noise. I tried doing it with blend node but I'm not sure  if that's what I actually mean.  I am no expert of procedural texturing, but I feel like something is missing without having Add, Subtract, Multiply, Divide like we have on Blender, Unreal Engine and Unity etc.
Wish the trial of explanation wasn't too complicated, as to me what I said did not make much sense :')

(+1)

The Blend node has quite a few modes, and multiply is probably the way to go to mix your star with your Perlin noise. You should set the opacity to 1 in that case. But lighten or darken could be good alternatives depending on the result you expect.

I will investigate missing blending modes.

(+1)

I tried the GitHub version as a plugin/addon for Godot and had a problem. Godot told me that plugin.gd had an error in the code when I tried to activate it. Any thoughts? I simply downloaded the master and put the addons folder into the project.

(+1)

I don't remember if the plug-in version is still supported. Try loading Material Maker as a standalone tool by importing its `project.godot` file into the Project Manager.

(+2)

Yeah, the project works. I was just hoping that the plugin would work, too. Thanks for the reply, btw.

(+1)

Fixing Godot integration is my next task. The addon will provide an import plugin that generates SpatialMaterials from .ptex files (textures can either be prerendered, or generated at runtime). It will not be possible to run Material Maker inside Godot anymore.

(+1)

Does that mean that the material code will be accessible by Godot Script and such or maybe editable in VisualShader?

(1 edit)

No. The plugin will just allow you to use .ptex resources as SpatialMaterials in 3D scenes.

Getting generated shader code should be easy (it's already possible manually using the Debug node), but I'm not sure how that could be used in Godot.

(+1)

Will there be a mac build at some point? I want to use it but all I have is a mac :(

(+1)

Unfortunately I don't have a mac, so I cannot create or test a mac version yet.

You could still get the Godot game engine and Material Maker sources from Github and run the tool directly in Godot.

(2 edits) (+1)

Can you give some pointers on how to create the binary/standalone version? Maybe someone else with a Mac could create an experimental build for you :)

(6 edits) (+2)

1. Download the Godot editor and export templates from https://godotengine.org/download (standard, not Mono).

2. Download the Material Maker source code and extract it: https://github.com/RodZill4/material-maker/archive/master.zip

3. Start the Godot editor. This opens the Godot project manager. Use Import to select Material Maker's `project.godot` file and edit the project.

4. Install the export templates TPZ file using Editor > Manage Export Templates... > Install From File... at the top of the Godot editor.

5. At the top of the Godot editor, choose Project > Export. Create a preset for macOS (more information). Export it anywhere on your filesystem.

6. Extract the generated ZIP by double-clicking it then run the generated .app bundle.

(+2)

Thanks for answering, Calinou. ;)

I exported to Mac (the list of files to be exported was not up to date). It's not tested, but the result is here. If it runs successfully on Mac, we'll have to figure what to do with other files (library, templates, examples and doc).

(+2)

The best thing since sliced bread

(+1)

Great job on Material Maker! I think it's coming along very nicely and really only could use a few little usability tidbits as polish. The only (relatively speaking) "major" thing I would like to see are some option/settings for controlling the graphics quality of the preview. The roughness parameter increases the spread on the environment map samples but there's so few samples that it can look a bit "sparkly". If I recall there's a setting in Godot that you can access from Project Settings and also from scripts to directly control it (and be able to expose the setting to end-users of Material Maker) so we can crank it as we see fit for high-def material previews. That would be the only thing that I would need to consider MM plenty sufficient for just about everything I could want to do with it. Great work!

(+1)

Thanks for your feedback !

The low res (1k) maps that are provided (I wanted to keep downloads as small as possible) make reflections look really bad on polished metallic materials. Would providing higher res panoramas and increasing their radiance size solve your problem completely?

Before:


After (with 2k panorama):


I did a little more experimentation and it appears to be a problem with Godot 3.1 and earlier where the "High Quality Ggx" and "Texture Array Reflections" don't change the sampling count on environment maps for rougher materials. The end result is that very slightly rough materials look "glittery", like someone applied a noise filter to the environment map and then just applied that to the render. I checked the latest Godot 3.2 beta release and it seems to have the opposite problem: turning off High Quality Ggx and Texture Array Reflections doesn't seem to cause noisy sampled environment maps.

Here's a GIF of what I'm referring to:



This is the rusted metal example material that I show modifying the effect of increasing the roughness. You can see that it's not speckled/noisy due to the surface, but because the environment map itself just appears noisy, instead of blurred. It's something I noticed with Godot a year or two ago and appears to be 'fixed' (except that now I don't think you can get back this low-sample-count behavior if you turn down the render quality settings for a project) and might just be something we have to wait for them to fix before you can release a new version that doesn't also have the issue.

At any rate it's not the end of the world and MM is still plenty great for creating PBR materials with. I really enjoy the simplicity of MM and the fact that it is very clean and simple the way software should be.

Also, just out of curiosity, did you develop this using Godot's GDScript?

Thanks ! So this issue should be solved with Godot 3.2...

And yes, it's all GDScript and the code is available on Github.

Deleted 190 days ago
(1 edit) (+1)

Thanks for your comment. I'm not a Blender expert, but reading this, it seems Blender uses its own normal map format. Blender sure deserves its own option, that will be added for 0.8. :)

If you're aware of other normal map formats, please don't hesitate to mention them.

(+1)

Hi.
I was already checking in other programs such as godot, ue4 and unity3d with their corresponding formats and the same thing happens, the x axis is inverted (-x).


(+1)

Excellent ! I'll add more options in 0.8.

There will also be a new channel swap node that can be used to convert to any additional format.


(+1)

this is by far one of the best free softwares i have found on this site

(+2)

Thanx a lot ! Please don't hesitate to tell me what you don't like or what's missing in Material Maker. That's how it will improve!

(+1)

Very nice tool  - will certainly come in handy!!
One question regarding the user interface - any chance of getting the Blender style "click in a field and drag right/left to change value" fields?
At the moment input fields can be changed by entering a value or clicking the up/down arrows - those arrows are a bit of a pain for playing around with value changes. 
From using Blender I found that  those click-and-drag input fields make work a lot easier.
Then again - that might just be me.
Keep up the good work!!  

I think you can drag the arrows up and down to change the value, but I must admit I don't like that widget. I'd like to use the same widget for all float values, but this one is too annoying for everything you'd like to change quickly, and the horizontal slider is just awful when you need to set a precise value.
Not sure when I can code this, but I really like your suggestion.

(+2)

Hmm that was easier than I thought. :D


Great - thanks. I think that makes  playing around with values a lot easier!! And the text input allows you to be precise or copy values.

(+1)

it's so useful, thanks! and keep on the good work! love making secondary normalmaps with it :)

(+1)

I really like Material Maker!

I have a few questions.

  1. Is there a way to restart the rotation of the material preview?
  2. In the documentation see a Blur node listed, but where is it? 
  3. How does the Custom Shader work?
(+1)

1. Not in this release. But there will be a button for this in 0.7.
2. It was removed in 0.6 (due to major refactoring) and will be back in 0.7.
3. This really needs documentation (not only about how to write custom shaders, but also about how Material Maker works with shaders) and I'll write this soon. Anyway, many nodes are implemented as shaders, so you can select one, hit Ctrl-F and use the pencil button to see how it is implemented.

(+1)

Are there any instructions of a possible export-import to actual Godot projects from Material Maker?

There is an old release of Material Maker in the Godot AssetLib. If you want to test it, just install it, activate the extension, and click the "Material Maker" button in the top right corner of Godot. In this integrated version, File->Export will generate a SpatialMaterial .tres file that you can use directly.

The new one (0.6) is not integrated yet in Godot. There's progress in the export_plugin Github branch, but I'm not satisfied with it yet. It will be available in the AssetLib whenever it's ready.

If you use 0.6, exporting a material generates a few png files. Then you will have to create a SpatialMaterial in Godot, use ..._albedo.png for albedo, ..._orm.png for ambient occlusion (R channel), roughness (G) and metallic (B), ...depth_texture.png for depth,  ..._normal_texture.png for normal map and ..._emission.png for emission.

(+1)

Hi, 

I got a bug (I think it is a bug) on export it hapens nothing. 

When I click or press ctrl+e it hapens nothing. Do you have any idea?

I'm on a windows 10 Intel based CPU.

Thank you!

(+1)

It exports directly where the file is saved! Thanks

(+1)

This is so cool!

(+1)

Can it export to ktx by any chance, or just png?

Only png for now.

(+1)

Can i suggest more map types to export, subsurface scattering maps, is a big one I don't see  a lot of programs featuring it.

Adding new maps would (will) be a piece of cake. Thanks to Godot, I can add textures for Rim, Clearcoat, Anisotropy, Subsurface scattering, Transmission and Refraction.

But first, I have to understand what they are used for. :p

(+1)

in Simple Terms, Subsurface Scattering Maps are Mapping of how color of an semi translucent material should change when light affects it.  the most common example being human skin turning a pinkish color when light is shining. (ex. 

(+1)

A very, very nice tool with nice examples to learn from, that gives you very nice textures in no time.

Just keep going that way, great tool !

Thanks for your feedback. Please don't hesitate to suggest new features, I don't have enough new stuff for a release right now. ;)

nice