Overview
A powerful editor tool for converting materials between Unity's three render pipelines, now bundled as Texture Studio & Material Converter with built-in texture generation helpers:
Built-in Render Pipeline
Universal Render Pipeline (URP)
High Definition Render Pipeline (HDRP)
Supports bidirectional conversion between any combination of these pipelines, intelligently mapping compatible properties and gracefully skipping incompatible ones.
Features
✅ Supported Conversions
All bidirectional conversions:
Built-in ↔ URP
Built-in ↔ HDRP
URP ↔ HDRP
✅ Supported Shaders
Built-in:
Standard
Standard (Specular setup)
Unlit/Texture
Unlit/Color
Unlit/Transparent
URP:
Universal Render Pipeline/Lit
Universal Render Pipeline/Simple Lit
Universal Render Pipeline/Unlit
Universal Render Pipeline/Baked Lit
Universal Render Pipeline/Terrain/Lit
HDRP:
HDRP/Lit
HDRP/LitTessellation
HDRP/Unlit
HDRP/TerrainLit
✅ Property Mapping
The tool automatically maps compatible properties:
Textures:
Base Color / Albedo / MainTex
Normal Maps
Emission Maps
Metallic/Smoothness Maps
Occlusion Maps
Detail Maps
Colors:
Base Color / Tint
Emission Color
Properties:
Metallic
Smoothness / Glossiness
Normal Scale / Bump Scale
Occlusion Strength
Alpha Cutoff
Render Settings:
Surface Type (Opaque/Transparent)
Render Queue (optional preservation)
✅ Smart Handling
Skips incompatible properties - If target shader doesn't have equivalent, property is safely skipped
Preserves texture scale/offset - Tiling and offset values maintained
Optional backup creation - Creates .backup.mat files before conversion
Batch processing - Convert hundreds of materials at once
Detailed logging - Optional verbose output for debugging
Texture generation helpers - Generate missing/optional maps from base textures (normal, height, occlusion, metallic/mask, emission, coat mask, bent normal, detail) with pipeline-aware packing and safe assignment
Inspector utilities - Per-material generator and Hue Adjust with live preview/apply (feather slider only shown when Mask Only is on)
Installation
Keep the editor scripts under
Assets/Arawn/TextureStudio/Editor/Unity will automatically compile the editor scripts
Access via menu: Tools → Arawn → Texture Studio & Material Converter
(Optional) Configure custom shader property aliases in Project Settings → Texture Studio to auto-assign generated textures for non-standard shaders.
Usage
Basic Workflow
Open the tool:
Tools → Arawn → Texture Studio & Material ConverterSelect Source Pipeline: Choose current render pipeline (Built-in, URP, or HDRP)
Select Target Pipeline: Choose desired render pipeline
Choose Conversion Mode:
Selected Materials - Convert currently selected materials in Project window
Materials in Folder - Convert all materials in a specific folder (recursive)
All Project Materials - Convert every material in the project (⚠️ use cautiously)
Configure Options (optional):
Enable backup creation
Preserve render queue
Enable detailed logging
Click "Convert Shaders"
Review results in console
Example: Built-in to URP
Example: Folder Conversion
Property Mapping Details
Texture Generation (Material Inspector)
Custom Shader Mappings (Project Settings)
Open Project Settings → Texture Studio to define substring matches for your custom shaders and list the texture property names they use.
Enter comma-separated names for each slot: Base, Normal, Height/Parallax, Metallic/Mask, Occlusion, Emission, Bent Normal (HDRP), Detail (HDRP), Coat Mask (HDRP).
Use the provided presets (URP Lit, HDRP Lit) as a starting point, then adjust to your custom property names.
Coat Mask: saves a separate coat texture and also updates Mask B when present.
Bent Normal: bends normals toward occlusion; uses base gradients plus AO.
Detail: DoG-style high-pass to keep only meaningful micro detail.
Emission: chroma + luminance detection; Mask Only supports feather (slider shown only when Mask Only is on).
Hue Adjust: live preview, Apply writes a new base texture next to the source; auto-assigns to all base map slots.
Built-in → URP
_MainTex
_BaseMap
Base color texture
_Color
_BaseColor
Tint color
_BumpMap
_BumpMap
Normal map (same)
_MetallicGlossMap
_MetallicGlossMap
Same encoding
_EmissionMap
_EmissionMap
Emission texture
_Glossiness
_Smoothness
Inverted in some cases
_Mode
_Surface
Surface type
Built-in → HDRP
_MainTex
_BaseColorMap
Base color texture
_Color
_BaseColor
Tint color
_BumpMap
_NormalMap
Different name
_MetallicGlossMap
_MaskMap
Different encoding!
_EmissionMap
_EmissiveColorMap
Emission texture
_Glossiness
_Smoothness
Property name
URP ↔ HDRP
Similar mapping as above, with appropriate conversions for:
Base maps
Normal maps
Mask maps (R=Metallic, G=AO, B=Detail, A=Smoothness)
Emission maps
Advanced Options
Create Backup
When enabled, creates .backup.mat copies of materials before conversion. Useful for:
Testing conversions safely
Reverting if needed
Keeping original configurations
Preserve Render Queue
Maintains custom render queue values after shader conversion. Important for:
Custom render order
Transparency sorting
Special rendering effects
Log Conversion Details
Enables verbose console logging showing:
Each material converted
Properties transferred
Skipped properties
Warnings and errors
Limitations & Known Issues
Property Encoding Differences
HDRP Mask Map:
HDRP uses
_MaskMapwith R=Metallic, G=AO, B=Detail, A=SmoothnessBuilt-in/URP use separate maps
Automatic conversion is not perfect - may need manual adjustment
Smoothness/Glossiness:
Different value ranges in some cases
May need manual tweaking after conversion
Unsupported Properties
Properties without equivalents are automatically skipped:
HDRP-specific: Anisotropy, Coat, Iridescence, Subsurface Scattering
URP-specific: Some mobile optimizations
Built-in-specific: Legacy parallax
Shader Variants
The tool converts to basic shader variants. If you need:
Tessellation
Special blending modes
Advanced features
You may need to manually select correct shader variant after conversion.
Troubleshooting
"No equivalent shader found"
Cause: Target render pipeline not installed
Solution: Install URP/HDRP package via Package Manager
"Textures look wrong after conversion"
Cause: Different texture encoding (especially HDRP mask maps)
Solution: Manually reassign textures or adjust in material inspector
"Materials are pink after conversion"
Cause: Shader not found or compile error
Solution:
Ensure target pipeline package installed
Check for shader compilation errors
Reimport shaders if needed
"Properties not transferred correctly"
Cause: Property name mismatch or incompatible types
Solution:
Check console for warnings
Manually adjust properties
Enable "Log Conversion Details" to see what was skipped
Best Practices
Before Converting
✅ Create a backup - Enable backup option or use version control
✅ Test on few materials first - Don't convert entire project immediately
✅ Verify target pipeline installed - Install URP/HDRP packages first
✅ Decide optional HDRP maps - Height/Occlusion/Emission/Bent/Coat/Detail are utilities; enable only if your shader uses them
✅ Check shader variants - Know which shaders you're using
During Conversion
✅ Enable logging - Monitor what's happening
✅ Convert in batches - Easier to verify results
✅ Preserve render queue - Unless you want defaults
After Converting
✅ Verify visuals - Check materials in Scene view
✅ Check console - Review warnings
✅ Adjust as needed - Some properties may need manual tweaking; generate optional maps only where useful
✅ Test in play mode - Ensure runtime behavior correct
Script Extension
Adding Custom Shader Mappings
Edit GetTargetShaderName() method to add custom shader conversions:
Adding Custom Property Mappings
Add to PropertyMaps class:
Technical Details
How It Works
Shader Mapping: Identifies equivalent shader in target pipeline
Property Extraction: Reads all properties from source material
Property Mapping: Maps source properties to target equivalents
Shader Assignment: Assigns new shader to material
Property Transfer: Sets mapped properties on new shader
Cleanup: Preserves render queue, marks dirty, saves
Property Type Support
✅ Colors (Color)
✅ Vectors (Vector4)
✅ Floats (Float, Range)
✅ Textures (Texture2D)
✅ Texture Scale/Offset
Performance
Processes ~100 materials per second (typical)
Progress bar shows conversion progress
Asynchronous not needed for typical projects
Support
For issues or feature requests:
Check console for detailed error messages
Verify target pipeline installed correctly
Test with backup enabled first
Review property mapping tables above
E-Mail: mail@arawn.digital
Discord: https://discord.gg/MPhMKtSMUZ
Last updated