Blender
V3.3
|
#include <path_trace.h>
Public Attributes | |
function< void(void)> | progress_update_cb |
bool | need_reset_params = false |
int | resolution_divider = 0 |
BufferParams | effective_big_tile_params |
bool | has_denoised_result = false |
bool | tile_written = false |
bool | is_rendering = false |
bool | is_requested = false |
thread_mutex | mutex |
thread_condition_variable | condition |
RenderBuffers * | render_buffers = nullptr |
Protected Attributes | |
Device * | 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 38 of file path_trace.h.
CCL_NAMESPACE_BEGIN PathTrace::PathTrace | ( | Device * | device, |
Film * | film, | ||
DeviceScene * | device_scene, | ||
RenderScheduler & | render_scheduler, | ||
TileManager & | tile_manager | ||
) |
Definition at line 23 of file path_trace.cpp.
References cpu_device_, PathTraceWork::create(), DCHECK_NE, device_, device_cpu_create(), device_cpu_info(), Device::foreach_device(), 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 59 of file path_trace.cpp.
References destroy_gpu_resources().
|
protected |
Definition at line 406 of file path_trace.cpp.
References RenderWork::adaptive_sampling, atomic_add_and_fetch_u(), RenderWork::filter, if(), is_cancel_requested(), num_active_pixels, blender::threading::parallel_for_each(), 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 81 of file path_trace.cpp.
References path_trace_works_.
void PathTrace::cancel | ( | ) |
Definition at line 767 of file path_trace.cpp.
References lock, and render_cancel_.
void PathTrace::clear_display | ( | ) |
Definition at line 578 of file path_trace.cpp.
References display_.
void PathTrace::copy_from_render_buffers | ( | RenderBuffers * | render_buffers | ) |
Definition at line 900 of file path_trace.cpp.
References RenderBuffers::copy_from_device(), blender::threading::parallel_for_each(), path_trace_works_, and render_buffers.
Referenced by rebalance().
bool PathTrace::copy_render_tile_from_device | ( | ) |
Definition at line 909 of file path_trace.cpp.
References big_tile_denoise_work_, full_frame_state_, blender::threading::parallel_for_each(), path_trace_works_, and render_state_.
Referenced by PathTraceTile::get_pass_pixels().
void PathTrace::copy_to_render_buffers | ( | RenderBuffers * | render_buffers | ) |
Definition at line 891 of file path_trace.cpp.
References RenderBuffers::copy_to_device(), blender::threading::parallel_for_each(), path_trace_works_, and render_buffers.
Referenced by denoise(), rebalance(), and tile_buffer_write_to_disk().
|
protected |
Definition at line 495 of file path_trace.cpp.
References RenderWork::cryptomatte, blender::threading::parallel_for_each(), path_trace_works_, RenderWork::postprocess, and VLOG_WORK.
Referenced by render_pipeline().
|
protected |
Definition at line 507 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 1096 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 136 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 585 of file path_trace.cpp.
References did_draw_after_reset_, and display_.
|
protected |
Definition at line 745 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 594 of file path_trace.cpp.
References display_.
string PathTrace::full_report | ( | ) | const |
Definition at line 1231 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 1005 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 780 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 1077 of file path_trace.cpp.
References TileManager::get_size(), and tile_manager_.
int2 PathTrace::get_render_tile_offset | ( | ) | const |
Definition at line 1067 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 1082 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 1014 of file path_trace.cpp.
References big_tile_denoise_work_, full_frame_state_, PassAccessor::get_render_tile_pixels(), blender::threading::parallel_for_each(), path_trace_works_, and render_state_.
Referenced by PathTraceTile::get_pass_pixels().
int2 PathTrace::get_render_tile_size | ( | ) | const |
Definition at line 1056 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().
bool PathTrace::has_denoised_result | ( | ) | const |
|
protected |
Definition at line 345 of file path_trace.cpp.
References RenderWork::init_render_buffers, blender::threading::parallel_for_each(), path_trace_works_, tile_buffer_read(), and update_work_buffer_params_if_needed().
Referenced by render_pipeline().
|
protected |
Definition at line 785 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 64 of file path_trace.cpp.
References denoiser_, display_, path_trace_works_, and progress_.
|
protected |
Definition at line 359 of file path_trace.cpp.
References is_cancel_requested(), RenderWork::num_samples, num_samples, PathTraceWork::RenderStatistics::occupancy, blender::threading::parallel_for(), 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 952 of file path_trace.cpp.
References cpu_device_, denoiser_, full_frame_state_, get_layer_view_name(), LOG, RenderBuffers::params, progress_, progress_set_status(), TileManager::read_full_buffer_from_disk(), render_state_, Progress::set_cancel(), set_denoiser_params(), Progress::set_error(), tile_buffer_write(), tile_manager_, DenoiseParams::use, and VLOG_WORK.
|
protected |
Definition at line 884 of file path_trace.cpp.
References progress_, and Progress::set_status().
Referenced by process_full_buffer_from_disk().
|
protected |
Definition at line 867 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 88 of file path_trace.cpp.
References DCHECK, did_draw_after_reset_, and display_.
|
protected |
Definition at line 661 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 153 of file path_trace.cpp.
References lock, render_cancel_, and render_pipeline().
|
protected |
Definition at line 219 of file path_trace.cpp.
References path_trace_works_.
Referenced by render_pipeline().
|
protected |
Definition at line 175 of file path_trace.cpp.
References adaptive_sample(), cryptomatte_postprocess(), DeviceScene::data, denoise(), device_scene_, finalize_full_buffer_on_disk(), 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 112 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 490 of file path_trace.cpp.
References render_scheduler_, and RenderScheduler::set_adaptive_sampling().
void PathTrace::set_denoiser_params | ( | const DenoiseParams & | params | ) |
Definition at line 465 of file path_trace.cpp.
References Denoiser::create(), denoiser_, device_, params, render_cancel_, render_scheduler_, RenderScheduler::set_denoiser_params(), and DenoiseParams::type.
Referenced by process_full_buffer_from_disk().
void PathTrace::set_display_driver | ( | unique_ptr< DisplayDriver > | driver | ) |
Definition at line 563 of file path_trace.cpp.
References destroy_gpu_resources(), and display_.
void PathTrace::set_output_driver | ( | unique_ptr< OutputDriver > | driver | ) |
Definition at line 558 of file path_trace.cpp.
References output_driver_.
Definition at line 148 of file path_trace.cpp.
References progress_.
bool PathTrace::set_render_tile_pixels | ( | PassAccessor & | pass_accessor, |
const PassAccessor::Source & | source | ||
) |
Definition at line 1039 of file path_trace.cpp.
References blender::threading::parallel_for_each(), and path_trace_works_.
Referenced by PathTraceTile::set_pass_pixels().
|
protected |
Definition at line 810 of file path_trace.cpp.
References KernelData::bake, DeviceScene::data, device_scene_, output_driver_, blender::threading::parallel_for_each(), path_trace_works_, tile, and KernelBake::use.
Referenced by init_render_buffers().
|
protected |
Definition at line 800 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 835 of file path_trace.cpp.
References big_tile_params_, 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 273 of file path_trace.cpp.
References big_tile_params_, 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 603 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, num_samples, 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 308 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 330 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 714 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 266 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 260 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 308 of file path_trace.h.
|
protected |
Definition at line 237 of file path_trace.h.
Referenced by PathTrace(), process_full_buffer_from_disk(), rebalance(), and tile_buffer_write_to_disk().
|
protected |
Definition at line 263 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 234 of file path_trace.h.
Referenced by PathTrace(), set_denoiser_params(), and tile_buffer_write_to_disk().
|
protected |
Definition at line 240 of file path_trace.h.
Referenced by denoise(), render_pipeline(), and tile_buffer_read().
|
protected |
Definition at line 313 of file path_trace.h.
Referenced by draw(), ready_to_reset(), and reset().
|
protected |
Definition at line 246 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 284 of file path_trace.h.
|
protected |
Definition at line 239 of file path_trace.h.
Referenced by denoise().
struct { ... } PathTrace::full_frame_state_ |
|
protected |
Definition at line 259 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 287 of file path_trace.h.
Referenced by PathTraceTile::get_pass_pixels().
bool PathTrace::is_rendering = false |
Definition at line 300 of file path_trace.h.
bool PathTrace::is_requested = false |
Definition at line 303 of file path_trace.h.
thread_mutex PathTrace::mutex |
Definition at line 307 of file path_trace.h.
bool PathTrace::need_reset_params = false |
Definition at line 274 of file path_trace.h.
|
protected |
Definition at line 249 of file path_trace.h.
Referenced by set_output_driver(), tile_buffer_read(), tile_buffer_write(), and update_display().
|
protected |
Definition at line 253 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(), 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 295 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().
Definition at line 174 of file path_trace.h.
Referenced by progress_update_if_needed().
RenderBuffers* PathTrace::render_buffers = nullptr |
Definition at line 317 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 242 of file path_trace.h.
Referenced by adaptive_sample(), denoise(), full_report(), get_num_render_tile_samples(), get_num_samples_in_buffer(), path_trace(), 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 281 of file path_trace.h.
Referenced by update_effective_work_buffer_params().
|
protected |
Definition at line 243 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 291 of file path_trace.h.
|
protected |
Definition at line 256 of file path_trace.h.
Referenced by path_trace(), PathTrace(), rebalance(), update_allocated_work_buffer_params(), and update_effective_work_buffer_params().