Changelog

This log refers to changes in the Voreen source distribution available through our public GIT repository. It is also included as Changelog.txt in the source and binary distributions.


Voreen Changelog
----------------

2013-12-20: Voreen 4.4
----------------------

   * Features:
     o Out-of-core rendering:
       - efficient disk streaming for data set sizes of up to 25 GB
       - multi-threaded octree construction, supporting arbitrary input formats
       - SingleOctreeRaycasterCL supports iterative refinement
       - sample workspace for combined 3D/2D rendering: large-data-exploration.vws
     o 3D plane manipulation widget (see raycasting-arbitraryclipping.vws)
     o Automated network layout
     o SliceViewer supports multi-channel volumes
     o Transfer function supports gamma correction
     o Quad-buffered stereo rendering (see StereoCanvas processor)
     o Scale legend for BoundingBoxRenderer and SliceViewer
     o Pong processor: see pong-xmas.vws ;-)
     
   * Framework/API Changes:
     o Introduced tgt::MatrixStack as replacement for fixed-function pipeline
     o Octree:
       - moved octree structures from staging to core, SingleOctreeRaycasterCL to OpenCL module
       - disk storage path and RAM usage are set globally in application settings      
     o Revised progress API in order to support multiple progress bars simultaneously:
       - introduced ProgressReporter interface, implemented by Processor and ProgressBar
       - Processor can handle multiple progress bars
       - added ProgressProperty
     o Removed SliceRendererBase, moved helper functions to VolumeSliceHelper and glsl.h
     o VolumeSliceHelper: added slice cache and slice extraction in background thread
     o Added VolumeDiskDicom for deferred/partial loading of Dicom data sets
     o OpenCLProperty handles kernels in different build configurations
     o Added TransFunc::DomainFittingStrategy as replacement for alwaysFitDomain flag
     o Added VoreenApplication::showMessageBox, implemented by VoreenApplicationQt
     o Added CollectiveSettingsProperty
       
   * Bug Fixes/Minor Changes:
     o Log level can be changed via application settings
     o Fixed network evaluation scheduling
     o VolumeDiskRaw::loadBrick uses file input stream (fixing large file issues)
     o CLWrapper: fixed memory leak in CommandQueue::enqueue
     o CMake: added /Zm1000 flag for MSVC++ (increases RAM limit for precompiled headers)
     o Added VolumeChannelMerger and VolumeChannelSeparator processors
     o StereoCanvas uses real-world focal length and eye separation
     o tgt::FileSystem::fileAccessTime
     o FloatVectorPropertyWidgets respect stepping and numdecimals settings


2013-06-14: Voreen 4.3
----------------------

   * Features:
     o Octree-based out-of-core rendering and handling of large volume data:
       - data structures and renderers: modules/staging/octree
       - sample workspace: raycasting-largedata-cl.vws (requires OpenCL module)
     o MultiVolumeGeometryRaycaster including arbitrary geometry in a multi-volume rendering:
       - sample workspace: raycasting-multivolumegeometry.vws
     o Transfer function user interface enhancements:
       - 'Edit' property button has been replaced by a quick-access manipulation widget
       - Colormap presets (without domain information) can be loaded via drop-down menu
       - Window presets (currently only for CT) can be loaded
       - Alpha-channel can be disabled via button (for slice viewers)
     o GPU-computation of transfer function pre-integration table 
     o OptimizedProxyGeometry: added 'Outer Faces' mode discarding all inner geometry
     o MultiSliceViewer: added crosshair for improved navigation and measuring
     o TripleView: support for multiple view configurations
     o Released itk_wrapper application
     o Added InveonVolumeReader
     
   * Framework/API Changes:
     o Transformed VolumeDisk into base class for various disk formats:
       - renamed previous VolumeDisk to VolumeDiskRaw
       - added VolumeDisk::loadSlices and VolumeDisk::loadBrick
       - added VolumeDisk::getHash computing the hash from filenames and meta-data
         rather than from the volume data (performance reasons)
       - added VolumeDiskOmeTiff for disk handling of OME-TIFF stacks
     o CMake:
       - added VRN_BINARY_OUTPUT_DIR option for applications and libraries (default: VRN_HOME/bin)
       - replaced VRN_WINDOWS_DEPLOYMENT option by VRN_DEPLOYMENT
     o VolumeDerivedData can now be computed in background threads
     o VolumeSliceHelper uses VolumeOctree or VolumeDisk representation if available,
       in order to avoid unnecessary loading of a disk volume into RAM
     o VolumeMinMax and VolumeHistogram derived data support multi-channel volumes       
     o Moved Processor::setValid from NetworkEvaluator to Processor::afterProcess
       
   * Bug Fixes/Minor Changes:
     o 2D transfer function fixes
     o SliceViewer supports channel selection
     o OMETiffVolumeReader supports selection of channel and timestep
     o Added enable switches to BoundingBoxRenderer, PlaneWidgetProcessor, SlicePositionRenderer
   
   
