Blender V5.0
RenderScheduler Class Reference

#include <render_scheduler.h>

Classes

class  TimeWithAverage

Public Member Functions

 RenderScheduler (TileManager &tile_manager, const SessionParams &params)
void set_need_schedule_cryptomatte (bool need_schedule_cryptomatte)
void set_need_schedule_rebalance (bool need_schedule_rebalance)
bool is_background () const
void set_denoiser_params (const DenoiseParams &params)
bool is_denoiser_gpu_used () const
void set_adaptive_sampling (const AdaptiveSampling &adaptive_sampling)
bool is_adaptive_sampling_used () const
void set_sample_params (const int num_samples, const bool use_sample_subset, const int sample_subset_offset, const int sample_subset_length)
int get_num_samples () const
int get_sample_offset () const
void set_time_limit (const double time_limit)
double get_time_limit () const
int get_rendered_sample () const
int get_num_rendered_samples () const
void reset (const BufferParams &buffer_params)
void reset_for_next_tile ()
bool render_work_reschedule_on_converge (RenderWork &render_work)
bool render_work_reschedule_on_idle (RenderWork &render_work)
void render_work_reschedule_on_cancel (RenderWork &render_work)
RenderWork get_render_work ()
void report_work_begin (const RenderWork &render_work)
void report_path_trace_time (const RenderWork &render_work, const double time, bool is_cancelled)
void report_path_trace_occupancy (const RenderWork &render_work, const float occupancy)
void report_adaptive_filter_time (const RenderWork &render_work, const double time, bool is_cancelled)
void report_denoise_time (const RenderWork &render_work, const double time)
void report_display_update_time (const RenderWork &render_work, const double time)
void report_rebalance_time (const RenderWork &render_work, const double time, bool balance_changed)
void report_volume_guiding_denoise_time (const RenderWork &render_work, const double time)
bool volume_guiding_need_denoise () const
string full_report () const
void set_limit_samples_per_update (const int limit_samples)

Protected Member Functions

bool done () const
void update_state_for_render_work (const RenderWork &render_work)
bool set_postprocess_render_work (RenderWork *render_work)
void set_full_frame_render_work (RenderWork *render_work)
void update_start_resolution_divider ()
double guess_viewport_navigation_update_interval_in_seconds () const
bool is_denoise_active_during_update () const
double guess_display_update_interval_in_seconds () const
double guess_display_update_interval_in_seconds_for_num_samples (const int num_rendered_samples) const
double guess_display_update_interval_in_seconds_for_num_samples_no_limit (int num_rendered_samples) const
int calculate_num_samples_per_update () const
int get_start_sample_to_path_trace () const
int get_num_samples_to_path_trace () const
int get_num_samples_during_navigation (const int resolution_divider) const
bool work_need_adaptive_filter () const
float work_adaptive_threshold () const
bool work_need_denoise (bool &delayed, bool &ready_to_display)
bool work_need_update_display (const bool denoiser_delayed)
bool work_need_rebalance ()
bool work_is_usable_for_first_render_estimation (const RenderWork &render_work)
bool work_report_reset_average (const RenderWork &render_work)
void check_time_limit_reached ()
int calculate_resolution_divider_for_time (const double desired_time, const double actual_time)

Protected Attributes

struct { 
   bool   user_is_navigating = false 
   int   resolution_divider = 1 
   int   num_rendered_samples = 0 
   double   last_display_update_time = 0.0 
   int   last_display_update_sample = -1 
   double   last_rebalance_time = 0.0 
   int   num_rebalance_requested = 0 
   int   num_rebalance_changes = 0 
   bool   need_rebalance_at_next_work = false 
   bool   last_rebalance_changed = false 
   float   adaptive_sampling_threshold = 0.0f 
   bool   last_work_tile_was_denoised = false 
   bool   tile_result_was_written = false 
   bool   postprocess_work_scheduled = false 
   bool   full_frame_work_scheduled = false 
   bool   full_frame_was_written = false 
   bool   path_trace_finished = false 
   bool   time_limit_reached = false 
   double   start_render_time = 0.0 
   double   end_render_time = 0.0 
   int   occupancy_num_samples = 0 
   float   occupancy = 1.0f 
state_
struct { 
   double   path_trace_per_sample 
   double   denoise_time 
   double   display_update_time 
first_render_time_
TimeWithAverage path_trace_time_
TimeWithAverage adaptive_filter_time_
TimeWithAverage denoise_time_
TimeWithAverage display_update_time_
TimeWithAverage rebalance_time_
TimeWithAverage volume_guiding_denoise_time_
bool need_schedule_cryptomatte_ = false
bool need_schedule_rebalance_works_ = false
int sample_offset_ = 0
int num_samples_ = 0
double time_limit_ = 0.0
bool headless_
bool background_
int pixel_size_ = 1
TileManagertile_manager_
BufferParams buffer_params_
DenoiseParams denoiser_params_
AdaptiveSampling adaptive_sampling_
bool use_progressive_noise_floor_ = false
int default_start_resolution_divider_ = 1
int start_resolution_divider_ = 0
int limit_samples_per_update_ = 0

Detailed Description

Definition at line 90 of file render_scheduler.h.

Constructor & Destructor Documentation

◆ RenderScheduler()

CCL_NAMESPACE_BEGIN RenderScheduler::RenderScheduler ( TileManager & tile_manager,
const SessionParams & params )

Member Function Documentation

◆ calculate_num_samples_per_update()

int RenderScheduler::calculate_num_samples_per_update ( ) const
protected

◆ calculate_resolution_divider_for_time()

int RenderScheduler::calculate_resolution_divider_for_time ( const double desired_time,
const double actual_time )
protected

◆ check_time_limit_reached()

void RenderScheduler::check_time_limit_reached ( )
protected

Definition at line 1242 of file render_scheduler.cpp.

References state_, time_dt(), and time_limit_.

Referenced by get_render_work().

◆ done()

bool RenderScheduler::done ( ) const
protected

◆ full_report()

◆ get_num_rendered_samples()

int RenderScheduler::get_num_rendered_samples ( ) const

◆ get_num_samples()

int RenderScheduler::get_num_samples ( ) const

Definition at line 91 of file render_scheduler.cpp.

References num_samples_.

◆ get_num_samples_during_navigation()

int RenderScheduler::get_num_samples_during_navigation ( const int resolution_divider) const
protected

◆ get_num_samples_to_path_trace()

◆ get_render_work()

◆ get_rendered_sample()

int RenderScheduler::get_rendered_sample ( ) const

Definition at line 111 of file render_scheduler.cpp.

References DCHECK_GT, and get_num_rendered_samples().

Referenced by work_need_adaptive_filter().

◆ get_sample_offset()

int RenderScheduler::get_sample_offset ( ) const

Definition at line 96 of file render_scheduler.cpp.

References sample_offset_.

Referenced by get_render_work(), and report_work_begin().

◆ get_start_sample_to_path_trace()

int RenderScheduler::get_start_sample_to_path_trace ( ) const
protected

Definition at line 810 of file render_scheduler.cpp.

References sample_offset_, and state_.

Referenced by get_num_samples_to_path_trace(), and get_render_work().

◆ get_time_limit()

double RenderScheduler::get_time_limit ( ) const

Definition at line 106 of file render_scheduler.cpp.

References time_limit_.

◆ guess_display_update_interval_in_seconds()

double RenderScheduler::guess_display_update_interval_in_seconds ( ) const
protected

◆ guess_display_update_interval_in_seconds_for_num_samples()

double RenderScheduler::guess_display_update_interval_in_seconds_for_num_samples ( const int num_rendered_samples) const
protected

◆ guess_display_update_interval_in_seconds_for_num_samples_no_limit()

double RenderScheduler::guess_display_update_interval_in_seconds_for_num_samples_no_limit ( int num_rendered_samples) const
protected

◆ guess_viewport_navigation_update_interval_in_seconds()

double RenderScheduler::guess_viewport_navigation_update_interval_in_seconds ( ) const
protected

Definition at line 1191 of file render_scheduler.cpp.

References is_denoise_active_during_update().

Referenced by update_start_resolution_divider().

◆ is_adaptive_sampling_used()

bool RenderScheduler::is_adaptive_sampling_used ( ) const

Definition at line 71 of file render_scheduler.cpp.

References adaptive_sampling_.

◆ is_background()

bool RenderScheduler::is_background ( ) const

Definition at line 41 of file render_scheduler.cpp.

References background_.

◆ is_denoise_active_during_update()

bool RenderScheduler::is_denoise_active_during_update ( ) const
protected

◆ is_denoiser_gpu_used()

bool RenderScheduler::is_denoiser_gpu_used ( ) const

Definition at line 51 of file render_scheduler.cpp.

References denoiser_params_.

◆ render_work_reschedule_on_cancel()

void RenderScheduler::render_work_reschedule_on_cancel ( RenderWork & render_work)

◆ render_work_reschedule_on_converge()

◆ render_work_reschedule_on_idle()

bool RenderScheduler::render_work_reschedule_on_idle ( RenderWork & render_work)

◆ report_adaptive_filter_time()

void RenderScheduler::report_adaptive_filter_time ( const RenderWork & render_work,
const double time,
bool is_cancelled )

◆ report_denoise_time()

void RenderScheduler::report_denoise_time ( const RenderWork & render_work,
const double time )

◆ report_display_update_time()

void RenderScheduler::report_display_update_time ( const RenderWork & render_work,
const double time )

◆ report_path_trace_occupancy()

void RenderScheduler::report_path_trace_occupancy ( const RenderWork & render_work,
const float occupancy )

◆ report_path_trace_time()

void RenderScheduler::report_path_trace_time ( const RenderWork & render_work,
const double time,
bool is_cancelled )

◆ report_rebalance_time()

void RenderScheduler::report_rebalance_time ( const RenderWork & render_work,
const double time,
bool balance_changed )

Definition at line 598 of file render_scheduler.cpp.

References LOG_DEBUG, rebalance_time_, state_, and work_report_reset_average().

◆ report_volume_guiding_denoise_time()

void RenderScheduler::report_volume_guiding_denoise_time ( const RenderWork & render_work,
const double time )

◆ report_work_begin()

void RenderScheduler::report_work_begin ( const RenderWork & render_work)

◆ reset()

◆ reset_for_next_tile()

void RenderScheduler::reset_for_next_tile ( )

Definition at line 180 of file render_scheduler.cpp.

References buffer_params_, and reset().

◆ set_adaptive_sampling()

void RenderScheduler::set_adaptive_sampling ( const AdaptiveSampling & adaptive_sampling)

Definition at line 66 of file render_scheduler.cpp.

References adaptive_sampling_.

◆ set_denoiser_params()

void RenderScheduler::set_denoiser_params ( const DenoiseParams & params)

Definition at line 46 of file render_scheduler.cpp.

References denoiser_params_, and params.

◆ set_full_frame_render_work()

void RenderScheduler::set_full_frame_render_work ( RenderWork * render_work)
protected

Definition at line 428 of file render_scheduler.cpp.

References RenderWork::full, state_, tile_manager_, and RenderWork::write.

Referenced by get_render_work().

◆ set_limit_samples_per_update()

void RenderScheduler::set_limit_samples_per_update ( const int limit_samples)

Definition at line 56 of file render_scheduler.cpp.

References limit_samples_per_update_, and min.

◆ set_need_schedule_cryptomatte()

void RenderScheduler::set_need_schedule_cryptomatte ( bool need_schedule_cryptomatte)

Definition at line 31 of file render_scheduler.cpp.

References need_schedule_cryptomatte_.

◆ set_need_schedule_rebalance()

void RenderScheduler::set_need_schedule_rebalance ( bool need_schedule_rebalance)

Definition at line 36 of file render_scheduler.cpp.

References need_schedule_rebalance_works_.

Referenced by PathTrace::PathTrace().

◆ set_postprocess_render_work()

◆ set_sample_params()

void RenderScheduler::set_sample_params ( const int num_samples,
const bool use_sample_subset,
const int sample_subset_offset,
const int sample_subset_length )

Definition at line 76 of file render_scheduler.cpp.

References max, Integrator::MAX_SAMPLES, min, num_samples_, and sample_offset_.

◆ set_time_limit()

void RenderScheduler::set_time_limit ( const double time_limit)

Definition at line 101 of file render_scheduler.cpp.

References time_limit_.

◆ update_start_resolution_divider()

◆ update_state_for_render_work()

void RenderScheduler::update_state_for_render_work ( const RenderWork & render_work)
protected

◆ volume_guiding_need_denoise()

bool RenderScheduler::volume_guiding_need_denoise ( ) const

Definition at line 994 of file render_scheduler.cpp.

References done(), get_num_rendered_samples(), and is_power_of_two().

◆ work_adaptive_threshold()

float RenderScheduler::work_adaptive_threshold ( ) const
protected

Definition at line 985 of file render_scheduler.cpp.

References adaptive_sampling_, max, state_, and use_progressive_noise_floor_.

Referenced by get_render_work().

◆ work_is_usable_for_first_render_estimation()

bool RenderScheduler::work_is_usable_for_first_render_estimation ( const RenderWork & render_work)
protected

◆ work_need_adaptive_filter()

bool RenderScheduler::work_need_adaptive_filter ( ) const
protected

Definition at line 980 of file render_scheduler.cpp.

References adaptive_sampling_, and get_rendered_sample().

Referenced by get_render_work().

◆ work_need_denoise()

bool RenderScheduler::work_need_denoise ( bool & delayed,
bool & ready_to_display )
protected

◆ work_need_rebalance()

bool RenderScheduler::work_need_rebalance ( )
protected

Definition at line 1109 of file render_scheduler.cpp.

References need_schedule_rebalance_works_, pixel_size_, state_, and time_dt().

Referenced by get_render_work().

◆ work_need_update_display()

bool RenderScheduler::work_need_update_display ( const bool denoiser_delayed)
protected

◆ work_report_reset_average()

bool RenderScheduler::work_report_reset_average ( const RenderWork & render_work)
protected

Member Data Documentation

◆ adaptive_filter_time_

TimeWithAverage RenderScheduler::adaptive_filter_time_
protected

Definition at line 437 of file render_scheduler.h.

Referenced by full_report(), report_adaptive_filter_time(), and reset().

◆ adaptive_sampling_

◆ adaptive_sampling_threshold

float RenderScheduler::adaptive_sampling_threshold = 0.0f

Definition at line 404 of file render_scheduler.h.

◆ background_

◆ buffer_params_

BufferParams RenderScheduler::buffer_params_
protected

◆ default_start_resolution_divider_

int RenderScheduler::default_start_resolution_divider_ = 1
protected

◆ denoise_time

double RenderScheduler::denoise_time

Definition at line 432 of file render_scheduler.h.

◆ denoise_time_

TimeWithAverage RenderScheduler::denoise_time_
protected

Definition at line 438 of file render_scheduler.h.

Referenced by full_report(), report_denoise_time(), and reset().

◆ denoiser_params_

◆ display_update_time

double RenderScheduler::display_update_time

Definition at line 433 of file render_scheduler.h.

◆ display_update_time_

TimeWithAverage RenderScheduler::display_update_time_
protected

Definition at line 439 of file render_scheduler.h.

Referenced by full_report(), report_display_update_time(), and reset().

◆ end_render_time

double RenderScheduler::end_render_time = 0.0

Definition at line 417 of file render_scheduler.h.

◆ [struct]

struct { ... } RenderScheduler::first_render_time_

◆ full_frame_was_written

bool RenderScheduler::full_frame_was_written = false

Definition at line 410 of file render_scheduler.h.

◆ full_frame_work_scheduled

bool RenderScheduler::full_frame_work_scheduled = false

Definition at line 409 of file render_scheduler.h.

◆ headless_

◆ last_display_update_sample

int RenderScheduler::last_display_update_sample = -1

Definition at line 384 of file render_scheduler.h.

◆ last_display_update_time

double RenderScheduler::last_display_update_time = 0.0

Definition at line 382 of file render_scheduler.h.

◆ last_rebalance_changed

bool RenderScheduler::last_rebalance_changed = false

Definition at line 400 of file render_scheduler.h.

◆ last_rebalance_time

double RenderScheduler::last_rebalance_time = 0.0

Definition at line 387 of file render_scheduler.h.

◆ last_work_tile_was_denoised

bool RenderScheduler::last_work_tile_was_denoised = false

Definition at line 406 of file render_scheduler.h.

◆ limit_samples_per_update_

int RenderScheduler::limit_samples_per_update_ = 0
protected

◆ need_rebalance_at_next_work

bool RenderScheduler::need_rebalance_at_next_work = false

Definition at line 396 of file render_scheduler.h.

◆ need_schedule_cryptomatte_

bool RenderScheduler::need_schedule_cryptomatte_ = false
protected

◆ need_schedule_rebalance_works_

bool RenderScheduler::need_schedule_rebalance_works_ = false
protected

Definition at line 450 of file render_scheduler.h.

Referenced by set_need_schedule_rebalance(), and work_need_rebalance().

◆ num_rebalance_changes

int RenderScheduler::num_rebalance_changes = 0

Definition at line 394 of file render_scheduler.h.

◆ num_rebalance_requested

int RenderScheduler::num_rebalance_requested = 0

Definition at line 391 of file render_scheduler.h.

◆ num_rendered_samples

◆ num_samples_

int RenderScheduler::num_samples_ = 0
protected

◆ occupancy

float RenderScheduler::occupancy = 1.0f

Definition at line 424 of file render_scheduler.h.

Referenced by report_path_trace_occupancy().

◆ occupancy_num_samples

int RenderScheduler::occupancy_num_samples = 0

Definition at line 423 of file render_scheduler.h.

◆ path_trace_finished

bool RenderScheduler::path_trace_finished = false

Definition at line 412 of file render_scheduler.h.

◆ path_trace_per_sample

double RenderScheduler::path_trace_per_sample

Definition at line 431 of file render_scheduler.h.

◆ path_trace_time_

◆ pixel_size_

◆ postprocess_work_scheduled

bool RenderScheduler::postprocess_work_scheduled = false

Definition at line 408 of file render_scheduler.h.

◆ rebalance_time_

TimeWithAverage RenderScheduler::rebalance_time_
protected

Definition at line 440 of file render_scheduler.h.

Referenced by full_report(), report_rebalance_time(), and reset().

◆ resolution_divider

int RenderScheduler::resolution_divider = 1

Definition at line 376 of file render_scheduler.h.

Referenced by get_num_samples_during_navigation().

◆ sample_offset_

◆ start_render_time

double RenderScheduler::start_render_time = 0.0

Definition at line 416 of file render_scheduler.h.

◆ start_resolution_divider_

int RenderScheduler::start_resolution_divider_ = 0
protected

Definition at line 488 of file render_scheduler.h.

Referenced by reset(), and update_start_resolution_divider().

◆ [struct]

◆ tile_manager_

TileManager& RenderScheduler::tile_manager_
protected

◆ tile_result_was_written

bool RenderScheduler::tile_result_was_written = false

Definition at line 407 of file render_scheduler.h.

◆ time_limit_

◆ time_limit_reached

bool RenderScheduler::time_limit_reached = false

Definition at line 413 of file render_scheduler.h.

◆ use_progressive_noise_floor_

bool RenderScheduler::use_progressive_noise_floor_ = false
protected

◆ user_is_navigating

bool RenderScheduler::user_is_navigating = false

Definition at line 374 of file render_scheduler.h.

◆ volume_guiding_denoise_time_

TimeWithAverage RenderScheduler::volume_guiding_denoise_time_
protected

Definition at line 441 of file render_scheduler.h.

Referenced by report_volume_guiding_denoise_time(), and reset().


The documentation for this class was generated from the following files: