Thanks for saying the code looks clear
. I've changed it a bit, and now it renders a 30k x 20k in 46 minutes! I don't know how much faster I can get it in python. I could try switching to doing work on tiles and use more of numpy's vectorized stuff, but I'm pretty happy with it right now. Idk what other desktop renderers' UIs are like, but I've just updated my CLI too. Now instead of specifying a height and width in pixels, you specify a zoom level.
One thing I can see being a problem with it is the size of the images it creates; the 30k x 20k PNG is ~190MB. Another scaling problem my code has is that the image data is held entirely in RAM throughout the render process, meaning the largest picture I could possibly render is around 210k x 140k (my laptop has 32 GB of RAM.)