MAT001
Pink materials after switching to URP: the shader belongs to the other pipeline
Pink (magenta) means “this material has no usable shader for the active render pipeline”. The most common cause after a pipeline switch: the material still points at a Built-in pipeline shader (Standard, Standard (Specular setup), the legacy Mobile/Diffuse family) while the project now runs URP or HDRP. The reverse happens too — a URP Universal Render Pipeline/Lit material in a project that’s back on Built-in.
What the scan looks at
Every material asset, checked against the active pipeline resolved from GraphicsSettings.currentRenderPipeline:
- Project on an SRP + material on a Built-in lit shader → reported.
- Project on Built-in + material on an SRP shader → reported.
Why it costs you
Beyond the obvious visual break, these materials are not batched by the SRP Batcher, so even where they happen to render acceptably they cost draw calls the rest of your materials don’t. In a half-migrated project that’s a frame-time hole nobody attributes correctly, because the visible symptom (pink) is on different objects than the performance symptom.
How to fix it by hand
Unity ships an upgrader: Window ▸ Rendering ▸ Render Pipeline Converter (older versions: Edit ▸ Rendering ▸ Materials ▸ Convert…). It handles the standard shader families well. What it does not reliably carry across:
- custom shader properties that have no URP/HDRP equivalent,
- detail maps, secondary UV setups, and emission configured in non-standard ways,
- anything driven by a custom shader with the same name as a built-in one.
So the workflow is: commit first, convert, then walk the scene and check the materials that mattered. For hand conversion, switch the shader in the Inspector to the matching URP/HDRP shader and reassign textures and parameters — Unity keeps property values only where names line up.
What PerfLint does about it
Each affected material is reported with the shader it currently uses. On URP projects, Pro exposes an Upgrade to URP action per finding that runs the official upgrader for that material, behind a confirmation that says plainly what it’s about to change and that custom properties may not transfer 1:1. The action is deliberately absent on HDRP (its upgrade path is different and higher risk) and when the URP package isn’t installed.
The other reasons for pink
Same symptom, different rule:
- The material’s shader reference is missing entirely — MAT003.
- The shader exists but fails to compile on this Unity version — SHDR004.
That’s the full set worth checking after an upgrade. We walked all three on Unity’s Viking Village sample when moving it to URP on Unity 6; that write-up is here.
Check your own project. The scan is free, runs entirely on your machine, and reports this rule with the exact assets that trip it — nothing is uploaded.
Last reviewed · All rules