Quick answer: Construct 3 effect shader uniforms losing precision on mobile? WebGL defaults to lowp - declare highp in the effect XML or shader source.

Time-based shader effect shows visible stepping on mobile; smooth on desktop.

Declare highp

uniform highp float time;

Explicit precision. Mobile reads as float32; smoothness preserved.

Or split into multiple uniforms

If lowp is acceptable for most, isolate the precision-sensitive ones. Per-uniform precision is fine.

Test on real device

Browser desktop fakes mobile precision via emulation; real mobile is the actual test.

“Mobile shader precision is conservative by default. Override where it matters.”

If you author shaders for HTML5, the mobile precision audit is one-time work. Save it; reuse.

Related reading