From 5e39b7485d08345a4eb3686b344840791888d1f9 Mon Sep 17 00:00:00 2001 From: ladevieq Date: Wed, 10 Feb 2021 14:00:37 +0100 Subject: Accumulation working --- src/main.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp index 37ebddb..c87e57a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -46,13 +46,14 @@ int main() { const float aspect_ratio = 16.0 / 9.0; uint32_t width = 400; uint32_t height = width / aspect_ratio; + const uint32_t samples_per_pixel = 10; window wnd { width , height }; float delta_time = 0.f; auto start = std::chrono::high_resolution_clock::now(); auto end = std::chrono::high_resolution_clock::now(); - auto inputs = create_inputs(width, height); + auto inputs = create_inputs(width, height, samples_per_pixel); auto canRender = true; vkrenderer renderer { wnd, inputs }; @@ -113,6 +114,10 @@ int main() { ((input_data*) renderer.compute_shader_buffer.mapped_ptr)->cam.move(move_vec); + if (!move_vec.near_zero()) { + ((input_data*) renderer.compute_shader_buffer.mapped_ptr)->sample_index = 0; + } + break; } default: @@ -129,7 +134,12 @@ int main() { if(rdoc_api) rdoc_api->StartFrameCapture(NULL, NULL); if (canRender) { - renderer.compute(width, height); + if (((input_data*) renderer.compute_shader_buffer.mapped_ptr)->sample_index < samples_per_pixel) { + bool clear = ((input_data*) renderer.compute_shader_buffer.mapped_ptr)->sample_index == 0; + renderer.compute(width, height, clear); + + ((input_data*) renderer.compute_shader_buffer.mapped_ptr)->sample_index++; + } } // stop the capture -- cgit v1.3