diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2021-01-01 19:24:27 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2021-01-01 19:24:27 +0100 |
| commit | 84d6440f507a33d526acd15e55f73d99f747c8ec (patch) | |
| tree | 4e609fd7faf5e1e57c8574d369ad14d36eb00c14 | |
| parent | 6713cf8a0be4926011292a28514d60fd9418afd4 (diff) | |
Allow dynamic target image resolution
| -rw-r--r-- | include/vk-renderer.hpp | 5 | ||||
| -rw-r--r-- | shaders/compute.comp | 2 | ||||
| -rw-r--r-- | src/vk-renderer.cpp | 8 |
3 files changed, 8 insertions, 7 deletions
diff --git a/include/vk-renderer.hpp b/include/vk-renderer.hpp index d63e501..cc27d02 100644 --- a/include/vk-renderer.hpp +++ b/include/vk-renderer.hpp @@ -18,9 +18,10 @@ struct input_data { vec3 sphere_position; }; + struct path_tracer_data { struct input_data inputs; - color output_image[1920 * 1080]; + color first_pixel; }; class vkrenderer { @@ -50,7 +51,7 @@ class vkrenderer { void select_compute_queue(); - void fill_descriptor_set(const input_data& data); + void fill_descriptor_set(const input_data& data, size_t width, size_t height); uint32_t compute_queue_index; diff --git a/shaders/compute.comp b/shaders/compute.comp index 43054d5..1f901dc 100644 --- a/shaders/compute.comp +++ b/shaders/compute.comp @@ -15,7 +15,7 @@ layout(set = 0, binding = 0) buffer Inputs { vec4 sphere_position; - vec4 [1920 * 1080] image; + vec4 [] image; }; bool hit_sphere(vec3 position, float radius, ray r) { diff --git a/src/vk-renderer.cpp b/src/vk-renderer.cpp index f10b82f..4b33a98 100644 --- a/src/vk-renderer.cpp +++ b/src/vk-renderer.cpp @@ -32,7 +32,7 @@ vkrenderer::vkrenderer() { } void vkrenderer::compute(const input_data& inputs, size_t width, size_t height) { - fill_descriptor_set(inputs); + fill_descriptor_set(inputs, width, height); VkCommandBufferBeginInfo cmd_buf_begin_info = {}; cmd_buf_begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; @@ -66,7 +66,7 @@ void vkrenderer::compute(const input_data& inputs, size_t width, size_t height) } const color* const vkrenderer::output_image() { - return mapped_data->output_image; + return &mapped_data->first_pixel; } @@ -313,9 +313,9 @@ void vkrenderer::select_compute_queue() { exit(1); } -void vkrenderer::fill_descriptor_set(const input_data& inputs) { +void vkrenderer::fill_descriptor_set(const input_data& inputs, size_t width, size_t height) { VkBufferCreateInfo buffer_info = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO }; - buffer_info.size = sizeof(path_tracer_data); + buffer_info.size = sizeof(struct input_data) + sizeof(color) * width * height; buffer_info.usage = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT; VmaAllocationCreateInfo alloc_create_info = {}; |
