Voxel/Polygon Accelerator
G. Waters writes: "Ars Technica writes that "3DLabs and Real Time Visualization have teamed up to design an accelerator that accelerates both voxels and polygons in the same scene." A link to the announcement can be found here. Perhaps voxels will become more mainstream with similar developments." I'm still waiting for the cards with accelerated bezier patches, but this is cool too. *grin*
Pixels and voxels are zero-dimensional samples of some 2D image or 3D volume. Thinking about them as squares, gaussian splats, or something other than samples is the path to the Dark Side.
For more info, read Alvy Ray Smith's Tech Memo, "A Pixel is Not a Little Square, a Pixel is Not a Little Square, a Pixel is Not a Little Square! (And a Voxel is Not a Little Cube)" available here.
This voxel acceleration isn't even being pushed for gaming. It's being pushed for Augmented/Virtual Reality surgery and oil drilling types of applications. Sure it'd be nice to have a voxel accelerator so when you blow some guys arm off in a game you can see chuncks fly correctly, but it's more important for other applications. I do research in AR and the fast the accelerator the better. We've already hit walls with $1400 OpenGL accelerators. Sure gaming is nice, but put on a head mounted display and try to make CG things look like they're in the real world and you'll see that acceleration has PLENTY of room to grow.
Links for those interested in AR:
rit.edu
Media Lab
The Navy
There are plenty more out there also. VR stuff looks fine for now, but when you're trying to make CG stuff look like real world stuff and have it line up with real world objects you can use all the acceleration you can get. Untill CG looks real we're not there yet.
Instead of knocking out the cobwebs, I will give you the links that I learned from.
bezier patches
Bezier curves
Nurbs
What it boils down to is an easy way to store a curved data set. The display part is trickier... and that is where the acceleration would be nice.
If you had a curved object, you could break it into poly's and have all the triangle points stored in memory or you can have the control points (and the weights if used) stored in memory.
Obviously the math for the poly's are faster but the display isn't as smooth (Such as Quake 2). With bezier patches, the display takes more math but is smoother because you are representing curves and not lines.
When it is all said and done, the math isn't too bad, it is just additional math that needs to be done at 30+ fps.
-I just work here... how am I supposed to know?
Is it something that helps you give up smoking quicker ?
Pose the question like this : are raster graphics somehow superior to vector graphics?
At one point, video games were done with vector graphics (Tempest was the most memorable =) beacuse raster graphics were too expensive computationally to do. Once they were possible, much more freedom was allowed.
Polygons are basically vector graphics in 3d - an approximation generated by drawing lines through space to simulate the construction of objects. Whereas voxels are much more like pixels - you choose a resolution, and then you fill in each 3d point with a colour. They are just orders of magnitude more expensive than polygons, that's all.
The advantages? More freedom and realisim in what can be designed.
--
That depends entirely on what you are trying to do.
Most games & CAD systems are polygon based because what you see and work with are surfaces, which polys are ideal to represent. Another advantage is that efficient polygon rendering is pretty easy to implement.
This changes when you are looking at volumetric data - this can be anything from medical scans to computational fluid dynamics results.
Volume rendering with "standard" 3d hardware is quite a rich research topic at the moment, but there are a few ways to do it.
1. Isosurface extraction - you have a field of, say, temperature values and you decide to pull out a surface at t=100 centigrade. You can use an algorithm such as "marching cubes" or "marching triangles" to give you a mesh that corresponds to the value you are looking for.
The problem is that this is expensive and you get *lots* of polygons. This is one of the reasons why "high end" boards are good for millions of tiny polygons, but fall flat when asked to do "game" type work.
2. "splatting" - this is where you just draw semi-transparent blobs where "active" voxels are and get some kind of image out. It is more complex than that (of course), but you vcan get good images.
3. Cunning stuff involving stencil buffers & 3D textures - there is a paper in siggraph proceedings from (i think) '98 or '99 that covers this. I didn't really get it to be honest.
The trouble with these approaches is that they are really just tortuous ways of visualising information that you would be able to just see if you could render your volume directly. Surface reconstruction is simple, but can take ages. Other algorithms are tricky to write & debug.
One final note is that 3D labs do some of the more fully featured accelerators, some of which support 3D textures. I would not be surprised if the volume representation was tied to texture memory in some way. Certainly 3D texture/voxel compression algorithms would be a likely place to start sharing technology.
And in answer to your question: polygons and voxels are both better, depending on what you want to do with them.