MatLayer 2 Release - Free PBR Material Layering Add-on

Hi everyone,

I’m proud to release MatLayer 2, the second version of a free PBR material layering add-on for Blender.

You can download this add-on for free here.

The main features of this add-on currently include:

  • A one-click mesh map baker, heavily optimized to bake mesh maps as fast as possible.
  • Fast, full PBR material layering, with lots of control, and built-in filters.
  • A toggle for true tri-planar projection (with corrected normals)!
  • One-click exporting for texture sets with automatic channel packing for commonly used softwares and formats.

… but there’s many more features inside!

The main focus of this release was initially better performance, bug fixes and stability, but I’ve implemented some massive improvements to workflow, quality and many new features!

Although MatLayer is still not a perfect software, I really hope you enjoy this add-on, I’ve put many long days and nights into this. This is my thank you to the Blender community for making such an amazing software.

Cheers, and happy blending!

Update Log:

MISC

  • Heavily optimized the layered material node format, compiling shaders is much faster now.
  • Changed how material properties are accessed internally, which reduces the chance of material format corruption to almost zero,
  • Made changes to how material properties are accessed, making editing them in the user interface much faster.
  • Added a quick HDRI setup (for rendered mode) with a few settings.
  • Added layer blending modes for blending normal maps together correctly (whiteout, and re-oriented normal map mixing).
  • Added the ability to merge materials effectively copying the layers from a premade material to the active material.
  • Added auto application of mesh maps for whenever they are used in a material effect.
  • Optimized blurring nodes so they compile faster.
  • Implemented an alpha material channel, to allow transparent materials / objects.
  • Implemented the ability to blend image alpha into the layers mask.
  • Replaced the material filter stack with group node filtering.
  • Implemented the ability to change the output channel between RGBA values for individual material channels (this allows imported channel packed textures to be added properly to layers).
  • Fixed normal and height maps being mixed incorrectly.
  • Fixed some axis of triplanar projection being incorrectly flipped.
  • Made small optimizations to triplanar projection, making it slightly faster.

MASKING

  • Added isolation toggle for layer masks.
  • Added grunge mask for simulating concave dirt effects.
  • Added edge wear mask for simulating scuffed edges.
  • Added linear gradient mask for quickly applying non-destructive linear gradient masking.
  • Added blurring for all applicable mask types.
  • Added mesh map masks that auto apply the active objects mesh maps.

MESH MAPS

  • Added a loading bar for mesh map baking.
  • Added baking for world space normals (used for efficient world space directional masking).
  • Added support for baking high to low poly details for all mesh maps (was originally just normals).
  • Changed the curvature mesh map to produce significantly more accurate mesh maps.
  • Optimized the curvature mesh map to bake slightly faster than previous versions.
  • Added the ability to preview mesh map bakes using Cycles before baking.
  • Added anti-aliasing for mesh map baking (uses super sampling).
  • Added the ability to upscale mesh maps from a lower bake resolution, this significantly increases baking speed and produces slightly better outputs in some cases.
  • Added ‘Auto Cage’ which automatically creates a baking cage, this simulates average normal baking and is now the default baking mode.
  • Adjusted the sampling for mesh map baking quality presets.
  • Overhauled baking settings for all mesh maps.
  • Implemented ‘relative to bounding box’ for distance based mesh map settings.
  • Changed the default workspace to include an asset browser with a few default materials.
  • Removed mesh map resolution parameters, the texture set resolution is used instead to define mesh map baking target pixel resolution.
  • Made base normal mesh maps (created by baking high to low poly normal map data) apply automatically.

USER INTERFACE

  • Updated the material channel property user interface to display material properties in a more compact manner.

EXPORTING

  • Added new RGBA channel packing system in the exporting tab with a many channel packing setups for commonly used softwares and formats.
  • Added the ability to export all materials applied to an object from all material slots to a single texture set.
  • Added the ability to export a texture set for each material.
  • Added the ability to change the export textures colorspace.
  • Fixed errors with targa texture file exporting.
  • Fixed errors with open exr texture file exporting.
  • Implemented the ability to save export templates.

