How will you use bevy to render?

IIRC, Greg said he’d be using Amethyst, not Bevy.

10 lights limit is about dynamic lights, is it not? If that’s the case then that’s not really a problem for a voxel game.
If someone tries to make a voxel sandbox game where every light source is a dynamic one, they are going to be in for a baaaad time. Players will ask why their 100x100x100 block of only light sources are frying their PC’s while giving them a single frame to look at.

90,000 blocks doesn’t really say much either. It’s all in how they are rendered.
If they don’t cull unseen triangles (marching cubes kinda deal) then you are rendering 90k x 2 x 6 = 1 million triangles. Whereas a properly setup scene would draw just 90k x 2 triangles or 180 k tris.
And even then, there are some optimizations one can make in just the triangle count alone. But never optimize before you have a sound foundation and only optimize when you run into problems.

And then there’s the question of batching. All i can see here is a bunch of colored blocks.
Are each of these blocks drawn one at a time with a specific color, or are they drawn in a single batch with just their coordinates and color info/UV’s being fed to the GPU?
Again, the difference is HUGE in the amount of data and processing needed.
Instancing is a technique where you say “draw this object at these coordinates” instead of telling the GPU to draw each and every cube separately.

With instancing, any decent graphics pipeline can easily draw millions of unculled cubes on even the most basic hardware with some resemblance of manageable FPS. And when they are properly culled or even made into a mesh, FPS can easily double under certain circumstances.

If Bevy doesn’t provide this functionality in some way to the programmer then it’s a bad engine. But i highly doubt they would do that.

3 Likes