Original Post
I am working on a planet rendering engine, that generated height values using a modified version of 3D Perlin noise (an SSE implementation of it I wrote myself to be exact). I am running into precision problems when I get down to the sub ~10 meters scale. I end up with ridges, and I am assuming this is caused by quantization due to the tiny value ranges I am dealing with at this detail level (the planet is 6000 km radius, the height values are all within a 10 km range, and the camera can get up to 1 m from the ground). I am trying to work out how I can eliminate this noise problem. Does anyone have any experience with this sort of problem? I have got a few ideas of how to fix it, but I really don't want to implement every one of them. I have already tried generating noise using two seperate noise generators then combining them at double precision, but as each one individually already has the quantization problems there is no benefit there. The input values are all floating point, as the algorithm uses SSE instructions to calculate 4 values at a time. If I switch the whole algorithm to double precision then I am going to ~double its execution time. Any ideas on how I can still use the float noise, but get rid of this precision problem? I know this question is a bit nebulous, I am kind of hoping someone here has run into this exact problem before and give me a hint at least in the right direction to go.