Blender V4.3
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_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
 
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 (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 { 
 
   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_
 
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
 
int limit_samples_per_update_ = 0
 

Detailed Description

Definition at line 88 of file render_scheduler.h.

Constructor & Destructor Documentation

◆ RenderScheduler()

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

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

◆ get_num_samples()

int RenderScheduler::get_num_samples ( ) const

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

◆ get_render_work()

◆ get_rendered_sample()

int RenderScheduler::get_rendered_sample ( ) const

◆ get_sample_offset()

int RenderScheduler::get_sample_offset ( ) const

Definition at line 94 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 74 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 797 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 104 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 1156 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 64 of file render_scheduler.cpp.

References adaptive_sampling_, and AdaptiveSampling::use.

◆ is_background()

bool RenderScheduler::is_background ( ) const

Definition at line 39 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

◆ render_work_reschedule_on_cancel()

◆ render_work_reschedule_on_converge()

◆ render_work_reschedule_on_idle()

◆ report_adaptive_filter_time()

◆ report_denoise_time()

◆ report_display_update_time()

◆ report_path_trace_occupancy()

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

◆ report_path_trace_time()

◆ report_rebalance_time()

◆ report_work_begin()

void RenderScheduler::report_work_begin ( const RenderWork & render_work)

◆ reset()

◆ 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 59 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 44 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_limit_samples_per_update()

void RenderScheduler::set_limit_samples_per_update ( const int limit_samples)

Definition at line 54 of file render_scheduler.cpp.

References limit_samples_per_update_.

Referenced by PathTrace::guiding_prepare_structures().

◆ set_need_schedule_cryptomatte()

void RenderScheduler::set_need_schedule_cryptomatte ( bool need_schedule_cryptomatte)

Definition at line 29 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 34 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 79 of file render_scheduler.cpp.

References num_samples_.

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

◆ set_postprocess_render_work()

◆ set_sample_offset()

void RenderScheduler::set_sample_offset ( int sample_offset)

Definition at line 89 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 69 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 99 of file render_scheduler.cpp.

References time_limit_.

Referenced by Session::run_update_for_next_iteration().

◆ update_start_resolution_divider()

◆ 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()

◆ work_need_rebalance()

bool RenderScheduler::work_need_rebalance ( )
protected

Definition at line 1074 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 410 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 377 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

Definition at line 459 of file render_scheduler.h.

Referenced by get_render_work(), and update_start_resolution_divider().

◆ denoise_time

double RenderScheduler::denoise_time

Definition at line 405 of file render_scheduler.h.

◆ denoise_time_

TimeWithAverage RenderScheduler::denoise_time_
protected

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

◆ display_update_time_

TimeWithAverage RenderScheduler::display_update_time_
protected

Definition at line 412 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 390 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 383 of file render_scheduler.h.

◆ full_frame_work_scheduled

bool RenderScheduler::full_frame_work_scheduled = false

Definition at line 382 of file render_scheduler.h.

◆ headless_

◆ last_display_update_sample

int RenderScheduler::last_display_update_sample = -1

Definition at line 357 of file render_scheduler.h.

◆ last_display_update_time

double RenderScheduler::last_display_update_time = 0.0

Definition at line 355 of file render_scheduler.h.

◆ last_rebalance_changed

bool RenderScheduler::last_rebalance_changed = false

Definition at line 373 of file render_scheduler.h.

◆ last_rebalance_time

double RenderScheduler::last_rebalance_time = 0.0

Definition at line 360 of file render_scheduler.h.

◆ last_work_tile_was_denoised

bool RenderScheduler::last_work_tile_was_denoised = false

Definition at line 379 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 369 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 422 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 367 of file render_scheduler.h.

◆ num_rebalance_requested

int RenderScheduler::num_rebalance_requested = 0

Definition at line 364 of file render_scheduler.h.

◆ num_rendered_samples

◆ num_samples_

◆ occupancy

float RenderScheduler::occupancy = 1.0f

Definition at line 397 of file render_scheduler.h.

Referenced by report_path_trace_occupancy().

◆ occupancy_num_samples

int RenderScheduler::occupancy_num_samples = 0

Definition at line 396 of file render_scheduler.h.

◆ path_trace_finished

bool RenderScheduler::path_trace_finished = false

Definition at line 385 of file render_scheduler.h.

◆ path_trace_per_sample

double RenderScheduler::path_trace_per_sample

Definition at line 404 of file render_scheduler.h.

◆ path_trace_time_

◆ pixel_size_

◆ postprocess_work_scheduled

bool RenderScheduler::postprocess_work_scheduled = false

Definition at line 381 of file render_scheduler.h.

◆ rebalance_time_

TimeWithAverage RenderScheduler::rebalance_time_
protected

Definition at line 413 of file render_scheduler.h.

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

◆ resolution_divider

int RenderScheduler::resolution_divider = 1

Definition at line 349 of file render_scheduler.h.

Referenced by get_num_samples_during_navigation().

◆ sample_offset_

int RenderScheduler::sample_offset_ = 0
protected

◆ start_render_time

double RenderScheduler::start_render_time = 0.0

Definition at line 389 of file render_scheduler.h.

◆ start_resolution_divider_

int RenderScheduler::start_resolution_divider_ = 0
protected

Definition at line 462 of file render_scheduler.h.

Referenced by reset(), and update_start_resolution_divider().

◆ start_sample_

◆ [struct]

◆ tile_manager_

TileManager& RenderScheduler::tile_manager_
protected

◆ tile_result_was_written

bool RenderScheduler::tile_result_was_written = false

Definition at line 380 of file render_scheduler.h.

◆ time_limit_

◆ time_limit_reached

bool RenderScheduler::time_limit_reached = false

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


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