Implementation

If debugging is the process of removing bugs, then programming must be the process of putting them in.

Edsger W. Dijkstra

The volume rendering algorithm was implemented in C++. Care was taken to avoid additional overhead of virtual method calls, etc. for critical parts of the algorithm. Additionally, the code was written according to optimization guidelines. Some parts were optimized using inline assembler, however, our experience has shown that heavy use of inline assembler code can result in bad performance. This is due to the fact that inline assembler affects code reordering, i.e., the compiler cannot reorder instructions to achieve optimal performance. Inlining of methods has proven to be one of the most valuable strategies for manual code optimization.

We have developed an interactive prototype application. The prototype allows the management of multiple datasets and segmented objects, the manipulation of camera settings, light settings, transfer functions, and the serialization of projects. Additionally, a wrapper library has been developed which provides access to the core functionality via a thin interface. The library was deliberately designed to provide a simple interface, and thus, only provides limited flexibility. Its purpose is to enable easy integration of the implemented algorithms into existing applications.

Subsections