Materials Combinator: Texture Atlas & Draw Call Optimizer
Veridian Systems
$0.0
(no ratings)
Jump AssetStore
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.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 OptimizationWhile 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 & CapabilitiesThe Combinator is designed to handle varying levels of project complexity through automated analysis and flexible output modes.Dynamic Shader AnalysisBecause 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 ModesThe 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 ManagementThe 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 NetBecause 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 & SupportThe 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.Requirements & CompatibilityMinimum Unity Version: Unity 6 or newer.Render Pipelines: Fully compatible with the Universal Render Pipeline (URP), High Definition Render Pipeline (HDRP), and the Built-in Render Pipeline. (Note: The procedural test materials generated by the Demo Factory default to URP/Built-in).Native Dependencies: Relies entirely on standard Unity packages (Unity.Burst, Unity.Collections, Unity.Mathematics) which are included natively in modern engine versions. No external setup or third-party libraries are required.Asset Architecture & FootprintStrict Assembly Organization: The codebase is partitioned into three dedicated Assembly Definitions: Demo, Editor, and Runtime. The Editor UI relies on the Runtime core in a one-way dependence, guaranteeing that Editor scripts are safely stripped from your final build.Omittable Runtime Assembly: While the core packing engine is housed in the Veridian.Perspective.Combinator "Runtime" assembly, it is a world-building utility. It can be safely omitted and will be automatically stripped from your compiled game builds if you do not actively call the API during gameplay.Safe Demo Deletion: The Demo Sandbox operates in its own isolated assembly. It is highly recommended to delete the entire Demo folder once you understand the tool; doing so has zero consequences for the core asset.Core Systems & ProcessingBurst-Compiled Math & Color Space: Fully utilizes the C# Job System to run multithreaded pixel rotation and linear-space re-normalization jobs for Normal maps. This ensures that 3D directional vectors are preserved perfectly and tangent math doesn't break during packing.Texture Import Hijacking: To bypass Unity's CPU read-locks, the engine safely forces source textures to be Read/Write accessible and uncompressed in the background during generation. It meticulously tracks and automatically reverts the import settings to their original, optimized state when finished.MaxRects Packing Heuristics: Employs advanced spatial packing algorithms (Best Short Side Fit, Best Area Fit) with texture rotation capabilities to minimize wasted space within the atlas boundaries.Generated OutputsIsolated Output Folders: Generates clean, timestamped directories containing your optimized meshes, materials, and PNG/EXR texture files, ensuring your original project assets are never overwritten or altered.Missing Map Fallbacks: If you combine multiple assets and one is missing a specific texture channel (e.g., Rock A has a Normal map, but Rock B does not), the engine automatically generates and injects a minimal 4x4 fallback texture (such as flat neutral blue for Normals) to prevent the atlas from breaking.Sub-Mesh Merging (Optional): Features a destructive, optional toggle to physically merge mesh topology for sub-meshes that end up sharing the new generated material atlas, stripping out individual material slots for maximum draw-call reduction.Runtime API & FeaturesHeadless Execution: The core math engine (CombinatorCore) is fully decoupled from the UI. This allows developers to trigger texture atlasing dynamically from their own automated build pipelines or Editor scripts.GPU-Accelerated Resizing: Exposes the internal TextureProcessor API, allowing you to bypass the CPU and use RenderTexture blitting to instantly resize textures via the GPU in your own custom tools.A Quick Note on Licensing & OwnershipBecause the Materials Combinator is a tool that packs existing assets together, it is important to keep standard intellectual property guidelines in mind:Packing Does Not Grant Ownership: Merging third-party Asset Store textures into a unified atlas does not alter their original copyright. If you combine textures purchased or downloaded from the Asset Store, the resulting merged atlas is a derivative work. Standard marketplace licenses typically do not permit you to resell or redistribute these combined files as standalone assets.Limitation of Liability: This tool is strictly a material and UV pipeline utility. How you choose to use it, and the source assets you choose to input into it, are entirely your responsibility. By using this software, you agree that the developer is not liable for any licensing violations, copyright issues, or EULA breaches resulting from the assets you choose to modify, merge, or distribute.

