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.
Log in with itch.io to leave a comment.
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. ;)