A downloadable tool for Windows and Linux

Download NowName your own price

Material Maker is a simple procedural materials generation tool, based on the Godot Engine. Materials are defined as graphs where nodes create or transform textures.

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 generators.

The source code is available on GitHub, as well as the online documentation.

Please don't hesitate to report bugs, suggest new features or send screenshots of the awesome materials you created with this tool!


Download

Download NowName your own price

Click download now to get access to the following files:

material_maker_0_8_windows.zip 36 MB
material_maker_0_8_linux.tgz 38 MB
material_maker_0_9_windows.zip 37 MB
material_maker_0_9_linux.tgz 39 MB
material_maker_0_91_experiment_windows.zip 38 MB

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

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 94 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