Fovia's C++ Client/Server API
Performance Considerations

While setting rendering parameters it is important to consider their influence on the final image and the impact on rendering time.

RENDER_PARAMS allows you to adjust the internal logic for quality/performance balancing. The RENDER_PARAMS::Quality parameter selects the overall quality mode and determines the quality of the image in the final stage RENDER_STAGE_FINAL.

RENDER_PARAMS::DesiredFPS gives the rendering engine some flexibility between quality and speed. The purpose of the Frame Per Second Control scheme is to keep a desirable interactive rate. This scheme will try to keep the FPS rate as close as possible to the desirable setting if it does not violate the minimal image quality requirement. The frame per second control sets the negative feedback loop between the $desirable - actual$ FPS. A larger delta between them will cause lowering of the quality threshold. As a rule the actual FPS will be slightly less than the desirable FPS unless the scene complexity is changed very rapidly.

Another variable affecting redendered image quality is RENDER_PARAMS::RaycastingPrecision. The default value (zero) will instruct the engine to make the best estimate for the raycasting precision. If a higher precision for small elements is requeired then the value should be increased.

To find optimal raycasting precision for best performance use following procedure:

It is important to experiment with different volume datasets and find the appropriate rendering parameters that produces the desired image.

Memory Requirements

For rendering procedures the original dataset data must be loaded into memory. If the dataset does not fit into the physical RAM, then the rendering performance will suffer greatly due to swapping.

For volume rending procedures performed by RT_PARALLEL, RT_PERSPECTIVE, and RT_THICK_* require an octree to be present in physical memory. The size of the octree is about 28% of the original dataset size.

Creation of the volume rendering modes (RT_PARALLEL, RT_PERSPECTIVE, and RT_THICK_*) requires about 4MB of RAM per megapixel of RENDER_PARAMS::RenderImageSize.

Creation of the brute force rendering modes (RT_THIN_*) requires about 0.5MB of RAM for each unit of RENDER_PARAMS::SlabThickness. Therefore, a high RENDER_PARAMS::SlabThickness is not recommended for these rendering modes.

See also
Hardware Requirements