Next-Gen 3D Rendering Technology: Voxel Ray Casting

The Advantages Of Sparse Voxel Octrees

Now let’s look at the advantages of our voxel octree when it comes to rendering. The main advantage of this data structure is that it provides an elegant way of solving the problem of level of detail (LoD) in textures, but also of geometry--all with a single algorithm. That’s because, as we implied in the preceding paragraph, each node of the octree contains color information, and so we can do away with 2D textures as we know them. Or, to be more precise, the octree is both the texture and the geometry.

Consequently, the level of detail problem, which had to be managed in a totally independent way for the geometry and for the textures, now amounts to one single system: managing the level of detail of the octree. And it turns out that this can be done very simply. In a way, the principle is an extension of the mipmapping used for textures. The purpose of mipmapping is to try to conserve texels (texture elements) of the closest possible size to that of a pixel. To do that, several resolutions of the texture are pre-calculated and stored, and the hardware adapts the choice of the mipmap level to the size of the texture on the screen.

Something like this can also be achieved with voxel octrees, with the choice of level of detail made dynamically. As soon as the size of a voxel is less than the size of a pixel, the ray’s traversal of the octree is halted at that level. All that’s needed is to store the average of the information contained in its children in each node and you have a very simple way of managing LoD. This mechanism is perfectly suited to a streaming system, which is a little like the one id Software already uses for its MegaTextures. Only those portions of the octree that are needed are stored in video memory, with another part in main memory to accelerate subsequent accesses. But the great majority of the octree simply remains on the storage medium.

The result is that we have an almost unlimited quantity of geometry (and of textures, as we noted). The octree can be as detailed as we want, and at run time the quantity of memory and the display time remain (relatively) constant. The only limitations are the amount of time the artists can devote to creating the octree and the physical limitations of the storage media in the next generation of computers.

We should say that there are other possible ways of addressing these issues, such as with the use of virtual-texture systems like MegaTextures or sparse virtual textures, which will be built into the major 3D engines (CryEngine 3, idTech 5, etc.) next year. Geometry is a more complicated problem to solve, but several possible solutions are afoot. The simplest of these involves pre-calculating several versions of a mesh at different resolutions and selecting the one that best fits the distance from the mesh to the camera. This basic solution is easy to implement, but a significant amount of visual artifacts are created when moving from one level of detail to another.

Create a new thread in the US Reviews comments forum about this subject
This thread is closed for comments
    Your comment
  • DjEaZy
    ... the 'matrix' is near... by this rate of progress...
  • doomtomb
    This stuff is pretty interesting but a little over my head. The only thing I really care about is when we will start seeing this in our games.
  • curnel_D
    This technology sounds a TON more promising than Ray tracing.
  • the_krasno
    This is awesome, the people that can really gain something here are amateur filmmakers that can't afford the giant rendering farms big studios have! :)
  • the_krasno
    the_krasnoThis is awesome, the people that can really gain something here are amateur filmmakers that can't afford the giant rendering farms big studios have!

    I meant independent, not amateur. Sorry.
  • Anonymous
    personally i like raytracing, except for the performance issues. if you've ever tried doing a little 3d rendering, ray tracing is very good, makes things look very real if done properly. again i know it is slow
  • liquidsnake718
    Very interesting stuff, I do understand how limiting cubes or voxels can be limited in terms of depth and height(same height per distance) as polygons have that advantage where the triangle gives us just that, an angle that can be measured in terms of height and distanve. We have a vanishing point with a triangle as well.....

    Iwonder if they can impliment both polygons and advanced cubes with different sizes for the initial layers creating a more fluid and complexed scenario or landscape........
  • JonathanDeane
    Interesting but voxels will have some extreme performance and space constraint hurdles to overcome before they become the main rendering of any game. I just downloaded a small demo its a little over 500K for the whole works but after you hit the genall batch file (it speeds up loading) the thing occupies about 120MB's of space for this simple game. Something like Quake 3 would have been a multi DVD file...
  • mlopinto2k1
    Pretty cool stuff.
  • amdfangirl
    Better put off upgrading my computer... again :P
  • Anonymous
    In the regular resolution 12x12 you get 144 cells instead of 122 as stated in the text
  • fatedtodie
    Based on John Carmack's record if he says it is bad... you should do it, seeing as anyone with a memory will recall the time he said multi-core was a waste of time and we should continue the Ghz race (even those the Ghz race achieved Moore's Law).

    John Carmack is a dinosaur and will try any new technology if paid enough (see his changing his mind on multi-core to "help" on the xbox 360).

    Please get an expert that isn't a moron.
  • bin1127
    “pixel” is a fusion of the terms “picture” and “element,”, learned something new.

    But i wouldn't want destructible walls. How am i going to camp when all the walls are gone?
  • manwell999
    Since when does a tree have attached children?
    It's unfortunate that the example of MRI scan example was used. Medical software must avoid the habit of naming branches in tree structures as children, lest an error message is displayed accidentally to a patient such as "Out of memory allocating children, child process aborted." Which would be a lawsuit if scanning a pregnant female. But this bad coding practice is quite common.
  • zak_mckraken
    @manwell999 : lawl
  • JimmiG
    fatedtodieanyone with a memory will recall the time he said multi-core was a waste of time and we should continue the Ghz race

    Well, back in the day, everyone was talking about higher GHz as the solution to everything. Even Intel did:
    "LUCKY PUNTERS WILL BE ABLE TO BUY 15GHZ INTEL CHIPS, containing a billion transistors, by the end of the decade, said Pat Gelsinger, Intel veep and CTO in his keynote at the Intel Developer Forum in Tokyo today. Gelsinger also predicted that PDAs will hit 5GHz in the same timeframe. It's unlikely the chips will use the existing Pentium 4 architecture which is reckoned to only be good up to around 10GHz. "

    Then Intel hit the thermal/power wall some time in 2004-2005, before even making it to 4 GHz. This of course signaled the end of such optimism. If that hadn't happened, higher clock speeds would still have been the best way to make faster CPUs. That makes all code run faster, not just code that is carefully optimized to extract parallelism. Multi-core CPUs for desktops and laptops initially came around not because it was the best choice for improving performance, but because it was not possible to further increase clock speed.
  • precariousgray
    Here's what I saw.

    That example should give you an intuitive idea of one of the advantages of using trees.
  • kikireeki
    What happened to Normal Mapping?
  • JonathanDeane
    kikireekiWhat happened to Normal Mapping?

    Hmmm maybe using a skin of voxels on top of a polygon mesh would be good for facial animation stuff, that sounds interesting to me or a mesh of polygons on top of the voxels for deformation purposes. Ok my mind is officially fried you may all proceed to LOL at me :)
  • spiketheaardvark
    I wish the article discussed how such a system would handle transparent objects and refracted light sources , such as an image of a glass of water.