Weird numerical issue with Android shader

float radialDistance = length(float2(input.PositionWorld.x, input.PositionWorld.z)/2500);
clip(radialDistance > 1 ? -1 : 1);

This is actually an efficient solution to the problem without changing much in code

not sure about efficiency, but I guess, if you omit the conditional in the clip it may run faster, as willmotil pointed out:

clip(radialDistance *-1.0 + 1)

especially on phones, every bit of optimisation is helpful (pretty sure clipping does not use a full conditional but just checks the sign bit … I wonder if the compilers are doing such optimizations automatically …

Yup, or even clip(1 - radialDistance). Same thing really!

Plus some of this stuff can be moved to the vertex shader and sent through for interpolation.