|
Blender V5.0
|
#include <render_scheduler.h>
Classes | |
| class | TimeWithAverage |
Public Member Functions | |
| RenderScheduler (TileManager &tile_manager, const SessionParams ¶ms) | |
| 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 ¶ms) |
| 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) |
Definition at line 90 of file render_scheduler.h.
| CCL_NAMESPACE_BEGIN RenderScheduler::RenderScheduler | ( | TileManager & | tile_manager, |
| const SessionParams & | params ) |
Definition at line 21 of file render_scheduler.cpp.
References background_, default_start_resolution_divider_, headless_, params, pixel_size_, tile_manager_, and use_progressive_noise_floor_.
|
protected |
Definition at line 795 of file render_scheduler.cpp.
References guess_display_update_interval_in_seconds(), max, path_trace_time_, and pixel_size_.
Referenced by get_num_samples_to_path_trace().
|
protected |
Definition at line 1269 of file render_scheduler.cpp.
References ceil_to_int(), get_num_samples_during_navigation(), and sqrt.
Referenced by update_start_resolution_divider().
|
protected |
Definition at line 1242 of file render_scheduler.cpp.
References state_, time_dt(), and time_limit_.
Referenced by get_render_work().
|
protected |
Definition at line 281 of file render_scheduler.cpp.
References get_num_rendered_samples(), num_samples_, pixel_size_, and state_.
Referenced by get_render_work(), volume_guiding_need_denoise(), work_need_denoise(), and work_need_update_display().
| string RenderScheduler::full_report | ( | ) | const |
Definition at line 619 of file render_scheduler.cpp.
References adaptive_filter_time_, adaptive_sampling_, background_, buffer_params_, denoise_time_, denoiser_params_, denoiserTypeToHumanReadable(), display_update_time_, get_num_rendered_samples(), headless_, num_rendered_samples, path_trace_time_, rebalance_time_, result, state_, string_from_bool(), string_printf(), to_string(), and total_time.
| int RenderScheduler::get_num_rendered_samples | ( | ) | const |
Definition at line 118 of file render_scheduler.cpp.
References state_.
Referenced by done(), full_report(), get_rendered_sample(), render_work_reschedule_on_cancel(), and volume_guiding_need_denoise().
| int RenderScheduler::get_num_samples | ( | ) | const |
Definition at line 91 of file render_scheduler.cpp.
References num_samples_.
|
protected |
Definition at line 956 of file render_scheduler.cpp.
References is_denoise_active_during_update(), max, min, num_samples_, pixel_size_, and resolution_divider.
Referenced by calculate_resolution_divider_for_time(), and get_num_samples_to_path_trace().
|
protected |
Definition at line 842 of file render_scheduler.cpp.
References adaptive_sampling_, background_, calculate_num_samples_per_update(), get_num_samples_during_navigation(), get_start_sample_to_path_trace(), guess_display_update_interval_in_seconds(), headless_, limit_samples_per_update_, max, min, num_samples_, path_trace_time_, pixel_size_, round_num_samples_to_power_of_2(), sample_offset_, state_, time_dt(), and time_limit_.
Referenced by get_render_work().
| RenderWork RenderScheduler::get_render_work | ( | ) |
Definition at line 294 of file render_scheduler.cpp.
References RenderWork::adaptive_sampling, check_time_limit_reached(), default_start_resolution_divider_, RenderWork::denoise, RenderWork::display, done(), RenderWork::filter, get_num_samples_to_path_trace(), get_sample_offset(), get_start_sample_to_path_trace(), RenderWork::init_render_buffers, max, RenderWork::num_samples, RenderWork::path_trace, pixel_size_, RenderWork::rebalance, RenderWork::reset, RenderWork::resolution_divider, RenderWork::sample_offset, set_full_frame_render_work(), set_postprocess_render_work(), RenderWork::start_sample, state_, RenderWork::threshold, RenderWork::tile, time_dt(), RenderWork::update, update_state_for_render_work(), RenderWork::use_denoised_result, work_adaptive_threshold(), work_need_adaptive_filter(), work_need_denoise(), work_need_rebalance(), work_need_update_display(), and RenderWork::write.
| 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().
| 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().
|
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().
| double RenderScheduler::get_time_limit | ( | ) | const |
Definition at line 106 of file render_scheduler.cpp.
References time_limit_.
|
protected |
Definition at line 724 of file render_scheduler.cpp.
References guess_display_update_interval_in_seconds_for_num_samples(), and state_.
Referenced by calculate_num_samples_per_update(), and get_num_samples_to_path_trace().
|
protected |
Definition at line 729 of file render_scheduler.cpp.
References guess_display_update_interval_in_seconds_for_num_samples_no_limit(), max, min, num_rendered_samples, state_, time_dt(), and time_limit_.
Referenced by guess_display_update_interval_in_seconds(), and work_need_update_display().
|
protected |
Definition at line 747 of file render_scheduler.cpp.
References background_, headless_, num_rendered_samples, path_trace_time_, and state_.
Referenced by guess_display_update_interval_in_seconds_for_num_samples().
|
protected |
Definition at line 1191 of file render_scheduler.cpp.
References is_denoise_active_during_update().
Referenced by update_start_resolution_divider().
| bool RenderScheduler::is_adaptive_sampling_used | ( | ) | const |
Definition at line 71 of file render_scheduler.cpp.
References adaptive_sampling_.
| bool RenderScheduler::is_background | ( | ) | const |
Definition at line 41 of file render_scheduler.cpp.
References background_.
|
protected |
Definition at line 1213 of file render_scheduler.cpp.
References denoiser_params_.
Referenced by get_num_samples_during_navigation(), and guess_viewport_navigation_update_interval_in_seconds().
| bool RenderScheduler::is_denoiser_gpu_used | ( | ) | const |
Definition at line 51 of file render_scheduler.cpp.
References denoiser_params_.
| void RenderScheduler::render_work_reschedule_on_cancel | ( | RenderWork & | render_work | ) |
Definition at line 236 of file render_scheduler.cpp.
References RenderWork::display, RenderWork::full, get_num_rendered_samples(), LOG_DEBUG, RenderWork::num_samples, RenderWork::path_trace, state_, RenderWork::tile, RenderWork::update, and RenderWork::write.
| bool RenderScheduler::render_work_reschedule_on_converge | ( | RenderWork & | render_work | ) |
Definition at line 185 of file render_scheduler.cpp.
References RenderWork::denoise, RenderWork::display, pixel_size_, render_work_reschedule_on_idle(), state_, RenderWork::tile, RenderWork::update, RenderWork::use_denoised_result, work_need_denoise(), and work_need_update_display().
| bool RenderScheduler::render_work_reschedule_on_idle | ( | RenderWork & | render_work | ) |
Definition at line 209 of file render_scheduler.cpp.
References RenderWork::adaptive_sampling, adaptive_sampling_, max, pixel_size_, RenderWork::reset, state_, RenderWork::threshold, and use_progressive_noise_floor_.
Referenced by render_work_reschedule_on_converge().
| void RenderScheduler::report_adaptive_filter_time | ( | const RenderWork & | render_work, |
| const double | time, | ||
| bool | is_cancelled ) |
Definition at line 515 of file render_scheduler.cpp.
References adaptive_filter_time_, approximate_final_time(), LOG_DEBUG, RenderWork::num_samples, RenderWork::path_trace, and work_report_reset_average().
| void RenderScheduler::report_denoise_time | ( | const RenderWork & | render_work, |
| const double | time ) |
Definition at line 537 of file render_scheduler.cpp.
References approximate_final_time(), denoise_time_, first_render_time_, LOG_DEBUG, work_is_usable_for_first_render_estimation(), and work_report_reset_average().
| void RenderScheduler::report_display_update_time | ( | const RenderWork & | render_work, |
| const double | time ) |
Definition at line 573 of file render_scheduler.cpp.
References approximate_final_time(), display_update_time_, first_render_time_, LOG_DEBUG, state_, time_dt(), work_is_usable_for_first_render_estimation(), and work_report_reset_average().
| void RenderScheduler::report_path_trace_occupancy | ( | const RenderWork & | render_work, |
| const float | occupancy ) |
Definition at line 507 of file render_scheduler.cpp.
References LOG_DEBUG, RenderWork::num_samples, occupancy, RenderWork::path_trace, and state_.
| void RenderScheduler::report_path_trace_time | ( | const RenderWork & | render_work, |
| const double | time, | ||
| bool | is_cancelled ) |
Definition at line 481 of file render_scheduler.cpp.
References approximate_final_time(), first_render_time_, LOG_DEBUG, RenderWork::num_samples, RenderWork::path_trace, path_trace_time_, work_is_usable_for_first_render_estimation(), and work_report_reset_average().
| 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().
| void RenderScheduler::report_volume_guiding_denoise_time | ( | const RenderWork & | render_work, |
| const double | time ) |
Definition at line 556 of file render_scheduler.cpp.
References approximate_final_time(), LOG_DEBUG, RenderWork::num_samples, RenderWork::path_trace, volume_guiding_denoise_time_, and work_report_reset_average().
| void RenderScheduler::report_work_begin | ( | const RenderWork & | render_work | ) |
Definition at line 466 of file render_scheduler.cpp.
References get_sample_offset(), RenderWork::num_samples, RenderWork::path_trace, pixel_size_, RenderWork::resolution_divider, RenderWork::start_sample, state_, and time_dt().
| void RenderScheduler::reset | ( | const BufferParams & | buffer_params | ) |
Definition at line 123 of file render_scheduler.cpp.
References adaptive_filter_time_, background_, buffer_params_, denoise_time_, display_update_time_, first_render_time_, path_trace_time_, rebalance_time_, start_resolution_divider_, state_, update_start_resolution_divider(), and volume_guiding_denoise_time_.
| void RenderScheduler::reset_for_next_tile | ( | ) |
Definition at line 180 of file render_scheduler.cpp.
References buffer_params_, and reset().
| void RenderScheduler::set_adaptive_sampling | ( | const AdaptiveSampling & | adaptive_sampling | ) |
Definition at line 66 of file render_scheduler.cpp.
References adaptive_sampling_.
| void RenderScheduler::set_denoiser_params | ( | const DenoiseParams & | params | ) |
Definition at line 46 of file render_scheduler.cpp.
References denoiser_params_, and params.
|
protected |
Definition at line 428 of file render_scheduler.cpp.
References RenderWork::full, state_, tile_manager_, and RenderWork::write.
Referenced by get_render_work().
| 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.
| void RenderScheduler::set_need_schedule_cryptomatte | ( | bool | need_schedule_cryptomatte | ) |
Definition at line 31 of file render_scheduler.cpp.
References need_schedule_cryptomatte_.
| 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().
|
protected |
Definition at line 397 of file render_scheduler.cpp.
References RenderWork::cryptomatte, RenderWork::denoise, denoiser_params_, RenderWork::display, need_schedule_cryptomatte_, RenderWork::postprocess, state_, RenderWork::tile, tile_manager_, RenderWork::update, and RenderWork::write.
Referenced by get_render_work().
| 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_.
| void RenderScheduler::set_time_limit | ( | const double | time_limit | ) |
Definition at line 101 of file render_scheduler.cpp.
References time_limit_.
|
protected |
Definition at line 1143 of file render_scheduler.cpp.
References buffer_params_, calculate_resolution_divider_for_time(), default_start_resolution_divider_, first_render_time_, guess_viewport_navigation_update_interval_in_seconds(), LOG_DEBUG, max, min, and start_resolution_divider_.
Referenced by reset().
|
protected |
Definition at line 376 of file render_scheduler.cpp.
References RenderWork::denoise, RenderWork::display, RenderWork::full, RenderWork::rebalance, state_, RenderWork::tile, time_dt(), RenderWork::update, and RenderWork::write.
Referenced by get_render_work().
| 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().
|
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().
|
protected |
Definition at line 1226 of file render_scheduler.cpp.
References RenderWork::path_trace, pixel_size_, RenderWork::resolution_divider, sample_offset_, and RenderWork::start_sample.
Referenced by report_denoise_time(), report_display_update_time(), and report_path_trace_time().
|
protected |
Definition at line 980 of file render_scheduler.cpp.
References adaptive_sampling_, and get_rendered_sample().
Referenced by get_render_work().
|
protected |
Definition at line 1008 of file render_scheduler.cpp.
References background_, denoiser_params_, done(), num_samples_, path_trace_time_, pixel_size_, state_, tile_manager_, and time_dt().
Referenced by get_render_work(), and render_work_reschedule_on_converge().
|
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().
|
protected |
Definition at line 1066 of file render_scheduler.cpp.
References adaptive_sampling_, done(), guess_display_update_interval_in_seconds_for_num_samples(), headless_, state_, and time_dt().
Referenced by get_render_work(), and render_work_reschedule_on_converge().
|
protected |
Definition at line 1232 of file render_scheduler.cpp.
References pixel_size_, and RenderWork::resolution_divider.
Referenced by report_adaptive_filter_time(), report_denoise_time(), report_display_update_time(), report_path_trace_time(), report_rebalance_time(), and report_volume_guiding_denoise_time().
|
protected |
Definition at line 437 of file render_scheduler.h.
Referenced by full_report(), report_adaptive_filter_time(), and reset().
|
protected |
Definition at line 476 of file render_scheduler.h.
Referenced by full_report(), get_num_samples_to_path_trace(), is_adaptive_sampling_used(), render_work_reschedule_on_idle(), set_adaptive_sampling(), work_adaptive_threshold(), work_need_adaptive_filter(), and work_need_update_display().
| float RenderScheduler::adaptive_sampling_threshold = 0.0f |
Definition at line 404 of file render_scheduler.h.
|
protected |
Definition at line 465 of file render_scheduler.h.
Referenced by full_report(), get_num_samples_to_path_trace(), guess_display_update_interval_in_seconds_for_num_samples_no_limit(), is_background(), RenderScheduler(), reset(), and work_need_denoise().
|
protected |
Definition at line 473 of file render_scheduler.h.
Referenced by full_report(), reset(), reset_for_next_tile(), and update_start_resolution_divider().
|
protected |
Definition at line 485 of file render_scheduler.h.
Referenced by get_render_work(), RenderScheduler(), and update_start_resolution_divider().
| double RenderScheduler::denoise_time |
Definition at line 432 of file render_scheduler.h.
|
protected |
Definition at line 438 of file render_scheduler.h.
Referenced by full_report(), report_denoise_time(), and reset().
|
protected |
Definition at line 474 of file render_scheduler.h.
Referenced by full_report(), is_denoise_active_during_update(), is_denoiser_gpu_used(), set_denoiser_params(), set_postprocess_render_work(), and work_need_denoise().
| double RenderScheduler::display_update_time |
Definition at line 433 of file render_scheduler.h.
|
protected |
Definition at line 439 of file render_scheduler.h.
Referenced by full_report(), report_display_update_time(), and reset().
| double RenderScheduler::end_render_time = 0.0 |
Definition at line 417 of file render_scheduler.h.
| struct { ... } RenderScheduler::first_render_time_ |
| bool RenderScheduler::full_frame_was_written = false |
Definition at line 410 of file render_scheduler.h.
| bool RenderScheduler::full_frame_work_scheduled = false |
Definition at line 409 of file render_scheduler.h.
|
protected |
Definition at line 462 of file render_scheduler.h.
Referenced by full_report(), get_num_samples_to_path_trace(), guess_display_update_interval_in_seconds_for_num_samples_no_limit(), RenderScheduler(), and work_need_update_display().
| int RenderScheduler::last_display_update_sample = -1 |
Definition at line 384 of file render_scheduler.h.
| double RenderScheduler::last_display_update_time = 0.0 |
Definition at line 382 of file render_scheduler.h.
| bool RenderScheduler::last_rebalance_changed = false |
Definition at line 400 of file render_scheduler.h.
| double RenderScheduler::last_rebalance_time = 0.0 |
Definition at line 387 of file render_scheduler.h.
| bool RenderScheduler::last_work_tile_was_denoised = false |
Definition at line 406 of file render_scheduler.h.
|
protected |
Definition at line 498 of file render_scheduler.h.
Referenced by get_num_samples_to_path_trace(), and set_limit_samples_per_update().
| bool RenderScheduler::need_rebalance_at_next_work = false |
Definition at line 396 of file render_scheduler.h.
|
protected |
Definition at line 444 of file render_scheduler.h.
Referenced by set_need_schedule_cryptomatte(), and set_postprocess_render_work().
|
protected |
Definition at line 450 of file render_scheduler.h.
Referenced by set_need_schedule_rebalance(), and work_need_rebalance().
| int RenderScheduler::num_rebalance_changes = 0 |
Definition at line 394 of file render_scheduler.h.
| int RenderScheduler::num_rebalance_requested = 0 |
Definition at line 391 of file render_scheduler.h.
| int RenderScheduler::num_rendered_samples = 0 |
Definition at line 379 of file render_scheduler.h.
Referenced by full_report(), guess_display_update_interval_in_seconds_for_num_samples(), and guess_display_update_interval_in_seconds_for_num_samples_no_limit().
|
protected |
Definition at line 455 of file render_scheduler.h.
Referenced by done(), get_num_samples(), get_num_samples_during_navigation(), get_num_samples_to_path_trace(), set_sample_params(), and work_need_denoise().
| float RenderScheduler::occupancy = 1.0f |
Definition at line 424 of file render_scheduler.h.
Referenced by report_path_trace_occupancy().
| int RenderScheduler::occupancy_num_samples = 0 |
Definition at line 423 of file render_scheduler.h.
| bool RenderScheduler::path_trace_finished = false |
Definition at line 412 of file render_scheduler.h.
| double RenderScheduler::path_trace_per_sample |
Definition at line 431 of file render_scheduler.h.
|
protected |
Definition at line 436 of file render_scheduler.h.
Referenced by calculate_num_samples_per_update(), full_report(), get_num_samples_to_path_trace(), guess_display_update_interval_in_seconds_for_num_samples_no_limit(), report_path_trace_time(), reset(), and work_need_denoise().
|
protected |
Definition at line 469 of file render_scheduler.h.
Referenced by calculate_num_samples_per_update(), done(), get_num_samples_during_navigation(), get_num_samples_to_path_trace(), get_render_work(), render_work_reschedule_on_converge(), render_work_reschedule_on_idle(), RenderScheduler(), report_work_begin(), work_is_usable_for_first_render_estimation(), work_need_denoise(), work_need_rebalance(), and work_report_reset_average().
| bool RenderScheduler::postprocess_work_scheduled = false |
Definition at line 408 of file render_scheduler.h.
|
protected |
Definition at line 440 of file render_scheduler.h.
Referenced by full_report(), report_rebalance_time(), and reset().
| int RenderScheduler::resolution_divider = 1 |
Definition at line 376 of file render_scheduler.h.
Referenced by get_num_samples_during_navigation().
|
protected |
Definition at line 454 of file render_scheduler.h.
Referenced by get_num_samples_to_path_trace(), get_sample_offset(), get_start_sample_to_path_trace(), set_sample_params(), and work_is_usable_for_first_render_estimation().
| double RenderScheduler::start_render_time = 0.0 |
Definition at line 416 of file render_scheduler.h.
|
protected |
Definition at line 488 of file render_scheduler.h.
Referenced by reset(), and update_start_resolution_divider().
| struct { ... } RenderScheduler::state_ |
Referenced by check_time_limit_reached(), done(), full_report(), get_num_rendered_samples(), get_num_samples_to_path_trace(), get_render_work(), get_start_sample_to_path_trace(), guess_display_update_interval_in_seconds(), guess_display_update_interval_in_seconds_for_num_samples(), guess_display_update_interval_in_seconds_for_num_samples_no_limit(), render_work_reschedule_on_cancel(), render_work_reschedule_on_converge(), render_work_reschedule_on_idle(), report_display_update_time(), report_path_trace_occupancy(), report_rebalance_time(), report_work_begin(), reset(), set_full_frame_render_work(), set_postprocess_render_work(), update_state_for_render_work(), work_adaptive_threshold(), work_need_denoise(), work_need_rebalance(), and work_need_update_display().
|
protected |
Definition at line 471 of file render_scheduler.h.
Referenced by RenderScheduler(), set_full_frame_render_work(), set_postprocess_render_work(), and work_need_denoise().
| bool RenderScheduler::tile_result_was_written = false |
Definition at line 407 of file render_scheduler.h.
|
protected |
Definition at line 459 of file render_scheduler.h.
Referenced by check_time_limit_reached(), get_num_samples_to_path_trace(), get_time_limit(), guess_display_update_interval_in_seconds_for_num_samples(), and set_time_limit().
| bool RenderScheduler::time_limit_reached = false |
Definition at line 413 of file render_scheduler.h.
|
protected |
Definition at line 480 of file render_scheduler.h.
Referenced by render_work_reschedule_on_idle(), RenderScheduler(), and work_adaptive_threshold().
| bool RenderScheduler::user_is_navigating = false |
Definition at line 374 of file render_scheduler.h.
|
protected |
Definition at line 441 of file render_scheduler.h.
Referenced by report_volume_guiding_denoise_time(), and reset().