It does work well even on a cruddy intel chip, however you can't go very deep before it just shows pixels. BTW. Androids do indeed dream of 3D fractal flames https://electricsheep.org
Yeah there's a hard limit to how much a shader can render there due to the inherent limits of a floating-point number. When you start to see the pixels / how the more you zoom in the less detail you get, that's because the float is approaching 0. The code to get the pixel coordinates in the shader is:
float xx = (gl_FragCoord.x / u_fZoom) + u_fPan.x;
float yy = (gl_FragCoord.y / u_fZoom) + u_fPan.y;
So the bigger zoom is, the closer the float is reduced to 0 and eventually you lose information as the variable can only hold so many bytes.
All equivalent fractal shaders do this. See here how this Mandelbrot Set shader on Shadertoy (which houses much better / smarter shader programmers than I) zooms in, and you can start to see the set become pixelated, so instead of zooming in all the way they turn around and zoom back out.
I just give you full control to zoom in-or-out as much as you like. But also check out the zoom number, as you have to zoom-in a LOT to get to the pixels, I just made the scroll wheel double the zoom value every scroll tick, so you get to really big numbers really fast like Sissa ibn Dahir.
I actually don't really know why it eventually stops at the pixel-level. That is a ridiculously close zoom, but I thought it would continue forever at the same quality / detail no matter how far you zoomed-in. I'm going to ask some friendly shader gurus if they know why...
← Return to game
Comments
Log in with itch.io to leave a comment.
real good implementation!
Thank you so much!
It does work well even on a cruddy intel chip, however you can't go very deep before it just shows pixels.
BTW. Androids do indeed dream of 3D fractal flames https://electricsheep.org
Yeah there's a hard limit to how much a shader can render there due to the inherent limits of a floating-point number. When you start to see the pixels / how the more you zoom in the less detail you get, that's because the float is approaching 0. The code to get the pixel coordinates in the shader is:
float xx = (gl_FragCoord.x / u_fZoom) + u_fPan.x;
float yy = (gl_FragCoord.y / u_fZoom) + u_fPan.y;
So the bigger zoom is, the closer the float is reduced to 0 and eventually you lose information as the variable can only hold so many bytes.All equivalent fractal shaders do this. See here how this Mandelbrot Set shader on Shadertoy (which houses much better / smarter shader programmers than I) zooms in, and you can start to see the set become pixelated, so instead of zooming in all the way they turn around and zoom back out.
https://www.shadertoy.com/view/4df3Rn
I just give you full control to zoom in-or-out as much as you like. But also check out the zoom number, as you have to zoom-in a LOT to get to the pixels, I just made the scroll wheel double the zoom value every scroll tick, so you get to really big numbers really fast like Sissa ibn Dahir.
this is amazing
Thank you!
Wow, this is really fast! I can zoom in all the way down to pixel size.
Indubitably
I actually don't really know why it eventually stops at the pixel-level. That is a ridiculously close zoom, but I thought it would continue forever at the same quality / detail no matter how far you zoomed-in. I'm going to ask some friendly shader gurus if they know why...
My educated guess was correct and the shader gurus confirmed that there's no way to fix it, it's just the hard limit of float-values haha...