2013-03-22: Voreen 4.2.1
------------------------

   * Features:
     o OMETiffVolumeReader supports 5D data stacks and multi-directory tiff files
     o Added 'sample' module containing compilable example processors

   * Bug Fixes/Minor Changes:
     o Fixed OpenGL texture creation of single-slice volumes
     o CameraProperty adjusts near plane according to physical data set extent
     o Added missing qsvgicon4 DLLs to Win32 install targets
     o Added Python and FFmpeg Win32 builds fully compatible with Visual Studio 2010/2012
     o PortConditionVolumeType does not implicitly create VolumeRAM anymore
     o ProcessorPropertiesWidget propertly handles properties in groups without label
     o Cleaned up OptimizedProxyGeometry


2013-03-01: Voreen 4.2
----------------------

   * Features:
     o OptimizedProxyGeometry excluding subregions of the volume that are classified
       as transparent by the current transfer function
     o Significant performance optimizations in raycasting shaders
     o 3D random walker implementation for interactive segmentation (module 'randomwalker')
     o Stereo rendering (module 'stereoscopy')
     o GL-optimized TriangleMeshGeometry
     o Image-based camera-inside-volume technique
     o Stacking/decomposing of multi-channel images/volumes
     o Background threads (see OptimizedProxyGeometry as example)
     o NetworkEditor depicts processor states (initialized/ready) by icons
     o 3D Sobel filter as gradient calculation technique
     o OME-TIFF volume reader (XYZ stacks)
     o VolumeOperatorEqualize for histogram equalization

   * Framework/API Changes:
     o Visual Studio 2012 support
     o Added missing dynamic library export markers
     o Introduced VoreenSerializableObject as base class for serializable Voreen types:
       - VoreenModule derives from VoreenSerializableObjectFactory
       - module resources are directly registered at the module
       - no separate SerializableFactories required anymore
     o Camera-to-scene adaptation is now performed by CameraProperty:
       - Adaptation has to be triggered by owning processor or by the user via the camera editor
       - By default, only raycasters trigger camera adaptation
     o Raycasters handle interaction coarseness internally, thereby no longer forcing
       their predecessing entry-exit point processor to downsize its output textures
     o Added complete volume format description to VolumeBase interface
     o Added RepresentationConverterLoadFromDiskToGL for uploading volume data from disk
       directly to the GPU without the need to create an intermediate RAM representation.
     o Modules can contain tool applications
     o Renamed VolumeCollection to VolumeList
     o Moved NetworkEditor from VoreenVE application to voreenqt library
     o VoreenApplication supports multiple network evaluators
     o Introduced NumericProperty::BoundaryUpdatePolicy specifying whether min/max values
       should be static or serialized
     o Overhaul of animation editor: property timelines have to be explicitly added  
     o Added VolumeInfoProperty for displaying volume preview in processor property list
     o Added boost::asio library
     
   * Bug Fixes/Minor Changes:
     o Corrected offset calculation in GdcmVolumeReader
     o Fixed multi volume rendering for some transformation matrices
     o Fixed occasional flickering caused by Compositor
     o Fixed application setting serialization for user data paths with uppercase letters.
     o TransFuncProperty observes assigned volume to prevent occasional crash on volume deletion
     o CameraProperty serializes its trackball settings  
     o Added VolumeOperatorResizePowerOfTwo for resizing to next power-of-two dimensions
     o Removed VRN_DEBUG CMake option: debugging code is implicitly enabled in debug builds.
     o Save processors immediately save to file on path change


