opengl-esglslshaderwebgl

Why do people use sqrt(dot(distanceVector, distanceVector)) over OpenGL's distance function?


When using ShaderToy I often see people using something like:

vec2 uv = fragCoord / iResolution;
vec2 centerPoint = vec2(0.5);

vec2 distanceVector = uv - centerPoint;
float dist = sqrt(dot(distanceVector, distanceVector));

over OpenGL's distance function:

vec2 uv = fragCoord / iResolution;
vec2 centerPoint = vec2(0.5);

float dist = distance(uv, centerPoint);

I'm just curious why this is (my guess is that it has something to do with speed or support for distance).

I loosely understand that if the arguments are the same, the square root of a dot product equals the length of the vector: the distance?


Solution

  • Doing essentially the same thing, people often choose the sqrt option for one of two reasons: 1. They don't know about/remember the distance function 2. They are trusting themselves and their own math to prove that is not a problem to cause a bug (avoiding OpenGL problems)