Quick answer: Unity shader includes resolving on Windows/macOS but failing on Linux? Case-sensitive filesystems require exact path match - normalize all include paths to lowercase.

Editor builds shaders fine on Windows. Cooked on Linux build server: file not found on a #include path.

Lowercase include paths

#include "common/lighting.hlsl"

Reserved for files actually named lowercase. Build pipelines on Linux care.

Audit per platform

Run a build on Linux locally (or in a Docker container) before pushing. Case bugs surface in build logs.

Use Forward Slashes

Backslashes work on Windows but fail Linux. Forward slashes work everywhere.

“Filesystems disagree about case. Asset pipelines must agree on one.”

Add a CI step that runs builds on Linux even if you ship for Windows-only. Linux build servers catch case-sensitivity bugs Windows hides.

Related reading