The Unlimited detail scam

A few days ago we saw the release of a video from a company called Euclidion showing of something they called unlimited detail.
Well first off right off the bat, it’s not really unlimited detail, fractals have unlimited detail, but this isn’t fractals it’s as they claim to be point clouds, but the truth is that it’s something called “sparse voxel trees”.
technically with this technology you can achieve detail at any level, but it’s far from unlimited, instead its just different in that it has different limitations.

While polygon meshes have the capability of having the same quality as sparse voxel trees they to have problems when displayed at a distance since the computer has to do the same work at any distance, which is why games use LOD to reduce quality at a distance, but that doesn’t work perfectly in a lot of cases, especially in large open world games like “just cause”, but the upside to this is that polygons are really easy to deal with.

Sparse voxel trees does not have LOD because it can’t, well it can but then it will run into the usual LOD problems like poping and stuff.
However this method doesn’t need it since the processing power is directly related to how large the object is on screen, which is nice and if this was a viable method all my graphics would be done this way, but it’s not.

To understand why not you have to understand what makes that kind of geometry possible.
These voxels basically uses optimized 3d textures which only contains the data that is changed and not much else, but even though it’s optimized that’s a lot of data, so much so that euclidions demo even though it used only a handful of objects it probably filled the entire vram on a really high end system.
Using this method in a real game would probably require about 50-100GB of data at any time which is way to much for current systems or future ones for quite some time.
To give that some perspective the ps1 has 2 MB, the PS2 had 32MB and the PS3 has 512MB so that’s roughly one order of magnitude every generation.
projecting that the PS4 will have about 4-8GB of ram/vram and the PS5 about 64GB it could be a while before it’s viable.
Processing wise the PS4 will be a stretch although im sure it’s possible if you can fix all the overdraw issues (any overdraw is significantly more critical than for rasterized rendering).
The final problem is animation, currently it can’t be animated with the same ease as polygons, the way you would have to go about it is probably to warp the space around the object, i have tried doing it in my raytracer but so far it’s unsuccessful (and that’s only doing straight up scaling/translating/rotating, bending is a whole other can of worms).

So will it ever be viable?
Not in the next 10-15 years, or to be clear a pure voxel renderer on that scale won’t be, but if the next generation of consoles don’t skimp on the ram then we could possibly see a hybrid approach as it’s easier to push lots of polygons using tesselation.
To be honest i can’t see where the voxel rendering graph crosses regular rasterized rendering on the quality/resources scale but if i had to do an estimation it would probably be the day we all start using some form of raytracing since this method loves that.
I have already done some ray tracing with julia quaternion fractals, while not exactly the same thing it wouldn’t hard to convert it to sparse voxel trees since the actual fractal basically outputs the same kind of volumetric data to the ray tracer, it’s just done trough an algorithm.
Working with my own ray tracer also shows that ray tracers hate polygons and it would probably be faster to raytrace a bunch of voxel objects than the same objects in polygon form with a visual complexity several orders of magnitudes less.

But all this will require hardware that does not exist yet, so im sticking with polygons for now.

This entry was posted in Articles, games, graphics, Programming. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>