The future of Material Maker
The upcoming release of Material Maker should be available in a few days, maybe a few weeks (depending on how much time it will take to finish testing and fix remaining bugs), but I wanted to share about the huge change it will introduce.
0.96 will provide a configurable Material node, and as a consequence, will no more generate only static PBR materials. This means it will be possible to create completely new material types, by defining a preview shader (written in Godot shader language, with extensions to handle node inputs and parameters), and export targets.
It is also possible to add new export targets to a Material node by selecting it, hitting Control-W to make it editable (just like any shader node) and clicking the Edit button. The Material Editor window is an improved version of the Node editor with en Export tab to create new export targets or update existing ones.
But generally, you will not want to dive that deep into Material Maker internals, and will only use the 4 predefined material types, that can be selected using the material node context menu (shown above):
- the good old Static PBR Material
- the Dynamic PBR Material, which is nearly the same as the Static one, except it can be animated
- the Unlit Material, that just has a color channel and is blended with the scene to create nice effects
- the Raymarching Material, that will display a raymarched scene inside your mesh and can be used to easily create crazy effects
Note that if you want to test this new feature before the release is ready, you can download a dev build on Github (you will have to be logged in): just click on the latest build at the top of the list and choose a download for your OS. Please don't hesitate to report bugs (by contacting me on the Discord server), so I can fix them before release.
All this is possible thanks to parameter expressions. Those have been available for a few releases now, but were not used very often (and this might change with 0.96).
So it is possible to specify expressions for float parameters, and to use the $time variable in those expressions. As a consequence, nodes can generate animated images and it is also possible to generate the corresponding shader using the Debug node. Different syntaxes are available (shadertoy, Godot etc.) depending on what you're planning to do with the shader.
Of course this works with all node types, and 3D SDF and 3D texture nodes can generate animated scenes and 3D textures.
Static PBR Material
This material node is compatible with older Material Maker releases, and is the default one.
It can be exported for Godot, Unity and Unreal game engines. Those exports generate the images for all channels as well as all necessary files to describe the material for Godot and Unity. Unfortunately, Unreal users will still have to setup a PBR material manually using the generated textures.
Dynamic PBR Material
This material node is very similar to the static one, except it will not generate images for all its inputs. Instead, it will combine generated input shaders into a single PBR shader.
Together with expressions as parameter values and the use of the $time variable, this can be used to create simple light effects (this material below was created in just a few minutes, starting from a static material made by Wojtekpil) as well as more complex materials with moving parts.
But animated materials are not the only application of dynamic materials. You could for example use signed distance functions to create materials with sharp edged 2D shapes, either described in the shader or low resolution textures (this effect is very well explained in this video), or create a non repetitive bricks pattern.
Dynamic materials can also be exported to Godot, Unity and Unreal (and the material also has to be built manually in Unreal). Note that for Unity and Unreal, export relies on very naive GLSL to HLSL translation, and will be rewritten in a future release. Until then, please don't hesitate to report export problems.
The unlit material is the simplest. It accepts a single image graph as input, and has a parameter that defines its blending mode (add, mix...).
This material is mainly useful for effects such as fire, magic spells, lightning etc. The flames material above was adapted from a project created by ydobemos.
As with Dynamic material, Godot, Unity and Unreal exports are available.
The last material is based on raymarching, and will render shapes (described as Signed Distance Functions, and painted using 3D textures) inside the mesh they are applied on.
The example below is based on a project created by Paulo Falcao and shows a raymarching material applied to a simple cube. If you intend to try creating Raymarching materials, you might be interested in downloading his raymarching nodes library (that is mainly dedicated to 3D raymarching, but also has interesting 2D nodes) and watching this video.
It is likely that configurable Material node is the last "big" feature until Material Maker 1.0. Next releases will be focused on fixing bugs, adding new nodes and implementing usability improvements (including undo/redo). The mesh painting tool will also receive a few (necessary) updates and a major update of the brush library.
Meanwhile, please don't hesitate to report problems and suggestions, and to show whatever you create with Material Maker.