Material Layers 1.0 Is Out! Node Graphs, New Material Types, and Advanced Workflows
2026-09-18
Material Layers 1.0 has officially arrived, bringing a massive evolution to how you build and manage complex shaders. Moving away from the old array-based layer list, version 1.0 introduces a flexible node graph interface, two brand-new material types, native LOD support, and powerful structural and workflow improvements.
Everything covered here applies to the new paid version of Material Layers. For those looking for the legacy approach, the older version remains completely free, feature-frozen, and fully usable.
What’s New in Version 1.0
The centerpiece of this update is the complete replacement of the old list-based system with a fully visual node graph interface. Alongside the new layout, 1.0 introduces critical architectural upgrades:
-
Full Node Graph: Drag, drop, and wire your materials visually with a dedicated Output node.
-
Two New Material Types: Expand your toolkit with Overlay and Data materials.
-
Native LOD Support: Compile out disabled layers automatically for better performance across distance levels.
-
Improved Workflow: Generate optimized mega-shaders effortlessly through the LayerStack.
Walkthrough: Building a Terrain Material
To see how the system functions in practice, let's look at the terrain example project that ships free with 1.0. This scene utilizes three core elements: a rock Surface material, a ground Surface material, and a moss Overlay material.
-
Base Layer Blending: First, blend the rock and ground surfaces using a
MaskMaterial. The mask utilizes height blending driven by vertex colors. Simply drag the materials in from your filesystem, wire them up to the graph, and hit Generate on the LayerStack. You can then fine-tune the mask parameters to achieve the exact transition you want. -
Adding Overlays: Next, add moss on top. The moss material uses the same height-blend-plus-vertex-color logic. Wire it into the chain, re-generate the stack, and adjust the parameters to ensure the moss sits naturally against the underlying rock and ground.
The Core Workflow: From Shader to Stack
Material Layers uses a clean, top-to-bottom pipeline designed for reusability:
- Write: Write your
LayerMaterialsingdshaderusing a few setup macros and variables to plug them into the chain.
- Graph: Drag and drop your
LayerMaterialsfrom the filesystem into theLayerGraph. Set your parameters, connect the nodes (ending with the Output node), and save.
- Stack: In the
LayerStack, load yourLayerGraphand click generate to build the final layered material.
Unique Parameters and Variations
Parameters are entirely unique per LayerStack. This means a single LayerGraph can drive any number of LayerStacks, each featuring completely different parameter values and textures. Whether you are creating quick color variations or completely overhauling a material's look, the underlying graph stays the same.
Furthermore, you can disable individual layers directly within the LayerStack. Because active status is unique per stack, you can easily generate different LOD configurations from a single graph without rebuilding your assets.
Two New Material Types
Version 1.0 introduces two specialized material types designed to streamline advanced texturing:
1. Overlay
The Overlay combines Surface and Mask logic into a single cohesive unit (used for the moss effect mentioned earlier). Instead of relying on a separate mask material to handle blending, the blending logic is defined directly inside the Overlay material. Overlays are built to sit on top of other layers and cannot be used as a Base layer.
2. Data
The Data material is built for passing arbitrary information up the chain—supporting up to 16 vec4s and 16 float values. Any layer positioned above a Data material can instantly access those values.
The Practical Benefit: Sampler optimization. If multiple layers require the same texture, you no longer need to sample it separately in every single layer. Instead, you sample it once inside a Data material near the bottom of the chain, and every layer above it reads from that cached data, drastically reducing redundant texture fetches.
Performance and LODs
By default, Material Layers does not inherently increase or decrease performance; the final cost depends entirely on the complexity of your layer shaders, which merge into a single mega-shader inside the LayerStack.
However, the workflow naturally encourages smart texture economy (such as sharing noise maps and utilizing gradient coloring instead of heavy albedo textures). Combined with native LOD handling—where disabled layers are compiled out entirely rather than just hidden—your final builds run cleaner with less generated code.
Case Study: The Optimized Door Material
The available door asset demonstrates how far you can push these workflows. Built with extreme optimization in mind:
-
The wood relies on a tiled texture.
-
Ground dirt uses the object's position attribute.
-
AO dirt utilizes a baked ambient occlusion map.
-
Edge wear is driven by a curvature map.
-
Zero Albedo Textures: The entire asset is colored using low-resolution gradient maps.
-
Data Optimization: Data materials sample noise and normal map textures once and pass them up the chain to drive weathering effects via height blending.
You can completely alter the door's aesthetic simply by adjusting parameters—exchanging textures and values freely while sharing the exact same generated mega-shader underneath.
Get Started Today
Get [Material Layers] and start creating your first layered material!
-
Documentation & Guides: Check out the official documentation for deep-dive setup instructions.
-
Additional Assets: The optimized door material is available as a separate asset or as a bundle alongside the plugin.
-
Free Legacy Version: If you want to try out the free legacy array-based version (Surface and Mask materials only), you can grab it on GitHub.
-
Community: Join the Discord server to share feedback or report bugs, and support future tutorials and asset development on Patreon.