Ok, well, but that's nothing new.
- Users can’t do shader math in world space: User shaders will still be limited by single-precision floating point, so world space calculations will still be subject to low-precision artefacts,
- This only applies to precision issues from object positions. In other words, it won't fix your earth-sized sphere, for model vertex positions, you still need to work around single-precision floating point limitations.
This makes it practically a non-solution (or one that stops half way), as the world space positions (the huge transforms) are the real problem, and most if not all fast algorithms in the sector of large worlds depend either on dynamic content creation, on position calculations on the GPU, or on both. For this, the position attributes would have to be split as well, with double vertex buffer sizes, arithmetic and trigonometry routines for the representation, higher traffic, higher load on the CPU when splitting the numbers, etc. In short, hardly doable in a real time environment with large and dynamic data, and on old hardware.
I am not saying that there is no solution. I am thinking this over since a year, and books were written about it (for instance Cozzy/Ring 3D Engine Design for Virtual Globes). There are solutions, but they either require double precision on the GPU (there is no way around it, but Apple is a false belief anyway 🧑🍳 , though there must be way for Apple programs to use double precision on the GPU or accelerator), or the implementation of double precision math routines that work with split floats.
I have tinkered with such an implementation of some of the dsfun90 functionality in GLSL (link went broken), but it only supported addition and subtraction. It'll need at least multiplication/division for linear flat worlds, and that's too complicated for me. For spheres or ellipsoids one would have to implement trigonometry as well. I am not even sure if that has been done in dsfun90, but if someone posts a link the library or does an implementation in C#, C or C++ I could certainly do something more there, in a month or two.
But mind you, graphics cards do fp64 calculations since a decade or longer, it is just that it is artificially nerfed on consumer grade cards, to 1/16th or 1/32nd of fp32. This is for them not to be a competition to the high priced accelerators.
OpenGL and Vulcan both support double precision buffers, and GLSL can do the math as well. No idea about SPIR-V though which is the least common denominator of shading languages under Vulkan. But I think that if we drop the premise "must run everywhere and on old hardware" than we can do better with rendering large worlds. Though there are still some things to sort out :-/
See also:
https://prideout.net/emulating-double-precision
Cozzy/Ring's book
Various blog entries, e.g. from the Space Engine creators, the Cesium Engine, and others