diff --git a/include/neural-graphics-primitives/testbed.h b/include/neural-graphics-primitives/testbed.h index b52f00018da7f302a5330fad93f72bf5379d081e..1fd224bd0506a2dc62d3ad582e25ab5dc42ba0a6 100644 --- a/include/neural-graphics-primitives/testbed.h +++ b/include/neural-graphics-primitives/testbed.h @@ -86,6 +86,7 @@ public: bool snap_to_pixel_centers, const BoundingBox& aabb, float floor_y, + float near_distance, float plane_z, float aperture_size, const float* envmap_data, @@ -658,7 +659,6 @@ public: bool render_with_lens_distortion = false; Lens render_lens = {}; - float render_near_distance = 0.00f; float render_min_transmittance = 0.01f; float glow_y_cutoff = 0.f; @@ -787,6 +787,7 @@ public: float m_dlss_sharpening = 0.0f; // 3D stuff + float m_render_near_distance = 0.0f; float m_slice_plane_z = 0.0f; bool m_floor_enable = false; inline float get_floor_y() const { return m_floor_enable ? m_aabb.min.y()+0.001f : -10000.f; } diff --git a/src/python_api.cu b/src/python_api.cu index aff26c79886b684acd8b75d5517b2dad50f4ce6e..d6785ba4056036baf79f93d8306706ef8776303f 100644 --- a/src/python_api.cu +++ b/src/python_api.cu @@ -448,6 +448,7 @@ PYBIND11_MODULE(pyngp, m) { .def_readwrite("render_groundtruth", &Testbed::m_render_ground_truth) .def_readwrite("groundtruth_render_mode", &Testbed::m_ground_truth_render_mode) .def_readwrite("render_mode", &Testbed::m_render_mode) + .def_readwrite("render_near_distance", &Testbed::m_render_near_distance) .def_readwrite("slice_plane_z", &Testbed::m_slice_plane_z) .def_readwrite("dof", &Testbed::m_aperture_size) .def_readwrite("aperture_size", &Testbed::m_aperture_size) @@ -539,7 +540,6 @@ PYBIND11_MODULE(pyngp, m) { .def_readwrite("render_lens", &Testbed::Nerf::render_lens) .def_readwrite("rendering_min_transmittance", &Testbed::Nerf::render_min_transmittance) .def_readwrite("render_min_transmittance", &Testbed::Nerf::render_min_transmittance) - .def_readwrite("render_near_distance", &Testbed::Nerf::render_near_distance) .def_readwrite("cone_angle_constant", &Testbed::Nerf::cone_angle_constant) .def_readwrite("visualize_cameras", &Testbed::Nerf::visualize_cameras) .def_readwrite("glow_y_cutoff", &Testbed::Nerf::glow_y_cutoff) diff --git a/src/testbed.cu b/src/testbed.cu index eb48fcf5c57246845d338fa1201ca2ac6d1e6212..6e1250d72b57f79bc9507483d6095584dd1f0f07 100644 --- a/src/testbed.cu +++ b/src/testbed.cu @@ -778,7 +778,6 @@ void Testbed::imgui() { } } - accum_reset |= ImGui::SliderFloat("Near distance", &m_nerf.render_near_distance, 0.0f, 1.0f, "%.3f", ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat); accum_reset |= ImGui::SliderFloat("Min transmittance", &m_nerf.render_min_transmittance, 0.0f, 1.0f, "%.3f", ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat); ImGui::TreePop(); } @@ -919,6 +918,7 @@ void Testbed::imgui() { accum_reset |= ImGui::SliderFloat2("Screen center", &m_screen_center.x(), 0.f, 1.f); accum_reset |= ImGui::SliderFloat2("Parallax shift", &m_parallax_shift.x(), -1.f, 1.f); accum_reset |= ImGui::SliderFloat("Slice / focus depth", &m_slice_plane_z, -m_bounding_radius, m_bounding_radius); + accum_reset |= ImGui::SliderFloat("Render near distance", &m_render_near_distance, 0.0f, 1.0f, "%.3f", ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat); char buf[2048]; Vector3f v = view_dir(); Vector3f p = look_at(); diff --git a/src/testbed_nerf.cu b/src/testbed_nerf.cu index 7d7eb659e8ec7289c9b8b2dcb67757987c180d84..1406f9d5d351ac390cf1f0ccfa8cae4ff3dd293b 100644 --- a/src/testbed_nerf.cu +++ b/src/testbed_nerf.cu @@ -2274,7 +2274,7 @@ void Testbed::render_nerf(CudaRenderBuffer& render_buffer, const Vector2i& max_r m_snap_to_pixel_centers, m_render_aabb, m_render_aabb_to_local, - m_nerf.render_near_distance, + m_render_near_distance, plane_z, m_aperture_size, lens, diff --git a/src/testbed_sdf.cu b/src/testbed_sdf.cu index 2e42b3f3e429cad4203efbe6f0e72325156d87c6..f7c191222bc85f6e358f025f58f4e402f78b4cd0 100644 --- a/src/testbed_sdf.cu +++ b/src/testbed_sdf.cu @@ -503,6 +503,7 @@ __global__ void init_rays_with_payload_kernel_sdf( bool snap_to_pixel_centers, BoundingBox aabb, float floor_y, + float near_distance, float plane_z, float aperture_size, const float* __restrict__ envmap_data, @@ -525,7 +526,7 @@ __global__ void init_rays_with_payload_kernel_sdf( aperture_size = 0.0; } - Ray ray = pixel_to_ray(sample_index, {x, y}, resolution, focal_length, camera_matrix, screen_center, parallax_shift, snap_to_pixel_centers, 0.0f, plane_z, aperture_size); + Ray ray = pixel_to_ray(sample_index, {x, y}, resolution, focal_length, camera_matrix, screen_center, parallax_shift, snap_to_pixel_centers, near_distance, plane_z, aperture_size); distances[idx] = 10000.0f; @@ -599,6 +600,7 @@ void Testbed::SphereTracer::init_rays_from_camera(uint32_t sample_index, bool snap_to_pixel_centers, const BoundingBox& aabb, float floor_y, + float near_distance, float plane_z, float aperture_size, const float* envmap_data, @@ -628,6 +630,7 @@ void Testbed::SphereTracer::init_rays_from_camera(uint32_t sample_index, snap_to_pixel_centers, aabb, floor_y, + near_distance, plane_z, aperture_size, envmap_data, @@ -844,6 +847,7 @@ void Testbed::render_sdf( m_snap_to_pixel_centers, sdf_bounding_box, get_floor_y(), + m_render_near_distance, plane_z, m_aperture_size, m_envmap.envmap->params_inference(), diff --git a/src/testbed_volume.cu b/src/testbed_volume.cu index 36fa3237114c8fdbc5270d41bad9bc276cdf5423..a5b9d7363cdc59161ba52e297e0cd43d84b6c7bd 100644 --- a/src/testbed_volume.cu +++ b/src/testbed_volume.cu @@ -215,6 +215,7 @@ __global__ void init_rays_volume( Vector3f parallax_shift, bool snap_to_pixel_centers, BoundingBox aabb, + float near_distance, float plane_z, float aperture_size, const float* __restrict__ envmap_data, @@ -239,7 +240,7 @@ __global__ void init_rays_volume( if (plane_z < 0) { aperture_size = 0.0; } - Ray ray = pixel_to_ray(sample_index, {x, y}, resolution, focal_length, camera_matrix, screen_center, parallax_shift, snap_to_pixel_centers, 0.0f, plane_z, aperture_size); + Ray ray = pixel_to_ray(sample_index, {x, y}, resolution, focal_length, camera_matrix, screen_center, parallax_shift, snap_to_pixel_centers, near_distance, plane_z, aperture_size); ray.d = ray.d.normalized(); auto box_intersection = aabb.ray_intersect(ray.o, ray.d); float t = max(box_intersection.x(), 0.0f); @@ -423,6 +424,7 @@ void Testbed::render_volume(CudaRenderBuffer& render_buffer, m_parallax_shift, m_snap_to_pixel_centers, m_render_aabb, + m_render_near_distance, plane_z, m_aperture_size, m_envmap.envmap->params_inference(),