scenerygraphics / scenery

Flexible VR Visualisation for Volumetric and Geometric Data on the Java VM, powered by Kotlin and Vulkan.
https://scenery.graphics
GNU Lesser General Public License v3.0
128 stars 31 forks source link

Asynchronous texture transfers for adding volume timepoints #705

Open aryaman-gupta opened 4 months ago

aryaman-gupta commented 4 months ago

Currently, new volume timepoints are added synchronously in the scene. This means rendering needs to pause while the data for a new timepoint is uploaded to the GPU, which is an issue for large volume sizes.

scenery now supports asynchronous texture transfers. These could be used to asynchronously add new volume timepoints in the scene, potentially with a double-buffering approach to prevent breaks in the rendering.

Ideally, the implementation would allow the user to choose between the use of double-buffering with asynchronous upload of volume data, and the current synchronous upload technique which may be preferred when double-buffering is not possible, e.g., due to limits in GPU memory.