Hey guys, I’d like to share a project that I’ve been working on the last couple of months, it’s a massive improvement over my previous raymarching plugin that can be found here.
The whole thing can be found on my github and works out of the box (even contains the scan that you can see in the screenshots).
Long story short - it lets you render volumetric data (mostly used for medicinal visualization, but hey, whatever data you got, we will render).
Some screenshots to quickly grab your attention:
On the left you can see the volumetric rendering and on the right is a cut through the original data volume.
Both of these are rendered from the same CT scan, just using a different transfer function.
- Works out of the box with binary UE 4.25
- Volume raymarching for arbitrary UVolumeTexture textures (true 3D textures, no flipbooks).
- .mhd and .raw file import into volume textures.
- Precomputed Volume illumination with unlimited number of light sources implemented in compute shaders using concepts from Efficient Volume Illumination with Multiple Light Sources through Selective Light Updates (2015) by Sundén and Ropinski
- Subclassed Unreal’s UVolumeTexture to allow access to the resource as a UAV in compute shaders.
- Uses color curves for transfer function definition
- Fully integrated and functional within UE editor viewport.
- Windowing support (google DICOM Window center / Window Width or watch my youtube description for an explanation of what windowing does)
- Basic menus for manipulating the volume
- Basic VR support and example map (coming very soon - mid-November 2020).
- Raymarched volume doesn’t cast or receive shadows info to/from the scene, it only self-shadows
- We use a very simple (but fast) raymarching and illumination algorithm with no specular, refraction or scattering
- Algorithm is already a bit dated and implementation leaves a lot to be desired as for efficiency. It is however, good enough for real-time applications with several lights and large (512^3 or more) volumes.
- Currently do not support persistent 32bit grayscale textures, but plan on investigating that possibility soon(ish).
- My NDA with my current employer doesn’t allow me to publish the DICOM loading part (as I wrote that code under contract), which would truly make this a one-stop-shop for medical visualization in Unreal.
If you want to give it a shot, just clone the repo, generate VS files, compile and play with it in the editor or in play mode. Everything should work out of the box, there is an extensive readme on my github for usage details and I went crazy with commenting my code, so everything should be pretty clear.
For a showcase video where I show off all the things you can do with this, here’s my 40 minute rant about it:
Any suggestions, criticisms, bug-reports, pull-requests etc. are more than welcome!