Cauldron:
Custom
Material Editor
Unreal Engine, C++, Materials
Cauldron /kôl′drən/ - born from an artist-designed material that cut down the UV’ing time and reduced the need for many (if any) textures.
History
A material system was created using masked material layers to define color and surface definition to each section of a 3-by-3 UV grid. It allowed the artist to quickly lump UV islands into their respective section to define areas of the model for leather, glossy dielectric, various metal types, etc. While the initial material setup was a great start, it did have some pain points for both the artists and for performance. Also, the material layer system broke nearly all of the material instancing and was without support from Epic in UE5 as they deprecated it.
I decided an overhaul was needed. But having over two hundred instances to reparent, it would need more than just a retooling..
Issues to solve:
Eliminate the need for artists to manually edit many, many material instance parameters
Material instancing broken by any variations in material layer functions order or reassignment
Current parent material creates an extreme amount of instructions
Reparenting instances would require a converter to translate layer parameters to new, simplified setup
What was done:
Custom tool UI created for quick instance editing, with options to open from the tool menu or via right-clicking the material instance
New parent material(s) with parameters that keep instancing intact, including reduction of static switches
By eliminating material layers and simplifying the node setup, hundreds of instructions were cut
Reparenting helper created using editor utility widget blueprint
The User Interface:
Connects with a custom material set up so the artists are not required to open or edit manually
Easy parent material switching for select contexts like main character, NPC, weapons, etc
Main color and two accent colors (opted into with red and green vertex colors) per tile
Grid UI is clickable for easy editing of each color
Textures are opt-in per tile for color and normal maps
Surface definitions per tile with custom and user created presets saved in the editor settings
Debug function to aid in visualizing grid position on the model
Material Setup
Simplifies UV’ing and reduces the need for textures
Eliminated material layers
Tiles are masked using UV coordinate math
Two accent colors separated by vert color
Surface definitions stored in two vector4’s
Texture additions are open under their own parent variation
Saves hundreds of instructions versus previous version
Fewer static switches, very few unique instances
Reparenting Utility
Multi-selection for batch process, speeding up retroactive reparenting work
Caches parameter and surface definitions from each material layer, reparents the instance and applies those parameters to the new material format
Displays current selection’s layer function names for debugging potential issues