Quick answer: A custom Unity shader works on PC, magenta on Android. The shader’s #pragma target 4.5 requires GLES 3.1+ but the build is set to GLES 2.0 fallback.
Materials using a compute-buffer-reading shader render as magenta on a mid-range Android device. The device falls back to ES 2.0 and skips the shader.
Pragma Target Levels
#pragma target 2.0/2.5/3.0/3.5/4.5: each level requires specific API features. 4.5 needs GLES 3.1+ / Vulkan / Metal. Set the lowest target that has the features you actually use.
Player Settings API List
Player Settings → Android → Graphics APIs. Order matters — first available wins. Move Vulkan / GLES3 above GLES2 to prefer modern APIs.
Min API Level
If you require shader features, set minimum API to a level that guarantees the GLES version — e.g. Android 7.0 / API 24 for GLES 3.1.
Feature Use Verification
#pragma target 3.5
#pragma require integersDeclare specific features — clearer than just target; Unity refuses to compile if device lacks them.
Verifying
The shader renders correctly on the target devices listed in your support matrix. No magenta in either GLES or Vulkan mode.
“Match pragma target to your minimum API. Order Graphics APIs to prefer modern.”
Maintain a test device matrix — one low-end ES3.0 phone catches every pragma-target regression before shipping.