Why are voxels more efficient than polygons?

Started by
12 comments, last by johnchapman 8 years, 7 months ago

Freaky! Still, it looks fairly procedural. What about animating a dragon?

From what I understand they're nowhere close to being able to do that yet, especially in realtime.

Advertisement


I'm still really not clear on what makes voxels so much more efficient than polygons.

The video actually said it that polygons are more cost-effective. Odd to try and prove the opposite afterwards.

And they're going to stay that way for one reason - triangles are extremely good at scalability. You can describe so much with just one triangle, and only add them where you need them most. It is not a property that voxels share with triangles, the issue does not appear to get any attention, and yet it's at the foundation of being cost-effective. I wouldn't expect much to change until this is solved.

Alternative rendering methods such as ray-tracing are starting to become more popular. UE4 has some experimental sparse-voxel-octree ray-casting tech, and signed-distance-field sphere-tracing tech. SVO ray-casting is a "voxel" technique, but SDF sphere-tracing is neither polygons nor voxels (nor subdivisions) - it's an implicit surface biggrin.png

However, neither of these techniques are used for primary rays, as rasterization is more efficient for that; they're used for reflection and shadow rays.

from my own (admittedly limited) experience with graphics programming I've found post-processing to be a much greater bottleneck than rasterization

Yep, that too. With deferred shading, all your expensive lighting/shading calculations happen in post too...

Aye, even Hollywood still uses polygons. Both Weta Digital's super shiny fancy spectral renderer and Disney's 10+ lightbounce Hyperion renderer still end up with ye olde polygons for, heck for most things. BVH's and whatever other acceleration structures are there, but ultimately it all still just devolves down to drawing a bunch of triangles tongue.png

If triangles are good enough for Avatar 2-4 then I don't see them going anywhere anytime soon.

The main point in voxels is (obviously) not being "90% more effective for rendering" or any such thing (that's a false claim). In fact, the majority of voxel engines still converts voxels to triangles nowadays (with marching cubes or a similar algorithm) to render them. Being able to efficiently store empty nodes in your voxel octree is not much of a big deal either, since if you don't have any objects made from triangles in the spatial structure of your choice, it's just the same thing.

But voxels allow you to make physically plausible realtime modifications very easily. Want to blow a hole into a wall? Just blow out some voxels. Need to render a zombie with a severed arm? Simply remove those voxels.

You can do that with triangles, too, but it is a lot more complicated to have the model properly tesselated afterwards and to "make it look good" in general, without cracks or discontinuities or other visually unpleasing stuff.

Since voxels are a "somewhat like a grid", physically accurate (or at least plausible) collisions are arguably much more straightforward, too. As are lighting effects that use some more or less elaborate form of ray marching. Also, moving fore and back between levels of detail (and keeping a consistent overall level of detail in the scene) is arguably a lot easier and more straightforward with voxels.

On the other hand, unless your world is somewhat boring (mostly empty space with relatively few, mostly rectangular things placed in the world) or unless you are OK with a mediocre resolution, the amount of storage that is needed with voxels is... huge... to say the least.

Modelling in terms of triangles or bézier patches (or nurbs) somehow seems to fit our non-blocky, non-rectangular world a lot more snugly in general.

The general consensus seems to be that you can put a lot more voxels onto the screen than polygons

That is very debatable. You have a limited number of pixels on your screen (typically between 1 and 4 million), and it does not increase quality (indeed, it will cause aliasing) if you add more triangles or voxels. Drawing pixel-sized triangles is not advisable (extremely stressing the pixel shader, and not looking any better) but it would certainly be possible, if that is what you wanted. And, with hardware tesselation readily available, it would be almost trivial, too. But the thing is, you do not want pixel-sized triangles. Over-tesselation is as bad as under-tesselation.


And you know this isn't one of their videos because it doesn't have terrible bruce dell narration™

He's written his name into history with that silly voice!

This topic is closed to new replies.

Advertisement