Frequently Asked Questions (FAQs)

Question?

Voreen does not seem to work with my Intel/S3/VIA onboard graphics card.

Answer!

At the moment, we only support NVIDIA and ATI graphics boards, as most graphics cards from other vendors do not support the functionality we use for volume rendering. This may change in the future, when full-featured OpenGL drivers become available for these cards.

Question?

When selecting a high sampling rate, strange colored patterns appear in the rendering window.

Answer!

This is related to the maximum number of shader instructions supported by the graphics card. GPUs up to the GeForce 7 only support  65536 fragment shader instructions per pass (shown as MAX_PROGRAM_EXEC_INSTRUCTIONS in the application log file), which is not sufficient when choosing very high sampling rates or very complex rendering techniques. Newer GPUs do not have this limitation.

Question?

How do I adapt my own processor classes from Voreen 1.X to be compatible with Voreen 2.0?

Answer!

The main thing, which has been changed in Voreen 2.0 regarding processors, is the way ports are used. Therefore, you have to change the port initialization as well as their usage. To initialize ports, you now call something like this in the constructor initialization section:

entryPort_(Port::INPORT, "image.entrypoints")
exitPort_(Port::INPORT, "image.exitpoints")
outport_(Port::OUTPORT, "image.output", true)

Then, instead of calling the createInport() /createOutport() methods within the constructor, you use addPort() to enable usage of the ports:

addPort(entryPort_);
addPort(exitPort_);
addPort(outport_);

To activate and deactivated an outport in the process() method, you now simply call:
outport_.activateTarget(); or outport_.deactivateTarget();

And to bind the content of an inport, you call:

entryPort_.bindTextures(tm_.getGLTexUnit(entryParamsTexUnit_), tm_.getGLTexUnit(entryParamsDepthTexUnit_));

Furthermore, we have eliminated the currentVolumeHandle_. To get access to a volume, you can now call: volumePort_.getData();

So far, everything became more easy. The only excuse is, that you now have to tell the shader, which texture dimensions to use, since due to the multi-view mode, different texture dimensions may exist. Therefore, you define an appropriate uniform in the shader and call: entryPort_.setTextureParameters(raycastPrg_, "entryParameters_");

The uniform is defined and used in the shader as follows:

uniform TEXTURE_PARAMETERS entryParameters_;
...
vec3 frontPos = textureLookup2Dnormalized(entryPoints_, entryParameters_, p).rgb;

Question?

I have an NVIDIA graphics board. After installing Windows XP Service Pack 3, Voreen refuses to work.

Answer!

There is an issue with Windows XP SP3. After installing it, the NVIDIA driver is not able to compile the shaders anymore. After you have reinstalled the driver, everything should work fine again.

Question?

I want to compile Voreen with DCMTK and Python, and I get an error regarding multiple definitions of ssize_t.

Answer!

This is a known problem when compiling Pathon and DCMTK in general (http://forum.dcmtk.org/viewtopic.php?p=5530&sid=41848935b88683b3099daf41d1264c15). You may apply a hotfix, by changing the typedef in cfwin32.h to equal that in pyconfig.h.