PBR-enabled textures from the cloud

Physically based shading from the browser – BrainDistrict makes it possible! The software developer BrainDistrict GmbH from Cologne offers a software called Material-Z. A physically-based material editor that can be used in a web browser, but is also available as a download installer so that you can work on your computer without an internet connection. The material editor is based on Disney’s Principled Shader. The materials created can be used across platforms via export functions. One thing can be said with certainty: this newcomer has it all!

Archive notice: This article was originally published on November 20, 2018. Links and embedded videos are preserved as part of the historical record.
The market for applications for the professional creation of materials and textures is currently dominated by products such as Substance Designer from the French software developer Allegorithmic or the Quixel Suite from the Swedish company Quixel AB. Various renderers also offer native PBR material editors. These solutions are now being joined by a software developer from Cologne called BrainDistrict GmbH, which offers a procedural PBR material editor in a web browser including its own cloud.

Small but mighty – Material-Z

Material-Z is first and foremost a very young software that is still in the development phase, but is equipped with a solid set of features. The material editor is based on the concept of the Disney Principled Shader. There are two ways to use the software itself. One of them uses the web browser.
You are catapulted directly into the material editor via the material-z.com homepage. A launch window then appears, giving you access to sample materials, tutorials and the forum. On the other hand, icons at the top right of the launcher take you to the download installer, which can be downloaded. Whichever way you choose, when you close the launcher, you will see the user interface.
The structure of the material editor is simple and allows newcomers and old hands alike to get started quickly with the programme. In the centre of the user interface is a large graph in which the nodes can be placed and organised. To the left of this is a preview window for materials and textures, including a collection of so-called sources, and to the right of the screen you can set parameters and select certain modes, such as drawing textures. Below the graph there is a code window to view and edit the OpenGL code. Optionally, the code of the respective source can be set as a split screen along with a visual preview.

Der Aufbau eines Materials erfolgt visuell durch das Anordnen von Funktionen in Kacheln.
The structure of a material is visualised by arranging functions in tiles

The general structure of materials is based on a relatively simple principle. There are material nodes whose attributes are modelled or modified by other objects. But the terminology is the crucial point. Firstly, nodes: There are three different types of nodes. Firstly, the material nodes, which take care of processing the attributes at material level. Then there are utility nodes. This type of node takes care of solving a specific problem or calculating certain values, and there are material mixer nodes for connecting two or more materials. The first two node types can be created via buttons above the graph, whereas the material mixer must be added via the source window at the bottom left.
Material nodes serve as superordinate containers with an empty belly that can be filled. The belly is filled by using or combining Sources.

The concept of the source

A source is basically nothing more than a small piece of GLSL code that can be inserted into nodes in the form of a small block with a visual preview, like the filigree gears inside a watch case.
The positioning of the sources within nodes does not take place in complete freedom, as is the case with existing material editors. Instead, nodes are equipped with a series of empty tiles – nine material nodes in total. Sources can be moved from their window to an empty tile using drag-and-drop.

Der Code des bestehenden Materials basiert auf GLSL und kann somit portiert werden.
The code of the existing material is based on GLSL and can therefore be ported

By default, there are nine categories in the source window from which the small blocks can be removed. If a building block is placed within a material node and double-clicked, the respective GLSL code appears below the graph along with a visual preview. The code can be customised if programming knowledge is available and compiled directly.
A copy of the code can then be saved in your own cloud as a source or shared directly with the community. Both options have their own function keys.
The Cologne-based company has gone one step further and is building on the principle of sharing within a community that is being set up at the same time as Material-Z. Both are continuously growing together, as the saying goes: good things take time. In order to experience the principle, an account with an active subscription is required – an active membership.
Yes, the Cologne-based company is orientating itself on the rental model that is currently being adopted by many corporations and SMEs. However, it must be said that twenty euros spread over a year is not the world in the field of professional media productions.

Durch schwarz gekennzeichnete Outputs können die Ergebnisse entweder in den Material Builder oder eine Ebene unterhalb als Input angefügt werden.
Outputs marked in black allow the results to be added either to the Material Builder or one level below as input

There is also the option of making a one-off payment. MacOS users have the option of purchasing the software via the Apple App Store. According to the official homepage, a one-off payment should also be possible in the Windows App Store in the near future. After all, you get software without annoying information windows à la WinRAR, and separate cloud space is provided for exchanging and storing materials.
If you now want to fill a material node, the composition is done using sources in layers. Three horizontally arranged empty tiles form a layer. A material node has three levels by default.
The data flow is from right to left and usually takes place via terminals. Terminals describe inputs and outputs. A white terminal is the input, while a black terminal represents an output. The first tile, which is located directly next to the attribute inputs on the left, opens terminals. The sources to the right work in a flow.
The values of the available attributes, whether source or material, can be modified in the properties window on the right. Utility nodes, which are available as separate nodes next to the material nodes, have one level, and material mixer nodes – to be found with the sources – form large material trees. Once you are aware of all this, you can start modelling the attributes.

From simple to complex

Blank materials can be created relatively quickly with Material-Z. On the one hand, there are presets for metals; on the other hand, the software is based on the Disney Principled Shader concept and offers a range of predefined parameters for customisation via the properties window using an empty material node. Users can use sliders with values ranging from 0 to 1 to make settings and colour adjustments for the albedo area.

Das Verfahren Material Blending ist ebenfalls möglich.
The Material Blending process is also possible.

