So right now I am rendering a Mandelbrot fractal on the GPU with a surface shader, but since it’s GPU-executed, I can only use floats to describe the fractal. Is there any methodology/workaround to allow me for more precise results (namely higher zoom values) without reducing the FPS to 1?
Not really, no. Shaders are optimised for 32 bit floats and most GPUs don’t have support for doubles. Even doubles have their limits and just extends the possible zoom level a bit more (in essence double the zoom level). We had already a question about that some years ago.
To get infinite zoom you would need to use an infinite precision floating point type. Maybe it’s possible to off-load certain operations to the GPU with compute shaders. Though it would get quite complicated quickly. Maybe you find a library which handles this part for you.
This is a parallel renderer I’ve made some years ago. It only runs on the CPU and performs one iteration per frame, but on every pixel. Of course this requires a bit more memory since you have to store the current complex number for every pixel as well as the current iteration count. Though I think it’s a neat approach ^^. The renderer actually uses a List of active “pixels” and removes them once they settled on a color.