- Added support for inputs and alternate syntax for parameters ($foo instead of $(foo))
- Added support for default input values ($uv can be used for non uniform defaults)
Added initial support for alpha channel (in combine, decompose and blend nodes). Textures with alpha channels can be exported using the material node albedo input.
Updated node editor with a simple editor for enumerated parameters.
Updated all nodes so parameters are located in a "parameters" variable.
Started writing a generic node model whose behavior is defined in a json file. Should be able to replace all generators so far.
Wrote json files for bricks and noise nodes.
Started preparing a custom node.
Added documentation for Material, Export, Comment, Switch and Remote nodes.
Fixed missing "tool" attribute in editable_label script.
Reordered misc. nodes in base library.
Now linking new controls to a linked_control will check compatibility (same control type and parameters).
Linked control labels are now editable.
Modified the Switch node layout so it is easier to understand.
Updated the bricks example to use the switch and remote nodes.
Added a class for gradient (that handles serialization and shader generation), and updated the GradientEditor.
Added a "Types" class that handles values serialization.
Updated linked_control and config_control to link to GradientEditors.
Started adding the "remote" node, that can control important parameters of the graph and save/restore configurations of groups of parameters. This should help creating easily configurable materials.
Added new "mosaic" example
Exporting a material will now create a SpatialMaterial. The Material graph node
now generates different textures when used as a Godot addon (metallic, roughness
and ambient occlusion are merged into a single texture).
Rendering code (that was in graph_edit and node_base scenes) is now in a single "renderer scene" attached to the main window.
Updated Transform so it accepts a greyscale input per parameter. For each pixel, the parameter is multiplied by 2*v-1 (v being the value of the input's pixel) which makes it possible to affect the strength of each transform using an input image. New effects such as whirl and color guided offsets are now possible.
Added Decompose node (does the opposite of combine).
Used another color for inputs/outputs that expect/generate a greyscale image.
Updated library code to be able to store a group of nodes.
Added keyboard shortcuts:
- Del to delete selected nodes
- C to center the view
Modified paste action to paste at the center of the view.
New example (biohazard from webbzeug)
Added a noise node (paints randomly pixels in black or white).
Modified blur so direction can be selected (horizontal, verticla, or both).
Updated code to use string formats instead of conversion + concatenation.
Added a Running Bond variant, HerringBone, Basket Weave and Spanish bond patterns to the bricks generator.
Shader was refactored to make it easy to add new patterns made of axis-aligned bricks.
- Added a combine node that assembles channels into colors
- Added an emboss node
- Added an export node that generates additional file when exporting the material
- Refactored convolution related code
* Added a "constant wave" in the pattern node
* Updated graphEdit to detect and forbid loops
* Modified code that renders to texture to update a texture instead of returning one (so we avoid updating everything and rely on everything being updated automatically wrt textures)
* base library is loaded from filesystem (instead of package) if available
* updated transform node (scale split into scale_x and scale_y, and added a repeat parameter)
* added blend modes (burn, dodge, lighten and darken)
* added a (very bad) blur node, based on generic convolution code
* rewrote normal_map node using convolution code
Updated base node class to support several outputs.
Now bricks support 2 outputs : greyscale depth map, and (random) brick color.
Now Voronoi supports 3 outputs : center distance, edge distance and cell color.
Updated bricks example to use brick color output.
Refactored rendering of textures for save and exporting material now saves all textures.
Added an option to start a clear the project, and proper "save" and "save as..." options.
Added support for disconnects.
now load/save dialog use the non-editor classes (thus usable when running the project).
Refactored graphedit and node code (mainly load/save and adding and removing nodes).
Now the material node is aimed at Godot's SpatialMaterial. Textures are generated and passed to the SpatialMaterial (and not generated as shaders anymore).
Rendering textures requires a Timer (to wait for the viewport to be rendered). There has to be a better solution...
Added a couple more examples.
Added blend modes (Dissolve, Multiply, Screen, Overlay, Hard Light, Soft Light).
Fixed color popup position in the GradientEditor.
Fixed initial panoram shown in preview.
Now gradient editor can remove points.
Improved preview:
- added panorama to 3d preview (with panoramas from the godot material demo)
- texture preview can be maximized
- shader updates are delayed by .25 seconds to avouid UI freeze
- fixed GraphNode initialization upon loading
- started obsoleting get_source_rgb and get_source_f functions
- updated colorize node to use gradient
- image node can now be loaded/saved
- removed iqnoise node
- rewrote perlin shader to support a seed parameter (seed is calculated from the node's position, so just move it to reseed)
- Added voronoi noise node
- updated code to use % formats instead of concatenating strings (should solve type problems in shaders)
- reworked the context menu (now has submenus)
- fixes in the gradient editor
Added Image node that can be used to import textures
Renamed all get_shader_code methods to _get_shader code so a caching system can be integrated in node_base (and we can get rid of get_source_rgb and get_source_f functions)