News for hackers. Stuff that matters.
Re:Exploring Euclideon's Unlimited Detail Engine by tobiasu on Thursday November 24, 2011 @05:32AM (#3273901)
Hmm, what's so amazing about it? It's a voxel graphic engine, of course it's going to have great detail and no polygons (duh). That's not new. Commanche had this in 1992...

I'm not at all an expert in this area, can someone who is explain what the downsides of voxel graphics are? There must be some serious problems with it, because the technology is well known.

Is there something new that makes this particular engine stand out above the previous engines?

Re:Exploring Euclideon's Unlimited Detail Engine by gizmo on Thursday November 24, 2011 @06:07AM (#3273973)
The big downside is that you have no idea ahead of time what parts end up on screen and which parts don't. With a voxel engine you create a giant tree that allows you to do a quick logarithmic lookup to a voxel for every pixel on the screen (more or less). Suppose you're standing on a hill and look down on the valley below. If the terrain and world below is created by artists and contains many unique objects then you end up with a voxel tree that's terabytes large. You can't keep it in memory, so performance will be awful. The only way (afaik) to keep the memory usage in check is to force reuse everywhere. So you then create ultra high resolution models of 100 different bricks and mortar. The artist then composes those "lego pieces" into different buildings. That would work, but then everything is going to look very repetitive again (which brings us back to square one).

Then of course there are the problems with lighting, animation and so on.

Re:Exploring Euclideon's Unlimited Detail Engine by modeless on Thursday November 24, 2011 @07:15AM (#3274089)
It's actually the reverse! Voxels make it easy to figure out what's on screen and what's not. That's their main advantage over polygons. The main disadvantage is that they are generally slower to render, but as you add more details, polygon renderers waste time on details that are far away or off screen while voxel renderers can discard those more easily, and eventually there's a tipping point.

You're right that lighting and animation are real problems with voxels. Animation in particular is pretty much impossible, which means you have to fall back to polygons for anything that moves or changes, which in modern games is a lot of stuff.

Re:Exploring Euclideon's Unlimited Detail Engine by gizmo on Thursday November 24, 2011 @07:37AM (#3274126)
> It's actually the reverse! Voxels make it easy to figure out what's on screen and what's not.

No no, I explicitly said "ahead of time". It's easy to determine what's on screen when you're about to render the frame, but you have to load every single object in memory because every single object is a "candidate" that may end up on the screen, you just don't know ahead of time. You can't cull the voxel tree, even though 99% of the voxel tree won't be used when rending a frame. So the memory overhead is immense.

Voxel trees don't make it easy to discard things that are far away at all, because there aren't any low-resolution objects that you can use for far-away objects. You have to load many objects in memory even when you use them to render just a pixel or two.

The polygon-based worlds we have today use various low-resolution models for when you view at a distance, and as you get closer the higher resolution models "pop in". This tech advertises that you have infinite detail and that there's no need for objects with different level of detail. This means that the complete point cloud of every object has to be loaded in memory and that's a very real problem and it's in complete contradiction to the claims made by the company that artists can create infinitely detailed worlds without having to worry about vertex counts or whatever. Artists have to compose their world out of re-usable high-detail objects or the sparse voxel octree will be way too large. This means the artists will be much more constrained than they are today, not less.

Re:Exploring Euclideon's Unlimited Detail Engine by modeless on Thursday November 24, 2011 @02:36PM (#3275215)
You're wrong. You don't need to know what's visible ahead of time because you can load the tree lazily on demand. Voxels lend themselves naturally to perfect LOD scaling in a way exactly analogous to how mipmaps and megatextures work for 2D textures. There is no analogous algorithm for polygons; polygon mesh LOD is a very hard problem that is solved only imperfectly today and with a huge labor overhead for both artists and programmers. John Carmack himself has proposed voxels as a solution to this problem: http://www.pcper.com/reviews/Graphics-Cards/John-Carmack-id-...
Re:Exploring Euclideon's Unlimited Detail Engine by davedx on Thursday November 24, 2011 @07:59AM (#3274171)
Can't you still have a normal octree or something with segments of the voxels split by their spatial location with voxel subtrees inside of that? I don't understand why you can't apply spatial division techniques to voxels.
Re:Exploring Euclideon's Unlimited Detail Engine by gizmo on Thursday November 24, 2011 @08:21AM (#3274223)
I don't think it would accomplish much. But sure, you can precompute which objects are visible in which circumstances and do some culling based on that data.

My understanding is that the problem is that there's just too much stuff that you have to keep in memory if you don't use LoD to distinguish between nearby and far away objects.

Consider this screenshot from rage: http://pcmedia.ign.com/pc/image/article/116/1162072/rage-201...