BUG FIXES

  • Swapping active materials now refreshes the user interface.
  • Swapping the active material index now refreshing the user interface.
  • Renaming materials now updates all group nodes associated with that material.
  • Selecting new objects now properly refreshes the user interface.
  • Adding, removing, deleting material slots now properly refreshes the user interface.
  • Fixed an issue with texture size width not syncing with texture size height in the texture set settings.
14 Likes

Awesome work, man. Thanks a ton :+1:

Great! I already tried several times to get the hang of the first version, but never reached a point where it really made click (motivation wise). Maybe i should give it one more try. But how to start. Any recommendations? I very much like the concept.

I plan on releasing some tutorials, unfortunately it will take me a while to get around to making them.

For the time being,

  • There is a tutorial available for the first version which is still very similar to the new version. I recommend watching it if you haven’t already, I believe only filters for material channels and masks functionally work completely different in the new version.

  • Although not perfect, I’ve tried to put fairly detailed tool-tips for most of the operators and menus. Hover your cursor over elements in the UI to see them.

  • Also, many 3D material editing software applications share concepts, things like triplanar projection, baking mesh maps (ambient occlusion, curvature, world space normals), and more features are software agnostic. If you need to, you can try looking up tutorials for other popular material editing software and there’s likely a way to achieve an equivalent effect with MatLayer.

…and specifically for motivation I’d try to make materials for something fun, CS:GO skins can be fun to make, or perhaps models for VR Chat assets?

Thks a lot
Ryver
Logan Fairbairn I love your work!
At soon.

1 Like

A tutorial series for this add-on is in progress and should be out within the next few weeks, cheers everyone!

2 Likes

Hi, currently testing out 2.0.0 release. By this, do you mean you can export from all material slots from the principled shader including IOR and Subsurface Color in 4.0? cause I can’t find them in the drop down menu in the export texture settings window:

Also, thanks for continuing development of MatLayer.

No, that note refers to the ability to export multiple materials on the object’s material slots to a single texture set. Check out the ‘Export Mode’ in the export settings.

One of the issues you may run into when using MatLayer for more complex materials that use many layers is that it takes time to compile the shader after a change was made to the material.

Separating the material into multiple smaller materials with less layers and assigning them to different portions of the object through the use of material slots, (instead of adding more material layers that use image masks to isolate them to a portion of the object) can be useful to keep the compiling time of materials down. The ability to bake all materials in all material slots on an object allows users to use this more optimized workflow while still being able to quickly export their textures.

I will likely cover this topic in the tutorial series for the add-on.

1 Like

I’ve recently implemented some important fixes for exporting normal maps with the add-on. For some reason, they exported as blank normal maps when exported with other textures. The fix is available on main branch currently, but I’ll make a new release for this important bug fix (and some other smaller issues) soon.

2 Likes

Ok. Thanks for the clarification.

Were you able to figure out how Principled Baker bakes out all the slots in the principled Shader? Any luck with exporting IOR , subsurface color and other maps using MatLayer?

Hi Melvi,

I will look into it in the future, but there are still some other more important fixes such as fixes for exporting in Blender 4.0, a fix for normal maps exporting blank, and a bunch of other tiny fixes.

Unfortunately it might take me a long time to get to implementing those, however there still is a back-logged ticket for that.

2 Likes

Ok. Thanks.

Hiya Blendurians,

I’ve released another update to my free material editing add-on.

This release of MatLayer fixes many small bugs, improves external and internal image file management, and upgrades the supported Blender version to 4.0.

Requires Blender Version: 4.0+

Compatible with previous MatLayer Versions: No

