From 51e4107edf48338e9ab0316d56a222e0adf87143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= <thomas94@gmx.net> Date: Wed, 5 Oct 2022 08:19:53 +0200 Subject: [PATCH] Fix crash upon loading a NeRF snapshot with uninitialized density grid --- include/neural-graphics-primitives/testbed.h | 2 +- src/testbed.cu | 7 ++++--- src/testbed_nerf.cu | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/neural-graphics-primitives/testbed.h b/include/neural-graphics-primitives/testbed.h index 6bac708..704903a 100644 --- a/include/neural-graphics-primitives/testbed.h +++ b/include/neural-graphics-primitives/testbed.h @@ -154,7 +154,7 @@ public: const Eigen::Vector2i& distortion_resolution, Eigen::Array4f* frame_buffer, float* depth_buffer, - uint8_t *grid, + uint8_t* grid, int show_accel, float cone_angle_constant, ERenderMode render_mode, diff --git a/src/testbed.cu b/src/testbed.cu index 78db133..4553c54 100644 --- a/src/testbed.cu +++ b/src/testbed.cu @@ -3057,11 +3057,12 @@ void Testbed::load_snapshot(const std::string& filepath_string) { density_grid[i] = (float)density_grid_fp16[i]; }); - if (m_nerf.density_grid.size() != NERF_GRIDSIZE() * NERF_GRIDSIZE() * NERF_GRIDSIZE() * (m_nerf.max_cascade + 1)) { + if (m_nerf.density_grid.size() == NERF_GRIDSIZE() * NERF_GRIDSIZE() * NERF_GRIDSIZE() * (m_nerf.max_cascade + 1)) { + update_density_grid_mean_and_bitfield(nullptr); + } else if (m_nerf.density_grid.size() != 0) { + // A size of 0 indicates that the density grid was never populated, which is a valid state of a (yet) untrained model. throw std::runtime_error{"Incompatible number of grid cascades."}; } - - update_density_grid_mean_and_bitfield(nullptr); } m_network_config_path = filepath_string; diff --git a/src/testbed_nerf.cu b/src/testbed_nerf.cu index e717ea4..479e1f6 100644 --- a/src/testbed_nerf.cu +++ b/src/testbed_nerf.cu @@ -1984,7 +1984,7 @@ void Testbed::NerfTracer::init_rays_from_camera( const Vector2i& distortion_resolution, Eigen::Array4f* frame_buffer, float* depth_buffer, - uint8_t *grid, + uint8_t* grid, int show_accel, float cone_angle_constant, ERenderMode render_mode, -- GitLab