I'm making a voxel game and it looks quite good but then i thought of special blocks like minecrafts grass leaf blocks, and translucent water. I had the idea for the grass blocks to put them in a seperate VAO and render them after the blocks because they might look like an X from above.
How could you do water? I know you could enable blending in OpenGL and render from back to front and you could sort their distances each frame with a map.
My problem is how to render all of these waters, I could use instanced rendering but then i would have to update the buffers every time the player moved or i could draw them all individually but that would involve thousands of draw calls ex. 8000 draw calls for 20*20*20 blocks (each draw call sends a whole cube)
what would be a fast method of doing this?