Change Log:

  • Fixed the default white value in the material layer filter being incorrect.

  • Fixed the default exporting names for metallic / roughness used in the Unity export templates.

  • Fixed Unity and CryEngine export templates not channel packing data into alpha correctly.

  • Implemented a fix for normal map data not exporting properly when exporting multiple textures.

  • Made baked material channel textures that were packed into textures delete after exporting.

  • Changed saving of raw images to only save when they don’t already exist within the raw (external) texture folder.

  • Made exporting UVs display a completion message.

  • Made changing to the export tab update the available export templates.

  • Corrected errors in the ‘Painted Model (Diffuse)’ export template.

  • Transferred export colorspace swapping to use the new linear Rec 709 space in Blender 4.0.

  • Changed many export templates to use 32 bit color depth for color and normal maps.

  • Updated snapping modes for Blender 4.0.

  • Fixed an error that occurred when swapping normal blending modes for decal layers.

  • Fixed images created directly in material channels not saving to disk.

  • Made view layers high poly objects are included in, include themselves in the view layer before baking mesh maps.

  • Made it possible to change the base normal map.

  • Changed mesh maps to always bake into 32-bit color depth images.

  • Changed edge wear masking to mask only on geometry edges.

  • Made baking mesh maps set the viewport shading mode to material shading.

  • Tweaked edge wear default settings.

  • Added more texture set resolution options.

  • Removed the deprecated triplanar projection sub-menu.

  • Implemented texture interpolation mode swapping.

  • Fixed material nodes resetting to origin when swapping to triplanar layer projection.

  • Fixed a mesh map baking error that occurred when not using a high poly object.

  • Made mesh map images save to disk instead of pack.

  • Made the blend file save before mesh map baking.

  • Updated the active object name change handler to also handle updating external mesh map images.

  • Fixed the open mesh map baking folder button opening the wrong folder.

  • Updated the supported Blender version number.

  • Fixed unused mask group nodes from deleted materials causing conflicts when replaced.

  • Added a utility function that will remove unused internal and external images.

  • Added fake user toggles for images in the UI.

  • Added operators to automatically make cage objects for mesh map baking.

  • Fixed normal material channel isolation not working.

  • Fixed material channel isolation not working when the top layer is hidden.

Cheers!

4 Likes

Hey Logan!

First, still loving Matlayer and am thankful for you creating and improving it.

A small request (maybe small): I see it is already on your project board as ToDo, but we have recently implemented a software pipeline, and we really need a way to choose a folder for Matlayer to use that is not the default. As of now, we have to wait for Matlayer to create its images, and then move the into our pipeline folders. It sort of works, but takes manual file moving and gets messed up easily (our fault).

Can this be “upvoted”?

Thanks again,

JB.

1 Like

Hi JBreckeen,

It should be fairly easy to allow users to define a custom folder for the output of textures. I’ll see if I can bump that ticket up in priority and reply here after I’ve implemented that change.

Thanks for the feedback,

Cheers! :slight_smile:

1 Like

Thanks so much Logan!

JB.

Hi again,

I’ve implemented the ability to change where externally saved textures and exported textures are saved in the add-on preferences.

This functionality is available on the main branch right now, but not in a release version yet. You can download the main branch using the green code button on the github page and selecting download zip, then installing the zip like you would any other add-on.

I’ve only lightly tested this functionality so far, so let me know if you hit any issues.

Cheers!

1 Like

I’ve moved the folder properties to their respective tabs -

The raw texture folder property is now in the texture set tab. Raw textures are considered any image used in the add-on during the material editing process that isn’t being exported.

The export texture folder property is now in the export tab.

It made more sense these folder locations were easily available and not hidden inside the add-on preferences window.

Hey Logan!

First, thanks for making these changes.

I had just downloaded the new Master and was testing. I was just typing a response suggesting exactly what you just said (file paths per .blend) and (per type of texture). But then you had read my mind and already done it!

So, perfect! I will try this new-new version.

JRB.

File paths aren’t per blend, not is it possible to have a different file path per texture type. I was mentioning the user interface properly location change, as I had originally put the folder paths in the user preferences on the add-on under Edit → Preferences → Add-ons → MatLayer, and then quickly realized it was better to just stick those properties in the existing user interface tabs so they are more accessible. Sorry for the confusion.

Currently the export path saves to add-on preferences. Although, it makes much more sense for the export path to be per blend file so I’ll implement that change soon.

With regards to saving to a different folder per texture type it doesn’t make sense to do that in most cases. Generally you want textures exported for an object to stay together as they are a texture set, so this isn’t an option I plan on implementing unless you can suggest a scenario where saving to a different folder based on texture type would be beneficial to many users of the add-on. Otherwise, you should be able to make a custom version of the add-on that does this with limited knowledge of Python.