Skip to content

A tool for managing and collecting shader variants efficiently and quickly for Unity Game Engine

License

Notifications You must be signed in to change notification settings

revoconner/ShaderVariantCollectionTool

Repository files navigation

Shader Variant Collection Tool

A tool for managing and collecting shader variants efficiently and quickly, and also includes a better UI for the default Unity shader variant collection file editor (Inspector element)

Table of Contents

Screenshots

image
v1.1.0 update, added buttons to create the collection and config files directly from UI image image image

Installation

Via Unity Package Manager

  1. Open Unity Package Manager (Window → Package Manager)
  2. Click the + button in the top-left corner
  3. Select "Add package from git URL..."
  4. Install with https://github.com/revoconner/ShaderVariantCollectionTool.git
  5. Click Add

Requirements

  • Unity 2022.3 or higher
  • Compatible with all render pipelines (Built-in, URP, HDRP) tested with URP only
  • Tested with Unity 6.1

Quick Start Tutorial

  1. Open the tool
  2. Add a variant collection file
  3. Add a config file
  4. Follow the numbers on the button
  5. Profit?

Filters Guide

Variant Filters

VariantFilter_Shader

Filter variants based on shader inclusion/exclusion.

Configuration:

  • Mode:
    • Strip: Remove variants for listed shaders
    • OnlyReserveContains: Keep only variants for listed shaders
  • Shaders: Array of shaders to filter

Advanced Operations (via foldout menu):

  • Add shader at specific index
  • Delete shader at index
  • Swap shader positions

VariantFilter_PassStrip

Remove variants of specific pass types.

Configuration:

  • Strip Passes: Array of PassType values to remove

Common Pass Types to Strip:

  • Meta: Editor-only lightmapping
  • MotionVectors: Not needed for Quest
  • ScriptableRenderPipelineBatching: If not using SRP Batcher

Manual Keyword Combinations

When to Use

  • Keywords enabled only at runtime via script
  • Platform-specific keywords not active in editor
  • Quality setting variations
  • Feature toggles

How to Add

  1. Click Manual Keyword Combinations
  2. For each combination:
    • Click Add New Combination
    • Enter keywords separated by spaces
    • Example: FOG_LINEAR SHADOWS_SOFT
    • Example: FOVEATED_RENDERING_NON_UNIFORM_RASTER

Important Notes

  • Each line is processed independently
  • Keywords must exist in shader to be valid
  • Invalid combinations are silently skipped
  • Check console for processing results

Variant File Ehnanced UI and Browser

Features

  • Shader List: All shaders in collection
  • Filter: Type to filter shader names
  • Add Shader: Object field + Add button
  • Clear: Remove all variants (with confirmation)

Variant Inspector

For selected shader:

  • Shows variants grouped by PassType
  • Displays keyword combinations
  • Add button per pass type
  • Remove button per variant
  • Keyword filtering with exact match option

Adding Variants Manually

  1. Select shader in list
  2. Click + button
  3. In popup window:
    • Select PassType
    • Click keywords from available list
    • Click selected keywords to remove
    • Click "Add Variant"

Best Practices

1. Collection Strategy

  • Start with MaterialCollection_SceneDependency for scene materials
  • Add MaterialCollection_TotalMaterial for comprehensive coverage
  • Use MaterialCollection_AssignMaterial for specific additions

2. Filtering Strategy

  • Strip editor-only passes (Meta, MotionVectors)
  • Remove unused shader variants with VariantFilter_Shader
  • Create custom filters for project-specific needs

3. Organization

  • Create separate variant collections for:
    • Platform-specific variants (Quest, Mobile, Desktop)
    • Quality levels (Low, Medium, High)
    • Feature sets (VR, AR, Standard)

4. Validation

  • Use Material Source Check to verify collection sources
  • Use Keyword Source Check to find keyword usage
  • Review variant count before writing to file

Recommended Filters

  1. Strip desktop-only passes:

    • MotionVectors
    • GrabPass
    • Meta (if not lightmapping)
  2. Remove heavy shaders:

    • Complex transparent shaders
    • Multi-pass shaders
    • Tessellation shaders

Troubleshooting

No Materials Collected

  • Verify collector configuration
  • Check path spellings in TotalMaterial collector
  • Ensure scenes are in Build Settings for SceneDependency
  • Check console for error messages

Missing Runtime Variants

  • Add manual keyword combinations
  • Verify keywords exist in target shaders
  • Check keyword spelling (case-sensitive)
  • Enable all quality levels before collection

Tool Window Issues

  • Window not opening: Check Unity version compatibility
  • Missing config file: Check the Assets/Settings folder, else use the button in the UI to create one.

Credits

Original tool concept from Chinese Unity community - Soco


Versions

  • Last Updated: Sepetember 07, 2025 - Version 1.0.0
  • Last Updated: Sepetember 10, 2025 - Version 1.1.0

About

A tool for managing and collecting shader variants efficiently and quickly for Unity Game Engine

Topics

Resources

License

Stars

Watchers

Forks

Languages