UnityVolumeRendering Versions Save

Volume rendering, implemented in Unity3D. Want to support the project? Donate a small sum to Save The Children(https://www.savethechildren.net/) or another charity, and send me a message, and I will be greatly motivated!

2024.4

1 month ago

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.

315595436-96ce7fe4-0881-426d-aa59-c9487fe0f242

315596429-e0af6bbb-8e0e-4485-96bd-06b3e5cdf2d3

315599191-27fa47ad-2f0f-4518-b5c2-5e026c55dddb

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.

311814019-3bb0bb85-9198-4d21-a681-e9d803944cb1

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

3 months ago

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

11 months ago

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.

image

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". image

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.

image

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)

release-3

1 year ago

New features

Cubic sampling setting, for better quality (#121)

image

Support for multiple cross section tools (#119)

image

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)

release-2

1 year ago

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

image image

release-1

2 years ago

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"> bilde bilde

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: bilde This will setting will hopefully be removed after some more testing, and front-to-back (with early ray termination?) will be default.