SCS CSG Rendering Algorithm
Using OpenGL graphics hardware for solid modeling.
The basic principle of the SCS algorithm.
The two subtracted cylinders are subtracted
in a sequence that caters for both orderings of A and B along the viewing
direction. Since a z-buffer can only store one surface per pixel, it is
not possible to represent holes behind the current surface.
Application
of SCS to a simple CSG model.
This is a screen-shot from Windows NT,
showing the rendering algorithm in action.
Convex Decomposition of concave primitives.
SCS operates on convex objects, therefore concave objects need to be broken down into convex components.
Complex CSG Model based on Convex objects.
Z-Buffer copy reliability for SGI machines.
Copying a z-buffer on some SGI machines
is reliable for only a portion of the viewing volume. With some care, the
object can be positioned in this range of z.
Visualising Z-Buffer copy accuracy for SGI's.
A simple program can be used to demonstrate the SGI z-buffer copy problem.
On the left half of the viewport we draw a ractangle spanning the entire
z-buffer range - zFar at top, zNear at bottom. We copy the z-buffer to
the right half of the viewport, and redraw the polygon with ztest GL_EQUAL.
Measuring the Z-buffer copy rate of an SGI ONYX2.
Z-buffer CSG rendering performance is sensitive
to the time it takes to copy a z-buffer. This particular ONYX2 can shift
between 15 and 20 million z-buffer pixels per second.
Visualising Z-Buffer copy accuracy of an SGI ONYX2.
For some reason, Onyx2 and Octane platforms
loose z-buffer precision as a result of z-buffer copying. Platforms with
this kind of limitation are limited to rendering a single CSG product using
the SCS rendering algorithm.
An algorithm for fast CSG Intersection of convex objects
Published at WSCG 2002.
SCS Validation using POV-ray
Visualising the Z-Buffer
Illustrating the conventional use of z-buffer hardware for
hidden surface removal.