diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2022-07-20 00:09:03 +0200 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2022-07-20 00:09:03 +0200 |
| commit | e77054b80568f65aaf8a6201cf8432d000288209 (patch) | |
| tree | 845f38235652b11ef8c435f48b95005616b33fea /src/main.cpp | |
| parent | 9cf2e341adfdb389c0dd8eb9a621d83ccba78826 (diff) | |
Add file watching api
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp index 1c83ce8..368a429 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -12,6 +12,7 @@ #include "scene.hpp" #include "vk-renderer.hpp" #include "window.hpp" +#include "utils.hpp" #include "Tracy.hpp" @@ -79,7 +80,31 @@ int main() { auto main_scene = scene(cam, width, height, renderer); auto *raytracing_pass = renderer.create_compute_renderpass(); - raytracing_pass->set_pipeline(raytracing_shader_name); + raytracing_pass->set_pipeline("compute"); + + watcher::watch_file(std::filesystem::path("../shaders/compute.comp"), [&]() { + LPSTR cmd_line = "glslc.exe --target-env=vulkan1.2 -std=460 ../shaders/compute.comp -o shaders/compute.comp.spv -I \"../shaders/include\"\0"; + STARTUPINFO start_info {}; + PROCESS_INFORMATION proc_info {}; + if (FAILED(CreateProcessA( + nullptr, + cmd_line, + nullptr, + nullptr, + FALSE, + 0, + nullptr, + nullptr, + &start_info, + &proc_info + ))) + log_last_error(); + WaitForSingleObject(proc_info.hProcess, INFINITE); + CloseHandle(proc_info.hProcess); + CloseHandle(proc_info.hThread); + + raytracing_pass->set_pipeline("compute"); + }); auto *accumulation_texture = renderer.create_2d_texture(width, height, VK_FORMAT_R32G32B32A32_SFLOAT); auto *output_texture = renderer.create_2d_texture(width, height, VK_FORMAT_R32G32B32A32_SFLOAT); @@ -124,6 +149,8 @@ int main() { io.DeltaTime = delta_time; + watcher::pull_changes(); + wnd.poll_events(); for (auto &event : wnd.events) { |
