In the vertex shader of BabylonJS, about the use of MVP matrix

BabylonJS using:
vec4 worldPos = finalWorld * vec4(positionUpdated, 1.0);
gl_Position = viewProjection * worldPos;

Precision lost:Due to the conversion of vertices into the world coordinate system, the problem of accuracy loss is caused.

should use:
vec4 worldPos = mv* vec4(positionUpdated, 1.0);
gl_Position = projection * worldPos;

Welcome aboard!

After you multiply the vertex position with the modelView matrix, you get the coordinates in view space, not in world space. But we need the world coordinates, because that’s what we use in the fragment shader. It would be a very big change to update all the fragment shaders to account for this, and also a breaking change because we allow the users to update the world coordinates in the vertex shader before transforming them to view/projection.

If precision is a problem for you, you can use a node material (or a shader material). See my answer here for additional comments:

Also, this blog post from @sebavan explains in more detail the problem with big coordinates: