Blender  V3.3
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
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)
 
void set_adaptive_sampling (const AdaptiveSampling &adaptive_sampling)
 
bool is_adaptive_sampling_used () const
 
void set_start_sample (int start_sample)
 
int get_start_sample () const
 
void set_num_samples (int num_samples)
 
int get_num_samples () const
 
void set_sample_offset (int sample_offset)
 
int get_sample_offset () const
 
void set_time_limit (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, int num_samples, int sample_offset)
 
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, double time, bool is_cancelled)
 
void report_path_trace_occupancy (const RenderWork &render_work, float occupancy)
 
void report_adaptive_filter_time (const RenderWork &render_work, double time, bool is_cancelled)
 
void report_denoise_time (const RenderWork &render_work, double time)
 
void report_display_update_time (const RenderWork &render_work, double time)
 
void report_rebalance_time (const RenderWork &render_work, double time, bool balance_changed)
 
string full_report () const
 

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 (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 (int resolution_divier) 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 (double desired_time, double actual_time)
 

Protected Attributes

struct {
   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_
 
bool need_schedule_cryptomatte_ = false
 
bool need_schedule_rebalance_works_ = false
 
int start_sample_ = 0
 
int num_samples_ = 0
 
int sample_offset_ = 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
 

Detailed Description

Definition at line 87 of file render_scheduler.h.

Constructor & Destructor Documentation

◆ RenderScheduler()

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

Definition at line 18 of file render_scheduler.cpp.

References background_, and use_progressive_noise_floor_.

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 ( double  desired_time,
double  actual_time 
)
protected

◆ check_time_limit_reached()

void RenderScheduler::check_time_limit_reached ( )
protected

Definition at line 1150 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()

string RenderScheduler::full_report ( ) const

◆ get_num_rendered_samples()

int RenderScheduler::get_num_rendered_samples ( ) const

◆ get_num_samples()

int RenderScheduler::get_num_samples ( ) const

Definition at line 73 of file render_scheduler.cpp.

References num_samples_.

Referenced by Session::update_status_time().

◆ get_num_samples_during_navigation()

int RenderScheduler::get_num_samples_during_navigation ( int  resolution_divier) const
protected

◆ get_num_samples_to_path_trace()

int RenderScheduler::get_num_samples_to_path_trace ( ) const
protected

◆ get_render_work()

RenderWork RenderScheduler::get_render_work ( )

◆ get_rendered_sample()

int RenderScheduler::get_rendered_sample ( ) const

◆ get_sample_offset()

int RenderScheduler::get_sample_offset ( ) const

Definition at line 83 of file render_scheduler.cpp.

References sample_offset_.

Referenced by get_render_work().

◆ get_start_sample()

int RenderScheduler::get_start_sample ( ) const

Definition at line 63 of file render_scheduler.cpp.

References start_sample_.

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 766 of file render_scheduler.cpp.

References start_sample_, 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 93 of file render_scheduler.cpp.

References time_limit_.

Referenced by Session::get_estimated_remaining_time().

◆ 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 ( 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 1099 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 53 of file render_scheduler.cpp.

References adaptive_sampling_, and AdaptiveSampling::use.

◆ is_background()

bool RenderScheduler::is_background ( ) const

Definition at line 38 of file render_scheduler.cpp.

References background_.

◆ is_denoise_active_during_update()

bool RenderScheduler::is_denoise_active_during_update ( ) const
protected

◆ render_work_reschedule_on_cancel()

void RenderScheduler::render_work_reschedule_on_cancel ( RenderWork render_work)

◆ render_work_reschedule_on_converge()

bool RenderScheduler::render_work_reschedule_on_converge ( RenderWork render_work)

◆ 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,
double  time,
bool  is_cancelled 
)

◆ report_denoise_time()

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

◆ report_display_update_time()

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

◆ report_path_trace_occupancy()

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

◆ report_path_trace_time()

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

◆ report_rebalance_time()

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

◆ report_work_begin()

void RenderScheduler::report_work_begin ( const RenderWork render_work)

◆ reset()

void RenderScheduler::reset ( const BufferParams buffer_params,
int  num_samples,
int  sample_offset 
)

◆ reset_for_next_tile()

void RenderScheduler::reset_for_next_tile ( )

◆ set_adaptive_sampling()

void RenderScheduler::set_adaptive_sampling ( const AdaptiveSampling adaptive_sampling)

Definition at line 48 of file render_scheduler.cpp.

References adaptive_sampling_.

Referenced by PathTrace::set_adaptive_sampling().

◆ set_denoiser_params()

void RenderScheduler::set_denoiser_params ( const DenoiseParams params)

Definition at line 43 of file render_scheduler.cpp.

References denoiser_params_, and params.

Referenced by PathTrace::set_denoiser_params().

◆ set_full_frame_render_work()

void RenderScheduler::set_full_frame_render_work ( RenderWork render_work)
protected

◆ set_need_schedule_cryptomatte()

void RenderScheduler::set_need_schedule_cryptomatte ( bool  need_schedule_cryptomatte)

Definition at line 28 of file render_scheduler.cpp.

References need_schedule_cryptomatte_.

Referenced by PathTrace::render_pipeline().

◆ set_need_schedule_rebalance()

void RenderScheduler::set_need_schedule_rebalance ( bool  need_schedule_rebalance)

Definition at line 33 of file render_scheduler.cpp.

References need_schedule_rebalance_works_.

Referenced by PathTrace::PathTrace().

◆ set_num_samples()

void RenderScheduler::set_num_samples ( int  num_samples)

Definition at line 68 of file render_scheduler.cpp.

References num_samples, and num_samples_.

Referenced by reset(), and Session::run_update_for_next_iteration().

◆ set_postprocess_render_work()

bool RenderScheduler::set_postprocess_render_work ( RenderWork render_work)
protected

◆ set_sample_offset()

void RenderScheduler::set_sample_offset ( int  sample_offset)

Definition at line 78 of file render_scheduler.cpp.

References sample_offset_.

Referenced by reset().

◆ set_start_sample()

void RenderScheduler::set_start_sample ( int  start_sample)

Definition at line 58 of file render_scheduler.cpp.

References start_sample_.

Referenced by reset(), and Session::run_update_for_next_iteration().

◆ set_time_limit()

void RenderScheduler::set_time_limit ( double  time_limit)

Definition at line 88 of file render_scheduler.cpp.

References time_limit_.

Referenced by Session::run_update_for_next_iteration().

◆ update_start_resolution_divider()

void RenderScheduler::update_start_resolution_divider ( )
protected

◆ update_state_for_render_work()

void RenderScheduler::update_state_for_render_work ( const RenderWork render_work)
protected

◆ work_adaptive_threshold()

float RenderScheduler::work_adaptive_threshold ( ) const
protected

◆ 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

◆ 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 1023 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 394 of file render_scheduler.h.

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

◆ adaptive_sampling_

AdaptiveSampling RenderScheduler::adaptive_sampling_
protected

◆ adaptive_sampling_threshold

float RenderScheduler::adaptive_sampling_threshold = 0.0f

Definition at line 361 of file render_scheduler.h.

◆ background_

bool RenderScheduler::background_
protected

◆ buffer_params_

BufferParams RenderScheduler::buffer_params_
protected

Definition at line 431 of file render_scheduler.h.

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

◆ default_start_resolution_divider_

int RenderScheduler::default_start_resolution_divider_ = 1
protected

◆ denoise_time

double RenderScheduler::denoise_time

Definition at line 389 of file render_scheduler.h.

◆ denoise_time_

TimeWithAverage RenderScheduler::denoise_time_
protected

Definition at line 395 of file render_scheduler.h.

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

◆ denoiser_params_

DenoiseParams RenderScheduler::denoiser_params_
protected

◆ display_update_time

double RenderScheduler::display_update_time

Definition at line 390 of file render_scheduler.h.

◆ display_update_time_

TimeWithAverage RenderScheduler::display_update_time_
protected

Definition at line 396 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 374 of file render_scheduler.h.

◆ 

struct { ... } RenderScheduler::first_render_time_

◆ full_frame_was_written

bool RenderScheduler::full_frame_was_written = false

Definition at line 367 of file render_scheduler.h.

◆ full_frame_work_scheduled

bool RenderScheduler::full_frame_work_scheduled = false

Definition at line 366 of file render_scheduler.h.

◆ headless_

bool RenderScheduler::headless_
protected

◆ last_display_update_sample

int RenderScheduler::last_display_update_sample = -1

Definition at line 341 of file render_scheduler.h.

◆ last_display_update_time

double RenderScheduler::last_display_update_time = 0.0

Definition at line 339 of file render_scheduler.h.

◆ last_rebalance_changed

bool RenderScheduler::last_rebalance_changed = false

Definition at line 357 of file render_scheduler.h.

◆ last_rebalance_time

double RenderScheduler::last_rebalance_time = 0.0

Definition at line 344 of file render_scheduler.h.

◆ last_work_tile_was_denoised

bool RenderScheduler::last_work_tile_was_denoised = false

Definition at line 363 of file render_scheduler.h.

◆ need_rebalance_at_next_work

bool RenderScheduler::need_rebalance_at_next_work = false

Definition at line 353 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 406 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 351 of file render_scheduler.h.

◆ num_rebalance_requested

int RenderScheduler::num_rebalance_requested = 0

Definition at line 348 of file render_scheduler.h.

◆ num_rendered_samples

int RenderScheduler::num_rendered_samples = 0

◆ num_samples_

int RenderScheduler::num_samples_ = 0
protected

◆ occupancy

float RenderScheduler::occupancy = 1.0f

Definition at line 381 of file render_scheduler.h.

Referenced by report_path_trace_occupancy().

◆ occupancy_num_samples

int RenderScheduler::occupancy_num_samples = 0

Definition at line 380 of file render_scheduler.h.

◆ path_trace_finished

bool RenderScheduler::path_trace_finished = false

Definition at line 369 of file render_scheduler.h.

◆ path_trace_per_sample

double RenderScheduler::path_trace_per_sample

Definition at line 388 of file render_scheduler.h.

◆ path_trace_time_

TimeWithAverage RenderScheduler::path_trace_time_
protected

◆ pixel_size_

int RenderScheduler::pixel_size_ = 1
protected

◆ postprocess_work_scheduled

bool RenderScheduler::postprocess_work_scheduled = false

Definition at line 365 of file render_scheduler.h.

◆ rebalance_time_

TimeWithAverage RenderScheduler::rebalance_time_
protected

Definition at line 397 of file render_scheduler.h.

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

◆ resolution_divider

int RenderScheduler::resolution_divider = 1

◆ sample_offset_

int RenderScheduler::sample_offset_ = 0
protected

◆ start_render_time

double RenderScheduler::start_render_time = 0.0

Definition at line 373 of file render_scheduler.h.

◆ start_resolution_divider_

int RenderScheduler::start_resolution_divider_ = 0
protected

Definition at line 446 of file render_scheduler.h.

Referenced by reset(), and update_start_resolution_divider().

◆ start_sample_

int RenderScheduler::start_sample_ = 0
protected

◆ 

struct { ... } RenderScheduler::state_

◆ tile_manager_

TileManager& RenderScheduler::tile_manager_
protected

◆ tile_result_was_written

bool RenderScheduler::tile_result_was_written = false

Definition at line 364 of file render_scheduler.h.

◆ time_limit_

double RenderScheduler::time_limit_ = 0.0
protected

◆ time_limit_reached

bool RenderScheduler::time_limit_reached = false

Definition at line 370 of file render_scheduler.h.

◆ use_progressive_noise_floor_

bool RenderScheduler::use_progressive_noise_floor_ = false
protected

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