Behold, The Volumetric Canvas!
Ever since the late 3Dfx revolutionized consumer PC hardware — and by revolutionized, I mean
“was completely without peer for over two years” — it’s been clear that specialized ASICs
(Application Specific Integrated Circuits) can, in certain instances, utterly wipe the floor
with General Purpose processors — even with Moore’s
Death March fully in place. I doubt even a Pentium 4 can match 3Dfx’s first product when it comes
to the bilinear filtering of even a moderate number of polygons!
The story continues, though. 3Dfx was supplanted, and eventually purchased outright,
by nVidia…and here’s where things get interesting:
Those circuits, ever so specialized, once only barely programmable via register combiners,
have grown in power and flexibility. They’re becoming…if not general
purpose, no longer fixed function. NV20 — embedded in the GeForce 3 and the X-Box —
retains the capacity to execute small but powerful pixel and vertex programs against anything
streaming out the pipe. The specialized have gone general — what’s old is new again.
And interesting things are coming because of it.
Check this out: At SIGGRAPH 2002, Christof Rezk-Salama released
OpenQVIS, his implementation
of the techniques in his doctoral thesis:
Volume Rendering Techniques for General Purpose Graphics Hardware.
What’s this? Check out the following renderings:
Three things are important to realize about those images: First, the hardware used
to render them was built to render polygons, not MRI data. Second, if you’ve got an X-Box in
your living room, you already own the requisite silicon. Finally, those images render in realtime, somewhere
between 10 and 30FPS. Relative to software performance, that’s the same kind of boost to volumetric rendering
as we saw hardware provide to the polygon thrash — not bad, considering the once fixed-function hardware was never
intended to provide this service!
Now, Rezk-Salama isn’t the first to be doing such work.
It was, after all, Klaus Engel’s
Pre-Integrated Volume Renderer that introduced me to realtime volumetric rendering, not to mention
OpenQVIS itself. Klaus’s work is excellent, but it’s OpenQVIS that has me really excited. It’s complete,
mature, cross platform through the Qt toolkit, and Open Source. It’s trivial to generate data for,
and it’s fast. So, we’ve got a way to directly render arbitrary 3D matrixes. What will you do with
it? Keep me posted🙂
OpenQVIS (Source Code, GPL License)
OpenQVIS (Win32 Binary, Probably Requires DX8 Pixel Shaders)
CT Scan of a Head(Large)
CT Scan of a Head(Small)
MRI of a Head
“Volume Rendering Techniques for General Purpose Graphics Hardware”, Christof Rezk-Salama