I generate a unit sphere that represents a sphere about the size of earth (around 6.7 million meters) after being multiplied by the scaling matrix (which contains the actual radius of the sphere so I can use the sphere for many other things).
1.0f is equal to 1 meter in my project.
I've recorded this video displaying my problem.
When I get close to the sphere, so that that I'm moving around near the surface at 1 meter a second or slower, I have these jumping issues.
There are already several things that I am doing:
- I store all positions of objects on the CPU with doubles (the camera and the sphere)
- I treat the camera's position as the origin of the world when it comes to rendering so I convert every object's world coordinates to being relative to the camera before I build their world matrix each frame (This also means my view matrix is built with the camera being at (0,0,0) also)
I do not know where my problem is and I have tried searching a lot of different places.
I'm converting all my float input data that goes into my shaders into doubles, doing the necessary transformations and calculations with doubles on the gpu just to see if that gets rid of the issue but it doesn't.
I pretty certain that my issue has something to do when I transform a vertice in my shader from Object space (Very small numbers because it is a unit sphere in object space) to World Space which goes to actual planet size of millions of meters where the precision is taken away from the smaller distances
I am stumped.