Changelog

This log refers to changes in the Voreen source distribution available through our public Subversion repository. It is also available as Changelog.txt in the distribution.

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 (r32, internal r8753)
--------------------------------------------

   * 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-8366)
--------------------------------------
   * 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