diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2020-12-29 19:18:09 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2020-12-29 19:18:09 +0100 |
| commit | e22af9e7d0633c8237ed802404c6ccab472eb458 (patch) | |
| tree | fc09a1c5b790f3c04343df4a2c873a2d41d6e7fb /src/main.cpp | |
| parent | 5768c16bd01900d1eb34873a44d231011d0b744b (diff) | |
Gradient clear color
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/main.cpp b/src/main.cpp index c8c1288..53d116c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -344,19 +344,24 @@ void create_descriptor_set() { vkAllocateDescriptorSets(device, &descriptor_set_allocate_info, &compute_shader_input_set); } +struct input_data { + color sky_color; + color ground_color; + float viewport_width; + float viewport_height; + float pad1; + float pad2; +}; struct path_tracer_data { - struct input_data { - color sky_color; - color ground_color; - } inputs; + struct input_data inputs; color output_image[1920 * 1080]; }; struct path_tracer_data* mapped_data; VkBuffer compute_shader_input_buffer; -void fill_descriptor_set() { +void fill_descriptor_set(const input_data& inputs) { VkBufferCreateInfo buffer_info = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO }; - buffer_info.size = sizeof(color) * 2 + (sizeof(color) * 1920 * 1080); + buffer_info.size = sizeof(path_tracer_data); buffer_info.usage = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT; VmaAllocationCreateInfo alloc_create_info = {}; @@ -366,8 +371,7 @@ void fill_descriptor_set() { vmaCreateBuffer(allocator, &buffer_info, &alloc_create_info, &compute_shader_input_buffer, &allocation, nullptr); vmaMapMemory(allocator, allocation, (void**) &mapped_data); - std::memcpy(&mapped_data->inputs.sky_color, &sky_color, sizeof(color)); - std::memcpy(&mapped_data->inputs.ground_color, &ground_color, sizeof(color)); + std::memcpy(&mapped_data->inputs, &inputs, sizeof(inputs)); VkDescriptorBufferInfo descriptor_buf_info = {}; descriptor_buf_info.buffer = compute_shader_input_buffer; @@ -446,10 +450,16 @@ int main() { const double aperture = 0.1; const double distance_to_focus = 10; camera camera { camera_position, camera_target, 20.0, aspect_ratio, aperture, distance_to_focus }; + struct input_data inputs = { + .sky_color = sky_color, + .ground_color = ground_color, + .viewport_width = camera.viewport_width, + .viewport_height = camera.viewport_height + }; // World hittable objects hittable_list world = random_scene(); - fill_descriptor_set(); + fill_descriptor_set(inputs); // PPM format header std::cout << "P3\n" << width << '\n' << height << "\n255" << std::endl; |
