CSC 2505 Geometric Representation for Computer Graphics
GPU ray caster for implicit surfaces
|Figure 1: Chess scene, except the ground plane and the cross all element are model with quadrics
Rasterization has become the de facto standard for real-time
computer graphics. It's advantages are ... However, rasterization
requires the approximation of the geometry by rasterization. Without
adaptive resampling this introduces artifacts as seen in Figure 1.
Other rendering techniques, for example ray casting and ray tracing,
avoid these artifacts by using an accurate representation of the
Graphics Processing Units (GPUs) implement the rasterization pipeline
(see [Fernando 2004] for an introduction) as specialized processor
which speeds up the computation significantly. Recently, these
processors have become programmable and it has been shown that they can
be used for much more than rendering polygons, see [Owens 2005].
ICaster implements a ray caster for Quadrics, second order implicit
surfaces. This permits pixel-accurate visualization, independent
of the distance to the object, and, through the enormous floating point
compute power of modern GPUs, still achieves interactive framerates
even for complex scenes. The algorithm can be integrated easily into
standard scenegraph as shown in the example implementation as plug-in
for Alias | Wavefront Maya.
|Figure 2: Implicit
sphere rendered with ICaster (left) and polygonal sphere (right). Note
that a higher tesselation rate could avoid artifacts in the right
image. However, when zooming in artifacts are inevitable.
|Figure 3: Miscellaneous Quadrics
|Figure 4: Miscellaneous Quadrics
Limitations and Future Work
At the moment, ICaster is missing most functionality and tools
available when modeling with other primitives such as NURBS and
polygons. The most serious limitation is the counter-intuitive
parametrization by the coefficients of the matrix Q.
Desirable would be a direct modelling of the quadric, for example by
pushing and pulling of sub-parts. However, currently it is not clear
how to map such an interaction onto the matrix representation. Further
work in this area is cruical for the applicability of quadrics for
Another area of future work is the direct rendering of other implicit
surfaces such as skeleton based implicits. The main difference to the
current implementation is that, in general, no closed form solution
exist. Additionally, the interaction of different nodes is hard to
model on the GPU.
The doxygen documentation of ICaster can be found here.
Download and Usage
Source code for Linux and Windows
Pre-compiled shared libraries can be provided upon request.
The plug-in can be loaded with the plug-in manager, which can be found
under Window->Setting and Preferences. New objects can be created
with the following commands (entered in the MEL command line or the
If you use ICaster frequently, it is helpful to create buttons or short-cuts for creating new objects. The parameter of the objects can be edited in the attribute editor. For quadrics, it is helpful to undock the parameter tab (Copy Tab).
Note: Under 64-bit
versions of Linux, the user has to build the GLEW libs by himself, the
source code is included in the ICaster archive. For Windows and 32-bit
versions of Linux the files provided on the GLEW website can be used.
Nowrouzezahrai derek (at) dgp (dot) toronto (dot) edu
Christian Lessig lessig (at) dgp (dot) toronto (dot) edu
||R. Fernando, M. Harris, M. Wloka and C. Zeller,
Programming Graphics Hardware, Eurographics 2004 Tutrorial Notes,
||J. D. Owens, D. Leubke, N. Govindaraju, M. Harris, J. Kruger, A. Lefohn, T. Purcell, A
Survey of General-Purpose Computation on Graphics Hardware, State of the Art Report,
Eurographics 2005, August 2005
|lessig (at) dgp (dot) toronto (dot) edu