What are you going to cull? There's just too much stuff to load in memory. Too much stuff that actually ends up on your screen. Too much point cloud data. Now games use low resolution models and prerendered billboards for far away objects. With a voxel octree you're just SOL, no matter how clever your spatial optimizations.

Unless hard drives (or SSDs) become a few orders of magnitude faster I don't see how the data can be fetched from disk quickly enough.

Re:Exploring Euclideon's Unlimited Detail Engine by roel_v on Thursday November 24, 2011 @08:34AM (#3274259)
I think you can, and I think they do; but that still doesn't solve the memory issue, actually it makes it worse since now you have to store multiple 'resolution' versions for the same data.

But if they still need to use 'traditional' techniques like LoD, rendering at various resolutions, etc, then the complexity and running speed can't be all that much faster than a traditional approach. The way I've been reading these articles is that somehow he's got a very fast method of deciding which voxels to show, without any pre-processing or optimisation - just brute force. I'm curious to see the first demo they'll come up with, especially since they only now seem to be at a point where they can render without shading, animation etc, and they make it seem as if those are just implementation details that can be added on an afternoon. We'll see.

Re:Exploring Euclideon's Unlimited Detail Engine by mambodog on Thursday November 24, 2011 @10:54AM (#3274630)
To be accurate, Commanche didn't have a true volumetric renderer, it was just raycasting a heightmap[1]; essentially just as much of a hollow shell as polygon rendering techniques. However, you are correct to point out that this tech is not particularly revolutionary; others such as the Atomontage engine[2] show voxels can be leveraged to create detailed, destructible organic environments.

[1] http://www.flipcode.com/archives/Realtime_Voxel_Landscape_En...

[2] http://www.youtube.com/watch?v=_CCZIBDt1uM

Re:Exploring Euclideon's Unlimited Detail Engine by mjhall on Thursday November 24, 2011 @06:07AM (#3273971)
I think the major downside is the world is immutable. For the search algorithm to run in short enough times to render in real time the point cloud needs to be organised very carefully.

Part of the point cloud needs to move for animation, which involves re-indexing at least part of the world. Doing this once per frame is probably far too expensive (at least currently), which is why animation doesn't feature in their videos.

That doesn't mean this technology should be dismissed; most world data in 3D scene graphs is static, so it does have applications. I don't see it overtaking rasterised graphics entirely, but I think there is value in it.

I'm not an expert either, so take my comment with a healthy bucket of salt.

Re:Exploring Euclideon's Unlimited Detail Engine by timknauf on Thursday November 24, 2011 @06:03AM (#3273960)
I think the big deal is supposed to be the incredible level of detail apparently achieved without being all that taxing on the hardware (though the jury is out on whether it's some sort of trickery - it sounds too good to be true).

Edit: They claim in the article to have devised an approach that no-one else has come up with, and they give this as the reason why no-one else is doing something similar.

Re:Exploring Euclideon's Unlimited Detail Engine by baby on Thursday November 24, 2011 @05:42AM (#3273915)
notch posted something about downsides of voxel. Like you can't see the same object from different angles, you have a hard time animating things...
Re:Exploring Euclideon's Unlimited Detail Engine by timknauf on Thursday November 24, 2011 @05:59AM (#3273954)
I can see how animations might be difficult, depending on what sort of data structure one uses to store the voxel data. But why would you not be able to see the same object from different angles?
Re:Exploring Euclideon's Unlimited Detail Engine by wladimir on Thursday November 24, 2011 @06:05AM (#3273965)
I think he means that you cannot rotate an object and keep it aligned to the voxel grid at the same time. It would be a lossy operation, and require interpolation, just like rotating an image on a 2D grid.
Re:Exploring Euclideon's Unlimited Detail Engine by roel_v on Thursday November 24, 2011 @06:30AM (#3274004)
But if the resolution of your grid is smaller than the size of the voxel, that wouldn't matter much - and you could keep rounding errors in check by anchoring larger units of voxels at a certain location in space. I can see the drawbacks of the voxel cloud approach (requires much memory, what algorithm is fast enough to do voxel culling on such a massive amount of data, what about animation) but the 'can't do rotation' doesn't seem like a particularly strong argument (unless I'm misunderstanding the actual argument, which is very well possible...)
Re:Exploring Euclideon's Unlimited Detail Engine by wladimir on Thursday November 24, 2011 @06:49AM (#3274046)
I'm not saying it is entirely impossible. However, rotating volume data (which voxels are) is computationally a lot more intensive. With polygonal objects you can just change the transformation matrix and re-render the screen and you're done. At most, you have to deform the vertices that make up the outer shell of the object to do things like make a person walk.

With voxels, you'd have to recompute all the voxels of the object on a 3d grid. Also there are issues with ragged boundaries, which can be prevented by using antialiasing, but which is probably trickier (=more computationally intensive) than in 2D...

