Materials Combinator: Texture Atlas & Draw Call Optimizer


Optimize modular buildings and kitbashed props by reducing material counts. This tool generates texture atlases from selected shaders, remaps UVs, and merges submeshes to lower your draw calls.


by Veridian Systems


Price History +


The Materials Combinator is a free, multithreaded editor utility designed to procedurally pack fragmented textures into unified atlases and permanently remap your mesh UVs directly within Unity.


Building environments using modular asset packs and kitbashed props provides excellent visual variety, but it can quickly destroy your rendering performance. Every unique material assigned to a prop forces a separate draw call, creating a severe CPU bottleneck as your scene density increases. The Materials Combinator addresses this specific overhead. Rather than forcing you to export your scenes to external 3D software like Blender or Maya, this tool automates the atlasing process inside the Unity Editor. It packs your disparate textures into a single shared atlas and rewrites the geometric UV data of your meshes so they can share a single material, drastically lowering your active draw calls.


A Note on Strategic Optimization

While combining materials is a highly effective way to reduce draw calls, it requires careful planning. This is a strategic optimization utility, not a magic "fix-all" button. Carelessly applying this to every object in your project will result in massive, redundant texture atlases that unnecessarily bloat your GPU's VRAM. The tool works best when used purposefully to combine groups of props that are frequently placed together and share similar shader profiles.


Core Workflows & Capabilities

The Combinator is designed to handle varying levels of project complexity through automated analysis and flexible output modes.


Dynamic Shader Analysis

Because different shaders use different property names, the engine dynamically scans the shaders of your inputted prefabs. It provides a clean UI where you can explicitly select which texture maps to pack (Base Color, Normal, Masks, etc.). If you are combining assets and one prop is missing a specific map, the engine will automatically generate and inject a minimal fallback texture to ensure the atlas remains mathematically sound and your shaders do not break.


Material Output Modes

The tool provides two distinct output methods depending on your rendering pipeline.

  • Auto-Generate: The standard mode. It packs the atlases, creates a master material, averages out any conflicting color tints or float values, and applies it to your newly optimized prefabs.
  • Output Raw Atlases Only: For developers using highly complex custom shaders. This mode skips material creation entirely, delivering only the raw packed textures and remapped meshes so you can manually route the maps into your custom shader precisely how you want.

Bounds & Scaling Management

The packer operates within strict maximum constraints that you define to manage memory footprint. To prevent packing failures when processing massive inputs, you can enable Auto-Downscale Large Inputs, which temporarily shrinks oversized textures before packing so they fit within your defined boundaries. Additionally, you can apply a Final Atlas Downscale Factor to reduce the resolution of the finished atlas, saving crucial VRAM when targeting lower-end hardware.


The Sandbox Safety Net

Because texture packing and UV rewriting permanently alter assets, testing these operations on production files carries some risk. To give you a safe place to experiment, the asset includes a Demo Control Panel. This utility generates procedural test models and textures from raw code, letting you play with packing boundaries and padding rules without touching your actual project data.

The interface also features a dedicated undo button. If you run a generation cycle and realize your padding was too low, simply click it to instantly delete the output folder and keep your project directory clean.


Technical Realities & LimitationsBefore adding this tool to your pipeline, it helps to know exactly what it can and can't do. The Materials Combinator is a material and UV optimizer, not a spatial scene layout tool.

  • Does Not Fuse Scene Geometry: Unlike the Mesh Constructor, this tool won't physically combine separate GameObjects in your scene into a single mesh. It strictly optimizes the materials on individual prefabs so they can share a single texture sheet.
  • Destroys Skinned Meshes: This utility is built for static props. If you run a skinned mesh through the tool, it bakes its current pose into a static mesh, permanently stripping out all armatures, rigging, and animations. Attempting to combine completely different animated characters will corrupt them.
  • Tiling Textures: Atlasing fundamentally breaks textures that rely on UV coordinates repeating outside the standard 0-to-1 range. If a material (like a tile floor) relies on an independent repeating scale, packing it into an atlas will constrain it to its quadrant and break the seamless repetition.

Ecosystem Solutions & Support

The Materials Combinator is part of a larger set of world-building tools designed to target specific rendering bottlenecks. To get the most out of your optimizations, consider pairing it with:

  • Mesh Constructor: The Combinator solves the problem of material fragmentation. Once your prefabs share a single atlas, you can feed them directly into the Mesh Constructor to physically weld their geometry together, eliminating the remaining individual GameObject overhead.
  • BurstLOD: Quickly generate optimized runtime or Editor-based LODs for your custom models before packing them.
  • Terrain Slicer (FREE): Instantly divide massive, monolithic landscapes into streamable chunks to manage your open-world memory footprint.

As a solo developer, making and maintaining free utilities takes a lot of time. If the Materials Combinator speeds up your workflow or helps fix your draw call bottlenecks, please consider leaving a rating or review on the Asset Store. Reviews are incredibly helpful for getting the tool in front of other developers and directly support my ability to keep updating it.