Each of these attributes can be modified using Sources. You can also choose between displacement and bump mapping. The selection of sources is impressive. The tested version had a total of nine categories of sources, which could be used to create complex materials.
The first three categories to be analysed were fBm, Noise and Pattern. The Noise category contains a large number of implementations of different noise patterns. The most common patterns are available, from Perlin noise to Cell and Voronoi patterns. If required, new patterns can be added via GLSL code, but the selection is well thought out for a start. The sources are also provided with abbreviations to indicate in which space (2D/3D) they work and whether they are repeatable.

Über das Textur-Export-Dialogfenster lassen sich gängige Einstellungen inklusive Format auswählen.
Common settings including format can be selected via the texture export dialogue window

Numerous pattern generators are hidden behind the category called Pattern. This is where the heart of a shading artist beats faster, as a wide range of different patterns are covered. There is the classic chequerboard pattern. Patterns are also available for wood grain, cracks, numerous stone patterns, as well as circular, different patterns for floors, walls and ceilings. There are also patterns for a range of fabrics, such as wool, and some patterns are equipped with different levels to enable simple variation.
Another category is called fBm – Fractal Brownian Motions. These are patterns that are needed to add a natural turbulence to noise generators. Material-Z has just under two handfuls of fBms available for use. Only a specific noise needs to be used as input and material effects can be created in no time at all.
There are also fBms for generating terrain formations to visualise landscapes. In conjunction with the displacement or bump slots, materials can be visually enhanced, especially when it comes to the visualisation of rough surfaces.
As befits a good material editor, Material-Z also has a category called Operator, which is filled with mathematical functions for creating complex materials. In conjunction with the sources in the Material Mixer category – the third material node type mentioned above – material nodes can be combined with each other. The ratio of the respective mixture can therefore be modelled using the operators in conjunction with utility nodes. The underlying principle is known as material layering and is used in all common applications.

Practical application

To create rich feature materials in Material-Z, you need to familiarise yourself with the structure of the sources. By default, a material node has three levels, each with three source locations. It is now known from practical experience that node networks for materials can quickly take on large dimensions. In Material-Z, a source must be dragged into the dark area directly below the last level for additional levels. Another layer is formed immediately.
It is important to understand the processing. The first empty tile directly next to the attributes of the material node has at least one terminal – usually an output. The first source forwards its results to the second tile to the right. Further results are produced there, which flow one tile further to the right. The end of the level has now been reached. The special feature is that the results of the layer are now fed into the first tile to the left of the new layer and processed further there. A process that takes place automatically, even if the last tile of a layer is empty. Instead of seeing nodes distributed over a certain area, Material-Z stores the nodes neatly in layers stacked on top of each other.

A single material node can be used to create complex materials, especially in conjunction with the Transform Sources: functions that act on the UV space and create a transformation other than simple tiling. In fact, warp and displacement effects can be applied to procedural patterns to give materials more character.
To put the symbolic icing on the cake and add further details and variation, material nodes can be linked together. There are four different mixer nodes. From standard mixers via masks, it is also possible to mix materials based on the bump or displacement height. A process that makes it relatively easy to visually emphasise fill materials with main materials based on patterns.
There are also system nodes that can be integrated, for example to colour terrain based on the orientation of the normals, similar to what we are used to from Terragen, Vue or the data channel modifiers from 3ds Max.
One point should be noted for professional material creation. A Utility Node can be created, which is listed as an independent node next to the Material Node. If you want to actively integrate this utility node into a material, there is a separate utility source for this, which makes it possible to integrate it from outside. This allows different logic modules to be set up and integrated as required.
The mixer called UV Position is also exciting. The source is described as allowing different materials to be rendered next to each other simultaneously for comparison. If the node is now used in a professional media production, a texture atlas can be quickly created that can be read by other renderers or WebGL/Three.js applications. This is where the export comes into play.

Über den Viewer lassen sich nicht nur die entstandenen Texturen anzeigen, vielmehr kann man diese auch direkt exportieren.
The viewer can not only be used to display the textures created, but also to export them directly

Exporting is also a good way of exporting previously created textures for other applications. It is often the case that programmes such as 3ds Max, Maya, Cinema 4D and others are equipped with their own renderers, which also contain a range of material nodes. However, if special patterns are required, these can be created and exported via Material-Z. Either the textures or the sources themselves can be exported, whereby source refers to the code. The textures can even be exported in Google’s WebP format.

Conclusion: On the right track

What do you need to know when it comes to Material-Z? First and foremost, it is a young project, a material editor based on OpenGL with the potential to become an ideal niche product for creating materials for WebGL applications as well as textures for PBR materials for other applications. Developers and artists get a relatively easy to understand interface, with the ability to quickly create textures using selected procedural generators. More exciting, however, is the output, viewing and modification of the associated code. This is particularly exciting for freelancers and agencies who want to decorate online product configurators with beautiful materials and need visual support when creating them
are dependent on visual support.
To save work and time, you can access and modify GLSL code fragments or material nodes within the cloud. With a little intuition and technical finesse, path tracers can also be realised using GLSL.
You don’t have to dig deep into your pocket for this. For the very low price of 20 euros per year, this makes life easier for freelancers and agencies.
An important point is that the software is still young and will – hopefully – continue to develop. It therefore remains exciting to see which features will be added and how the direction of the product will change as the community grows and contributes to the growth of the software.
If you want to take a look at the software in advance, the browser version and the download installer allow you to create and export materials, you just have to get used to the fact that there is no cloud connection and that windows pop up periodically, interrupting your workflow for ten seconds while you are asked for a subscription. All in all, the software shows potential and a taster of Material-Z is recommended. Further information is available at
http://www.braindistrict.com.