This log refers to changes in the Voreen source distribution available through our public Subversion repository. It is also included as Changelog.txt in the source and binary distributions. Previous Voreen versions are available from the release archive.

2012-05-31: Voreen 3.0.1 (r42, internal r15565)

   * Bug fixes:
     o ATI/AMD Driver Compatibility Improved.
     o Assertion was thrown for first processor when VoreenVE was started with an empty default workspace.
     o OpenCL include path bug (nvidia compiler could not handle whitespace in paths).
     o Fixed loading of CLUT.
     o PropertyLink Editing could throw assertion.
     o ATI ftransform() fix.
   * Features:
     o Performance optimization for general rendering, up to 10%.
     o Added RemoteController functionality.
     o Added ToneMapping processor with one local and one global method.
   * Framework/API changes:
     o Deprecated VolumeStruct function removed from mod_sampler3D.
     o Simplified PyVoreen.
     o Made TransFuncIntensity linearly serializable to PyObject.

2012-03-17: Voreen 3.0 (r41, internal r15335)

   o Saving and restoring of network states (i.e. sets of property values).
   o Performance records of processors in a workspace.
   o New Volume API
   o Bricking of large volume data sets simplified using node loops for rendering/volume processing.
   o Caching (Volume, Geometry, ...)
   o Processor description now searchable in the processor list widget.
   o Plotting module can now also generate SVG and Latex output.

   * Framework/API changes:
     o Modules are now organized within the subdirectory "modules", which
       contains both sources and headers.
     o ZIP, Image I/O, font rendering, and FFmpeg support is now provided by 
       the modules "zip", "devil", "fontrendering", and "ffmpeg", respectively.
     o Added OpenCL and OpenMP module.
     o Qt modules
     o Replaced BoxObject by more flexible and better tested Variant class
     o RenderProcessor::generateHeader() may be called during processor
     o Processor::initialize/deinitialize() throw tgt::Exception instead of
       VoreenException, ShaderManager throws exceptions on loading failures
       => Shader error handling in Processor::initialize no longer necessary.
     o Lightwidget is a regular vec4 property with different view.
     o Added Time-to-finish methods usable for every processor.
     o Removed applyTrafoMatrix parameter from matrix conversions.
     o Entry-Exit-Point jittering texture is replaced by a permutation polynomial.

   * Features:
     o Optional dynamic linking for Windows.
     o Visual Studio 2010 support
     o Windows 64 bit support
     o Startup widget.
     o Workflow management.
     o Improved module documentation with dedicated editor widget.
     o Geometry can now be stored and loaded using the GeometrySave and GeometrySource processors.
     o Tricubic filtering is supported by Volume class, VolumeOperatorResample,
       and VolumeResample processor.
     o Axis aligned clipping now possible for slice based renderers.
     o Added conditions for Ports.
     o NetworkEditor shows which processors have widgets.
     o Added annotations to networks as a new layer.
     o Light source position can now be attached to camera.

   * Bug fixes:
     o LightWidget is updated relative to camera position if the light source
       position is not attached to it.
     o Artifacts using slice-based renderers.
     o CPURaycaster crash.
     o IntensityMeasure not rendering text overlay.
     o PropertyLinkDialog sometimes not appearing.
     o Quadview mouse event propagation in maximized mode

   * Minor changes: 
     o Removed deprecated LightProperty and ColorProperty (use instead FloatVec4Property with 
       view Property::LIGHT_POSITION or Property::COLOR, respectively).
     o XmlSerializer retrieves SerializableFactories from modules.
     o Added Visual Studio linker flag "/LARGEADDRESSAWARE" to config-default.txt,
       enabling Win32 builds to use more than 2GB of RAM.
     o Added hotkeys in NetworkEditor to switch between layers.
     o Processor list widget supports sub-categories.
     o Added WhatsThis information for widgets in VoreenVE
     o Updated GLEW to 1.7.0
     o Settings dialog
     o Added text manipulating support and improved rendering
     o Last used volume path for volume loading is persistent.
     o New Snapshot dialog which stores the last used snapshot path
     o Renamed VolumeSubSet processor to VolumeCrop
     o Merged Dilation and Erosion processors to ImageMorphology processor
     o VolumeResample displays expected data size of output volume
     o VolumeCombine supports selection of filtering mode.
     o VolumeMorphology uses progress bar