2012-12-20: Voreen 4.1.1
------------------------

   * Bug Fixes:
     o Compatibility with Clang compiler on Mac
     o Compile fixes for GCC on Ubuntu 12.10
     o MinGW compile fixes (still linking issues with some external libraries)     
     o Trackball center adjustment when switching data sets
     o Selection of OpenCL GPU device when multiple platforms/devices are present
     o Camera animation in animation-sample.vws workspace
     o Memory leak in animation framework
     o Application settings are stored in a separate file for each application,
       preventing settings loss when switching between Voreen applications.


2012-10-05: Voreen 4.1
----------------------

   * Features:
     o Global volume illumination (see module 'advancedlighting')
     o SingleVolumeRaycaster and CPURaycaster support pre-integrated classification
     o OpenCL support on AMD/ATI (see module 'opencl')
     o Convenient multi-modal slice rendering (see 'MultiSliceViewer' in staging module)
     o Mutual information coregistration (see 'itk' module)
   
   * Framework/API Changes:
     o Switched tgt sub-library to LGPL license (ext/tgt)
     o Processor ports can have properties
     o Render size linking: replaced implicit render size propagation by explicit
       linking of render size port properties (RenderSizeOrigin/RenderSizeReceiver)
     o Outports can block event flow via property
     o NetworkEditor overhaul:
       - separate property linking layers for camera and render size linking
       - preview tooltips for volume ports, generally improved tooltip behaviour
     o Camera does not save aspect ratio, but expects it as parameter in
       getFrustum()/getProjection() calls
     o Added GUI names to Ports and LinkEvaluators
     o Removed DependencyLinks
     o Removed GPUCapabilitiesWindows, moved Windows WMI query code to GPUCapabilities
     o Released testing applications
     o Added Boost unit testing framework
     
   * Bug Fixes/Minor Changes:
     o Geometry mesh clipping for large objects
     o GDCMVolumeReader correctly handles data sets with non-uniform windowing
     o ImageSource/ImageSequenceSource put out empty textures on AMD/ATI
     o Repaint/update issue in sample applications
     o Improved camera-to-scene adaption for transformed volumes
     o Added .ima as supported extension of DICOM readers
     o Added link evaluator for linking the camera orientation only
     o Extended DateTime class


2012-08-03: Voreen 4.0.1
------------------------

   * Features:
     o Canvas supports fullscreen mode (F11)
     o Transfer function editor: histogram y-axis scale (logarithmic/linear) is selectable via menu     
     o Visual Studio: source files can be grouped by directory (CMake option 'VRN_GROUP_SOURCE_FILES')

   * Bug Fixes:
     o ATI/AMD driver compatibility:
       - compile error in mod_raysetup.frag with older drivers (macro escape sequence)
       - texture upload in ImageSequenceSource
       - distance attenuation in PointListRenderer
     o ITKWrapper correctly handles volume offsets
     o Absolute/relative path conversion in FileDialogProperty
     o Occasional NetworkEditor crash when relocating arrows
     o Opacity accomodation in CPURaycaster

   * Minor Changes:
     o Camera frustum adjustment is now consistent between horizontal and vertical canvas resizing
     o CPURaycaster uses multi-threading via OpenMP
     o NetworkEvaluator clears outports, if processor isn't ready
     o Moved standard shader header generation from RenderProcessor to glsl.h/cpp
     o tgt::QtCanvas passes events to QGLWidget base class


