Strange dots appearing in ProceduralTexture

Welcome aboard!

There’s a discontinuity at x=0 for atan:

image

When doing texture(base, vec2(lon / ${TAU}, lat / ${TAU/2} + .5)), the GPU uses the (u,v) values from this call + the (u,v) values for the neighboring pixels to calculate derivatives to choose the right mipmap. At the discontinuity point, this calculation will be wrong and a wrong mipmap will be chosen.

The easiest fix is to disable mip mapping (3rd parameter of Texture constructor):

Or you can try to calculate the derivatives yourself and use textureGrad instead of texture.