Releases: mlavik1/UnityVolumeRendering
Release 2024.4
This release introduces shadow volumes, transfer function editor zoom, and other improvements.
New features
Shadow volumes
Added support for shadow volumes, which can make your visualisations look a lot better (more similar to isosurface rendering mode).
The shadow volumes are updated in realtime, in a compute shader.
Note: if enabling this makes performance bad, try enabling DLSS (HDRP) or FidelityFX (URP) and reduce the render scale.
Transfer function editor zoom functionality
Do you find it hard to fine-tune your TFs? Then this feature might help!
You can now zoom in on transfer functions in the editor, either by using the mouse wheel or the new zoom sliders.
Sampling rate multiplier setting
You can now adjust the sampling rate, to get better performance on low-end devices, or better quality on high-end devices.
High sampling rate: Looks better, but slower
Low sampling rate: Faster, but with more visual artifacts
Alpha correction has also been implemented, to make sure changing the sampling rate doesn't have unwanted effects on the visual result.
Optimisations
Early return optimisation for volume rendering with tricubic interpolation + adjustable sampling rate multiplier
Enabling tricubic interpolation can make your visualisations look a lot better, but it comes with a performance cost.
However, in this has now been optimised for direct volume rendering. Performance can be up to 3 times faster, depending on the transfer function (less for TFs with non-zero alpha on low densities).
Release 5
This release mainly contains bug-fixes and other improvements.
More features are planned, and some already in progress. Hopefully I'll be able to release something soon.
News: Godot plugin in progress!
In other news, work has started on a Godot plugin based on this one! It has the most important features, such as dataset import (with SimpleItk, so DICOM, NRRD, etc.) and a transfer function editor.
Godot is a 100% free and open source 3D/game engine, which now also has support for C# scripting. While Unity is great for game development, Godot offers some things Unity doesn't, such as the ability to create multiple windows in a single application (may be useful for volume rendering applications).
You can find the plugin here: https://github.com/riccardolops/GodotVolumetricRendering
Thanks to @riccardolops for making it !
Changes
- Support for saving VolumeRenderedObjects as prefabs.
- Fixed image sequence import not working when SImpleITK enabled.
- Added support for 3D single-file TIFF import (new "import image file" option).
- Modified cross section sphere shader to handle stereo rendering
- Modified transfer function shader to handle stereo rendering
- Added scripted importer for transfer function (can now be stored as asset)
Release 4
NOTE: The orientation of imported DICOM datasets will be different after upgrading. They should now have the Y axis increasing towards the head (no longer up-side-down).
New features
Asynchronous dataset import, with progress reporting (#151 #184)
Datasets can now be imported asynchronously in the background. See new "Async" methods in the importer factories.
In the editor, datasets are imported async by default.
Progress reporting has also been added to the importers.
Original PR by SitronX
Save datasets as Assets (#183)
You can now import datasets as assets, simply by dragging and dropping the files into the assets folder (single-file datasets only) or right clicking in the project hierarchy and selecting "Volume Rendering" -> "Import".
See dataset import documentation for more info.
Sphere cutout tool (#165)
You can now make sphere cutouts by using the newly added sphere cutout tool.
See cross section tools documentation for more info.
Original PR by SitronX
Complete documentation
The documentation has been updated. All features should now be documented. You can view the documentation here, or download the PDF version here. I recommend the markdown-version, which has links.
Other fixes and improvements
- Fixed orientation and scale of DICOM and NRRD datasets (#170 #166)
- Added buttons for rotating slice renderer view (#173)
- Fixed bug with histogram compute shaders. Histograms should now be correct DICOM datasets (#196)
- Add buttons for importing NRRD/NIFTI to RuntimeGUI
- Optionally show downscale prompt for all datasets.
- Fixed a buch of warnings.
- Optimisation: Added early termination on zero alpha. Direct volume rendering will often be much faster now.
- Removed back-to-front support (#178)
UnityVolumeRendering Release 3
New features
Cubic sampling setting, for better quality (#121)
Support for multiple cross section tools (#119)
Other features
- Handle linear colour space properly (#155). Note: If you used linear colour space, you might get different colours after this release. In that case you might want to adjust your transfer functions.
- Cross-platform Nifti-importer (#126)
- Camera controller for sample scene (#127)
VolumeRaycaster
utility class, for finding intersections with dataset (#143)- Improved the slice renderer window: Display data value on mouse click, and allow measuring distances (#146).
- Optimised data texture creation: Store float/ushort directly in NativeArray (#152)
UnityVolumeRendering Release 2
New features:
- Runtime 1D transfer function editor (can be used in standalone builds)
- Improved 2D transfer function editor (you can now re-size the boxes in the actual TF view)
- Improved runtime GUI
- SimpleITK integration now works on Linux and (hopefully) MacOS (feedback is very welcome here, since I don't own a Mac)
- Light source settings (use main light or camera as light)
- Various bugfixes
UnityVolumeRendering Release 1
New features:
- JPEG compressed DICOM support, using SimpleITK (Windows only - Linux is WIP)
- NRRD support, using SimpleITK (Windows only - Linux is WIP)
- NIFTI support, using SimpleITK (Windows only - Linux is WIP)
- Early ray termination (thanks to vahpy)
- Script for generating .unitypackage
To enable SimpleITK, simply open the "Settings" window and click "Enable SImpleITK">
For more information the SimpleITK integration, see the SimpleITK documentation.
Eary ray termination can be enabled by disabling "back-to-front direct volume rendering" under "other settings" on the object:
This will setting will hopefully be removed after some more testing, and front-to-back (with early ray termination?) will be default.