2010-11-04: Voreen 2.6.1 (r39, internal r12656)

   * Framework/API changes:
     o RenderPort::readColorBuffer expects image data type as template parameter.
     o VolumeRaycaster::bindVolumes() supports specification of texture filter mode.
     o Added command line option for overriding detected GLSL version (--glslVersion)

   * Features:
     o RenderPort::saveToImage (and SnapshotPlugin) save PNG and TIFF snapshots 
       with 16 bits per channel.
     o SingleVolumeRaycaster, MultiVolumeRaycaster, SliceViewer provide properties
       for specification of volume texture filtering modes.
     o SEGY volume reader (module 'segy'), written by Aqeel Al-Naser.  
   * Bug fixes:
     o Crash of command line parser on incorrect number of arguments
     o Crash when opening context menu of processor info widget in VoreenVE     
     o Qt warning "redefined signal" in transfer function editor
   * Minor changes: 
     o Qt 4.7 support
     o Added Vis10 tutorial slides, accessible from VoreenVE help menu
     o GUI improvements:
       o Autoscrolling in PropertyLinkDialog
       o Added Desktop to side bar URLs of file dialogs
       o Renaming of processors with "F2" in NetworkEditor
       o Grouping of texture access properties in Single/MultiVolumeRaycaster
     o Cleaned up shader modules
     o Added command line option for VoreenVE session reset (window settings, paths)
     o Added sample workspace for "DynamicGLSLRaycaster"

2010-10-18: Voreen 2.6 (r38, internal r12585)

   * Framework changes:
     o GLSL shaders do no longer use deprecated functions and context uniforms.
       Most of this happened under the hood, except that shader authors should
       now use "FragData0" instead of "gl_FragColor" for fragment shader output.
     o The shader member has been removed from the VolumeRaycaster base class.
       Shader loading and disposing is now completely up to the concrete subclasses.
   * Features:
     o We have added a plotting toolbox including processors for line, bar, 
       surface and 2D/3D scatter plots as well as function fitting. 
     o The Python interface (module "python") has been revised and now provides: 
       o Read/write access to almost all types of processor properties, incl. cameras
       o Loading volume data and transfer functions
       o Saving canvas snapshots to file
       Please have a look at the Python script editor in VoreenVE as well as 
       the samples in data/scripts.
     o To further support rapid prototyping we have added the "DynamicGLSLProcessor"
       that dynamically adds/removes ports and properties according to the uniforms
       declared in its fragment shader.
     o Camera vectors are accessible through the camera property widget.
   * Bug fixes:
     o Generation of module registration file with spaces in path.
     o "QGLWidget::makecurrent(): GetDC() failed" errors with multiple canvases 
       on Windows 7.
     o Set environment variable "XLIB_SKIP_ARGB_VISUALS=1" on Linux to work around 
       Qt bug that breaks Voreen tool windows.
     o Instability of 2D transfer functions during TF modifications (flickering).
   * Minor changes:
     o Default modules are included by "VRN_MODULES += default" instead of 
       "VRN_MODULES += most" in config.txt.
     o Pre-compiled headers:
       o now activated by "DEFINES += VRN_PRECOMPILE_HEADER" in config.txt
       o enabled pre-compiled headers for the Voreen Qt library
       o included more framework headers in pch.h
     o RenderPort::readColorBuffer/saveToImage and network editor tooltips
       support RenderTarget textures of arbitrary formats and data types.
     o TIFF volume reader has been encapsulated in the new 'tiff' module.  
     o Module description is shown in processor info box.
     o Segmentation masking has been removed from VolumeRaycaster base class.
     o Removed Python linking
