Quick answer: Project Settings → Platforms → Targeted RHIs: include the target. For PC, both DX11 and DX12. Recook after toggle.
A packaged Windows build runs fine on DX12 but renders pink on DX11 systems. Shaders weren’t cooked for DX11 path.
Targeted RHIs
Project Settings → Platforms → Windows → Targeted RHIs:
- SM5 (DX11): older Windows machines.
- SM6 (DX12): modern, default.
Toggle both if you ship broadly. Each RHI adds cook time and binary size.
Force Cook All Materials
In a partial cook, only referenced materials are processed. For full coverage:
- Project Settings → Packaging → List of maps to include in packaged build — add all main maps.
- Enable “Cook everything in the project content directory” for guaranteed inclusion.
Shader Compilation
Mass shader compile after RHI toggle. Editor menu Window → Project Launcher → new launch profile → cook for target platform. Wait for the swarm to finish.
Verify Cooked Output
After cook, inspect Saved/Cooked/<Platform>/Engine/Shaders. Files for ShaderCache_PC_SM5 and ShaderCache_PC_SM6. Both present = good.
Verifying
Build on a target machine with DX11. Materials render correctly. No pink. Switch to DX12 system; same materials work. Logs show DerivedDataCache hits for both RHIs.
“Cooked shader = compiled at build time. Per RHI per platform. Miss one, get pink.”
For PC shipping, DX12 is now safe to default-only. DX11 is becoming legacy; verify your minimum spec before doubling cook time.