Unity 6 URP 17.0.x Stylized Lit Shader Pink on Steam Deck After multi_compile Stripping - Fix
Problem: Your stylized lit materials render correctly in the Unity Editor and on desktop Windows builds, but on Steam Deck (LCD and OLED) the same meshes show pink/magenta or flat error shaders. Frame Debugger on Deck often shows missing shader variant or a fallback pass.
Who is affected now: Teams that upgraded Unity 6 projects from URP 16 to URP 17.0.x in 2026 and kept custom stylized lit Shader Graphs with multi_compile_local rim, cel, or lightmap keywords. URP 17 tightened shader stripping defaults; Vulkan on Deck has a smaller keyword budget than your Editor D3D12 session, so variants that “work everywhere else” never ship in the Linux player slice.
Fastest safe fix: Add the stylized lit shader to Always Included Shaders → allowlist required keywords in the URP Asset > Shader Stripping UI → rebuild a Linux/Deck player → confirm the bound variant in Frame Debugger on hardware.
Direct answer
Pink on Deck-only almost always means the player build stripped a keyword combination your stylized shader needs at runtime—not that the material asset is corrupt. URP 17.0.x is more aggressive about unused variant removal than 16.x, and Deck builds use Vulkan with different tier rules than Editor play mode.
Why this issue spikes in 2026
- URP 17.0.x changed stripping defaults bundled with Unity 6 2026.1+ lines.
- Autumn 2026 Deck Verified refresh retested stylized URP titles on OLED + LCD Vulkan paths.
- Teams ship stylized lighting budget fixes without revisiting shader variant tables.
- CI often screenshots Windows only—Deck pink surfaces on the last cert day.
Pair with Shader Graph pink in player build for Shader Graph + SVC workflow, Steam Deck OLED wrong graphics API if logs show API mismatch, and the stylized URP Deck lighting blog when materials render but look blown-out (not pink).
Symptoms and search phrases
- Pink stylized characters/environment only on Deck; Editor + Windows OK.
Shader warning: Shader is not supported on this GPUin Player.log (Linux).- Upgraded URP package 17.0.x last sprint; no shader changes since.
LIGHTMAP_ONor_RIMLIGHTvariants missing in build report.- Frame Debugger: pink = internal error shader / missing pass.
Root causes (check in order)
- URP 17 stripping removed
multi_compile_localvariants your cel/rim path needs. LIGHTMAP_ON/ additional lights variants never warmed for Linux player.- Always Included Shaders list omits your custom stylized lit shader.
- Quality tier on Deck points at a URP asset with stricter stripping than Editor’s active tier.
- Graphics API mismatch (OpenGL fallback) — see OLED graphics API help if API is wrong and pink.
Fastest safe fix path
Step 1 — Confirm Deck quality tier and URP asset
- Edit > Project Settings > Quality — note which tier runs on Standalone Linux / your Deck profile.
- Open that tier’s Render Pipeline Asset — this is the stripping authority for Deck builds.
- Compare to the URP asset you tuned in Editor—mismatches are a common “Editor fine, Deck pink” cause.
Step 2 — Pause aggressive stripping while reproducing
On the active URP asset:
- Shader Stripping — temporarily disable Strip Unused Variants (or set to the least aggressive mode your package exposes).
- Rebuild Linux player (or Deck depot) — verify pink clears.
- Re-enable stripping only after you allowlist keywords (Step 3).
Success check: pink gone with stripping off → root cause confirmed as variant removal.
Step 3 — Allowlist stylized keywords
For each custom stylized lit shader:
- List
#pragma multi_compile/multi_compile_locallines (rim, cel band, lightmap, fog). - In URP Shader Stripping (or Shader Variant Collection workflow), add those keyword sets to the allowlist / warm an SVC:
- Enter scenes using stylized materials on Deck quality tier.
- Toggle features that flip keywords (day/night, interior/exterior).
- Save variants into
StylizedLit_Deck.svc.
- Add the SVC to Preloaded Assets or warm at boot.
Step 4 — Always Included Shaders safety net
Edit > Project Settings > Graphics > Always Included Shaders
- Add your stylized lit shader (and any pass-specific Shader Graph sub-shaders).
- Rebuild Linux player.
Use this for launch-critical hero materials; pair with SVC for size discipline.
Step 5 — Verify on Deck hardware
- Install build on Deck LCD + OLED if possible.
- Open Frame Debugger (development build) — confirm stylized pass bound, not
Hidden/InternalErrorShader. - Capture one screenshot per quality tier for cert packet.
Verification checklist
- [ ] Stylized materials correct on Deck LCD and OLED
- [ ]
Player.loghas no missing-variant warnings for stylized shader name - [ ] Frame Debugger shows expected pass + keywords on Deck
- [ ] Windows build still correct after allowlist (no regression)
- [ ] Build log / SVC report lists warmed
LIGHTMAP_ON/ rim variants you rely on
Alternative fixes
| Branch | When | Action |
|---|---|---|
| Shader Graph only | Custom HLSL not involved | Follow Shader Graph pink SVC help end-to-end |
| APV + probes pink | Probes black/pink, not stylized lit | See APV queue pitch #13 when shipped |
| Wrong API | Log shows unexpected graphics device | Deck OLED Vulkan force fix |
| Addressables materials | Pink only on remote bundles | Rebuild bundles; include shader dependencies in group |
Prevention
- CI Linux player screenshot diff for one stylized hero material per commit on
main. - Pin URP package version in
Packages/manifest.json; document stripping diff in PR template when URP bumps. - Block URP 17.x upgrade merge until Deck smoke scene passes Frame Debugger check.
- Keep
StylizedLit_Deck.svcin repo; regenerate when keywords change.
FAQ
Why only Deck, not Android?
Different graphics API, quality tier, and stripping tables. Android may include variants Deck Linux omits.
Is pink the same as “crunchy” stylized lighting?
No—pink is missing shader. Crunchy is exposure/bloom/shadow budgets; fix with the stylized lighting blog after pink clears.
Can I ship with stripping off?
Only for debugging. Re-enable stripping with allowlists or build size and load times suffer.
Does URP 16 → 17 require shader rewrites?
Often no—variant tables need updating. Reimport shaders after URP bump and rebuild SVC.
Related links
- Unity Shader Graph Pink Material in Player Build
- Unity URP Additional Lights Missing in Build
- Steam Deck Verified 2026 Xbox Elite Glyph Fix
- Stylized lighting budgets for Steam Deck (2026 blog)
- Official: Shader variant stripping, URP asset
Bookmark this page before the next URP package bump—Deck Vulkan is where stylized keyword tables actually get tested.