Material Maker a node based GLSL editor
category: code [glöplog]
This is a program called Material Maker https://rodzilla.itch.io/material-maker that is supposed to be to make materials / textures using GLSL nodes, but it has several properties that make it generic and very powerful.
1 - Nodes are editable in the program using GLSL
2 - Every node has a preview and parameters
3 - It's possible to group nodes
4 - You can uses functions as inputs
5 - And it's open source https://github.com/RodZill4/material-maker and made in the open source game maker Godot Engine https://godotengine.org/ :)
The 4 is the most important feature, it makes possible to make raymarching nodes, using functions inputs for SDF, textures, etc. But in reality everything is possible! :)
The output can also be a GLSL shader that can be used on Shadertoy :)
I had the idea of doing a program similar like this for many years, I think even before Shadertoy existed, it was suposed to be a web app with a server side to share nodes and creations, with nodes with functions as inputs, and nodes more like werkkzeug (less screen space),but never had time to do that. When I discovered this, I started talking to the developer @R0dZill4, because the program was very similar to what I wanted to do, one day he added functions as inputs and a very simple node to make raymarching https://twitter.com/paulofalcao/status/1220830816512757761, I saw that it now had the potential to do a more complex raymarching and much more, and I started to do a simple raymarching node, and some transformations https://twitter.com/paulofalcao/status/1224153371285901313 I tried to talk to him and give him ideas of how to transform the material maker into an everything maker :)
Material Maker will probably be always a material maker, but anyone can edit the source and do much more with it.
One off the big things is to make a server side to share nodes, that way one coder could make a very good raymarching node, or a new type of object, or texture etc, and share that with the community.
I only added some types, visualisations, and a raymarching node.
You all can use this "custom" version of the program this way:
1 - Install Godot Engine https://godotengine.org/
2 - Get material-maker master branch https://github.com/RodZill4/material-maker
3 - Download my file https://www.dropbox.com/s/5sjvkpv1g5hlwf5/material-maker_PauloFalcao_Pouet.zip?dl=1, it's the new types, visualisations, and a simple example with a raymarching node, join that with the source. ( The code is always cloned into the shader, so when saved the .ptex file has all the GLSL node required, the ideia is that anyone can edit the code on each node. )
4 - Open Gogot Engine, import the project, and run the project in the project manager.
5 - Open my simple example PauloFalcaoRaymarching.ptex, to see how to make a Raymarching node
6 - Play with it, use the sliders (press ALT to do small ajustments, edit the nodes code (using CTRL-W)
6 - Start making new nodes and share that! To share it's possible do to "copy" a node and paste to a text editor, the output is a JSON text :) Or just share the .ptex files.
BTW it's also possible to make new connection types editing io_types.mmt, you also need to make a visualisation for the node, the preview_<type>.shader file.
Have fun :)
YouTube - Playing with Material Maker - https://youtu.be/eMvtjfDDiAU
Another video https://www.youtube.com/watch?v=vWJuDNRJSZI, uses the old MaterialMaker without uniforms, sliders are much more slow, the current 0.9 version still works this way, but the latest git version is much faster.
Interesting! Can this also use inputs from other programs, or video files, or sth, and export a description of the node graph?
(context: I want to make some postprocessing stuff for hardware that lacks a programmable GPU.)
@porocyon As is it's a image / texture generator, where you can export the generated GLSL , there is no time parameter. I would like do fork MaterialMaker into a EverythingMaker and add many things, like timeline etc. Now you can only import image files. But you have the source https://github.com/RodZill4/material-maker to modify and add stuff :)
Another very easy way to use Raymarching in the program is to use the prebuilt version 0.91 https://rodzilla.itch.io/material-maker, open the program, copy this https://pastebin.com/raw/yiiad8cQ and paste to the editor, a RayMarching node will appear!
I was thinking of sth like importing from a video file or input from another program instead. But oh well.
I used ShaderTool for some years.
It´s even made by Demosceners! (BiteTheBytes)
I only stopped using it because of problems with the mouse-pointer when using UltraWide-Screens! (21:9 here)
But it does the same job as the Tool above, in GLSL and HLSL, you can even decide which version of DirectX (f.e.) you´d like to use.
Also you can copypaste from ShaderToy and it simply works.
It even comes with VR-capabilites! ;) There´s nothing cooler than tweaking your shaders in VR! :)
It´s even made by Demosceners! (BiteTheBytes)
I only stopped using it because of problems with the mouse-pointer when using UltraWide-Screens! (21:9 here)
But it does the same job as the Tool above, in GLSL and HLSL, you can even decide which version of DirectX (f.e.) you´d like to use.
Also you can copypaste from ShaderToy and it simply works.
It even comes with VR-capabilites! ;) There´s nothing cooler than tweaking your shaders in VR! :)
ɧ4ɾɗվ./Zitron. ShaderTool looks like a very nice tool and was made Demosceners :) But it is a very different tool, it is a pipeline rendering tool, where you can edit the pixel shader, the vertex etc. and load 3D models, such as FX Composer or RenderMonkey.
In Material Maker, you create the pixel shader using a graph, and the resulting shader can be exported to shadertoy, and it is not a simple graph like the Unity Shader Graph, or the Amplify Shader and others; in Material Maker, you can use functions as inputs for functions / nodes, so it is possible to make raymarking nodes, with an SDF function as input, for example, I don't know any outher tool that can do this.
In Material Maker, you create the pixel shader using a graph, and the resulting shader can be exported to shadertoy, and it is not a simple graph like the Unity Shader Graph, or the Amplify Shader and others; in Material Maker, you can use functions as inputs for functions / nodes, so it is possible to make raymarking nodes, with an SDF function as input, for example, I don't know any outher tool that can do this.
interesting tools both of them actually.
Material Maker sounds interesting.
But to be honest: for Demostuff-prototyping/-tweaking this seems just to be extra-work, having to go forth and back between nodes (SDF- and Raymarcher-Node), while you can have both in the same Code-Node in the other Tools...meaning just having to scroll up/down to edit everything, without having to touch the mouse at all.
But i guess it can have some uses for other effects, which i can´t think about right now.
Thanx for this Thread btw, reminded me i need a new Tool for Tweaking stuff faster...maybe i should code it myself this time.
But to be honest: for Demostuff-prototyping/-tweaking this seems just to be extra-work, having to go forth and back between nodes (SDF- and Raymarcher-Node), while you can have both in the same Code-Node in the other Tools...meaning just having to scroll up/down to edit everything, without having to touch the mouse at all.
But i guess it can have some uses for other effects, which i can´t think about right now.
Thanx for this Thread btw, reminded me i need a new Tool for Tweaking stuff faster...maybe i should code it myself this time.
The idea is that those who do not know how to make raymarchers, objects, textures from scrath can also play with it. Also coders that know how to do good nodes, can share those nodes with the comunity. It's also a very easy way no setup something from scratch and then just concentrate in one particular node code that does a specific function.
In materialmaker is possible to make a generic node to make fractals where the fractal transformation is a graph
The code is here https://pastebin.com/raw/m58gX1cH
Use with copy-paste in https://rodzilla.itch.io/material-maker material_maker_0_91_experiment
The code is here https://pastebin.com/raw/m58gX1cH
Use with copy-paste in https://rodzilla.itch.io/material-maker material_maker_0_91_experiment
Part of Inércia Demoparty Seminar September, Paulo Falcão is giving a seminar about Raymarching in Material Maker tonight at 21:00 Lisbon timezone http://twitch.tv/psenough
Hi! The seminar "Ray Marching in Material Maker" for Inércia Demoparty is now on YouTube https://youtu.be/jxojcXgRkbM
MaterialMaker nodes and examples are here https://drive.google.com/file/d/1a2KTYXmKjlfmZviLKx8qpse1GO_ZR7hy/view
MaterialMaker nodes and examples are here https://drive.google.com/file/d/1a2KTYXmKjlfmZviLKx8qpse1GO_ZR7hy/view
Made a small video about custom unions https://youtu.be/-1x-dFD695g
And updated my MaterialMaker nodes and examples https://drive.google.com/file/d/1v6bFEzTQMGDI7Eb7c8zaDc8Bn6P5UaXt/view?usp=sharing
And updated my MaterialMaker nodes and examples https://drive.google.com/file/d/1v6bFEzTQMGDI7Eb7c8zaDc8Bn6P5UaXt/view?usp=sharing
=== USING MATERIAL MAKER FOR RAY MARCHING - UPDATE ===
To use Material Maker for Ray Marching now it's not necessary to follow the steps from my first thread post.
You only need to:
1 - Download the last Material Maker - Material Maker The last Desktop Build
2 - Make your own Ray Marching nodes or use MyNodesAndExamples
To load custom nodes use "Edit -> Load Selection" like I show in the videos
- Small video about custom unions - https://youtu.be/-1x-dFD695g
- Using Mercury Stairs in Material Maker - https://youtu.be/EMrVAQMJ72Q
- Ray Marching in Material Maker - https://youtu.be/jxojcXgRkbM
You can export the generated shader to Shadertoy! :)
To use Material Maker for Ray Marching now it's not necessary to follow the steps from my first thread post.
You only need to:
1 - Download the last Material Maker - Material Maker The last Desktop Build
2 - Make your own Ray Marching nodes or use MyNodesAndExamples
To load custom nodes use "Edit -> Load Selection" like I show in the videos
- Small video about custom unions - https://youtu.be/-1x-dFD695g
- Using Mercury Stairs in Material Maker - https://youtu.be/EMrVAQMJ72Q
- Ray Marching in Material Maker - https://youtu.be/jxojcXgRkbM
You can export the generated shader to Shadertoy! :)
=== USING MATERIAL MAKER FOR RAY MARCHING - NEW UPDATE 2.0 ===
It’s even simpler to do Ray Marching on Material Maker!
Now on version 0.95 it's possible to make, and export Libraries with nodes, so I made my Ray Marching library for Material Maker, it's here:
https://github.com/paulofalcao/MaterialMakerRayMarching
Use just need to:
1 - Download MaterialMaker from https://rodzilla.itch.io/material-maker
2 - Install MaterialMaker
3 - Download the latest "MaterialMakerPauloFalcaoLib - v0.01.json" file, and save the file wherever you like
4 - Run MaterialMaker
5 - Click "Manage Libraries" -> "Load Library" -> Choose the saved json file
Here is a video playing with it https://www.youtube.com/watch?v=7_QUPToUcjM
And a Shadertoy made with it https://www.shadertoy.com/view/fdsXWX just using 7 nodes
It’s even simpler to do Ray Marching on Material Maker!
Now on version 0.95 it's possible to make, and export Libraries with nodes, so I made my Ray Marching library for Material Maker, it's here:
https://github.com/paulofalcao/MaterialMakerRayMarching
Use just need to:
1 - Download MaterialMaker from https://rodzilla.itch.io/material-maker
2 - Install MaterialMaker
3 - Download the latest "MaterialMakerPauloFalcaoLib - v0.01.json" file, and save the file wherever you like
4 - Run MaterialMaker
5 - Click "Manage Libraries" -> "Load Library" -> Choose the saved json file
Here is a video playing with it https://www.youtube.com/watch?v=7_QUPToUcjM
And a Shadertoy made with it https://www.shadertoy.com/view/fdsXWX just using 7 nodes
Version 0.02 is out!
https://github.com/paulofalcao/MaterialMakerRayMarching
1 - Download MaterialMaker from https://rodzilla.itch.io/material-maker
2 - Install MaterialMaker
3 - Download the latest "MaterialMakerPauloFalcaoLib - v0.02.json" file, and save the file wherever you like
4 - Run MaterialMaker
5 - Click "Manage Libraries" -> "Load Library" -> Choose the saved json file
Here is a video playing with the new stuff https://www.youtube.com/watch?v=xnCdJ1hLLPk
https://github.com/paulofalcao/MaterialMakerRayMarching
1 - Download MaterialMaker from https://rodzilla.itch.io/material-maker
2 - Install MaterialMaker
3 - Download the latest "MaterialMakerPauloFalcaoLib - v0.02.json" file, and save the file wherever you like
4 - Run MaterialMaker
5 - Click "Manage Libraries" -> "Load Library" -> Choose the saved json file
Here is a video playing with the new stuff https://www.youtube.com/watch?v=xnCdJ1hLLPk
Version 0.03 is out with MFSDF and path tracing!
I have done a 2 hours seminar about it at Inercia Demo Party 2021
I have done a 2 hours seminar about it at Inercia Demo Party 2021
Version 0.04 is here https://github.com/paulofalcao/MaterialMakerRayMarching
I have done a 1 hour seminar about it at Inercia Demo Party 2022
I have done a 1 hour seminar about it at Inercia Demo Party 2022