On GL ES 1.00, `for` loop bounds must be compile-time constants, not uniforms
GL ES 1.00 requires for loops to have constant bounds known at compile time: for(int i=0;i<8;i++) with a literal 8 compiles, but using a uniform as the bound does not. Non-constant loop bounds only work on ES 3.00+ or desktop GL. Related ES1 restrictions: no recursion, no function pointers, no while with a dynamic exit condition, and array indices often must be constant. Portable shaders therefore unroll or cap iteration counts with literals.
Examples
for(int i=0;i<8;i++){ ... } // ok on ES1 (literal bound)
for(int i=0;i<u_count;i++){ ... } // fails on ES1 (uniform bound)
Assessment
A raymarch loop for(int i=0;i<u_steps;i++) compiles on desktop but fails on a Raspberry Pi. Explain why and rewrite it to be ES1-portable.