Vismut 0.6

Laying the groundwork

Vismut is the open source procedural texturing tool for everyone. Read the introduction to learn more.

Version 0.6 comes with a few important features, and marks two milestones for the project:

  1. We received our first contributions, from @theorr!
  2. We now have a CONTRIBUTING.md and a CODE_OF_CONDUCT.md.

CONTRIBUTING.md

The project is still starting up, and as the founder of the project I’m still learning a lot. With our first contributions, I learned that the common “merge request” process can be cumbersome for both contributors and maintainers. This made me think about if it could be done differently.

I found a development process called C4, which was partly created to solve this problem. C4 was not entirely compatible with my project, and I thought it was a bit too complicated, so I wrote a new process based on it: The Vismut Contribution Process (VCP).

If you’re interested you can read the entire process document. Here is a short summary:

The VCP tries to make it easy to contribute to the project. Making it easy to contribute makes it’s more fun to contrinute, less work for maintainers, and the project can develop faster. The tradeoff is that maintainers have less say in what gets merged. I don’t know how well the process will work, because I couldn’t find many projects that use a process like this. But there are some big potential benefits, so I think it’s worth trying it to see if it works.

CODE_OF_CONDUCT.md

The Vismut code of conduct is based on the Rust code of conduct, but with some changes:

  • It’s shorter: I think a shorter text is easier to understand, and people are more likely to read it.
  • It has simpler language: Simpler language is easier to understand and more accessible. Not everyone can easily understand written English.
  • It contains a list of encouraged behavior: Similarly to how it’s useful to have a list of rules to help reduce bad behavior, it’s also useful to have a list of encouraged behavior to help promote desired behavior. We don’t want to create a community that just “isn’t bad”, we want to create one that is good!

New Features

Save, Open & New: You can now save a node graph into a .json file, which can then be opened. These are of course foundational features, so I am very grateful to @theorr for implementing this!

The Grid: All nodes now live on a grid, and you can’t place a node on top of another node.

In node editors that don’t force a grid, some people spend time aligning their nodes to the grid. They maybe press a button in the user interface to align the nodes automatically, or they align them by hand. This takes time and makes it harder to get into a good flow when working.

By forcing everything to be on a grid we eliminate this unnecessary work, and make it easier and more predictable to automatically moves nodes around. The grid makes it easier to implement features like moving nodes out of the way when a node is placed somewhere, or to automatically formatting the node graph.

Other Improvements

  • Click connections and press X or delete to remove them. Thanks @theorr!
  • Redesigned nodes to get them to fit in the grid.
  • Reduced CPU usage when application is in the background.
  • Reduced latency between input and visuals.

What’s Next

Vismut still only supports shuffling channels, and now it’s time to do something about that. Vismut is missing four nodes that are foundational for procedural texturing:

  • Mix: perform math with images
  • Noise: generate images to build textures from
  • Offset: shift pixels around in an image
  • Graph: re-use node graphs

The addition of these four nodes will mark another major milestone for Vismut: The ability to generate many types of materials.

Check out the code on GitLab. Check out the release to download the latest binaries for Windows or Linux.