optimized chunk generation and graphics rebuilding, and added basic visibility culling to skip drawing chunks behind the camera
even though all the code is still synchronous the terrain generation now keeps up with the camera even at a visible chunk radius of 16, and i get 60-90 fps with a radius of 12 even on my weak pc when not generating chunks (30-40 otherwise)
and this is what a visible chunk radius of 12 looks like: