[Bf-blender-cvs] [a418d1bc9e5] cycles-x: Cycles X: Move need-to-zero-render-buffers check to render scheduler
Sergey Sharybin
noreply at git.blender.org
Tue Jun 29 12:20:22 CEST 2021
Commit: a418d1bc9e5ca25e46d131d5fd608adc8f259f9e
Author: Sergey Sharybin
Date: Mon Jun 21 17:10:52 2021 +0200
Branches: cycles-x
https://developer.blender.org/rBa418d1bc9e5ca25e46d131d5fd608adc8f259f9e
Cycles X: Move need-to-zero-render-buffers check to render scheduler
No functional changes, but localizes handling of the render buffers,
helping with the coming further development.
===================================================================
M intern/cycles/integrator/path_trace.cpp
M intern/cycles/integrator/path_trace.h
M intern/cycles/integrator/render_scheduler.cpp
M intern/cycles/integrator/render_scheduler.h
===================================================================
diff --git a/intern/cycles/integrator/path_trace.cpp b/intern/cycles/integrator/path_trace.cpp
index a3f34346764..42efb845c66 100644
--- a/intern/cycles/integrator/path_trace.cpp
+++ b/intern/cycles/integrator/path_trace.cpp
@@ -134,15 +134,11 @@ void PathTrace::render(const RenderWork &render_work)
void PathTrace::render_pipeline(RenderWork render_work)
{
- /* TODO(sergey): For truly resumable render might need to avoid zero-ing. */
- if (render_work.path_trace.start_sample == render_scheduler_.get_start_sample()) {
- full_render_buffers_->zero();
- buffer_read();
- }
-
render_init_kernel_execution();
render_update_resolution_divider(render_work.resolution_divider);
+ init_render_buffers(render_work);
+
path_trace(render_work);
if (is_cancel_requested()) {
return;
@@ -174,6 +170,16 @@ void PathTrace::render_init_kernel_execution()
}
}
+void PathTrace::init_render_buffers(const RenderWork &render_work)
+{
+ if (!render_work.init_render_buffers) {
+ return;
+ }
+
+ full_render_buffers_->zero();
+ buffer_read();
+}
+
void PathTrace::path_trace(RenderWork &render_work)
{
if (!render_work.path_trace.num_samples) {
diff --git a/intern/cycles/integrator/path_trace.h b/intern/cycles/integrator/path_trace.h
index 6db8b286cbb..4018f582916 100644
--- a/intern/cycles/integrator/path_trace.h
+++ b/intern/cycles/integrator/path_trace.h
@@ -158,6 +158,7 @@ class PathTrace {
*
* Note that some steps might modify the work, forcing some steps to happen within this iteration
* of rendering. */
+ void init_render_buffers(const RenderWork &render_work);
void path_trace(RenderWork &render_work);
void adaptive_sample(RenderWork &render_work);
void denoise(const RenderWork &render_work);
diff --git a/intern/cycles/integrator/render_scheduler.cpp b/intern/cycles/integrator/render_scheduler.cpp
index 06fcc1d0b80..8e9d4019899 100644
--- a/intern/cycles/integrator/render_scheduler.cpp
+++ b/intern/cycles/integrator/render_scheduler.cpp
@@ -223,6 +223,8 @@ RenderWork RenderScheduler::get_render_work()
render_work.path_trace.start_sample = get_start_sample_to_path_trace();
render_work.path_trace.num_samples = get_num_samples_to_path_trace();
+ render_work.init_render_buffers = (render_work.path_trace.start_sample == get_start_sample());
+
/* NOTE: Advance number of samples now, so that filter and denoising check can see that all the
* samples are rendered. */
state_.num_rendered_samples += render_work.path_trace.num_samples;
diff --git a/intern/cycles/integrator/render_scheduler.h b/intern/cycles/integrator/render_scheduler.h
index bdf4cde40b3..ffb5ee8c947 100644
--- a/intern/cycles/integrator/render_scheduler.h
+++ b/intern/cycles/integrator/render_scheduler.h
@@ -27,6 +27,11 @@ class RenderWork {
public:
int resolution_divider = 1;
+ /* Initialize render buffers.
+ * Includes steps like zero-ing the buffer on the device, and optional reading of pixels from the
+ * baking target. */
+ bool init_render_buffers = false;
+
/* Path tracing samples information. */
struct {
int start_sample = 0;
More information about the Bf-blender-cvs
mailing list