aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/vk-renderer.hpp5
-rw-r--r--shaders/compute.comp2
-rw-r--r--src/vk-renderer.cpp8
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 = {};