SURPR!SE
サプライズ
2016.01.15
5 Open Source Volume renderer SDK
Volumetric rendering for medical visualisation have been constantly
upgraded with progress in both algorithm and GPU hardware framework. Here are 5 open source volumetric renderer that
showcase research advancement. There are certainly many more in the open source community and in such case we will
certainly add further SDK or library as we found them out.
The proposed ranking doesn’t have other meaning that our own interest in some feature such as PBR shaders, advanced
transformation function or options for cloud based scalability.
1 Exposure Render
Mainly developed by Thomas Kroes, Exposure Render propose a BRDF shading model, without any surface reconstruction.
Thus
leading to highly realistic visualisation of the volume.
License: | BSD License |
Language: | C++, CUDA |
Repository: | https://github.com/ThomasKroes/exposure-render |
Paper: | https://graphics.tudelft.nl/Publications-new/2012/KPB12a/Kroes2011.pdf |
Homepage: | https://code.google.com/p/exposure-render/ |
2 The KitWare Libraries
Volview ©Kitware
Kitware is a set of open source tool for data and 3D visualisation. We find it widely at the core of many other
medical
application such as the Osirix DICOM viewer or VolView for instance. While the
original
kit date from 1993 it is updated and maintained with full GPU support. Volume renderer is a composite of the
Visualisation Toolkit VTK and Insight Toolkit ITK.
License: | VTK: BSD License ITK: Apache 2 |
Language: | C++, CUDA |
Repository: | https://gitlab.kitware.com/vtk/vtk http://itk.org/gitweb |
Homepage: | http://www.kitware.com/ http://www.itk.org/ http://www.vtk.org/ |
3 ImageVis3D
Hosted by the Center for Integrative Biomedical Computing (University of Utah), Imagevis3d is designed in a way we
can
re-use core functions for third project. Note that Tuvok, the Volume Renderer library of Imagevis3d doesn’t rely on
CUDA
for GPU acceleration but rather on shaders for GPGPU, thus freeing it from Nvidia GPU environment.
License: | MIT License |
Language: | C++ |
Repository: | https://github.com/SCIInstitute/ImageVis3D https://github.com/SCIInstitute/Tuvok |
Homepage: | http://www.sci.utah.edu/software/imagevis3d.html |
4 yt project
©Neurodome
While mainly focused on astrophysical science environment, the yt
project scientific community has ported their volume renderer to medical visualisation scope. It is at the
core
behind the NeuroDome application which showcase interesting
transfer function for visual illustration.
License: | Modified BSD License |
Language: | Python |
Repository: | https://bitbucket.org/yt_analysis/yt/src/8717f785d8fd0da987e2a881918748a105b6f8f3/yt/visualization/volume_rendering/?at=yt |
Paper: | https://www.youtube.com/watch?v=lzPcUZWinKg |
Homepage: | http://yt-project.org/ |
5 Voreen
©Voreen
Voreen is an open source volume renderer engine which introduce node based GUI for building custom pipeline or view.
Some of the node can have their code edited such as the shaders for GPGPU. Voreen allow to create multi-view on the
same
data model and so layering different shading model on each region of interest.
License: | GNU General Public License |
Language: | C++ |
Repository: | http://svn.voreen.org/public/voreen-snapshot/ |
Paper: | http://www.voreen.org/109-Publications.html |
Homepage: | http://www.voreen.org/ |
We would like to add the following 4 engines to complete our list. Though not open source and some kind of out of
date,
we think they worth been watched.
Microsoft Research Volume Rendering SDK
©Microsoft
Microsoft Research has a data visualisation department which provide its own SDK with a “Big Data” like scope of
scalability. This SDK is enterprise solution for cloud deployment on server-side GPU cluster which is abstracted by
the
SDK architecture.
License: | Non commercial use only. ©Microsoft |
Language: | C++, C# (.NET) |
Paper: | http://research.microsoft.com/pubs/132297/VolRender-sub.pdf |
Homepage: | http://research.microsoft.com/en-us/downloads/9e7e5b2f-0d41-4a8f-87e0-4a63b7e3c0f6/ |
Nvidia CUDA SDK
©NVIDIA
Nvidia provides with the CUDA SDK sample code two volume renderer implementation. It might be a tempting strategy to
use
the Nvidia OPTIX SDK for cloud development. Looking at the reference paper(1) below, OPTIX and CUDA context can not
share memory in the actual GPU hardware. This leading to copying buffer back and forth between guest and host device
for
each communication. The author proposed the solution of an OpenGL buffer which keep the data on GPU but require a
monitor to be plugged to the GPU, forbidding any server side GPU implementation.
(1) OPTIX / CUDA Volume Rendering. Note on memory bottleneck between the two library. http://www.cs.utah.edu/~bnelson/Files/VolVis.pdf
License: | NVIDIA End User License Agreement |
Language: | C/C++ CUDA |
Homepage: | http://docs.nvidia.com/cuda/cuda-samples/#volumetric-filtering-with-3d-textures-and-surface-writes |
VolPack
©Stanford University
Old but efficient CPU based library developed by the Stanford University in 1994. The engine is still used by recent
visualisation software such as AMIDE
License: | BSD License |
Language: | C++ |
Homepage: | https://graphics.stanford.edu/software/volpack/ |
OpenVDB
©DreamWorks Animation
Though not a medical Volume renderer SDK, OpenVDB is developped by Dreamwork Animation and can be implemented as so,
or
at least for efficient data structure design.
License: | Mozilla Public License v.2 |
Language: | C++ |
Paper: | http://www.museth.org/Ken/Publications_files/Museth_TOG13.pdf |
Homepage: | http://www.openvdb.org/ |
- Volume Rendering on GPU GLSL
http://http.developer.nvidia.com/GPUGems/gpugems_ch39.html