Vectorized traversal of sparse volumes for GPU path tracing
Thesis title in Czech: | Vektorizovaný přístup k řídkým objemům pro GPU sledování cest |
---|---|
Thesis title in English: | Vectorized traversal of sparse volumes for GPU path tracing |
Key words: | vykreslování|opticky aktivní média|Mitsuba 3|OpenVDB|CUDA |
English key words: | rendering|participating media|Mitsuba 3|OpenVDB|CUDA |
Academic year of topic announcement: | 2023/2024 |
Thesis type: | diploma thesis |
Thesis language: | angličtina |
Department: | Department of Software and Computer Science Education (32-KSVI) |
Supervisor: | Mgr. Tomáš Iser, Ph.D. |
Author: | hidden![]() |
Date of registration: | 12.06.2024 |
Date of assignment: | 14.06.2024 |
Confirmed by Study dept. on: | 14.06.2024 |
Date and time of defence: | 11.09.2024 09:00 |
Date of electronic submission: | 18.07.2024 |
Date of submission of printed version: | 18.07.2024 |
Date of proceeded defence: | 11.09.2024 |
Opponents: | Darryl Gouder, M.Sc. |
Advisors: | Tobias Rittig, B.Sc., M.Sc., Ph.D. |
Guidelines |
Rendering with participating media requires volumetric 3D textures to describe the 3D composition of the objects, modulating various parameters such as the single-scattering albedo or extinction coefficient. For regular grids, such textures are huge and require excessive memory, which is especially a problem when rendering on the GPU, where memory is typically smaller than on the CPU.
Sparse data structures leverage sparsity in the 3D texture values, for example in the background or constant regions, to compress the data. OpenVDB is a library that was invented for sparse storage on the CPU, and has been recently extended as NanoVDB to be compatible with GPU storage and access patterns. However, this implementation is not compatible with vectorization. Mitsuba 3 is a state-of-the-art research renderer that builds on Dr.Jit, a just-in-time (JIT) compiler for ordinary and differentiable computation. The software builds on a vectorized and massively parallel execution on both CPU (via LLVM) and GPU (via CUDA). However, the existing implementations do not support sparse data structures and rely on regular grids. The goal of this thesis is to access the sparse NanoVDB grids within a vectorized and parallelized GPU path tracer. Specifically: - Investigate and implement a prototype of accessing NanoVDB grids within Dr.Jit, also supporting the LLVM/CUDA modes. - The NanoVDB/Dr.Jit implementation should also consist of unit tests verifying the correctness against the original NanoVDB implementation. - Implement a volume plugin for Mitsuba 3 for rendering such sparse grids using the above Dr.Jit implementation. - Prepare and execute a scientific comparison (accuracy, speed and memory benchmarks) between the new implementation and the original Mitsuba 3. |
References |
Jakob et al., 2022, Dr.Jit: A Just-In-Time Compiler for Differentiable Rendering, https://doi.org/10.1145/3528223.3530099
Jakob et al., 2022, Mitsuba 3 renderer, https://mitsuba-renderer.org Nimier-David et al., 2019, Mitsuba 2: a retargetable forward and inverse renderer, https://doi.org/10.1145/3355089.3356498 Museth, 2013, VDB: High-resolution sparse volumes with dynamic topology, https://doi.org/10.1145/2487228.2487235 Kužel, 2021, Real-time voxel visualization and editing for 3D printing, https://doi.org/20.500.11956/148776 |