Re:Exploring Euclideon's Unlimited Detail Engine by roel_v on Thursday November 24, 2011 @08:25AM (#3274234)
I'm still not convinced by these arguments ;)

The displacement of the voxels can also be done with a simple matrix transformation, as far as I see it; same like you'd do for the nodes in a 3d model, same as you'd do it with a 'traditional' 3d pipeline (OpenGL/DirectX) - unless I'm behind the curve and animation itself is done on the GPU nowadays, but I don't think it is.

Ragged boundaries wouldn't be an issue as long as there are enough voxels. What I understand, that's the whole point - you just have lots and lots of voxels, at a much finer resolution than you'd ever want to render at, so that you just (by brute force) render once without having to worry about anti-aliasing, gaps between planes etc.

Re:Exploring Euclideon's Unlimited Detail Engine by wladimir on Thursday November 24, 2011 @08:34AM (#3274263)
The displacement of the voxels can also be done with a simple matrix transformation, as far as I see it

Yes, but the point is that you have to displace much more voxels than you'd have to displace vertices otherwise. Vertices are only on the boundaries of the object (and quite sparsely at that if you use normal mapping shaders etc wisely) but voxels fill the entire object densely...

Re:Exploring Euclideon's Unlimited Detail Engine by VMG on Thursday November 24, 2011 @11:19AM (#3274700)
> but voxels fill the entire object densely

I was under the impression that they fill the object's hull

Re:Exploring Euclideon's Unlimited Detail Engine by wladimir on Thursday November 24, 2011 @11:51AM (#3274792)
I guess you could do that, make the objects hollow. But that will obliterate the "low hanging" advantages of voxels such as destructable terrains, being able to cut things in pieces, realistic physics simulation etc...
Re:Exploring Euclideon's Unlimited Detail Engine by ajuc on Thursday November 24, 2011 @06:35AM (#3274016)
Rotatin (in general - transforming) voxels in real time is difficult compared to polygons, because with polygons you only transform vertices, and in voxels you have to transform every voxel.

EDIT: If you are spekaing about preprocessing data - yes - you can rotate as much as you want, the only problem will be that object instanced 1000 times with different orientation/scale will take 1000 times more memory than object instanced 1000 times with the same orientation/scale. With polygons there is no difference.

Re:Exploring Euclideon's Unlimited Detail Engine by roel_v on Thursday November 24, 2011 @09:46AM (#3274442)
Sorry, by 'preprocessing' I meant things still done on each frame, but anything that is not raw pushing-vertices-into-the-gpu-pipeline, i.e. all polygon culling, LoD simplification etc.

But yeah, the amount of data you'd have to work on would be much greater, but the way I interpret all of this is that he's found algos to do that very fast, regardless of whether it's a lot of data.

Re:Exploring Euclideon's Unlimited Detail Engine by jawngee on Thursday November 24, 2011 @05:55AM (#3273947)
Comanche had shitty detail, as did all the games that came after (Delta Force, etc.) that used the same engine. With this you can zoom down to the pebble.

Supposing this is legit, I'm cautiously optimistic, homie has probably uncovered some very novel techniques that allow the granular level of detail you couldn't do before with voxels, with optimizations that don't require GPU .. this is pretty amazing.

Re:Exploring Euclideon's Unlimited Detail Engine by ctdonath on Thursday November 24, 2011 @09:05AM (#3274350)
Comanche had shitty detail because it was running on 19 year old hardware. Scale that up 10,000x and refine the algorithms over a couple decades and Dell's demo is the logical result.
Re:Exploring Euclideon's Unlimited Detail Engine by jawngee on Thursday November 24, 2011 @12:31PM (#3274896)
Well, see above, it actually wasn't true voxels in this sense.
Re:Exploring Euclideon's Unlimited Detail Engine by Fargren on Thursday November 24, 2011 @05:53AM (#3273941)
I think the big deal is that it's supposed to convert poligon based graphics to voxels in real time. Which I doubt it can actually do, but if it can, it would be kind of cool.
Re:Exploring Euclideon's Unlimited Detail Engine by stefs on Thursday November 24, 2011 @10:56AM (#3274639)
the polygon to voxel conversion is just so artists can use existing tools like 3dmax or maya, which work on polygon models. think of the trees in their demo, the models have to come from somewhere. so realtime conversion is not needed.

as far as i can tell their voxel tech is just for non-moving objects like the landscape, buildings, etc. animated and moving actors are still rendered as polygons and blended into the scene (according to the article, this already works to a certain degree, but they weren't able to give a live demo, just a video).

Re:Exploring Euclideon's Unlimited Detail Engine by timknauf on Thursday November 24, 2011 @06:02AM (#3273958)
Their polygon-to-voxel technology is a sideline, I believe, and it doesn't sound like it's realtime.