2010-09-16: Voreen 2.55 (r37, internal r12039)

   * Architectural/infrastructure changes:
     o The module registration file is now auto-generated; therefore manual registration of 
       custom modules is no longer necessary.
       - Instead, the module class has to be specified in the module's *_common.pri project file. 
         See src/modules/base/base_common.pri or the module tutorial on
       - In case of problems with the auto-registration, it can be disabled in config.txt:
     o Property semantics can be reflected by views, removing the need to introduce redundant 
       property types as GUI hints:
       - ColorProperties and LightProperties are replaced by FloatVec4Properties with views 
         Property::COLOR or Property::LIGHT_POSITION, respectively. See VolumeRenderer base class.
     o DICOM volume reader and writer have been encapsulated in the new DICOM module.
       - DICOM support is enabled with VRN_MODULE_DICOM instead of VRN_WITH_DCMTK.
       - A pre-compiled DCMTK library for Visual Studio 2008 is now available on
     o The OpenCL module has been revised:
       - Centralized OpenCL initialization in OpenCLModule class (see GrayscaleCL processor).
       - Moved OpenCL wrapper from core to OpenCL module.

   * Feature improvements:
     o NetworkEditor:
       - Processors may utilize a progress bar for indicating progress of time-consuming operations.
         See VolumeResample or VolumeCombine processor.
       - Auto-evaluation of the network can be temporarily disabled.
       - Presence and state of a processor widget (e.g. canvas) is indicated by an icon that is 
         displayed on top of the processor item.
     o Related properties can be visually grouped (see SingleVolumeRaycaster).
     o Property GUI name is changeable in VoreenVE by a right-click on the property's label.
     o Tracking of numeric properties (continuous updates during slider dragging) can be disabled
       on code level as well as in the context menu of the property's slider.
     o Added LinePlot processor as preview of the upcoming plotting feature (see "plotsample.vws"). 
       Further plot types including height maps and scatter plots will follow in the next release.
     o Processors:
       - Added VolumePicking processor for 3D volume picking.
       - Added VolumeRegistration processor for landmark-based registration.
         (experimental, see "tools/volumeregistration.vws")
       - Added QuadricRenderer for rendering GLU quadrics, currently supports cylinders and spheres.
       - Added VolumeSeriesSource for loading large series of (time-varying) volumes.
       - GeometryRenderer supports texturing and lighting (merged with TexturedGeometryRenderer).
       - VolumeMirrorZ supports mirroring along each axis (renamed to VolumeMirror).
     o The Windows binary now ships with the HPMC module.
   * Documentation:
     o Added animation manual, accessible via VoreenVE help menu.

   * Minor changes:
     o Moved VolumeProcessor base class from base module to core.
     o RenderPort is derived from Port instead of GenericPort.
     o Non-canvas end processors trigger network processing.
     o Workspace archives are always extracted to disc before loading.
     o Progress dialog is shown during extraction of workspace archives.
     o Volume::convert/resize/resample/createSubset have been converted into VolumeOperators.
     o ImageOverlay retrieves overlay image through inport instead of loading it directly.     
     o Serializer supports std::pair.
     o Renamed VolumeConvert to VolumeBitScale.
     o Renamed ClippingPlaneWidget to PlaneWidgetProcessor.

   * Bug fixes:
     o Volume lighting routines consider volume transformation matrix.
     o 2D transfer function transparency bug after reloading.
     o Invalid camera state after certain trackball interactions.
     o Incorrect results from EEPGeometryIntegrator for non-cubic volumes.
     o Invalid state of RenderTargetViewer after changing network topology.
     o Broken rendering after loading of workspace archives.
     o Unintended reloading of the assigned data set on copy&paste of a VolumeSource processor.
     o Flickering during video export.
     o Processors are deinitialized after failed initialization.
     o Volume clone operations also copy transformation matrix.
     o Refresh of multiple volumes in the volume container widget.
     o Serialization of tif volumes.

