Are you generating your voxels every frame? If you can find a way to avoid that it will be the single biggest performance improvement you get.
Also, generating them based on what the camera will see is going to take more time than just letting the GPUA “Graphics Processing Unit” is a specialized circuit designed to rapidly manipulate and alter memory in such a way so as to accelerate the building of images in a frame buffer intended for output to a display. GPUs are used in embedded systems, mobile phones, personal computers, workstations, and game consoles. sort that out. When people talk about not generating the invisible faces they mean the faces between two solid blocks.
In this area, the single most expensive thing is sending data the GPUA “Graphics Processing Unit” is a specialized circuit designed to rapidly manipulate and alter memory in such a way so as to accelerate the building of images in a frame buffer intended for output to a display. GPUs are used in embedded systems, mobile phones, personal computers, workstations, and game consoles.. You want to avoid doing that as much as possible. The GPUA “Graphics Processing Unit” is a specialized circuit designed to rapidly manipulate and alter memory in such a way so as to accelerate the building of images in a frame buffer intended for output to a display. GPUs are used in embedded systems, mobile phones, personal computers, workstations, and game consoles. can handle millions of vertexes as long as you aren’t resending the buffers ever frame.
Break your world up into reasonable size chunks (I use 32x32x32 and I think Minecraft uses 16x16x256) that keeps the object count relatively low while keeping the scene graph well balanced. Then only rebuild those chunks when the data changes.
If your scene graph is well balanced then frustum culling takes care of the rest.
If you want to make it look like the world is scrolling around in some finite box (I’ve only seen the pictures of voxatron, I haven’t played it) then do that with a shader trick or with some well sorted invisible boxes that fill the z-buffer. (which is what I might do in your place)