Skip to content

Commit b14c2e7

Browse files
committed
public release
0 parents  commit b14c2e7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+24389
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
params.json

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "tcnn"]
2+
path = tcnn
3+
url = [email protected]:wilsonCernWq/tiny-cuda-nn.git

CMakeLists.txt

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# ======================================================================== #
2+
# Copyright 2019-2022 Qi Wu #
3+
# #
4+
# Licensed under the Apache License, Version 2.0 (the "License"); #
5+
# you may not use this file except in compliance with the License. #
6+
# You may obtain a copy of the License at #
7+
# #
8+
# http://www.apache.org/licenses/LICENSE-2.0 #
9+
# #
10+
# Unless required by applicable law or agreed to in writing, software #
11+
# distributed under the License is distributed on an "AS IS" BASIS, #
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
13+
# See the License for the specific language governing permissions and #
14+
# limitations under the License. #
15+
# ======================================================================== #
16+
17+
#
18+
# This project is designed to be compiled with OVR
19+
#
20+
21+
option(OVR_BUILD_MODULE_NNVOLUME "Build Volumetric Neural Representation Device" OFF)
22+
23+
if(OVR_BUILD_MODULE_NNVOLUME)
24+
25+
message(STATUS "Enable Neural Volume Device")
26+
27+
if(DEFINED GDT_CUDA_ARCHITECTURES)
28+
message(STATUS "Obtained target architecture from environment variable GDT_CUDA_ARCHITECTURES=${GDT_CUDA_ARCHITECTURES}")
29+
set(ENV{TCNN_CUDA_ARCHITECTURES} ${GDT_CUDA_ARCHITECTURES})
30+
endif()
31+
32+
################
33+
# tiny-cuda-nn #
34+
################
35+
if(NOT TARGET tiny-cuda-nn)
36+
set(TCNN_BUILD_BENCHMARK OFF)
37+
set(TCNN_BUILD_EXAMPLES OFF)
38+
add_subdirectory(tcnn EXCLUDE_FROM_ALL)
39+
target_compile_definitions(tiny-cuda-nn PUBLIC ${TCNN_DEFINITIONS})
40+
target_compile_definitions(tiny-cuda-nn INTERFACE TCNN_NAMESPACE=tcnn)
41+
target_include_directories(tiny-cuda-nn INTERFACE ${CMAKE_CURRENT_LIST_DIR}/tcnn/include)
42+
target_include_directories(tiny-cuda-nn INTERFACE ${CMAKE_CURRENT_LIST_DIR}/tcnn/dependencies)
43+
if(UNIX)
44+
set_target_properties(tiny-cuda-nn PROPERTIES
45+
POSITION_INDEPENDENT_CODE ON
46+
)
47+
endif()
48+
endif()
49+
50+
# Two projects uses different target names ...
51+
if(TARGET rendercommon)
52+
add_library(util ALIAS rendercommon)
53+
endif()
54+
55+
# Simulate include paths
56+
include_directories(${CMAKE_CURRENT_LIST_DIR})
57+
58+
################
59+
#
60+
################
61+
set(MACROCELL_SIZE_MIP 4)
62+
set(ENABLE_IN_SHADER ON)
63+
set(ENABLE_OUT_OF_CORE ON)
64+
set(ENABLE_OPTIX OFF)
65+
set(ENABLE_OPENGL ON)
66+
add_subdirectory(core)
67+
add_subdirectory(shadowmap)
68+
add_subdirectory(apps)
69+
70+
endif()

README.md

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Instant Neural Representation for Interactive Volume Rendering
2+
3+
### Qi Wu, David Bauer, Michael J. Doyle, and Kwan-Liu Ma
4+
5+
[Project Page](https://wilsoncernwq.github.io/publication/arxiv-instant-vnr),
6+
[ArXiv](https://arxiv.org/abs/2207.11620)
7+
8+
### Abstract
9+
10+
Neural networks have shown great potential in compressing volume data for visualization. However, due to the high cost of training and inference, such volumetric neural representations have thus far only been applied to offline data processing and non-interactive rendering. In this paper, we demonstrate that by simultaneously leveraging modern GPU tensor cores, a native CUDA neural network framework, and a well-designed rendering algorithm with macro-cell acceleration, we can interactively ray trace volumetric neural representations (10-60fps). Our neural representations are also high-fidelity (PSNR > 30dB) and compact (10-1000x smaller). Additionally, we show that it is possible to fit the entire training step inside a rendering loop and skip the pre-training process completely. To support extreme-scale volume data, we also develop an efficient out-of-core training strategy, which allows our volumetric neural representation training to potentially scale up to terascale using only an NVIDIA RTX 3090 workstation.
11+
12+
13+
### Build Instructions
14+
15+
This project is expected to be built with our lightweight scientific visualization development framework: OVR.
16+
17+
```
18+
# Download the development framework
19+
git clone --recursive https://github.com/wilsonCernWq/open-volume-renderer.git
20+
cd open-volume-renderer/projects
21+
22+
# Download the source code
23+
git clone --recursive https://github.com/wilsonCernWq/instant-vnr-engine.git
24+
cd ..
25+
26+
# Build
27+
mkdir build
28+
cd build
29+
cmake .. -DGDT_CUDA_ARCHITECTURES=86 -DOVR_BUILD_MODULE_NNVOLUME=ON -DOVR_BUILD_DEVICE_OSPRAY=OFF -DOVR_BUILD_DEVICE_OPTIX7=OFF
30+
cmake --build . --config Release --parallel 16
31+
```
32+
33+
### Execution
34+
```
35+
36+
```
37+
38+
### Citation
39+
```bibtex
40+
@article{wu2022instant,
41+
title={Instant Neural Representation for Interactive Volume Rendering},
42+
author={Wu, Qi and Doyle, Michael J and Bauer, David and Ma, Kwan-Liu},
43+
journal={arXiv preprint arXiv:2207.11620},
44+
year={2022}
45+
}
46+
```

0 commit comments

Comments
 (0)