2010-07-14: Voreen 2.5 (r35, internal r11040)

   * Major feature improvements:
     o With the novel animation feature, Voreen can be used to create complex
       animations of render networks and export them as a movie. Try out the
       animation user interface by clicking the animation button in the toolbar.
     o The new MultiVolumeRaycaster allows rendering of up to four volumes
       simultaneously with correct sampling and blending.
     o Voreen now has OpenCL support. You can find a few example processors in
       /src/modules/opencl (VolumeGradientCL and GrayscaleCL)
     o To ease the development of complex rendering networks, the aggregation of
       subnetworks is supported in VoreenVE. Just select multiple processors in
       the network editor and choose "Aggregate" in the context menu.
     o Several arbitrary clipping planes can be used simultaneously (see the
       workspace "arbitraryclipping.vws").
     o The render target viewer has been extended to better support visual
       debugging. You can now choose which channels to view and also quantify
       the actual pixel content for each channel of each used render target.
       Furthermore, export of the intermediate results in the render targets as
       an image file is possible.
     o The TextOverlay processor allows to augment renderings with text.
     o Opaque geometry can be comfortably integrated into volume renderings by
       using the EEPGeometryIntegrator processor.
     o Loops can be used within the network to support iterative processing
       (RenderLoopInitiator, RenderLoopFinalizer), see "renderloop.vws".
     o Exploded views of volume data exploiting the loop functionality, see
     o Support for analyze and nifti file formats.
   * Minor feature improvements:
     o RGBRaycaster using a hue-based transfer function
     o New volume processors
       o VolumeCombine for resampling and combining two volumes on a common grid.
       o VolumeMasking for masking a volume based on an opacity masking function.
       o ConnectedComponents3D, VolumeMorphology, VolumeResampling, VolumeSubSet
     o New image processors
       o Gabor filter, to be used in combination with the Convolution processor
     o The OrientationOverlay processor has been revised.
     o GPU-based marching cubes rendering through the HPMC library.
     o Camera fly-through navigation (selectable in InputMappingDialog)
     o GUI improvements
       o Linking dialog
       o Layout of InputMappingDialog
       o Layout of property widgets 
     o Workspace serialization now writes to temporary file that is moved to the
       final filename in an atomic operation for added data security.

   * Infrastructure changes
     o Voreen now requires Qt 4.4 or newer.
     o Use RGBA16 instead of RGBA16F as standard texture format
     o The directory structure has been revised. Now, all processors are contained
       in modules. All basic functionality is provided by the 'Base' module. 
       To learn how to generate your own modules, please see:
     o The volume data files have been moved from data/ to data/volumes/.
     o Use .pri instead of .txt for files included from .pro files.

   * Bug fixes:
     o The PVM reader has been improved:
       o Fixed endianness issues when loading 16 bit volumes
       o Detect whether loaded data set can be represented as a 12 bit volume
       o More robust error handling
       o Fixed a crash with non-C locale and 16 bit data on Linux
     o Sampling rate changed for anisotropical volumes: now relative to maximum size
       not minimum (value might need to be reduced for some data sets).
     o Fix serialization of transfer functions on unix systems with non-posix locale
     o Limited resolution of 2D transfer functions to 10 bit, preventing
     inacceptable memory consumption

2010-01-29: Voreen 2.01 (r34, internal r9025)

   * Bug fixes:
     o Add missing Flowreen shader files to binary distribution.
     o Fix crash when loading new workspace while the transfer function editor
       window is open.
     o Set correct clamping mode for rendering in coarseness mode and for the
       render target viewer. This removes artifacts at the border of the
       rendering canvas.
     o Correct export of transfer function files on unix platforms with
       non-POSIX locale.
     o Support loading of compressed TGA image files without using the DevIL
       image library. This is used for the "test card" image shown in the output
       window when not connected to a valid processor.
     o Change the coordinate system origin for SliceSequenceRenderer from bottom
       right to bottom left.
     o Activate workaround for incorrectly reported non-power-of-two (NPOT)
       texture capabilities for ATI Radeon 9* and X* on Linux in addition to Mac.

