Skip to content

Commit

Permalink
remove a TODO, done :)
Browse files Browse the repository at this point in the history
  • Loading branch information
crocdialer committed Sep 16, 2024
1 parent afdec27 commit a8d4212
Showing 1 changed file with 13 additions and 27 deletions.
40 changes: 13 additions & 27 deletions src/PBRPathTracer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,6 @@ PBRPathTracer::PBRPathTracer(const DevicePtr &device, const PBRPathTracer::creat

for(auto &frame_context: m_frame_contexts)
{
frame_context.semaphore = vierkant::Semaphore(m_device);

frame_context.denoise_computable = denoise_computable;

frame_context.composition_ubo =
Expand All @@ -81,22 +79,11 @@ PBRPathTracer::PBRPathTracer(const DevicePtr &device, const PBRPathTracer::creat
frame_context.ray_miss_ubo =
vierkant::Buffer::create(device, &frame_context.settings.environment_factor, sizeof(float),
VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VMA_MEMORY_USAGE_CPU_TO_GPU);
frame_context.cmd_pre_render = vierkant::CommandBuffer(m_device, m_command_pool.get());

vierkant::CommandBuffer::create_info_t cmd_buffer_info = {};
cmd_buffer_info.device = m_device;
cmd_buffer_info.command_pool = m_command_pool.get();

cmd_buffer_info.name = "cmd_pre_render";
frame_context.cmd_pre_render = vierkant::CommandBuffer(cmd_buffer_info);

cmd_buffer_info.name = "cmd_trace";
frame_context.cmd_trace = vierkant::CommandBuffer(cmd_buffer_info);

cmd_buffer_info.name = "cmd_denoise";
frame_context.cmd_denoise = vierkant::CommandBuffer(cmd_buffer_info);

cmd_buffer_info.name = "cmd_post_fx";
frame_context.cmd_post_fx = vierkant::CommandBuffer(cmd_buffer_info);
frame_context.cmd_trace = vierkant::CommandBuffer(m_device, m_command_pool.get());
frame_context.cmd_denoise = vierkant::CommandBuffer(m_device, m_command_pool.get());
frame_context.cmd_post_fx = vierkant::CommandBuffer(m_device, m_command_pool.get());

frame_context.scene_acceleration_context = m_ray_builder.create_scene_acceleration_context();

Expand Down Expand Up @@ -160,8 +147,8 @@ SceneRenderer::render_result_t PBRPathTracer::render_scene(Rasterizer &renderer,
frame_context.statistics.timestamp = std::chrono::steady_clock::now();

// sync and reset semaphore
frame_context.semaphore.wait(frame_context.semaphore_value + frame_context.semaphore_value_done);
frame_context.semaphore_value += frame_context.semaphore_value_done;
frame_context.semaphore.wait(frame_context.semaphore_value_done);
frame_context.semaphore = vierkant::Semaphore(m_device);

// timing/query-pool, resize storage-assets
pre_render(frame_context);
Expand All @@ -182,7 +169,7 @@ SceneRenderer::render_result_t PBRPathTracer::render_scene(Rasterizer &renderer,
// increase batch index
m_batch_index = std::min<size_t>(m_batch_index + 1, frame_context.settings.max_num_batches);
}
else { frame_context.semaphore.signal(frame_context.semaphore_value + SemaphoreValue::RAYTRACING); }
else { frame_context.semaphore.signal(SemaphoreValue::RAYTRACING); }

// edge-aware atrous-wavelet denoiser
denoise_pass(frame_context);
Expand All @@ -191,7 +178,6 @@ SceneRenderer::render_result_t PBRPathTracer::render_scene(Rasterizer &renderer,
post_fx_pass(frame_context);

// stage final output
// TODO: add depth-buffer
m_draw_context.draw_image_fullscreen(renderer, frame_context.out_image, frame_context.out_depth, true,
!frame_context.settings.draw_skybox);

Expand All @@ -208,7 +194,7 @@ SceneRenderer::render_result_t PBRPathTracer::render_scene(Rasterizer &renderer,
// pass semaphore wait/signal information
vierkant::semaphore_submit_info_t semaphore_submit_info = {};
semaphore_submit_info.semaphore = frame_context.semaphore.handle();
semaphore_submit_info.wait_value = frame_context.semaphore_value + frame_context.semaphore_value_done;
semaphore_submit_info.wait_value = frame_context.semaphore_value_done;
semaphore_submit_info.wait_stage = VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT;
ret.semaphore_infos = {semaphore_submit_info};
return ret;
Expand Down Expand Up @@ -291,7 +277,7 @@ void PBRPathTracer::path_trace_pass(frame_context_t &frame_context, const vierka
// wait for raybuilder, signal main semaphore
vierkant::semaphore_submit_info_t semaphore_info = {};
semaphore_info.semaphore = frame_context.semaphore.handle();
semaphore_info.signal_value = frame_context.semaphore_value + SemaphoreValue::RAYTRACING;
semaphore_info.signal_value = SemaphoreValue::RAYTRACING;
frame_context.cmd_trace.submit(m_queue, false, VK_NULL_HANDLE,
{frame_context.scene_ray_acceleration.semaphore_info, semaphore_info});
frame_context.semaphore_value_done = SemaphoreValue::RAYTRACING;
Expand Down Expand Up @@ -327,8 +313,8 @@ void PBRPathTracer::denoise_pass(PBRPathTracer::frame_context_t &frame_context)
vierkant::semaphore_submit_info_t semaphore_info = {};
semaphore_info.semaphore = frame_context.semaphore.handle();
semaphore_info.wait_stage = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT;
semaphore_info.wait_value = frame_context.semaphore_value + SemaphoreValue::RAYTRACING;
semaphore_info.signal_value = frame_context.semaphore_value + SemaphoreValue::DENOISER;
semaphore_info.wait_value = SemaphoreValue::RAYTRACING;
semaphore_info.signal_value = SemaphoreValue::DENOISER;

vkCmdWriteTimestamp2(frame_context.cmd_denoise.handle(), VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT,
frame_context.query_pool.get(), 2 * SemaphoreValue::DENOISER + 1);
Expand Down Expand Up @@ -371,9 +357,9 @@ void PBRPathTracer::post_fx_pass(frame_context_t &frame_context)

vierkant::semaphore_submit_info_t tonemap_semaphore_info = {};
tonemap_semaphore_info.semaphore = frame_context.semaphore.handle();
tonemap_semaphore_info.wait_value = frame_context.semaphore_value + SemaphoreValue::DENOISER;
tonemap_semaphore_info.wait_value = SemaphoreValue::DENOISER;
tonemap_semaphore_info.wait_stage = VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT;
tonemap_semaphore_info.signal_value = frame_context.semaphore_value + SemaphoreValue::TONEMAP;
tonemap_semaphore_info.signal_value = SemaphoreValue::TONEMAP;

frame_context.out_image = frame_context.post_fx_ping_pongs[0].color_attachment();

Expand Down

0 comments on commit a8d4212

Please sign in to comment.