Turn shader complexity into actionable information.

Commands appear where you already work.
The plugin loads as an Editor module and adds commands to the Level Editor, Material Editor and Content Browser without changing cooked runtime behavior.
| Location | Commands |
|---|---|
| Level Editor toolbar | Skip Shader Compilation, Lambert View, Flush/Cancel Shader Queue, Recompile All Shaders, Shader Permutation Bloat Scanner. |
| Material Editor toolbar | MCV and Broom. |
| MCV dropdown | Overlay, analysis window, refresh, texture analysis, Nanite & Lumen Audit. |
| Content Browser | Nanite & Lumen Audit and permutation scan. |




Rank expensive material expressions.
Material Complexity Visualization uses a weighted estimate of ALU work, texture samples, dependent reads, flow control and feature penalties. It is intended as a fast prioritization tool rather than a replacement for GPU profiling.
- Analyzed nodes receive temporary cost labels.
- Connections use an MCV color gradient and normalized thickness.
- Disabling the overlay restores original comments and visibility.
- P95, Global Max and Absolute normalization modes are available.
- Clicking a hotspot row focuses the corresponding node in the Material Editor.

Find sampler pressure and packing opportunities.
The analysis reports texture, parameter name, compression, sRGB state and inferred use. It can flag separate AO, Roughness and Metallic textures, repeated samplers and channels that could be packed.
The warning threshold is 12 samplers. When compiled statistics are unavailable, the report is marked Estimated and uses a conservative fallback limit of 16 without forcing shader compilation.

Review selected materials against common constraints.
Findings are grouped by material and include clean materials explicitly. Each issue has a severity, category, description and recommended solution.
| Severity | Meaning |
|---|---|
| Info | A compatibility detail worth keeping in mind. |
| Warning | A configuration that may reduce quality or cost more than expected. |
| Error | A likely incompatibility or setting requiring a deliberate fix. |

Estimate exponential shader growth.
The scanner analyzes UMaterial assets and produces a heuristic planning estimate rather than an exact shader count.
| Term | Formula |
|---|---|
| BasePermutations | 2^min(StaticSwitchCount, 40) |
| UsageMultiplier | 2^number of active usage flags |
| EstimatedTotal | BasePermutations × UsageMultiplier |
The Grand Total is a sum of heuristic estimates. It is not memory usage or a direct compile-time prediction.

Review dead graph nodes before deleting them.
Broom dims dead or unused candidates first. Delete reanalyzes the graph, asks for confirmation and removes only the revalidated set through the normal Material Editor workflow so the action remains undoable.
Dim adds a [DEAD] prefix to the node comment. Restore removes that prefix while preserving the rest of the user's comment.
Project-level shader workflow utilities.
| Command | Purpose |
|---|---|
| Skip Shader Compilation | Temporarily pauses material shader compilation; uncompiled materials use the World Grid Material fallback. |
| Lambert View | Switches the viewport to a simple lighting view for material inspection. |
| Cancel Material Shader Compilation | Cancels outstanding material jobs for currently loaded materials, without touching global shader jobs. |
| Recompile All Shaders | Queues full recompilation for materials used by the current level, rather than every project/global shader. |





Tune analysis budgets per project.
- MCV Normalization Mode defaults to P95.
- Total Cost Budget defaults to 300.
- ALU Budget defaults to 250.
- Texture Sample Budget defaults to 64.
- Control Flow Budget defaults to 80.
- Dependent Reads Budget defaults to 64.
- Feature Penalty Budget defaults to 100.
- Emissive Boost Warning Threshold defaults to 10.
These settings change presentation and prioritization. They do not modify the material or renderer.
Interpret the signal, then validate it.
No MCV labels
Confirm the material is open and MCV is enabled. Toggle MCV and refresh the analysis.
Wires stay gray
Show Wires may be disabled or the graph may need refreshing after a normalization change.
Texture count looks high
Check repeated samples and whether AO, Roughness and Metallic can be packed.
Permutation number seems huge
The exponential warning is intentional. Review static switches and usage flags before treating it as a compile-time fact.
GPU captures, shader compiler output, target platform profiles and real production content remain the final authority for performance decisions.