2009-12-23: Voreen 2.0 (r29, internal r8674)

   * Since we have introduced several new concepts, we provide new tutorial
     videos, which you can find on the Voreen website (
     If you want to know more about one of the concepts mentioned below, be sure
     to check out the videos.

   * With the new native support for multiple canvases, the user can add more
     than one canvas to the network. Thus, development of multi-view
     applications becomes easy. To integrate multiple views within one canvas
     multi view processors can be used (e.g., the QuadView processor). To deal
     with the different sizes of individual views, scaling processors are
     added automatically.

   * To support linking of multiple views, we have added a linking layer. Now
     you can switch into linking mode, in order to link properties. Thus, you
     can link the camera properties of different views, or the transfer
     functions. To make working with linking easy, we allow auto linking of
     camera properties to always ensure synced views. When Voreen is built with
     Python support, the linked property values can be transformed by Python
     scripts. Note that these scripts can run arbitrary code, so you should only
     open external workspace files from trusted sources.

   * We have added Flowreen, a module containing several processors providing
     basic flow visualization techniques. Now you can use LICs, stream lines and
     other flow visualization techniques in Voreen. Be sure to try the sample
     workspaces available on the website.

   * The serialization framework has been reengineered. This resulted in a new
     file format for our .vws workspace files. We have done our best to allow
     you to convert your old work spaces by using the converter tool provided on
     the website.

   * Improvements in the network editor: 
     o Changes in the network are evaluated automatically.
     o Volume information is shown in the connection tooltips. 
     o We keep track of the code state of all processors, indicated by the
       traffic light symbols in the processor list.

   * Changes concerning the processor classes:
     o Instead of setting an abstract "raycasting quality" for raycasting
       processors, the sampling rate can now be controlled numerically. It
       specifies how often each voxel on a ray will be sampled. To get good
       performance with larger volumes, it might be necessary to reduce the
       sampling rate.
     o To allow rapid development of shader programs and be able to keep track
       of different shader versions, we now allow to add shaders as a property.
       Take a look at the GLSLRaycaster to see how to work with these new
     o Added processors: Grayscale, Gaussian, GLSLRaycaster, QuadView
     o Removed processors: Collect, Merge, Combine, NullCanvas, CacheRenderer
     o Interaction coarseness is now handled for each processor, removing the
       need for a CoarsenessRenderer.

   * We have integrated improved volume handling functionality, both under the
     hood as well as visible in the GUI:
     o The class VolumeSourceProcessor replaces VolumeSetSource and
       VolumeSelector, and VolumeSet/Series are replaced by the new
     o Additional data set information is shown in the GUI.
     o Raw volume files (without headers) can be loaded directly by selecting
       the file type "Raw Files" in the file open dialog. You are then then
       asked to specify header skip, data type, dimensions and spacing to use
       for this file.
     o Loaded volumes can be exported as dat+raw via the context menu in the
       volume list. Thus, for instance DICOM files can be converted easily.

   * GUI improvements:
     o The processor list now contains more information about the processors, such
       as the module it belongs to or its code state (stable, testing,
       experimental). Several options for sorting the list have been added.
     o Workspace can be exported and imported as a ZIP archives containing
       workspace and volume files.
     o Integrated the OrientationPlugin into camera property widget.
     o Numerical properties can now be changed via a slider.
     o Canvases show "test card" image when not connected to a valid processor.
     o DICOMDIR files can now be loaded as any other volume file, removed
       special "Load DICOMDIR" menu entry.

   * Internal changes:
     o Dynamically allocate the required number of OpenGL render targets,
       instead of relying on a pre-allocated pool, reducing the memory footprint.
     o Removed the messaging subsystem, replaced it by the new linking
     o Removed PortMapping, ports are now handled directly by the processors.
     o Replaced EnumProperty with the new OptionProperty.
     o ShaderManager now correctly resolves line numbers for GLSL shaders that
       use the include mechanism (supports NVIDIA and ATI error message format).
     o Replaced external library for supporting ZIP files by own implementation.
     o Projects to build (core, qt, voreenve, voltool) are now controlled via

   * Minor changes and bug fixes:
     o Prevent keeping both old and new volume in memory at the same time when
       loading a workspaces.
     o Enabled loading of unnormalized float volume data sets.
     o + and - no longer zoom when renaming processors.
     o Added flush to console plugin (now showing output during operations).
     o Fixed problem with isosurface rendering.

   * Platform-dependent changes:
     o Mac: Add direct support for GLEW installed via MacPorts.
     o Linux: Build as a shared library by default.
     o Activated parallel compilation for Visual Studio 2005.

2009-12-09: Snapshot r28 (voreen-8367)

   * Bug fixes:
     o Workaround for a driver bug in some ATI drivers that would introduce
       graphics artifacts when "support camera inside the volume" is active
       for an EntryExitPoints processors. Thanks to Fedor Chelnokov for pointing
       this out!
     o Loading of all DICOM files in a directory was broken for Qt >= 4.5.
     o Support loading of non-normalized float and double volume data.

2009-11-20: Snapshot r25 (voreen-8050)

   * Large data set rendering (bricking):
     o User is asked to specifiy amount of main memory and GPU memory to be
       used for bricking when loading a bricked data set (.bvi).
     o Bricking now uses about 30% less main memory.
     o Take maximum texture dimensions supported by GPU into account when
       allocating memory for bricking.

  * Minor feature improvements:
     o Voreen can be built using MinGW and Qt Creator (as included in the
       Open Source Qt SDK).
     o Fixed building with nmake.
     o Improved mac deployment script and added installer target.
     o VoreenVE supports new command line option -w for loading workspaces
     o Log warning message when raycasting quality is chosen too high for the
       GPU (because MAX_PROGRAM_EXEC_INSTRUCTIONS is not large enough) and
       artifacts might appear (Nvidia only).
     o Update DevIL libs to version 1.7.8.

   * General bugfixes:
     o Define "precision highp float" when using GLSL 1.30 as required by newer
       ATI drivers.
     o Fix problems with the GLSL extension GL_ARB_draw_buffers (would report
       extension as unsupport in shader, although it is there).
     o Removed some runtime warnings when running without DevIL image library.
     o Workaround for slow histogram computation when using 2D gradient-based 
       transfer functions.

   * Mac bugfixes:
     o Do manual inlining of some shader code to prevent fallback to (very slow)
       software rendering mode for ATI cards on Mac.
     o Disable non-power-of-two (NPOT) textures for ATI Radeon 9* and X* on Mac,
       as they are not correctly supported there (would trigger fallback to
       software mode, with extremely slow rendering).
     o Add backspace as an additional key for deleting objects in the network
       editor, to support MacBook keyboards.
     o Last opened workspace is correctly restored on application startup.

2009-08-04: Snapshot r24 (voreen-7062)

   * New experimental dynamic bricking support, for rendering volumes larger
     than GPU memory. To use this feature, the data set first needs to be
     preprocessed using "voltool --brick 32 volume.dat volume-bricked.bvi".
     Bricking is activated by simply loading the resulting .bvi file as a volume
     in VoreenVE. The raycasting processor has several additional properties for
     controlling details of the bricking technique, such as interpolation
     between adjacent bricks and the method for selection of brick resolutions.

     The amount of GPU memory used for bricking is calculated using a simple
     heuristic approach, taking into account the total amount of GPU memory. For
     non-Windows platforms or when the heuristic fails, the memory size can be
     set manually in brickingmanager.h (gpuMemorySize and gpuMemoryReserve).

   * A new getting started guide is available in the 'Help' menu.

   * Distribution:
     o The installer package for Windows now contains Python scripting support.
     o A pre-compiled version is now available also for the Mac platform as a
       .dmg file. To install, just drag the VoreenVE folder into the application
       folder or somewhere else.

   * New functionality in VoreenVE:
     o The animation plugin can now directly output video files (AVI, MPEG, WMV,
       FLV) using the ffmpeg library.
     o In addition to keyframe-based animation, now also a simple rotation is
     o The visibility and position of transfer function editor windows is
       serialized in the workspace file.
     o The sides of the orientation cube available through "show orientation
       overlay" in the "Camera Orientation" window are now labeled with their
       particular direction.
     o New fly-through navigation for the camera: activate it in the "Options"
       menu, navigation is controlled with the arrow keys.

   * Internal changes:
     o CubeEntryExitPoints was merged with EntryExitPoints
     o refactoring of Rpt* classes, renaming
     o switched to Python 2.6.2 
     o support for DICOM files with non axis-aligned slice positioning
     o select GLSL version for shaders depending on GPU capabilities

   * Bug fixes:
     o benchmark script now gives correct results independent of the size
       of the visualization window
     o DICOM reader now supports volumes > 2 GB
     o prevent crashes when calculation a volume histogram
     o fix template instantiation problem for gcc 4.3.2
     o fix some memory leaks and uninitialized memory (thanks to Valgrind)

2009-07-06: Snapshot r18 (voreen-6845)

   * VoreenVE now has two modes of operation: network mode and visualization
     mode. The visualization replaces the old VoreenDev application.
      o The entire state of VoreenVE can be saved/restored into workspace files
      o Switched to use docking for most tool windows.
      o The visibility of individual properties and entire processors in
        visualization mode can be configured using the 'eye' buttons in network
        editor mode.
      o Processor-specific tool windows are only shown when the network
        contains the processor.
      o Status messages are shown in debug console widget instead of default
        Windows console
      o Show alpha channel in tooltips over processor connections.
      o Added snapshot plugin.

    * Many improvements in the transfer function editor
      o Switch between 'Intensity', 'Intensity Ramp', 'Intensity Pet' and
        'Intensity Gradient (2D)'.
      o Histogram is calculated in a background thread.
      o Integrated intensity threshold into transfer function.

    * Added new volumeset 'walnut.dat': a CT scan of a walnut (courtesy of
      European Institut of Molecular Imaging (EIMI), Muenster, Germany)
    * The example networks were restructured and cleaned up.
    * ZipVolumeReader now automatically reads all volume files contained in a
      .zip files (requires the ZipArchive library).
    * The (optional) font rendering now require FreeType and FTGL.

    * Processors
      o New volume processors for operating on volume data, see
        'volumeinversion.vnw' for an example.
      o New SliceSequenceRenderer and SingleSliceRenderer for 2D visualization.    
      o Simple interactive segmentation using region growing, see 'regiongrowing.vnw'.

    * Added a Windows installer for the snapshot release.

    * Voreen can now be installed with 'make install' on unix, 
      see INSTALL_PREFIX in config-default.txt

2009-02-13: Snapshot r13 (voreen-5688)
    * Redesigned GUI for VoreenVE, using multiple tool windows instead of dock
      widgets, work in progress
    * Added network for labeling processor, use with NCAT example data set from
      the website (requires FreeType activated in config.txt):
      o load network 'labeling.vnw'
      o load data sets 'ncat_phantom_medium.dat' and 'ncat_phantom_segmentation.dat'
      o attach 'ncat_phantom_medium.dat' to left VolumeSetSource processor
      o attach 'ncat_phantom_segmentation.dat' to right VolumeSetSource processor
      o press 'play' button

    * Added tool for creating spline-based camera animations

    * Improve global light settings, light position can be move with the
      mouse pointer, reactivated LightMaterialPlugin in VoreenDev,

    * Rendering results are cached by default

    * Support for .dat volume files from TU Vienna

    * Improved support for Mac OS X
      o disable Render-to-Texture
      o remove lots of Mac-specific warnings
      o several GUI improvements
      o fix problem where OpenGL canvas would show garbage on startup

    * Improved DICOM support
      o direct loading of all DICOM slice in a directory (without a DICOMDIR)
      o correct behaviour for non power-of-two slices

    * Python scripts
      o benchmarking script can be started with parameter "--benchmark"
        in VoreenDev
      o new script for camera animation 
    * Various bugfixes and cleanups:
      o allow spaces in path names for project directory
      o VoreenDev now uses the SingleVolumeRaycaster by default
      o verify correct working directory when starting
      o better exception handling for file IO
      o fix rendering artifacts in EEP with GeForce 8 or newer
      o improve logging of GLSL compiler and linker messages
      o move all handling of interaction mode into CoarsenessRenderer
      o rework caching of processor outputs
      o update file loading progress less often
      o check for require Qt version in qmake script
      o reworked command line parser
      o fix processor names in GUI
      o handle errors during processor initialization more gracefully
      o remove black border in interaction mode

2008-11-14: Snapshot r3 (voreen-5112)
    * New SingleVolumeRaycaster, a modular default renderer:
      o compositing modes: DVR, MIP, isosurface, first-hit point, first-hit normal
      o shading: none, Phong (several variants), toon shading
      o gradient calculation: forward/central differences, filtered
      o supports different compositing modes on its three output ports
      o see network "standard.vnw" for an example
    * Multiplanar slice renderer, see network "multiplanar.vnw".
    * Example network for clipping widgets with two renderers in "clipping.vnw".
    * Simple example programm for using Voreen with GLUT in "apps/glutexample"
      (also see the tutorial on

    * User interface:
      o dock/undock the preview window by double clicking (VoreenVE)
      o improvements for editing multiple transfer functions
      o load networks with drag and drop (VoreenVE)
      o save state of toolbar and dock widgets (VoreenVE)
      o information about loaded data sets is serialized into the .vnw file
      o more command line parameters for voreenve and voreendev

    * Rendering / volume handling:
      o correct rendering when camera enters the volume
      o hardware volumes (OpenGL textures) are now generated implicitly when
        accessing getVolumeGL()
      o automatic downsampling of volume texture if it is larger than GPU memory
        (available memory must be specified in VolumeGL::setAvailableGpuMemory())
      o OpenGL state is checked after every process() call in

    * More detailed logging of system information, also written to a log file by
      default (you may need to add "DEFINES += VRN_ADD_FILE_LOGGER" to your
      "config.txt" file).
    * Renamed TransFuncIntensityKeys -> TransFuncIntensity.
    * Old "rptgui" application renamed to "voreenve".

    * Various bugfixes and cleanups:
      o fixed DICOM loading
      o do not link with unused ILUT lib (from DevIL image library).
      o texture container widget was showing junk debug messages
      o invalid GL_BLEND and glClearColor state changes
      o automatic registration for Processors
      o serialization of Processor::getName()
      o no more warnings with gcc
      o serialization of BackgroundProcessor in voreendev
      o adapt to coding guidelines

2008-09-26: Snapshot r2 (voreen-4687)
    * Initial public snapshot release