I've recommended material Maker on Slant.co:
A downloadable tool for Windows and Linux
Material Maker is a 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.
Material Maker also has its own subreddit, and this is where you can ask (and answer) questions and share the awesome materials you created!
Features as of version 0.93:
- A simple engine that defines a very small set of node types (shaders, buffers, node groups, image, text, switch) that can be connected to describe procedural textures. The engine does not generate an image for each node, but combines shaders until it reaches a buffer node or the target Material node (textures described as combined shaders are resolution independant).
- A base library of ~150 nodes that define shapes, patterns, filters and transforms on textures, as well as 2D and 3D shapes described as signed distance functions. Those nodes can be accessed from the Library panel or the nodes context menu of the graph view.
- New group nodes and shader nodes can easily be created using the user interface (creating shader nodes require some GLSL knowledge).
- A graph view where material graphs are edited.
- A hierarchy view that shows the hierarchy of group nodes in the current material.
- A 2D preview panel that shows the texture generated by the selected node and can export the result.
- A 3D preview panel that shows the current PBR material on a model. Basic shapes (Cube, Sphere...) are available and custom models can be loaded in .OBJ format.
- An Histogram panel that shows the current node's output tonal distribution.
- A Reference panel where images files can be dropped and that can be used to pick colors and gradients.
|Updated||16 days ago|
|Tags||designer, godot-engine, material, pbr, Procedural Generation, substance, textures|
|Asset license||Creative Commons Zero v1.0 Universal|
|Average session||A few minutes|
Click download now to get access to the following files:
- 3D model painting alpha release16 days ago
- Tiler nodes problem48 days ago
- Material Maker 0.9351 days ago
- Material Maker 0.92Jun 27, 2020
- Material Maker subredditApr 26, 2020
- A weird Material Maker experimentApr 01, 2020
- Material Maker 0.9Mar 15, 2020
- Material Maker 0.8Jan 22, 2020
Log in with itch.io to leave a comment.
I've recommended material Maker on Slant.co:
very rough around the edges, and the ui leaves a lot to be desired, but it's extremely powerful, and a much more solid alternative to substance designer than, for example, texturelab
Please don't hesitate to describe the improvements you'd expect. The more feedback from users, the better Material Maker will become.
sure thing! i'd much prefer a drop down menu with right click on the workspace for adding nodes, then using the space that the node selection previously occupied on the top left for a 3d viewport, imo that'd speed up workflow and make it much more convenient
though at the end of the day, it's better to have the option for the current layout in addition to the improvements me and other people have been asking for, it's always better to have more options rather than less
great work, btw! really like the program so far and where it's been going as well
In 0.92, space bar on the workspace shows a menu to create nodes. You can move all side panes around or hide them using the View->Panes menu.
If you want to test (and give feedback on) the upcoming 0.93 release, you may want to grab a development build there (just click the most recent action): https://github.com/RodZill4/material-maker/actions
This application is without doubt, the BEST free alternative to Substance Designer. Still, there is a lot to do. I have been testing the software I would like to give a constructive feedback because it can be really huge one day.
Improve the camera control, there is no reason to rotate sideways the camera, it gets really confusing.
-Fix the bug on the graph panel that makes impossible to click in the rest of the interface after it happens
-The user interface is (no offense) ugly and the user feeling isn't good
-The zoom inside the graph isn't oriented to the cursor
-The sliding option over the values inside the nodes is a real mess
-It would be nice to incorporate some post processing effects and also a tessellates surface to test the materials.
-LAST thing (for now): FOR GOD'S SAKE PRESENT THIS PROJECT FOR AN EPIC MEGA-GRANT!!!! YOU DESERVE IT!! this is impressive although all the problems, got and take Epic's money. Keep it on, this project is on the right way.
Hi, and thanks for your feedback.
- 3D view control is designed to be able to rotate the camera on all axes (right mouse button for roll axis, left mouse buttons for others) as well as the object (hold shift). Would you swap camera/object (rotate the object by default, hold shift for the camera)?
Actually I'd change lots of stuff in that 3D view (make light sources more obvious and make it possible to create custom environments), but I don't want it to become too complicated.
- Are you talking about that bug that makes it impossible to connect nodes ? It's been there for quite some time, but whenever I decide to go and hunt it, it just refuses to show. Whenever I know exactly what to do to repeat it, fixing it should be easy.
- Could you elaborate on ugly interface? Is that just you don't like colors/fonts/widget shapes, or that you'd expect all nodes be squares with a preview and all parameters in a separate panel? ;)
- I have to agree with the graph zoom one (I never use zoom unless I need it for a screenshot of a complex graph). Fixing this should be easy.
- Hmm I didn't get much feedback about controls for float parameters, could you be more precise? I tried to make them somewhat behave like they do in Blender.
- There are already tesselated meshes to test materials (last 2 meshes), and post-processing effects could be part of a 3D view redesign.
- I already have a full time job. I started Material Maker (2 years ago) for fun with shaders, I'd say that user feedback and awesome materials they show on Reddit motivate me today.
Oh, and I have a question. There was a download spike yesterday and I failed to find out where it came from. Any idea? If there was an awesome video or article somewhere, I'd like to be able to thank the author and read/answer comments/questions. Thanks!
"There was a download spike yesterday and I failed to find out where it came from. Any idea? "
maybe here : https://www.youtube.com/watch?v=kxDySLYU4XI&t=7m10s
I recommend you to take a look at ArmorPaint, I has a great interface and user controls. Maybe you can get in touch with it's creator luboslenko on Twitter and make and something together, I think you can make a great collaboration
ConceptGraph which is made with Godot too, has nice Color Scheme going with the nodes (Color Codes for different types), maybe take a look at it?
Wow! I found out about this program today and this is amazing! It took a bit to figure out, but with the examples and the documentation, it was a breeze! I hope that you'll continue to work on it and make it an even better version of itself! Anyway, I have two questions if you don't mind me asking. The first one is are we allowed to use the textures we create with this program for, more or less, commercial use? And secondly, do you plan on creating a discord server for the Material Maker community?
Thanks in advance, and thanks for making this awesome software!
Whatever you create with this tool is yours, and yes you're allowed to use your own assets as you wish (use in commercial projects, sell them...).
I don't plan to create a discord server, but if you want to show or share awesome textures you create, or just ask (or answer) questions about Material Maker, please feel free to join our subreddit.
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. ;)
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.
this person posted a video on youtube using material maker.
It talks about a "raymatching" addon but where do I get that addoon?
(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.
Thank you for this masterpiece.
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!
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
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!
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.
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!
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.
- 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)
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.
-Shape Splatter/Tile Sampler
-Flood Fill (and all the companion nodes) (You already have some of this in the Beehive pattern)
-Non Uniform Warp+Blur
-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).
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
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.
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.
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
- 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 ?
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).
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?
Oops, my fault, I forgot to mark the download as "Linux".
Should be fixed now, sorry for that and thanks for reporting!
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.
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 :')
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.
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.
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.
Yeah, the project works. I was just hoping that the plugin would work, too. Thanks for the reply, btw.
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.
Does that mean that the material code will be accessible by Godot Script and such or maybe editable in VisualShader?
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.
Will there be a mac build at some point? I want to use it but all I have is a mac :(
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 :)
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.
The best thing since sliced bread
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!
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?
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?
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).
this is by far one of the best free softwares i have found on this site
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!
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.
it's so useful, thanks! and keep on the good work! love making secondary normalmaps with it :)
I really like Material Maker!
I have a few questions.
- Is there a way to restart the rotation of the material preview?
- In the documentation see a Blur node listed, but where is it?
- How does the Custom Shader work?
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.
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.
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.
This is so cool!
Can it export to ktx by any chance, or just png?
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
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. ;)