The Volumetric Billboards representation extends the classic billboards representation used to render complex 3D objects in real-time … rendering algorithm based on GPU geometry shader …
There was rumors of this being implemented for html5/webgl to run real-time in the browser. anyways. it might be of interest to any BGE developer to look into. quite high performance since it’s using GPU based algorithms …
for me this seems like the old X billboard trick in games for trees etc, taken to a whole new level resulting in quite stunning “level of detail” and is running realtime.
or for offline rendering too! e.g. an automated LOD system. it could be a fast & decent alternative to poly-reducers (decimate modifier) or manual lowpoly generation.
the real-time halo lights effect was really cool. depending on the implementation it could be game engine specific, somehow convert 3d meshes o volumetric-billboars when deploying , so they’re still mesh objects in the IDE but in the game engine they’re converted.
or something,hope it comes to use there’s a more in depth paper for download.
From the video it looks like they might’ve used OGRE for the implementation of their prototype or w/e anyone wants to call it,
which leaves me wondering if it could be found as a plugin/addon for ogre at their addon/plugin repo thingy,
in which case perhaps this could be relatively ‘easy’ to integrate with Ervin’s ogre based gamekit, would be cool, no? X3
I think the hair/fur/particle example is where it’s really going to see some amazing abuse. You might be able to have a big pile of dragons like that in a game engine, but that kind of thick, luxurious grass is the sort of thing that always feels lame to fake with 2D sprites, and volumetrically speaking, often lends itself to just adding more and more unnecessary billboard cards until it looks “dense.”
It really does look like a really cool way of rendering tons of simple or complex objects as well as covering objects with fur, grass, or other types of vegetation.
Though I do wonder if today’s GPU’s are fast enough to make heavy use of this in a full-fledged game, I also wonder if it can use shading models like for adding specularity or translucency.
grass is currently really nasty to do online w/o plugins in the browser. this way could make it so easy.
ogre rocks! remember this project? http://liquidrockgames.blogspot.com/
hope it can be implemented in bge , shoud I move thread to Game Engine forum?
also, important could be able to export for use in 3rd party engines besides BGE:
Doesn’t the smoke simulator in 2.5 use the basic same approach for rendering in the 3d viewport? The volumetric data (smoke) is sliced and then displayed within a bounding box.
I imagine shading wouldn’t be too hard, you’d just have to store the normals per-voxel along with color, and transparency.
While the concept is nice, it isn’t really anything new. I’ve seen this done a few times in the past (but still, it is interesting).
Though I do wonder if today’s GPU’s are fast enough to make heavy use of this in a full-fledged game, I also wonder if it can use shading models like for adding specularity or translucency.
The major issue with the algorithm this isn’t speed or shading, but memory. In the example scene, a 128x128x256 object used 4.8 MB of memory (or 12 MB uncompressed). If we continue increasing the resolution with this algorithm, we get:
64x64x64 = 0.7 MB uncompressed
128x128x128 = 6 MB uncompressed
128x128x256 = 12 MB uncompressed
256x256x256 = 50 MB uncompressed
512x512x512 = 402 MB uncompressed
1024x1024x1024 = 3.2 GB uncompressed (here we are over the maximum limit of most high end graphics cards).
2048x2028x2048 = 25.7 GB uncompressed
4096x4096x4096 = 206 GB uncompressed
8192x8192x8192 = 1.6 TB uncompressed
and that is only taking into account 24-bit RGB values (it does not include alpha and normal values).
In other words, this works great for small volumetric objects, but it’s highly impractical at high resolutions. This also explains why the volumes in the video are duplicated over and over again. In addition, if your objects have an average resolution of 256x256x256 (and assuming you have a 1 GB dedicated GPU), you would only be able to handle about 70-90 unique volumes on the screen at one time (assuming the LOD reads from the hard drive, otherwise it would only be able to handle about 20-40 unique volumes per scene).