|
Blender V4.3
|
#include <path_trace.h>
Public Attributes | |
| function< void(void)> | progress_update_cb |
Protected Attributes | ||
| Device * | device_ = nullptr | |
| Device * | denoise_device_ = nullptr | |
| unique_ptr< Device > | cpu_device_ | |
| Film * | film_ | |
| DeviceScene * | device_scene_ | |
| RenderScheduler & | render_scheduler_ | |
| TileManager & | tile_manager_ | |
| unique_ptr< PathTraceDisplay > | display_ | |
| unique_ptr< OutputDriver > | output_driver_ | |
| vector< unique_ptr< PathTraceWork > > | path_trace_works_ | |
| vector< WorkBalanceInfo > | work_balance_infos_ | |
| BufferParams | full_params_ | |
| BufferParams | big_tile_params_ | |
| unique_ptr< Denoiser > | denoiser_ | |
| unique_ptr< PathTraceWork > | big_tile_denoise_work_ | |
| struct { | ||
| bool need_reset_params = false | ||
| int resolution_divider = 0 | ||
| BufferParams effective_big_tile_params | ||
| bool has_denoised_result = false | ||
| bool tile_written = false | ||
| } | render_state_ | |
| Progress * | progress_ | |
| struct { | ||
| bool is_rendering = false | ||
| bool is_requested = false | ||
| thread_mutex mutex | ||
| thread_condition_variable condition | ||
| } | render_cancel_ | |
| bool | did_draw_after_reset_ = true | |
| struct { | ||
| RenderBuffers * render_buffers = nullptr | ||
| } | full_frame_state_ | |
Definition at line 43 of file path_trace.h.
| CCL_NAMESPACE_BEGIN PathTrace::PathTrace | ( | Device * | device, |
| Device * | denoiser_device, | ||
| Film * | film, | ||
| DeviceScene * | device_scene, | ||
| RenderScheduler & | render_scheduler, | ||
| TileManager & | tile_manager ) |
Definition at line 25 of file path_trace.cpp.
References cpu_device_, PathTraceWork::create(), DCHECK_NE, device_, device_cpu_create(), device_cpu_info(), Device::foreach_device(), Device::headless, path_trace_works_, Device::profiler, render_cancel_, RenderScheduler::set_need_schedule_rebalance(), Device::stats, work_balance_do_initial(), and work_balance_infos_.
| PathTrace::~PathTrace | ( | ) |
Definition at line 64 of file path_trace.cpp.
References destroy_gpu_resources().
|
protected |
Definition at line 431 of file path_trace.cpp.
References RenderWork::adaptive_sampling, atomic_add_and_fetch_u(), RenderWork::filter, is_cancel_requested(), path_trace_works_, render_scheduler_, RenderScheduler::render_work_reschedule_on_converge(), RenderScheduler::render_work_reschedule_on_idle(), RenderScheduler::report_adaptive_filter_time(), RenderWork::reset, RenderWork::threshold, time_dt(), and VLOG_WORK.
Referenced by render_pipeline().
| void PathTrace::alloc_work_memory | ( | ) |
Definition at line 86 of file path_trace.cpp.
References path_trace_works_.
| void PathTrace::cancel | ( | ) |
Definition at line 834 of file path_trace.cpp.
References lock, and render_cancel_.
| void PathTrace::clear_display | ( | ) |
Definition at line 645 of file path_trace.cpp.
References display_.
| void PathTrace::copy_from_render_buffers | ( | RenderBuffers * | render_buffers | ) |
Definition at line 967 of file path_trace.cpp.
References RenderBuffers::copy_from_device(), path_trace_works_, and render_buffers.
Referenced by rebalance().
| bool PathTrace::copy_render_tile_from_device | ( | ) |
Definition at line 976 of file path_trace.cpp.
References big_tile_denoise_work_, full_frame_state_, path_trace_works_, and render_state_.
Referenced by PathTraceTile::get_pass_pixels().
| void PathTrace::copy_to_render_buffers | ( | RenderBuffers * | render_buffers | ) |
Definition at line 958 of file path_trace.cpp.
References RenderBuffers::copy_to_device(), path_trace_works_, and render_buffers.
Referenced by denoise(), rebalance(), and tile_buffer_write_to_disk().
|
protected |
Definition at line 561 of file path_trace.cpp.
References RenderWork::cryptomatte, path_trace_works_, RenderWork::postprocess, and VLOG_WORK.
Referenced by render_pipeline().
|
protected |
Definition at line 573 of file path_trace.cpp.
References big_tile_denoise_work_, copy_to_render_buffers(), PathTraceWork::create(), DCHECK_EQ, RenderWork::denoise, denoiser_, device_scene_, film_, get_num_samples_in_buffer(), path_trace_works_, render_scheduler_, render_state_, RenderScheduler::report_denoise_time(), RenderBuffers::reset(), RenderWork::tile, time_dt(), and VLOG_WORK.
Referenced by render_pipeline().
|
protected |
Definition at line 1171 of file path_trace.cpp.
References big_tile_denoise_work_, display_, and path_trace_works_.
Referenced by set_display_driver(), and ~PathTrace().
| void PathTrace::device_free | ( | ) |
Definition at line 141 of file path_trace.cpp.
References BufferParams::pass_stride, path_trace_works_, render_state_, and BufferParams::update_offset_stride().
| void PathTrace::draw | ( | ) |
Definition at line 652 of file path_trace.cpp.
References did_draw_after_reset_, and display_.
|
protected |
Definition at line 812 of file path_trace.cpp.
References TileManager::finish_write_tiles(), RenderWork::full, TileManager::has_written_tiles(), tile_manager_, VLOG_WORK, and RenderWork::write.
Referenced by render_pipeline().
| void PathTrace::flush_display | ( | ) |
Definition at line 661 of file path_trace.cpp.
References display_.
| string PathTrace::full_report | ( | ) | const |
Definition at line 1308 of file path_trace.cpp.
References denoiser_, denoiser_device_report(), RenderScheduler::full_report(), path_trace_devices_report(), path_trace_works_, render_scheduler_, and result.
| int PathTrace::get_num_render_tile_samples | ( | ) | const |
Definition at line 1075 of file path_trace.cpp.
References full_frame_state_, RenderScheduler::get_num_rendered_samples(), and render_scheduler_.
Referenced by PathTraceTile::get_pass_pixels().
|
protected |
Definition at line 847 of file path_trace.cpp.
References RenderScheduler::get_num_rendered_samples(), and render_scheduler_.
Referenced by denoise(), and update_display().
| int2 PathTrace::get_render_size | ( | ) | const |
Definition at line 1152 of file path_trace.cpp.
References TileManager::get_size(), and tile_manager_.
| int2 PathTrace::get_render_tile_offset | ( | ) | const |
Definition at line 1142 of file path_trace.cpp.
References full_frame_state_, TileManager::get_current_tile(), make_int2(), tile, tile_manager_, KernelWorkTile::x, and KernelWorkTile::y.
| const BufferParams & PathTrace::get_render_tile_params | ( | ) | const |
Definition at line 1157 of file path_trace.cpp.
References big_tile_params_, and full_frame_state_.
Referenced by PathTraceTile::get_pass_pixels(), and PathTraceTile::set_pass_pixels().
| bool PathTrace::get_render_tile_pixels | ( | const PassAccessor & | pass_accessor, |
| const PassAccessor::Destination & | destination ) |
Definition at line 1084 of file path_trace.cpp.
References big_tile_denoise_work_, DENOISED, full_frame_state_, PassAccessor::get_pass_access_info(), PassAccessor::get_render_tile_pixels(), PassAccessor::PassAccessInfo::mode, path_trace_works_, and render_state_.
Referenced by PathTraceTile::get_pass_pixels().
| int2 PathTrace::get_render_tile_size | ( | ) | const |
Definition at line 1131 of file path_trace.cpp.
References full_frame_state_, TileManager::get_current_tile(), make_int2(), tile, and tile_manager_.
Referenced by progress_update_if_needed().
|
protected |
Definition at line 1424 of file path_trace.cpp.
References path_trace_works_, render_scheduler_, and RenderScheduler::set_limit_samples_per_update().
Referenced by render_pipeline().
|
protected |
Definition at line 1449 of file path_trace.cpp.
References VLOG_DEBUG, and VLOG_WORK.
Referenced by render_pipeline().
| bool PathTrace::has_denoised_result | ( | ) | const |
|
protected |
Definition at line 365 of file path_trace.cpp.
References RenderWork::init_render_buffers, path_trace_works_, tile_buffer_read(), and update_work_buffer_params_if_needed().
Referenced by render_pipeline().
|
protected |
Definition at line 852 of file path_trace.cpp.
References Progress::get_cancel(), progress_, and render_cancel_.
Referenced by adaptive_sample(), and path_trace().
| void PathTrace::load_kernels | ( | ) |
Definition at line 69 of file path_trace.cpp.
References denoiser_, display_, path_trace_works_, and progress_.
|
protected |
Definition at line 379 of file path_trace.cpp.
References DCHECK, PathTraceWork::get_device(), Device::have_error(), is_cancel_requested(), RenderWork::num_samples, RenderWork::path_trace, path_trace_works_, PathTraceWork::render_samples(), render_scheduler_, RenderScheduler::report_path_trace_occupancy(), RenderScheduler::report_path_trace_time(), RenderWork::resolution_divider, RenderWork::sample_offset, RenderWork::start_sample, thread_capture_fp_settings(), time_dt(), VLOG_INFO, VLOG_WORK, and work_balance_infos_.
Referenced by render_pipeline().
| void PathTrace::process_full_buffer_from_disk | ( | string_view | filename | ) |
Definition at line 1019 of file path_trace.cpp.
References cpu_device_, denoiser_, full_frame_state_, get_layer_view_name(), RenderScheduler::is_denoiser_gpu_used(), LOG, RenderBuffers::params, progress_, progress_set_status(), TileManager::read_full_buffer_from_disk(), render_scheduler_, render_state_, Progress::set_cancel(), set_denoiser_params(), Progress::set_error(), tile_buffer_write(), tile_manager_, DenoiseParams::use, DenoiseParams::use_gpu, and VLOG_WORK.
|
protected |
Definition at line 951 of file path_trace.cpp.
References progress_, and Progress::set_status().
Referenced by process_full_buffer_from_disk().
|
protected |
Definition at line 934 of file path_trace.cpp.
References Progress::add_samples(), get_render_tile_size(), RenderWork::num_samples, RenderWork::path_trace, progress_, progress_update_cb, RenderWork::sample_offset, RenderWork::start_sample, int2::x, and int2::y.
Referenced by render_pipeline().
| bool PathTrace::ready_to_reset | ( | ) |
Definition at line 93 of file path_trace.cpp.
References DCHECK, did_draw_after_reset_, and display_.
|
protected |
Definition at line 728 of file path_trace.cpp.
References copy_from_render_buffers(), copy_to_render_buffers(), cpu_device_, path_trace_works_, RenderWork::rebalance, render_scheduler_, render_state_, RenderScheduler::report_rebalance_time(), RenderBuffers::reset(), time_dt(), update_work_buffer_params_if_needed(), VLOG_IS_ON, VLOG_WORK, work_balance_do_rebalance(), and work_balance_infos_.
Referenced by render_pipeline().
| void PathTrace::render | ( | const RenderWork & | render_work | ) |
Definition at line 158 of file path_trace.cpp.
References lock, render_cancel_, and render_pipeline().
|
protected |
Definition at line 238 of file path_trace.cpp.
References path_trace_works_.
Referenced by render_pipeline().
|
protected |
Definition at line 180 of file path_trace.cpp.
References adaptive_sample(), cryptomatte_postprocess(), DeviceScene::data, denoise(), device_scene_, finalize_full_buffer_on_disk(), guiding_prepare_structures(), guiding_update_structures(), init_render_buffers(), path_trace(), progress_update_if_needed(), rebalance(), render_cancel_, render_init_kernel_execution(), render_scheduler_, RenderScheduler::report_work_begin(), RenderScheduler::set_need_schedule_cryptomatte(), update_display(), and write_tile_buffer().
Referenced by render().
| void PathTrace::reset | ( | const BufferParams & | full_params, |
| const BufferParams & | big_tile_params, | ||
| bool | reset_rendering ) |
Definition at line 117 of file path_trace.cpp.
References big_tile_params_, did_draw_after_reset_, display_, full_params_, BufferParams::modified(), and render_state_.
| void PathTrace::set_adaptive_sampling | ( | const AdaptiveSampling & | adaptive_sampling | ) |
Definition at line 556 of file path_trace.cpp.
References render_scheduler_, and RenderScheduler::set_adaptive_sampling().
| void PathTrace::set_denoiser_params | ( | const DenoiseParams & | params | ) |
Definition at line 490 of file path_trace.cpp.
References cpu_device_, Denoiser::create(), denoise_device_, denoiser_, DENOISER_OPENIMAGEDENOISE, DENOISER_OPTIX, DEVICE_CPU, get_effective_denoise_params(), Device::info, params, render_cancel_, render_scheduler_, RenderScheduler::set_denoiser_params(), DenoiseParams::type, DeviceInfo::type, and DenoiseParams::use_gpu.
Referenced by process_full_buffer_from_disk().
| void PathTrace::set_display_driver | ( | unique_ptr< DisplayDriver > | driver | ) |
Definition at line 630 of file path_trace.cpp.
References destroy_gpu_resources(), and display_.
| void PathTrace::set_guiding_params | ( | const GuidingParams & | params, |
| const bool | reset ) |
Definition at line 1324 of file path_trace.cpp.
References GuidingParams::deterministic, device_, Device::get_guiding_device(), GUIDING_TYPE_DIRECTIONAL_QUAD_TREE, GUIDING_TYPE_PARALLAX_AWARE_VMM, GUIDING_TYPE_VMM, and reset().
| void PathTrace::set_output_driver | ( | unique_ptr< OutputDriver > | driver | ) |
Definition at line 625 of file path_trace.cpp.
References output_driver_.
| void PathTrace::set_progress | ( | Progress * | progress | ) |
Definition at line 153 of file path_trace.cpp.
References progress_.
| bool PathTrace::set_render_tile_pixels | ( | PassAccessor & | pass_accessor, |
| const PassAccessor::Source & | source ) |
Definition at line 1114 of file path_trace.cpp.
References path_trace_works_.
Referenced by PathTraceTile::set_pass_pixels().
|
protected |
Definition at line 877 of file path_trace.cpp.
References DeviceScene::data, device_scene_, output_driver_, path_trace_works_, and tile.
Referenced by init_render_buffers().
|
protected |
Definition at line 867 of file path_trace.cpp.
References output_driver_, and tile.
Referenced by process_full_buffer_from_disk(), and write_tile_buffer().
|
protected |
Definition at line 902 of file path_trace.cpp.
References big_tile_params_, buffers, copy_to_render_buffers(), cpu_device_, DCHECK_NE, device_, RenderScheduler::get_num_rendered_samples(), BufferParams::get_pass_offset(), PASS_SAMPLE_COUNT, PASS_UNUSED, path_trace_works_, render_scheduler_, render_state_, RenderBuffers::reset(), Device::set_error(), tile_manager_, and TileManager::write_tile().
Referenced by write_tile_buffer().
|
protected |
Definition at line 292 of file path_trace.cpp.
References big_tile_params_, buffers, foreach_sliced_buffer_params(), PathTraceWork::get_render_buffers(), TileManager::get_tile_overscan(), params, path_trace_works_, RenderBuffers::reset(), tile_manager_, and work_balance_infos_.
Referenced by update_work_buffer_params_if_needed().
|
protected |
Definition at line 670 of file path_trace.cpp.
References big_tile_denoise_work_, DENOISED, RenderWork::display, display_, full_params_, get_num_samples_in_buffer(), BufferParams::height, LOG, NOISY, output_driver_, path_trace_works_, render_scheduler_, render_state_, RenderScheduler::report_display_update_time(), tile, time_dt(), RenderWork::update, RenderWork::use_denoised_result, VLOG_WORK, and BufferParams::width.
Referenced by render_pipeline().
|
protected |
Definition at line 327 of file path_trace.cpp.
References big_tile_params_, foreach_sliced_buffer_params(), full_params_, TileManager::get_tile_overscan(), params, path_trace_works_, render_state_, resolution_divider, RenderWork::resolution_divider, scale_buffer_params(), PathTraceWork::set_effective_buffer_params(), tile_manager_, and work_balance_infos_.
Referenced by update_work_buffer_params_if_needed().
|
protected |
Definition at line 349 of file path_trace.cpp.
References render_state_, RenderWork::resolution_divider, update_allocated_work_buffer_params(), and update_effective_work_buffer_params().
Referenced by init_render_buffers(), and rebalance().
|
protected |
Definition at line 781 of file path_trace.cpp.
References TileManager::has_multiple_tiles(), render_state_, RenderWork::tile, tile_buffer_write(), tile_buffer_write_to_disk(), tile_manager_, VLOG_WORK, and RenderWork::write.
Referenced by render_pipeline().
|
protected |
Definition at line 289 of file path_trace.h.
Referenced by copy_render_tile_from_device(), denoise(), destroy_gpu_resources(), get_render_tile_pixels(), and update_display().
|
protected |
Definition at line 283 of file path_trace.h.
Referenced by get_render_tile_params(), reset(), tile_buffer_write_to_disk(), update_allocated_work_buffer_params(), and update_effective_work_buffer_params().
| thread_condition_variable PathTrace::condition |
Definition at line 347 of file path_trace.h.
|
protected |
Definition at line 260 of file path_trace.h.
Referenced by PathTrace(), process_full_buffer_from_disk(), rebalance(), set_denoiser_params(), and tile_buffer_write_to_disk().
|
protected |
Definition at line 257 of file path_trace.h.
Referenced by set_denoiser_params().
|
protected |
Definition at line 286 of file path_trace.h.
Referenced by denoise(), full_report(), load_kernels(), process_full_buffer_from_disk(), and set_denoiser_params().
|
protected |
Definition at line 253 of file path_trace.h.
Referenced by PathTrace(), set_guiding_params(), and tile_buffer_write_to_disk().
|
protected |
Definition at line 263 of file path_trace.h.
Referenced by denoise(), render_pipeline(), and tile_buffer_read().
|
protected |
Definition at line 352 of file path_trace.h.
Referenced by draw(), ready_to_reset(), and reset().
|
protected |
Definition at line 269 of file path_trace.h.
Referenced by clear_display(), destroy_gpu_resources(), draw(), flush_display(), load_kernels(), ready_to_reset(), reset(), set_display_driver(), and update_display().
| BufferParams PathTrace::effective_big_tile_params |
Definition at line 323 of file path_trace.h.
|
protected |
Definition at line 262 of file path_trace.h.
Referenced by denoise().
| struct { ... } PathTrace::full_frame_state_ |
|
protected |
Definition at line 282 of file path_trace.h.
Referenced by reset(), update_display(), and update_effective_work_buffer_params().
| bool PathTrace::has_denoised_result = false |
Definition at line 326 of file path_trace.h.
Referenced by PathTraceTile::get_pass_pixels().
| bool PathTrace::is_rendering = false |
Definition at line 339 of file path_trace.h.
| bool PathTrace::is_requested = false |
Definition at line 342 of file path_trace.h.
| thread_mutex PathTrace::mutex |
Definition at line 346 of file path_trace.h.
| bool PathTrace::need_reset_params = false |
Definition at line 313 of file path_trace.h.
|
protected |
Definition at line 272 of file path_trace.h.
Referenced by set_output_driver(), tile_buffer_read(), tile_buffer_write(), and update_display().
|
protected |
Definition at line 276 of file path_trace.h.
Referenced by adaptive_sample(), alloc_work_memory(), copy_from_render_buffers(), copy_render_tile_from_device(), copy_to_render_buffers(), cryptomatte_postprocess(), denoise(), destroy_gpu_resources(), device_free(), full_report(), get_render_tile_pixels(), guiding_prepare_structures(), init_render_buffers(), load_kernels(), path_trace(), PathTrace(), rebalance(), render_init_kernel_execution(), set_render_tile_pixels(), tile_buffer_read(), tile_buffer_write_to_disk(), update_allocated_work_buffer_params(), update_display(), and update_effective_work_buffer_params().
|
protected |
Definition at line 334 of file path_trace.h.
Referenced by is_cancel_requested(), load_kernels(), process_full_buffer_from_disk(), progress_set_status(), progress_update_if_needed(), and set_progress().
| function<void(void)> PathTrace::progress_update_cb |
Definition at line 184 of file path_trace.h.
Referenced by progress_update_if_needed().
| RenderBuffers* PathTrace::render_buffers = nullptr |
Definition at line 356 of file path_trace.h.
Referenced by copy_from_render_buffers(), and copy_to_render_buffers().
| struct { ... } PathTrace::render_cancel_ |
Referenced by cancel(), is_cancel_requested(), PathTrace(), render(), render_pipeline(), and set_denoiser_params().
|
protected |
Definition at line 265 of file path_trace.h.
Referenced by adaptive_sample(), denoise(), full_report(), get_num_render_tile_samples(), get_num_samples_in_buffer(), guiding_prepare_structures(), path_trace(), process_full_buffer_from_disk(), rebalance(), render_pipeline(), set_adaptive_sampling(), set_denoiser_params(), tile_buffer_write_to_disk(), and update_display().
| struct { ... } PathTrace::render_state_ |
Referenced by copy_render_tile_from_device(), denoise(), device_free(), get_render_tile_pixels(), process_full_buffer_from_disk(), rebalance(), reset(), tile_buffer_write_to_disk(), update_display(), update_effective_work_buffer_params(), update_work_buffer_params_if_needed(), and write_tile_buffer().
| int PathTrace::resolution_divider = 0 |
Definition at line 320 of file path_trace.h.
Referenced by update_effective_work_buffer_params().
|
protected |
Definition at line 266 of file path_trace.h.
Referenced by finalize_full_buffer_on_disk(), get_render_size(), get_render_tile_offset(), get_render_tile_size(), process_full_buffer_from_disk(), tile_buffer_write_to_disk(), update_allocated_work_buffer_params(), update_effective_work_buffer_params(), and write_tile_buffer().
| bool PathTrace::tile_written = false |
Definition at line 330 of file path_trace.h.
|
protected |
Definition at line 279 of file path_trace.h.
Referenced by path_trace(), PathTrace(), rebalance(), update_allocated_work_buffer_params(), and update_effective_work_buffer_params().