aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2021-01-08 23:42:21 +0100
committerladevieq <ladevie.quentin@gmail.com>2021-01-08 23:42:21 +0100
commitd30435685fff43269bc0fda919cfb3e3fd4539cc (patch)
tree6b0e875990ea6157f62767a6ef1c5622189e2cd6 /src
parent0bb3cbcd5a0ff72cc3902d27520a8f5b8c331c46 (diff)
Use 8x8 work groups in compute shader
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp16
-rw-r--r--src/vk-renderer.cpp6
2 files changed, 13 insertions, 9 deletions
diff --git a/src/main.cpp b/src/main.cpp
index d38545a..f86529f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -80,12 +80,11 @@ int main() {
vkrenderer renderer {};
// Image dimensions
- // const float aspect_ratio = 16.0 / 9.0;
- const float aspect_ratio = 1.f;
- const size_t width = 400;
+ const float aspect_ratio = 16.0 / 9.0;
+ const size_t width = 1920;
const size_t height = width / aspect_ratio;
- const uint32_t samples_per_pixel = 10;
- const uint32_t max_depth = 100;
+ const uint32_t samples_per_pixel = 25;
+ const uint32_t max_depth = 50;
const vec3 camera_position{ 13.0, 2.0, 3.0 };
const vec3 camera_target{ 0.0, 0.0, 0.0 };
@@ -95,12 +94,18 @@ int main() {
struct input_data inputs = {
.sky_color = sky_color,
.ground_color = ground_color,
+
.cam = { camera_position, camera.up, camera.right, camera.forward, camera.viewport_width, camera.viewport_height, camera.lens_radius, distance_to_focus },
+
.spheres = {},
+
.max_bounce = max_depth,
.samples_per_pixel = samples_per_pixel,
+ .width = (uint32_t)width,
+ .height = (uint32_t)height
};
+ // Random numbers pools
for (size_t rand_number_index = 0; rand_number_index < samples_per_pixel * 2; rand_number_index += 2) {
inputs.random_offset[rand_number_index] = randd();
inputs.random_offset[rand_number_index + 1] = randd();
@@ -117,7 +122,6 @@ int main() {
}
// World hittable objects
- std::memset(inputs.spheres, 0, sizeof(inputs.spheres));
random_scene(inputs.spheres);
// PPM format header
diff --git a/src/vk-renderer.cpp b/src/vk-renderer.cpp
index 4b33a98..d26fe86 100644
--- a/src/vk-renderer.cpp
+++ b/src/vk-renderer.cpp
@@ -46,7 +46,7 @@ void vkrenderer::compute(const input_data& inputs, size_t width, size_t height)
vkCmdBindPipeline(command_buffer, VK_PIPELINE_BIND_POINT_COMPUTE, compute_pipeline);
- vkCmdDispatch(command_buffer, width, height, 1);
+ vkCmdDispatch(command_buffer, width / 8, height / 8, 1);
vkEndCommandBuffer(command_buffer);
@@ -60,9 +60,9 @@ void vkrenderer::compute(const input_data& inputs, size_t width, size_t height)
submit_info.commandBufferCount = 1;
submit_info.pCommandBuffers = &command_buffer;
- vkQueueSubmit(compute_queue, 1, &submit_info, VK_NULL_HANDLE);
+ VKRESULT(vkQueueSubmit(compute_queue, 1, &submit_info, VK_NULL_HANDLE));
- vkDeviceWaitIdle(device);
+ VKRESULT(vkDeviceWaitIdle(device));
}
const color* const vkrenderer::output_image() {