Skip to content

Real time volume rendering of large voxel data sets with support for global ambient occlusion and emission.

License

Notifications You must be signed in to change notification settings

MircoWerner/VoxelVolumeRenderer

Repository files navigation

VoxelVolumeRenderer

Real time volume rendering of large voxel data sets (from cell growth simulations) with support for global ambient occlusion (caused by near and distant occluders) and emission from many voxels. This program was created as part of my bachelor thesis at KIT (Karlsruhe Institute of Technology, Germany), Computer Graphics Group in summer term 2022.

Abstract To support the visual perception of the spatial structure when rendering large three-dimensional voxel data sets in real time, approximations of global lighting effects like ambient occlusion or emission are essential. Our renderer uses accelerated ray marching by employing a signed distance field to render the static voxel volume. We present Voxel Distance Field Cone Traced Ambient Occlusion, which exploits the presence of the signed distance field to transform the distance values into occlusion values that are sampled front to back by multiple cones. In contrast to the original Voxel Cone Traced Ambient Occlusion, our method achieves higher framerates and does not require an additional three-dimensional occlusion texture or sparse voxel octree. Additionally, we combine the result with a cheap, local approximation of ambient occlusion, designed especially for voxel rendering, to increase the overall quality of the occlusion caused by near and distant occluders. Moreover, this [program thesis] introduces an approximation for light emitted by voxels by assigning light levels to solid voxels and propagating the light iteratively through the scene while keeping track of a limited number of directions the light can travel to limit cases of physically incorrect propagation. Combining the ambient occlusion and emission techniques, the visualization of the voxel data supports both the perception of the spatial structure, including large features like cave structures, and the highlighting of important parts of the data set that are missed otherwise.

img: vdcao + ddfe

Scene rendered with constant ambient lighting only (left) and with ambient occlusion and emission (right). The spatial structure is just perceptible on the right. Some colorful cells are emphasized by letting them emit light. Rendered with VDCAO + DDFE.

Table of contents

  1. Features
  2. Build
  3. Controls
  4. Results
  5. References

Features

  • Accelerated ray marching of large voxel volumes using a global signed distance field.
  • Various ambient occlusion techniques.
    • (Accumulated) Ray Traced Ambient Occlusion (RTAO) (ground truth)
    • Voxel Distance Field Cone Traced Ambient Occlusion (VDCAO) (ours)
    • Voxel Cone Traced Ambient Occlusion (VCTAO)
    • Distance Field Ambient Occlusion (DFAO)
    • Local Voxel Ambient Occlusion (LVAO)
    • Horizon-Based Ambient Occlusion (HBAO)
  • Techniques to gather emission from many voxels.
    • Directional RGB Distance Field Emission (DDFE) (ours)
    • Voxel Cone Traced Emission (VCTE)

Build

Linux

  1. Clone the repository recursively: git clone --recursive git@github.com:MircoWerner/VoxelVolumeRenderer.git
  2. Change to the working directory: cd VoxelVolumeRenderer
  3. Copy additional required GLEW sources to the GLEW submodule: ./pre-build.sh
  4. Create build folder: mkdir build, cd build
  5. Generate makefile: cmake ..
  6. Build: make

Requires C++ 17 and OpenGL 4.3 support.

Execute

  1. Place the volume data and csv file under resources/volume/[400|1000]/. IMPORTANT: The resources cannot be published at this time. Test data may be provided the future.
  2. Execute: ./VoxelVolumeRenderer [--v400|--v800]. --v400 loads the 400^3 data set, --v800 the 1000^3 data set that size is reduced to 800^3.

Controls

  • W,A,S,D,Shift,Space: Move the camera forward,left,backward,right,down,up.
  • Right mouse button (press and hold) and dragging the mouse: Rotate the camera.
  • Mouse wheel: Zoom the camera.

Results

img: vdcao + ddfe

800^3, far. VDCAO + DDFE.

img: vctao + vcte

800^3, far. VCTAO + VCTE (diffuse and specular cones).

img: vdcao + ddfe

800^3, near. VDCAO + DDFE.

img: vctao + vcte

800^3, far. VCTAO + VCTE (diffuse and specular cones).

img: vdcao

400^3, near. VDCAO.

References

Main references for the implementation.

About

Real time volume rendering of large voxel data sets with support for global ambient occlusion and emission.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published