Randomness in Material Maker


Material Maker 0.97 should be available in a few days, and its main new features are related to randomness.

I always tried to avoid exposing  random seeds in the user interface, because I don't think this makes sense at all. Instead, seeds in Material Maker were controlled (locked/unlocked) using the "dice" buttons in nodes, rerolled whenever the nodes are moved, and calculated (unless locked) from the seeds of parents in node groups (and consequently, moving a group rerolls all nodes inside that group).

All this had a few drawbacks:

  • It was not possible to move a node without affecting its seed (unless locking it, but you don't always want to lock seeds)
  • It was not possible to have several nodes with the same seed, and this could be a serious problem when you want several Splatter/Tiler nodes with identical instantiation patterns (Advanced Tiler was a solution to that problem)

In 0.97, seeds won't be modified when moving nodes anymore. Instead, you will have to left-click the small dice buttons on each node. And as a consequence, left click won't lock/unlock seeds anymore, but right click on the dice will show a context menu, where seeds can be locked, unlocked, copied and pasted.

This is how both problems mentionned above will be fixed in next release (by the way, the move-node-to-change-seed behavior could still be there, with a configuration parameter to enable it ; please don't hesitate to post a comment if you like or hate this feature).

But there is much more...

Randomness everywhere

Parameter expressions now support calls to the $rnd(min_value, max_value) function, which makes it possible to turn every non-random nodes into random nodes.

As a very simple example, we could configure a Shape node to create a polygon with a random size and a random edge count, by:

  • setting the edges parameter to floor($rnd(4.0, 8.0))
  • setting the size parameter to $rnd(0.7, 1.0)

The Shape node is now a random node that can generate different simple polygons, you just have to click the "randomness button" to generate another variation.

Variations nodes

Of course, spamming randomness buttons all over the graph could be a way of generating variations of your material, but it is a bit tedious. Instead we will use the new Variations node, that just generates different variations of its input.

To show what it is capable of, I built a very simple graph that generates random flowers. It starts with a circle that is offset and mirrored to generate a petal (the offset is randomized as shown above to generate different shapes). That shape is then processed by a kaleidoscope node that several (a random number between 4 and 8) petals to form a flower, then colorized, and the color is randomized using an HSV Adjust node.

The result can now be connected to a Variations node, that can generate variations of the flower graph. This node has several outputs that generate different variations (by affecting the seeds of all nodes of its source subgraph).


Variations in other nodes

Variations is not just a new node type, but a new feature of Material Maker's shader generation, and can be used in any shader node.
A variation option has been added to the Splatter and Tiler nodes, that generates new variations for all instances of the repeated shapes.


Variations can thus be used to either break repetition when using Tiler or Splatter nodes or generate sereval versions of the same materials. They are also very cheap in terms of GPU power, so it is possible to use them in dynamic materials.

Get Material Maker

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.