I am developing a voxel engine with Babylon.JS and Typescript. So far I have got it rendering about 200 chunks at any given time. A chunk is a section of 16x16x256 cubes a lot like Minecraft.
The chunks are built in a web worker and then their data is sent over using array buffers. The shadows are baked into the mesh. For texturing, I load each image and combine their pixel together to form a 2d texture array that is passed to the fragment shader.
I want to try to implement greedy meshing. That is where you combine mesh facets together to form larger quads and tile their respective textures. I will probably be able to do it. I got it mostly working just need to iron the kinks out before I release it.