2012-06-22: Voreen 4.0
----------------------

   * Features:
     o ITK 4 integration: wrapped approx. 140 filtering and segmentation algorithms by processors
     o New volume API:
       - Improved handling of spacing, units, transformations
       - Shader modules handle real-world data units
       - Persistent storage of derived volume data (histograms, ...)
       - New XML-based volume data format (.vvd)
     o Transparent, persistent caching of intermediate data processing results (volumes, geometry)
     o GLSL shaders of most rendering processors are now runtime-editable via shader properties.
     o Runtime editing of OpenCL kernels (see OpenCLProperty)
     o GDCM-based DICOM reader supporting JPEG 2000 compression and reading from PACS servers,
       highly configurable via XML (see GDCM module)
     o Geometry classes support affine transformations and clipping operations.
     o Interactive registration (see 'tools' workspaces)
     o Copying of sub-networks in the network editor
     o 'VoreenTool' command-line application for executing workspaces/networks
     o Improved command-line parser supporting multi-value and typed arguments
     o Windows 64 bit and dynamic linking support

   * Framework/API Changes:
     o Switched to CMake build system
     o Framework modules are now organized within the subdirectory 'modules',
       which contains both sources and headers.
     o Custom modules can be stored anywhere in the file system (default: subdir 'custommodules').
     o Processor and property widgets are organized in Qt modules.
     o VoreenVE modules containing VoreenVE plugins (see Python module)
     o Removed global volume container, volumes are now possessed by source processors.
     o Binaries are written to 'bin' subdirectory.
     o Separated read-only resources (subdir 'resource') from user-generated data (subdir 'data').
     o New modules:
       - Introduced mandatory 'core' module containing basic I/O processors and shader modules.
       - Introduced 'itk' and 'itk_generated' modules.
       - Introduced 'staging' module containing code that is not yet ready for productive use.
       - Introduced 'deprecated' module.
       - ZIP, Image I/O, font rendering, and FFmpeg support is now provided by
         the modules 'zip', 'devil', 'fontrendering', and 'ffmpeg', respectively.
       - Moved GLSL parser to new 'dynamicglsl' module.
       - Moved volume labeling processors to separate module.
     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 RenderProcessor::generateHeader() may be called during processor initialization.

   * Further Changes:
     o Added 'Eigen' as standard math library
     o Using Boost library
     o Updated GLEW library to 1.7.0
     o Added 'MultiView' processor for combining an arbitrary number of input renderings.
     o Image processors can be disabled (by-passed) via a bool property.
     o Port conditions specifying allowed types of input data
     o Light source position can now be attached to camera.
     o Axis aligned clipping for slice based renderers.
     o BoundingBoxRenderer supports geometry as well as volume data as input.
     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 All volume processors use progress bars.
     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 Improved heuristic for volume preview slice selection.
     o Renamed VolumeSubSet processor to VolumeCrop
     o Merged Dilation and Erosion processors to ImageMorphology processor
     o VolumeResample displays expected data size of output volume

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 www.voreen.org.
       - In case of problems with the auto-registration, it can be disabled in config.txt:
           DEFINES += VRN_NO_MODULE_AUTO_REGISTRATION
     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 www.voreen.org.
     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
       "explodedviews.vws".
     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:
       http://www.voreen.org/402-Adding-a-Module.html
     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 (http://www.voreen.org).
     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
       properties.
     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
       VolumeCollection.
     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
       functionality.
     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
       config.txt.

   * 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
       supported.
     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 fps.py 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
        (*.vws).
      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 voreen.org 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
     (compare http://www.cg.tuwien.ac.at/research/vis/datasets/)

    * 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 fps.py 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 http://www.voreen.org).

    * 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
        NetworkEvaluator.

    * 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