diff --git a/CMakeLists.txt b/CMakeLists.txt index a02eec5..d5d5afc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(NAME PlumageRender) project(${NAME}) include_directories(external) -include_directories(external/glfw-3.4) +include_directories(external/glfw-3.4/include) include_directories(external/glm) include_directories(external/gli) include_directories(external/imgui) diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp index 079299e..ef2f868 100644 --- a/base/vulkanexamplebase.cpp +++ b/base/vulkanexamplebase.cpp @@ -36,7 +36,7 @@ VKAPI_ATTR VkBool32 VKAPI_CALL debugMessageCallback(VkDebugReportFlagsEXT flags, VkResult VulkanExampleBase::createInstance(bool enableValidation) { - this->settings.validation = enableValidation; + setter.settings.validation = enableValidation; // Validation can also be forced via a define #if defined(_VALIDATION) @@ -334,7 +334,7 @@ void VulkanExampleBase::renderFrame() void VulkanExampleBase::renderLoop() { - destWidth = width; + destWidth = settings.width; destHeight = height; #if defined(_WIN32) MSG msg; @@ -500,28 +500,7 @@ void VulkanExampleBase::renderLoop() VulkanExampleBase::VulkanExampleBase() { - char* numConvPtr; - // Parse command line arguments - for (size_t i = 0; i < args.size(); i++) - { - if (args[i] == std::string("-validation")) { - settings.validation = true; - } - if (args[i] == std::string("-vsync")) { - settings.vsync = true; - } - if ((args[i] == std::string("-f")) || (args[i] == std::string("--fullscreen"))) { - settings.fullscreen = true; - } - if ((args[i] == std::string("-w")) || (args[i] == std::string("--width"))) { - uint32_t w = strtol(args[i + 1], &numConvPtr, 10); - if (numConvPtr != args[i + 1]) { width = w; }; - } - if ((args[i] == std::string("-h")) || (args[i] == std::string("--height"))) { - uint32_t h = strtol(args[i + 1], &numConvPtr, 10); - if (numConvPtr != args[i + 1]) { height = h; }; - } - } + #if defined(VK_USE_PLATFORM_ANDROID_KHR) // Vulkan library is loaded dynamically on Android @@ -636,24 +615,6 @@ void VulkanExampleBase::initVulkan() exit(err); } uint32_t selectedDevice = 0; -#if !defined(VK_USE_PLATFORM_ANDROID_KHR) - for (size_t i = 0; i < args.size(); i++) { - if ((args[i] == std::string("-g")) || (args[i] == std::string("--gpu"))) { - char* endptr; - selectedPhysicalDeviceIndex = strtol(args[i + 1], &endptr, 10); - if (endptr != args[i + 1]) { - if (selectedPhysicalDeviceIndex > gpuCount - 1) { - std::cerr << "Selected device index " << selectedPhysicalDeviceIndex << " is out of range, reverting to device 0 (use -listgpus to show available Vulkan devices)" << std::endl; - } else { - std::cout << "Selected Vulkan device " << selectedPhysicalDeviceIndex << std::endl; - selectedDevice = selectedPhysicalDeviceIndex; - } - }; - break; - } - } -#endif - physicalDevice = physicalDevices[selectedDevice]; vkGetPhysicalDeviceProperties(physicalDevice, &deviceProperties); diff --git a/base/vulkanexamplebase.h b/base/vulkanexamplebase.h index 3cc00c0..c21ac6e 100644 --- a/base/vulkanexamplebase.h +++ b/base/vulkanexamplebase.h @@ -101,7 +101,7 @@ protected: std::string name = "vulkanExample"; void windowResize(); public: - static std::vector args; + uint32_t selectedPhysicalDeviceIndex = 0; bool prepared = false; float frameTimer = 1.0f; diff --git a/external/glfw-3.4/glfw-3.4/CMake/GenerateMappings.cmake b/external/glfw-3.4/CMake/GenerateMappings.cmake similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/GenerateMappings.cmake rename to external/glfw-3.4/CMake/GenerateMappings.cmake diff --git a/external/glfw-3.4/glfw-3.4/CMake/Info.plist.in b/external/glfw-3.4/CMake/Info.plist.in similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/Info.plist.in rename to external/glfw-3.4/CMake/Info.plist.in diff --git a/external/glfw-3.4/glfw-3.4/CMake/cmake_uninstall.cmake.in b/external/glfw-3.4/CMake/cmake_uninstall.cmake.in similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/cmake_uninstall.cmake.in rename to external/glfw-3.4/CMake/cmake_uninstall.cmake.in diff --git a/external/glfw-3.4/glfw-3.4/CMake/glfw3.pc.in b/external/glfw-3.4/CMake/glfw3.pc.in similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/glfw3.pc.in rename to external/glfw-3.4/CMake/glfw3.pc.in diff --git a/external/glfw-3.4/glfw-3.4/CMake/glfw3Config.cmake.in b/external/glfw-3.4/CMake/glfw3Config.cmake.in similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/glfw3Config.cmake.in rename to external/glfw-3.4/CMake/glfw3Config.cmake.in diff --git a/external/glfw-3.4/glfw-3.4/CMake/i686-w64-mingw32-clang.cmake b/external/glfw-3.4/CMake/i686-w64-mingw32-clang.cmake similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/i686-w64-mingw32-clang.cmake rename to external/glfw-3.4/CMake/i686-w64-mingw32-clang.cmake diff --git a/external/glfw-3.4/glfw-3.4/CMake/i686-w64-mingw32.cmake b/external/glfw-3.4/CMake/i686-w64-mingw32.cmake similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/i686-w64-mingw32.cmake rename to external/glfw-3.4/CMake/i686-w64-mingw32.cmake diff --git a/external/glfw-3.4/glfw-3.4/CMake/modules/FindEpollShim.cmake b/external/glfw-3.4/CMake/modules/FindEpollShim.cmake similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/modules/FindEpollShim.cmake rename to external/glfw-3.4/CMake/modules/FindEpollShim.cmake diff --git a/external/glfw-3.4/glfw-3.4/CMake/modules/FindOSMesa.cmake b/external/glfw-3.4/CMake/modules/FindOSMesa.cmake similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/modules/FindOSMesa.cmake rename to external/glfw-3.4/CMake/modules/FindOSMesa.cmake diff --git a/external/glfw-3.4/glfw-3.4/CMake/x86_64-w64-mingw32-clang.cmake b/external/glfw-3.4/CMake/x86_64-w64-mingw32-clang.cmake similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/x86_64-w64-mingw32-clang.cmake rename to external/glfw-3.4/CMake/x86_64-w64-mingw32-clang.cmake diff --git a/external/glfw-3.4/glfw-3.4/CMake/x86_64-w64-mingw32.cmake b/external/glfw-3.4/CMake/x86_64-w64-mingw32.cmake similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMake/x86_64-w64-mingw32.cmake rename to external/glfw-3.4/CMake/x86_64-w64-mingw32.cmake diff --git a/external/glfw-3.4/glfw-3.4/CMakeLists.txt b/external/glfw-3.4/CMakeLists.txt similarity index 100% rename from external/glfw-3.4/glfw-3.4/CMakeLists.txt rename to external/glfw-3.4/CMakeLists.txt diff --git a/external/glfw-3.4/glfw-3.4/CONTRIBUTORS.md b/external/glfw-3.4/CONTRIBUTORS.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/CONTRIBUTORS.md rename to external/glfw-3.4/CONTRIBUTORS.md diff --git a/external/glfw-3.4/glfw-3.4/LICENSE.md b/external/glfw-3.4/LICENSE.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/LICENSE.md rename to external/glfw-3.4/LICENSE.md diff --git a/external/glfw-3.4/glfw-3.4/README.md b/external/glfw-3.4/README.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/README.md rename to external/glfw-3.4/README.md diff --git a/external/glfw-3.4/glfw-3.4/deps/getopt.c b/external/glfw-3.4/deps/getopt.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/getopt.c rename to external/glfw-3.4/deps/getopt.c diff --git a/external/glfw-3.4/glfw-3.4/deps/getopt.h b/external/glfw-3.4/deps/getopt.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/getopt.h rename to external/glfw-3.4/deps/getopt.h diff --git a/external/glfw-3.4/glfw-3.4/deps/glad/gl.h b/external/glfw-3.4/deps/glad/gl.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/glad/gl.h rename to external/glfw-3.4/deps/glad/gl.h diff --git a/external/glfw-3.4/glfw-3.4/deps/glad/gles2.h b/external/glfw-3.4/deps/glad/gles2.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/glad/gles2.h rename to external/glfw-3.4/deps/glad/gles2.h diff --git a/external/glfw-3.4/glfw-3.4/deps/glad/vulkan.h b/external/glfw-3.4/deps/glad/vulkan.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/glad/vulkan.h rename to external/glfw-3.4/deps/glad/vulkan.h diff --git a/external/glfw-3.4/glfw-3.4/deps/linmath.h b/external/glfw-3.4/deps/linmath.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/linmath.h rename to external/glfw-3.4/deps/linmath.h diff --git a/external/glfw-3.4/glfw-3.4/deps/mingw/_mingw_dxhelper.h b/external/glfw-3.4/deps/mingw/_mingw_dxhelper.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/mingw/_mingw_dxhelper.h rename to external/glfw-3.4/deps/mingw/_mingw_dxhelper.h diff --git a/external/glfw-3.4/glfw-3.4/deps/mingw/dinput.h b/external/glfw-3.4/deps/mingw/dinput.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/mingw/dinput.h rename to external/glfw-3.4/deps/mingw/dinput.h diff --git a/external/glfw-3.4/glfw-3.4/deps/mingw/xinput.h b/external/glfw-3.4/deps/mingw/xinput.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/mingw/xinput.h rename to external/glfw-3.4/deps/mingw/xinput.h diff --git a/external/glfw-3.4/glfw-3.4/deps/nuklear.h b/external/glfw-3.4/deps/nuklear.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/nuklear.h rename to external/glfw-3.4/deps/nuklear.h diff --git a/external/glfw-3.4/glfw-3.4/deps/nuklear_glfw_gl2.h b/external/glfw-3.4/deps/nuklear_glfw_gl2.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/nuklear_glfw_gl2.h rename to external/glfw-3.4/deps/nuklear_glfw_gl2.h diff --git a/external/glfw-3.4/glfw-3.4/deps/stb_image_write.h b/external/glfw-3.4/deps/stb_image_write.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/stb_image_write.h rename to external/glfw-3.4/deps/stb_image_write.h diff --git a/external/glfw-3.4/glfw-3.4/deps/tinycthread.c b/external/glfw-3.4/deps/tinycthread.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/tinycthread.c rename to external/glfw-3.4/deps/tinycthread.c diff --git a/external/glfw-3.4/glfw-3.4/deps/tinycthread.h b/external/glfw-3.4/deps/tinycthread.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/tinycthread.h rename to external/glfw-3.4/deps/tinycthread.h diff --git a/external/glfw-3.4/glfw-3.4/deps/wayland/fractional-scale-v1.xml b/external/glfw-3.4/deps/wayland/fractional-scale-v1.xml similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/wayland/fractional-scale-v1.xml rename to external/glfw-3.4/deps/wayland/fractional-scale-v1.xml diff --git a/external/glfw-3.4/glfw-3.4/deps/wayland/idle-inhibit-unstable-v1.xml b/external/glfw-3.4/deps/wayland/idle-inhibit-unstable-v1.xml similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/wayland/idle-inhibit-unstable-v1.xml rename to external/glfw-3.4/deps/wayland/idle-inhibit-unstable-v1.xml diff --git a/external/glfw-3.4/glfw-3.4/deps/wayland/pointer-constraints-unstable-v1.xml b/external/glfw-3.4/deps/wayland/pointer-constraints-unstable-v1.xml similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/wayland/pointer-constraints-unstable-v1.xml rename to external/glfw-3.4/deps/wayland/pointer-constraints-unstable-v1.xml diff --git a/external/glfw-3.4/glfw-3.4/deps/wayland/relative-pointer-unstable-v1.xml b/external/glfw-3.4/deps/wayland/relative-pointer-unstable-v1.xml similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/wayland/relative-pointer-unstable-v1.xml rename to external/glfw-3.4/deps/wayland/relative-pointer-unstable-v1.xml diff --git a/external/glfw-3.4/glfw-3.4/deps/wayland/viewporter.xml b/external/glfw-3.4/deps/wayland/viewporter.xml similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/wayland/viewporter.xml rename to external/glfw-3.4/deps/wayland/viewporter.xml diff --git a/external/glfw-3.4/glfw-3.4/deps/wayland/wayland.xml b/external/glfw-3.4/deps/wayland/wayland.xml similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/wayland/wayland.xml rename to external/glfw-3.4/deps/wayland/wayland.xml diff --git a/external/glfw-3.4/glfw-3.4/deps/wayland/xdg-activation-v1.xml b/external/glfw-3.4/deps/wayland/xdg-activation-v1.xml similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/wayland/xdg-activation-v1.xml rename to external/glfw-3.4/deps/wayland/xdg-activation-v1.xml diff --git a/external/glfw-3.4/glfw-3.4/deps/wayland/xdg-decoration-unstable-v1.xml b/external/glfw-3.4/deps/wayland/xdg-decoration-unstable-v1.xml similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/wayland/xdg-decoration-unstable-v1.xml rename to external/glfw-3.4/deps/wayland/xdg-decoration-unstable-v1.xml diff --git a/external/glfw-3.4/glfw-3.4/deps/wayland/xdg-shell.xml b/external/glfw-3.4/deps/wayland/xdg-shell.xml similarity index 100% rename from external/glfw-3.4/glfw-3.4/deps/wayland/xdg-shell.xml rename to external/glfw-3.4/deps/wayland/xdg-shell.xml diff --git a/external/glfw-3.4/glfw-3.4/docs/CMakeLists.txt b/external/glfw-3.4/docs/CMakeLists.txt similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/CMakeLists.txt rename to external/glfw-3.4/docs/CMakeLists.txt diff --git a/external/glfw-3.4/glfw-3.4/docs/CONTRIBUTING.md b/external/glfw-3.4/docs/CONTRIBUTING.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/CONTRIBUTING.md rename to external/glfw-3.4/docs/CONTRIBUTING.md diff --git a/external/glfw-3.4/glfw-3.4/docs/Doxyfile.in b/external/glfw-3.4/docs/Doxyfile.in similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/Doxyfile.in rename to external/glfw-3.4/docs/Doxyfile.in diff --git a/external/glfw-3.4/glfw-3.4/docs/DoxygenLayout.xml b/external/glfw-3.4/docs/DoxygenLayout.xml similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/DoxygenLayout.xml rename to external/glfw-3.4/docs/DoxygenLayout.xml diff --git a/external/glfw-3.4/glfw-3.4/docs/SUPPORT.md b/external/glfw-3.4/docs/SUPPORT.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/SUPPORT.md rename to external/glfw-3.4/docs/SUPPORT.md diff --git a/external/glfw-3.4/glfw-3.4/docs/build.md b/external/glfw-3.4/docs/build.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/build.md rename to external/glfw-3.4/docs/build.md diff --git a/external/glfw-3.4/glfw-3.4/docs/compat.md b/external/glfw-3.4/docs/compat.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/compat.md rename to external/glfw-3.4/docs/compat.md diff --git a/external/glfw-3.4/glfw-3.4/docs/compile.md b/external/glfw-3.4/docs/compile.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/compile.md rename to external/glfw-3.4/docs/compile.md diff --git a/external/glfw-3.4/glfw-3.4/docs/context.md b/external/glfw-3.4/docs/context.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/context.md rename to external/glfw-3.4/docs/context.md diff --git a/external/glfw-3.4/glfw-3.4/docs/extra.css b/external/glfw-3.4/docs/extra.css similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/extra.css rename to external/glfw-3.4/docs/extra.css diff --git a/external/glfw-3.4/glfw-3.4/docs/extra.css.map b/external/glfw-3.4/docs/extra.css.map similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/extra.css.map rename to external/glfw-3.4/docs/extra.css.map diff --git a/external/glfw-3.4/glfw-3.4/docs/extra.scss b/external/glfw-3.4/docs/extra.scss similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/extra.scss rename to external/glfw-3.4/docs/extra.scss diff --git a/external/glfw-3.4/glfw-3.4/docs/footer.html b/external/glfw-3.4/docs/footer.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/footer.html rename to external/glfw-3.4/docs/footer.html diff --git a/external/glfw-3.4/glfw-3.4/docs/header.html b/external/glfw-3.4/docs/header.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/header.html rename to external/glfw-3.4/docs/header.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/bc_s.png b/external/glfw-3.4/docs/html/bc_s.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/bc_s.png rename to external/glfw-3.4/docs/html/bc_s.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/bc_sd.png b/external/glfw-3.4/docs/html/bc_sd.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/bc_sd.png rename to external/glfw-3.4/docs/html/bc_sd.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/build_8md.html b/external/glfw-3.4/docs/html/build_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/build_8md.html rename to external/glfw-3.4/docs/html/build_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/build_guide.html b/external/glfw-3.4/docs/html/build_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/build_guide.html rename to external/glfw-3.4/docs/html/build_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/closed.png b/external/glfw-3.4/docs/html/closed.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/closed.png rename to external/glfw-3.4/docs/html/closed.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/compat_8md.html b/external/glfw-3.4/docs/html/compat_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/compat_8md.html rename to external/glfw-3.4/docs/html/compat_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/compat_guide.html b/external/glfw-3.4/docs/html/compat_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/compat_guide.html rename to external/glfw-3.4/docs/html/compat_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/compile_8md.html b/external/glfw-3.4/docs/html/compile_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/compile_8md.html rename to external/glfw-3.4/docs/html/compile_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/compile_guide.html b/external/glfw-3.4/docs/html/compile_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/compile_guide.html rename to external/glfw-3.4/docs/html/compile_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/context_8md.html b/external/glfw-3.4/docs/html/context_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/context_8md.html rename to external/glfw-3.4/docs/html/context_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/context_guide.html b/external/glfw-3.4/docs/html/context_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/context_guide.html rename to external/glfw-3.4/docs/html/context_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/deprecated.html b/external/glfw-3.4/docs/html/deprecated.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/deprecated.html rename to external/glfw-3.4/docs/html/deprecated.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/dir_13577e2d8b9423099662de029791bd7d.html b/external/glfw-3.4/docs/html/dir_13577e2d8b9423099662de029791bd7d.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/dir_13577e2d8b9423099662de029791bd7d.html rename to external/glfw-3.4/docs/html/dir_13577e2d8b9423099662de029791bd7d.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html b/external/glfw-3.4/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html rename to external/glfw-3.4/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html b/external/glfw-3.4/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html rename to external/glfw-3.4/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html b/external/glfw-3.4/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html rename to external/glfw-3.4/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/doc.svg b/external/glfw-3.4/docs/html/doc.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/doc.svg rename to external/glfw-3.4/docs/html/doc.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/docd.svg b/external/glfw-3.4/docs/html/docd.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/docd.svg rename to external/glfw-3.4/docs/html/docd.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/doxygen.css b/external/glfw-3.4/docs/html/doxygen.css similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/doxygen.css rename to external/glfw-3.4/docs/html/doxygen.css diff --git a/external/glfw-3.4/glfw-3.4/docs/html/doxygen.svg b/external/glfw-3.4/docs/html/doxygen.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/doxygen.svg rename to external/glfw-3.4/docs/html/doxygen.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/dynsections.js b/external/glfw-3.4/docs/html/dynsections.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/dynsections.js rename to external/glfw-3.4/docs/html/dynsections.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/extra.css b/external/glfw-3.4/docs/html/extra.css similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/extra.css rename to external/glfw-3.4/docs/html/extra.css diff --git a/external/glfw-3.4/glfw-3.4/docs/html/files.html b/external/glfw-3.4/docs/html/files.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/files.html rename to external/glfw-3.4/docs/html/files.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/folderclosed.svg b/external/glfw-3.4/docs/html/folderclosed.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/folderclosed.svg rename to external/glfw-3.4/docs/html/folderclosed.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/folderclosedd.svg b/external/glfw-3.4/docs/html/folderclosedd.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/folderclosedd.svg rename to external/glfw-3.4/docs/html/folderclosedd.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/folderopen.svg b/external/glfw-3.4/docs/html/folderopen.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/folderopen.svg rename to external/glfw-3.4/docs/html/folderopen.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/folderopend.svg b/external/glfw-3.4/docs/html/folderopend.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/folderopend.svg rename to external/glfw-3.4/docs/html/folderopend.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/glfw3_8h.html b/external/glfw-3.4/docs/html/glfw3_8h.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/glfw3_8h.html rename to external/glfw-3.4/docs/html/glfw3_8h.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/glfw3_8h_source.html b/external/glfw-3.4/docs/html/glfw3_8h_source.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/glfw3_8h_source.html rename to external/glfw-3.4/docs/html/glfw3_8h_source.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/glfw3native_8h.html b/external/glfw-3.4/docs/html/glfw3native_8h.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/glfw3native_8h.html rename to external/glfw-3.4/docs/html/glfw3native_8h.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/glfw3native_8h_source.html b/external/glfw-3.4/docs/html/glfw3native_8h_source.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/glfw3native_8h_source.html rename to external/glfw-3.4/docs/html/glfw3native_8h_source.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__buttons.html b/external/glfw-3.4/docs/html/group__buttons.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__buttons.html rename to external/glfw-3.4/docs/html/group__buttons.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__context.html b/external/glfw-3.4/docs/html/group__context.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__context.html rename to external/glfw-3.4/docs/html/group__context.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__errors.html b/external/glfw-3.4/docs/html/group__errors.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__errors.html rename to external/glfw-3.4/docs/html/group__errors.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__gamepad__axes.html b/external/glfw-3.4/docs/html/group__gamepad__axes.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__gamepad__axes.html rename to external/glfw-3.4/docs/html/group__gamepad__axes.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__gamepad__buttons.html b/external/glfw-3.4/docs/html/group__gamepad__buttons.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__gamepad__buttons.html rename to external/glfw-3.4/docs/html/group__gamepad__buttons.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__hat__state.html b/external/glfw-3.4/docs/html/group__hat__state.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__hat__state.html rename to external/glfw-3.4/docs/html/group__hat__state.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__init.html b/external/glfw-3.4/docs/html/group__init.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__init.html rename to external/glfw-3.4/docs/html/group__init.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__input.html b/external/glfw-3.4/docs/html/group__input.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__input.html rename to external/glfw-3.4/docs/html/group__input.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__joysticks.html b/external/glfw-3.4/docs/html/group__joysticks.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__joysticks.html rename to external/glfw-3.4/docs/html/group__joysticks.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__keys.html b/external/glfw-3.4/docs/html/group__keys.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__keys.html rename to external/glfw-3.4/docs/html/group__keys.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__mods.html b/external/glfw-3.4/docs/html/group__mods.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__mods.html rename to external/glfw-3.4/docs/html/group__mods.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__monitor.html b/external/glfw-3.4/docs/html/group__monitor.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__monitor.html rename to external/glfw-3.4/docs/html/group__monitor.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__native.html b/external/glfw-3.4/docs/html/group__native.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__native.html rename to external/glfw-3.4/docs/html/group__native.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__shapes.html b/external/glfw-3.4/docs/html/group__shapes.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__shapes.html rename to external/glfw-3.4/docs/html/group__shapes.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__vulkan.html b/external/glfw-3.4/docs/html/group__vulkan.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__vulkan.html rename to external/glfw-3.4/docs/html/group__vulkan.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/group__window.html b/external/glfw-3.4/docs/html/group__window.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/group__window.html rename to external/glfw-3.4/docs/html/group__window.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/index.html b/external/glfw-3.4/docs/html/index.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/index.html rename to external/glfw-3.4/docs/html/index.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/input_8md.html b/external/glfw-3.4/docs/html/input_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/input_8md.html rename to external/glfw-3.4/docs/html/input_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/input_guide.html b/external/glfw-3.4/docs/html/input_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/input_guide.html rename to external/glfw-3.4/docs/html/input_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/internal_8md.html b/external/glfw-3.4/docs/html/internal_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/internal_8md.html rename to external/glfw-3.4/docs/html/internal_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/internals_guide.html b/external/glfw-3.4/docs/html/internals_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/internals_guide.html rename to external/glfw-3.4/docs/html/internals_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/intro_8md.html b/external/glfw-3.4/docs/html/intro_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/intro_8md.html rename to external/glfw-3.4/docs/html/intro_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/intro_guide.html b/external/glfw-3.4/docs/html/intro_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/intro_guide.html rename to external/glfw-3.4/docs/html/intro_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/jquery.js b/external/glfw-3.4/docs/html/jquery.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/jquery.js rename to external/glfw-3.4/docs/html/jquery.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/main_8md.html b/external/glfw-3.4/docs/html/main_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/main_8md.html rename to external/glfw-3.4/docs/html/main_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/menu.js b/external/glfw-3.4/docs/html/menu.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/menu.js rename to external/glfw-3.4/docs/html/menu.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/menudata.js b/external/glfw-3.4/docs/html/menudata.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/menudata.js rename to external/glfw-3.4/docs/html/menudata.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/minus.svg b/external/glfw-3.4/docs/html/minus.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/minus.svg rename to external/glfw-3.4/docs/html/minus.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/minusd.svg b/external/glfw-3.4/docs/html/minusd.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/minusd.svg rename to external/glfw-3.4/docs/html/minusd.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/monitor_8md.html b/external/glfw-3.4/docs/html/monitor_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/monitor_8md.html rename to external/glfw-3.4/docs/html/monitor_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/monitor_guide.html b/external/glfw-3.4/docs/html/monitor_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/monitor_guide.html rename to external/glfw-3.4/docs/html/monitor_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/moving_8md.html b/external/glfw-3.4/docs/html/moving_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/moving_8md.html rename to external/glfw-3.4/docs/html/moving_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/moving_guide.html b/external/glfw-3.4/docs/html/moving_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/moving_guide.html rename to external/glfw-3.4/docs/html/moving_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/nav_f.png b/external/glfw-3.4/docs/html/nav_f.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/nav_f.png rename to external/glfw-3.4/docs/html/nav_f.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/nav_fd.png b/external/glfw-3.4/docs/html/nav_fd.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/nav_fd.png rename to external/glfw-3.4/docs/html/nav_fd.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/nav_g.png b/external/glfw-3.4/docs/html/nav_g.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/nav_g.png rename to external/glfw-3.4/docs/html/nav_g.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/nav_h.png b/external/glfw-3.4/docs/html/nav_h.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/nav_h.png rename to external/glfw-3.4/docs/html/nav_h.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/nav_hd.png b/external/glfw-3.4/docs/html/nav_hd.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/nav_hd.png rename to external/glfw-3.4/docs/html/nav_hd.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/news.html b/external/glfw-3.4/docs/html/news.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/news.html rename to external/glfw-3.4/docs/html/news.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/news_8md.html b/external/glfw-3.4/docs/html/news_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/news_8md.html rename to external/glfw-3.4/docs/html/news_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/open.png b/external/glfw-3.4/docs/html/open.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/open.png rename to external/glfw-3.4/docs/html/open.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/pages.html b/external/glfw-3.4/docs/html/pages.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/pages.html rename to external/glfw-3.4/docs/html/pages.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/plus.svg b/external/glfw-3.4/docs/html/plus.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/plus.svg rename to external/glfw-3.4/docs/html/plus.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/plusd.svg b/external/glfw-3.4/docs/html/plusd.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/plusd.svg rename to external/glfw-3.4/docs/html/plusd.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/quick_8md.html b/external/glfw-3.4/docs/html/quick_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/quick_8md.html rename to external/glfw-3.4/docs/html/quick_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/quick_guide.html b/external/glfw-3.4/docs/html/quick_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/quick_guide.html rename to external/glfw-3.4/docs/html/quick_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_0.js b/external/glfw-3.4/docs/html/search/all_0.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_0.js rename to external/glfw-3.4/docs/html/search/all_0.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_1.js b/external/glfw-3.4/docs/html/search/all_1.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_1.js rename to external/glfw-3.4/docs/html/search/all_1.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_10.js b/external/glfw-3.4/docs/html/search/all_10.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_10.js rename to external/glfw-3.4/docs/html/search/all_10.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_11.js b/external/glfw-3.4/docs/html/search/all_11.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_11.js rename to external/glfw-3.4/docs/html/search/all_11.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_12.js b/external/glfw-3.4/docs/html/search/all_12.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_12.js rename to external/glfw-3.4/docs/html/search/all_12.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_13.js b/external/glfw-3.4/docs/html/search/all_13.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_13.js rename to external/glfw-3.4/docs/html/search/all_13.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_14.js b/external/glfw-3.4/docs/html/search/all_14.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_14.js rename to external/glfw-3.4/docs/html/search/all_14.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_15.js b/external/glfw-3.4/docs/html/search/all_15.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_15.js rename to external/glfw-3.4/docs/html/search/all_15.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_16.js b/external/glfw-3.4/docs/html/search/all_16.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_16.js rename to external/glfw-3.4/docs/html/search/all_16.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_17.js b/external/glfw-3.4/docs/html/search/all_17.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_17.js rename to external/glfw-3.4/docs/html/search/all_17.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_18.js b/external/glfw-3.4/docs/html/search/all_18.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_18.js rename to external/glfw-3.4/docs/html/search/all_18.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_19.js b/external/glfw-3.4/docs/html/search/all_19.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_19.js rename to external/glfw-3.4/docs/html/search/all_19.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_1a.js b/external/glfw-3.4/docs/html/search/all_1a.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_1a.js rename to external/glfw-3.4/docs/html/search/all_1a.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_1b.js b/external/glfw-3.4/docs/html/search/all_1b.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_1b.js rename to external/glfw-3.4/docs/html/search/all_1b.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_1c.js b/external/glfw-3.4/docs/html/search/all_1c.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_1c.js rename to external/glfw-3.4/docs/html/search/all_1c.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_1d.js b/external/glfw-3.4/docs/html/search/all_1d.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_1d.js rename to external/glfw-3.4/docs/html/search/all_1d.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_1e.js b/external/glfw-3.4/docs/html/search/all_1e.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_1e.js rename to external/glfw-3.4/docs/html/search/all_1e.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_1f.js b/external/glfw-3.4/docs/html/search/all_1f.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_1f.js rename to external/glfw-3.4/docs/html/search/all_1f.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_2.js b/external/glfw-3.4/docs/html/search/all_2.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_2.js rename to external/glfw-3.4/docs/html/search/all_2.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_3.js b/external/glfw-3.4/docs/html/search/all_3.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_3.js rename to external/glfw-3.4/docs/html/search/all_3.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_4.js b/external/glfw-3.4/docs/html/search/all_4.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_4.js rename to external/glfw-3.4/docs/html/search/all_4.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_5.js b/external/glfw-3.4/docs/html/search/all_5.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_5.js rename to external/glfw-3.4/docs/html/search/all_5.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_6.js b/external/glfw-3.4/docs/html/search/all_6.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_6.js rename to external/glfw-3.4/docs/html/search/all_6.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_7.js b/external/glfw-3.4/docs/html/search/all_7.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_7.js rename to external/glfw-3.4/docs/html/search/all_7.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_8.js b/external/glfw-3.4/docs/html/search/all_8.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_8.js rename to external/glfw-3.4/docs/html/search/all_8.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_9.js b/external/glfw-3.4/docs/html/search/all_9.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_9.js rename to external/glfw-3.4/docs/html/search/all_9.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_a.js b/external/glfw-3.4/docs/html/search/all_a.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_a.js rename to external/glfw-3.4/docs/html/search/all_a.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_b.js b/external/glfw-3.4/docs/html/search/all_b.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_b.js rename to external/glfw-3.4/docs/html/search/all_b.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_c.js b/external/glfw-3.4/docs/html/search/all_c.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_c.js rename to external/glfw-3.4/docs/html/search/all_c.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_d.js b/external/glfw-3.4/docs/html/search/all_d.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_d.js rename to external/glfw-3.4/docs/html/search/all_d.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_e.js b/external/glfw-3.4/docs/html/search/all_e.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_e.js rename to external/glfw-3.4/docs/html/search/all_e.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/all_f.js b/external/glfw-3.4/docs/html/search/all_f.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/all_f.js rename to external/glfw-3.4/docs/html/search/all_f.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/classes_0.js b/external/glfw-3.4/docs/html/search/classes_0.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/classes_0.js rename to external/glfw-3.4/docs/html/search/classes_0.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/close.svg b/external/glfw-3.4/docs/html/search/close.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/close.svg rename to external/glfw-3.4/docs/html/search/close.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/defines_0.js b/external/glfw-3.4/docs/html/search/defines_0.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/defines_0.js rename to external/glfw-3.4/docs/html/search/defines_0.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/files_0.js b/external/glfw-3.4/docs/html/search/files_0.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/files_0.js rename to external/glfw-3.4/docs/html/search/files_0.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/files_1.js b/external/glfw-3.4/docs/html/search/files_1.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/files_1.js rename to external/glfw-3.4/docs/html/search/files_1.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/files_2.js b/external/glfw-3.4/docs/html/search/files_2.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/files_2.js rename to external/glfw-3.4/docs/html/search/files_2.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/files_3.js b/external/glfw-3.4/docs/html/search/files_3.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/files_3.js rename to external/glfw-3.4/docs/html/search/files_3.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/files_4.js b/external/glfw-3.4/docs/html/search/files_4.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/files_4.js rename to external/glfw-3.4/docs/html/search/files_4.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/files_5.js b/external/glfw-3.4/docs/html/search/files_5.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/files_5.js rename to external/glfw-3.4/docs/html/search/files_5.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/files_6.js b/external/glfw-3.4/docs/html/search/files_6.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/files_6.js rename to external/glfw-3.4/docs/html/search/files_6.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/files_7.js b/external/glfw-3.4/docs/html/search/files_7.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/files_7.js rename to external/glfw-3.4/docs/html/search/files_7.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/files_8.js b/external/glfw-3.4/docs/html/search/files_8.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/files_8.js rename to external/glfw-3.4/docs/html/search/files_8.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/functions_0.js b/external/glfw-3.4/docs/html/search/functions_0.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/functions_0.js rename to external/glfw-3.4/docs/html/search/functions_0.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_0.js b/external/glfw-3.4/docs/html/search/groups_0.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_0.js rename to external/glfw-3.4/docs/html/search/groups_0.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_1.js b/external/glfw-3.4/docs/html/search/groups_1.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_1.js rename to external/glfw-3.4/docs/html/search/groups_1.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_10.js b/external/glfw-3.4/docs/html/search/groups_10.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_10.js rename to external/glfw-3.4/docs/html/search/groups_10.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_2.js b/external/glfw-3.4/docs/html/search/groups_2.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_2.js rename to external/glfw-3.4/docs/html/search/groups_2.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_3.js b/external/glfw-3.4/docs/html/search/groups_3.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_3.js rename to external/glfw-3.4/docs/html/search/groups_3.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_4.js b/external/glfw-3.4/docs/html/search/groups_4.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_4.js rename to external/glfw-3.4/docs/html/search/groups_4.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_5.js b/external/glfw-3.4/docs/html/search/groups_5.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_5.js rename to external/glfw-3.4/docs/html/search/groups_5.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_6.js b/external/glfw-3.4/docs/html/search/groups_6.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_6.js rename to external/glfw-3.4/docs/html/search/groups_6.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_7.js b/external/glfw-3.4/docs/html/search/groups_7.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_7.js rename to external/glfw-3.4/docs/html/search/groups_7.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_8.js b/external/glfw-3.4/docs/html/search/groups_8.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_8.js rename to external/glfw-3.4/docs/html/search/groups_8.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_9.js b/external/glfw-3.4/docs/html/search/groups_9.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_9.js rename to external/glfw-3.4/docs/html/search/groups_9.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_a.js b/external/glfw-3.4/docs/html/search/groups_a.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_a.js rename to external/glfw-3.4/docs/html/search/groups_a.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_b.js b/external/glfw-3.4/docs/html/search/groups_b.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_b.js rename to external/glfw-3.4/docs/html/search/groups_b.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_c.js b/external/glfw-3.4/docs/html/search/groups_c.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_c.js rename to external/glfw-3.4/docs/html/search/groups_c.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_d.js b/external/glfw-3.4/docs/html/search/groups_d.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_d.js rename to external/glfw-3.4/docs/html/search/groups_d.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_e.js b/external/glfw-3.4/docs/html/search/groups_e.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_e.js rename to external/glfw-3.4/docs/html/search/groups_e.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/groups_f.js b/external/glfw-3.4/docs/html/search/groups_f.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/groups_f.js rename to external/glfw-3.4/docs/html/search/groups_f.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/mag.svg b/external/glfw-3.4/docs/html/search/mag.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/mag.svg rename to external/glfw-3.4/docs/html/search/mag.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/mag_d.svg b/external/glfw-3.4/docs/html/search/mag_d.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/mag_d.svg rename to external/glfw-3.4/docs/html/search/mag_d.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/mag_sel.svg b/external/glfw-3.4/docs/html/search/mag_sel.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/mag_sel.svg rename to external/glfw-3.4/docs/html/search/mag_sel.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/mag_seld.svg b/external/glfw-3.4/docs/html/search/mag_seld.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/mag_seld.svg rename to external/glfw-3.4/docs/html/search/mag_seld.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_0.js b/external/glfw-3.4/docs/html/search/pages_0.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_0.js rename to external/glfw-3.4/docs/html/search/pages_0.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_1.js b/external/glfw-3.4/docs/html/search/pages_1.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_1.js rename to external/glfw-3.4/docs/html/search/pages_1.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_10.js b/external/glfw-3.4/docs/html/search/pages_10.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_10.js rename to external/glfw-3.4/docs/html/search/pages_10.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_11.js b/external/glfw-3.4/docs/html/search/pages_11.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_11.js rename to external/glfw-3.4/docs/html/search/pages_11.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_2.js b/external/glfw-3.4/docs/html/search/pages_2.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_2.js rename to external/glfw-3.4/docs/html/search/pages_2.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_3.js b/external/glfw-3.4/docs/html/search/pages_3.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_3.js rename to external/glfw-3.4/docs/html/search/pages_3.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_4.js b/external/glfw-3.4/docs/html/search/pages_4.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_4.js rename to external/glfw-3.4/docs/html/search/pages_4.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_5.js b/external/glfw-3.4/docs/html/search/pages_5.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_5.js rename to external/glfw-3.4/docs/html/search/pages_5.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_6.js b/external/glfw-3.4/docs/html/search/pages_6.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_6.js rename to external/glfw-3.4/docs/html/search/pages_6.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_7.js b/external/glfw-3.4/docs/html/search/pages_7.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_7.js rename to external/glfw-3.4/docs/html/search/pages_7.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_8.js b/external/glfw-3.4/docs/html/search/pages_8.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_8.js rename to external/glfw-3.4/docs/html/search/pages_8.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_9.js b/external/glfw-3.4/docs/html/search/pages_9.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_9.js rename to external/glfw-3.4/docs/html/search/pages_9.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_a.js b/external/glfw-3.4/docs/html/search/pages_a.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_a.js rename to external/glfw-3.4/docs/html/search/pages_a.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_b.js b/external/glfw-3.4/docs/html/search/pages_b.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_b.js rename to external/glfw-3.4/docs/html/search/pages_b.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_c.js b/external/glfw-3.4/docs/html/search/pages_c.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_c.js rename to external/glfw-3.4/docs/html/search/pages_c.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_d.js b/external/glfw-3.4/docs/html/search/pages_d.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_d.js rename to external/glfw-3.4/docs/html/search/pages_d.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_e.js b/external/glfw-3.4/docs/html/search/pages_e.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_e.js rename to external/glfw-3.4/docs/html/search/pages_e.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/pages_f.js b/external/glfw-3.4/docs/html/search/pages_f.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/pages_f.js rename to external/glfw-3.4/docs/html/search/pages_f.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/search.css b/external/glfw-3.4/docs/html/search/search.css similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/search.css rename to external/glfw-3.4/docs/html/search/search.css diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/search.js b/external/glfw-3.4/docs/html/search/search.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/search.js rename to external/glfw-3.4/docs/html/search/search.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/searchdata.js b/external/glfw-3.4/docs/html/search/searchdata.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/searchdata.js rename to external/glfw-3.4/docs/html/search/searchdata.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/typedefs_0.js b/external/glfw-3.4/docs/html/search/typedefs_0.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/typedefs_0.js rename to external/glfw-3.4/docs/html/search/typedefs_0.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/variables_0.js b/external/glfw-3.4/docs/html/search/variables_0.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/variables_0.js rename to external/glfw-3.4/docs/html/search/variables_0.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/variables_1.js b/external/glfw-3.4/docs/html/search/variables_1.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/variables_1.js rename to external/glfw-3.4/docs/html/search/variables_1.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/variables_2.js b/external/glfw-3.4/docs/html/search/variables_2.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/variables_2.js rename to external/glfw-3.4/docs/html/search/variables_2.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/variables_3.js b/external/glfw-3.4/docs/html/search/variables_3.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/variables_3.js rename to external/glfw-3.4/docs/html/search/variables_3.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/variables_4.js b/external/glfw-3.4/docs/html/search/variables_4.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/variables_4.js rename to external/glfw-3.4/docs/html/search/variables_4.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/variables_5.js b/external/glfw-3.4/docs/html/search/variables_5.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/variables_5.js rename to external/glfw-3.4/docs/html/search/variables_5.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/variables_6.js b/external/glfw-3.4/docs/html/search/variables_6.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/variables_6.js rename to external/glfw-3.4/docs/html/search/variables_6.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/variables_7.js b/external/glfw-3.4/docs/html/search/variables_7.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/variables_7.js rename to external/glfw-3.4/docs/html/search/variables_7.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/variables_8.js b/external/glfw-3.4/docs/html/search/variables_8.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/variables_8.js rename to external/glfw-3.4/docs/html/search/variables_8.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/search/variables_9.js b/external/glfw-3.4/docs/html/search/variables_9.js similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/search/variables_9.js rename to external/glfw-3.4/docs/html/search/variables_9.js diff --git a/external/glfw-3.4/glfw-3.4/docs/html/spaces.svg b/external/glfw-3.4/docs/html/spaces.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/spaces.svg rename to external/glfw-3.4/docs/html/spaces.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/html/splitbar.png b/external/glfw-3.4/docs/html/splitbar.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/splitbar.png rename to external/glfw-3.4/docs/html/splitbar.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/splitbard.png b/external/glfw-3.4/docs/html/splitbard.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/splitbard.png rename to external/glfw-3.4/docs/html/splitbard.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/struct_g_l_f_wallocator.html b/external/glfw-3.4/docs/html/struct_g_l_f_wallocator.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/struct_g_l_f_wallocator.html rename to external/glfw-3.4/docs/html/struct_g_l_f_wallocator.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/struct_g_l_f_wgamepadstate.html b/external/glfw-3.4/docs/html/struct_g_l_f_wgamepadstate.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/struct_g_l_f_wgamepadstate.html rename to external/glfw-3.4/docs/html/struct_g_l_f_wgamepadstate.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/struct_g_l_f_wgammaramp.html b/external/glfw-3.4/docs/html/struct_g_l_f_wgammaramp.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/struct_g_l_f_wgammaramp.html rename to external/glfw-3.4/docs/html/struct_g_l_f_wgammaramp.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/struct_g_l_f_wimage.html b/external/glfw-3.4/docs/html/struct_g_l_f_wimage.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/struct_g_l_f_wimage.html rename to external/glfw-3.4/docs/html/struct_g_l_f_wimage.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/struct_g_l_f_wvidmode.html b/external/glfw-3.4/docs/html/struct_g_l_f_wvidmode.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/struct_g_l_f_wvidmode.html rename to external/glfw-3.4/docs/html/struct_g_l_f_wvidmode.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/sync_off.png b/external/glfw-3.4/docs/html/sync_off.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/sync_off.png rename to external/glfw-3.4/docs/html/sync_off.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/sync_on.png b/external/glfw-3.4/docs/html/sync_on.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/sync_on.png rename to external/glfw-3.4/docs/html/sync_on.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/tab_a.png b/external/glfw-3.4/docs/html/tab_a.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/tab_a.png rename to external/glfw-3.4/docs/html/tab_a.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/tab_ad.png b/external/glfw-3.4/docs/html/tab_ad.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/tab_ad.png rename to external/glfw-3.4/docs/html/tab_ad.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/tab_b.png b/external/glfw-3.4/docs/html/tab_b.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/tab_b.png rename to external/glfw-3.4/docs/html/tab_b.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/tab_bd.png b/external/glfw-3.4/docs/html/tab_bd.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/tab_bd.png rename to external/glfw-3.4/docs/html/tab_bd.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/tab_h.png b/external/glfw-3.4/docs/html/tab_h.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/tab_h.png rename to external/glfw-3.4/docs/html/tab_h.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/tab_hd.png b/external/glfw-3.4/docs/html/tab_hd.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/tab_hd.png rename to external/glfw-3.4/docs/html/tab_hd.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/tab_s.png b/external/glfw-3.4/docs/html/tab_s.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/tab_s.png rename to external/glfw-3.4/docs/html/tab_s.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/tab_sd.png b/external/glfw-3.4/docs/html/tab_sd.png similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/tab_sd.png rename to external/glfw-3.4/docs/html/tab_sd.png diff --git a/external/glfw-3.4/glfw-3.4/docs/html/tabs.css b/external/glfw-3.4/docs/html/tabs.css similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/tabs.css rename to external/glfw-3.4/docs/html/tabs.css diff --git a/external/glfw-3.4/glfw-3.4/docs/html/topics.html b/external/glfw-3.4/docs/html/topics.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/topics.html rename to external/glfw-3.4/docs/html/topics.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/vulkan_8md.html b/external/glfw-3.4/docs/html/vulkan_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/vulkan_8md.html rename to external/glfw-3.4/docs/html/vulkan_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/vulkan_guide.html b/external/glfw-3.4/docs/html/vulkan_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/vulkan_guide.html rename to external/glfw-3.4/docs/html/vulkan_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/window_8md.html b/external/glfw-3.4/docs/html/window_8md.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/window_8md.html rename to external/glfw-3.4/docs/html/window_8md.html diff --git a/external/glfw-3.4/glfw-3.4/docs/html/window_guide.html b/external/glfw-3.4/docs/html/window_guide.html similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/html/window_guide.html rename to external/glfw-3.4/docs/html/window_guide.html diff --git a/external/glfw-3.4/glfw-3.4/docs/input.md b/external/glfw-3.4/docs/input.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/input.md rename to external/glfw-3.4/docs/input.md diff --git a/external/glfw-3.4/glfw-3.4/docs/internal.md b/external/glfw-3.4/docs/internal.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/internal.md rename to external/glfw-3.4/docs/internal.md diff --git a/external/glfw-3.4/glfw-3.4/docs/intro.md b/external/glfw-3.4/docs/intro.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/intro.md rename to external/glfw-3.4/docs/intro.md diff --git a/external/glfw-3.4/glfw-3.4/docs/main.md b/external/glfw-3.4/docs/main.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/main.md rename to external/glfw-3.4/docs/main.md diff --git a/external/glfw-3.4/glfw-3.4/docs/monitor.md b/external/glfw-3.4/docs/monitor.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/monitor.md rename to external/glfw-3.4/docs/monitor.md diff --git a/external/glfw-3.4/glfw-3.4/docs/moving.md b/external/glfw-3.4/docs/moving.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/moving.md rename to external/glfw-3.4/docs/moving.md diff --git a/external/glfw-3.4/glfw-3.4/docs/news.md b/external/glfw-3.4/docs/news.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/news.md rename to external/glfw-3.4/docs/news.md diff --git a/external/glfw-3.4/glfw-3.4/docs/quick.md b/external/glfw-3.4/docs/quick.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/quick.md rename to external/glfw-3.4/docs/quick.md diff --git a/external/glfw-3.4/glfw-3.4/docs/spaces.svg b/external/glfw-3.4/docs/spaces.svg similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/spaces.svg rename to external/glfw-3.4/docs/spaces.svg diff --git a/external/glfw-3.4/glfw-3.4/docs/vulkan.md b/external/glfw-3.4/docs/vulkan.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/vulkan.md rename to external/glfw-3.4/docs/vulkan.md diff --git a/external/glfw-3.4/glfw-3.4/docs/window.md b/external/glfw-3.4/docs/window.md similarity index 100% rename from external/glfw-3.4/glfw-3.4/docs/window.md rename to external/glfw-3.4/docs/window.md diff --git a/external/glfw-3.4/glfw-3.4/examples/CMakeLists.txt b/external/glfw-3.4/examples/CMakeLists.txt similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/CMakeLists.txt rename to external/glfw-3.4/examples/CMakeLists.txt diff --git a/external/glfw-3.4/glfw-3.4/examples/boing.c b/external/glfw-3.4/examples/boing.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/boing.c rename to external/glfw-3.4/examples/boing.c diff --git a/external/glfw-3.4/glfw-3.4/examples/gears.c b/external/glfw-3.4/examples/gears.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/gears.c rename to external/glfw-3.4/examples/gears.c diff --git a/external/glfw-3.4/glfw-3.4/examples/glfw.icns b/external/glfw-3.4/examples/glfw.icns similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/glfw.icns rename to external/glfw-3.4/examples/glfw.icns diff --git a/external/glfw-3.4/glfw-3.4/examples/glfw.ico b/external/glfw-3.4/examples/glfw.ico similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/glfw.ico rename to external/glfw-3.4/examples/glfw.ico diff --git a/external/glfw-3.4/glfw-3.4/examples/glfw.rc b/external/glfw-3.4/examples/glfw.rc similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/glfw.rc rename to external/glfw-3.4/examples/glfw.rc diff --git a/external/glfw-3.4/glfw-3.4/examples/heightmap.c b/external/glfw-3.4/examples/heightmap.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/heightmap.c rename to external/glfw-3.4/examples/heightmap.c diff --git a/external/glfw-3.4/glfw-3.4/examples/offscreen.c b/external/glfw-3.4/examples/offscreen.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/offscreen.c rename to external/glfw-3.4/examples/offscreen.c diff --git a/external/glfw-3.4/glfw-3.4/examples/particles.c b/external/glfw-3.4/examples/particles.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/particles.c rename to external/glfw-3.4/examples/particles.c diff --git a/external/glfw-3.4/glfw-3.4/examples/sharing.c b/external/glfw-3.4/examples/sharing.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/sharing.c rename to external/glfw-3.4/examples/sharing.c diff --git a/external/glfw-3.4/glfw-3.4/examples/splitview.c b/external/glfw-3.4/examples/splitview.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/splitview.c rename to external/glfw-3.4/examples/splitview.c diff --git a/external/glfw-3.4/glfw-3.4/examples/triangle-opengl.c b/external/glfw-3.4/examples/triangle-opengl.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/triangle-opengl.c rename to external/glfw-3.4/examples/triangle-opengl.c diff --git a/external/glfw-3.4/glfw-3.4/examples/triangle-opengles.c b/external/glfw-3.4/examples/triangle-opengles.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/triangle-opengles.c rename to external/glfw-3.4/examples/triangle-opengles.c diff --git a/external/glfw-3.4/glfw-3.4/examples/wave.c b/external/glfw-3.4/examples/wave.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/wave.c rename to external/glfw-3.4/examples/wave.c diff --git a/external/glfw-3.4/glfw-3.4/examples/windows.c b/external/glfw-3.4/examples/windows.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/examples/windows.c rename to external/glfw-3.4/examples/windows.c diff --git a/external/glfw-3.4/glfw-3.4/include/GLFW/glfw3.h b/external/glfw-3.4/include/GLFW/glfw3.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/include/GLFW/glfw3.h rename to external/glfw-3.4/include/GLFW/glfw3.h diff --git a/external/glfw-3.4/glfw-3.4/include/GLFW/glfw3native.h b/external/glfw-3.4/include/GLFW/glfw3native.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/include/GLFW/glfw3native.h rename to external/glfw-3.4/include/GLFW/glfw3native.h diff --git a/external/glfw-3.4/glfw-3.4/src/CMakeLists.txt b/external/glfw-3.4/src/CMakeLists.txt similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/CMakeLists.txt rename to external/glfw-3.4/src/CMakeLists.txt diff --git a/external/glfw-3.4/glfw-3.4/src/cocoa_init.m b/external/glfw-3.4/src/cocoa_init.m similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/cocoa_init.m rename to external/glfw-3.4/src/cocoa_init.m diff --git a/external/glfw-3.4/glfw-3.4/src/cocoa_joystick.h b/external/glfw-3.4/src/cocoa_joystick.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/cocoa_joystick.h rename to external/glfw-3.4/src/cocoa_joystick.h diff --git a/external/glfw-3.4/glfw-3.4/src/cocoa_joystick.m b/external/glfw-3.4/src/cocoa_joystick.m similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/cocoa_joystick.m rename to external/glfw-3.4/src/cocoa_joystick.m diff --git a/external/glfw-3.4/glfw-3.4/src/cocoa_monitor.m b/external/glfw-3.4/src/cocoa_monitor.m similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/cocoa_monitor.m rename to external/glfw-3.4/src/cocoa_monitor.m diff --git a/external/glfw-3.4/glfw-3.4/src/cocoa_platform.h b/external/glfw-3.4/src/cocoa_platform.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/cocoa_platform.h rename to external/glfw-3.4/src/cocoa_platform.h diff --git a/external/glfw-3.4/glfw-3.4/src/cocoa_time.c b/external/glfw-3.4/src/cocoa_time.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/cocoa_time.c rename to external/glfw-3.4/src/cocoa_time.c diff --git a/external/glfw-3.4/glfw-3.4/src/cocoa_time.h b/external/glfw-3.4/src/cocoa_time.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/cocoa_time.h rename to external/glfw-3.4/src/cocoa_time.h diff --git a/external/glfw-3.4/glfw-3.4/src/cocoa_window.m b/external/glfw-3.4/src/cocoa_window.m similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/cocoa_window.m rename to external/glfw-3.4/src/cocoa_window.m diff --git a/external/glfw-3.4/glfw-3.4/src/context.c b/external/glfw-3.4/src/context.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/context.c rename to external/glfw-3.4/src/context.c diff --git a/external/glfw-3.4/glfw-3.4/src/egl_context.c b/external/glfw-3.4/src/egl_context.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/egl_context.c rename to external/glfw-3.4/src/egl_context.c diff --git a/external/glfw-3.4/glfw-3.4/src/glfw.rc.in b/external/glfw-3.4/src/glfw.rc.in similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/glfw.rc.in rename to external/glfw-3.4/src/glfw.rc.in diff --git a/external/glfw-3.4/glfw-3.4/src/glx_context.c b/external/glfw-3.4/src/glx_context.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/glx_context.c rename to external/glfw-3.4/src/glx_context.c diff --git a/external/glfw-3.4/glfw-3.4/src/init.c b/external/glfw-3.4/src/init.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/init.c rename to external/glfw-3.4/src/init.c diff --git a/external/glfw-3.4/glfw-3.4/src/input.c b/external/glfw-3.4/src/input.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/input.c rename to external/glfw-3.4/src/input.c diff --git a/external/glfw-3.4/glfw-3.4/src/internal.h b/external/glfw-3.4/src/internal.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/internal.h rename to external/glfw-3.4/src/internal.h diff --git a/external/glfw-3.4/glfw-3.4/src/linux_joystick.c b/external/glfw-3.4/src/linux_joystick.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/linux_joystick.c rename to external/glfw-3.4/src/linux_joystick.c diff --git a/external/glfw-3.4/glfw-3.4/src/linux_joystick.h b/external/glfw-3.4/src/linux_joystick.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/linux_joystick.h rename to external/glfw-3.4/src/linux_joystick.h diff --git a/external/glfw-3.4/glfw-3.4/src/mappings.h b/external/glfw-3.4/src/mappings.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/mappings.h rename to external/glfw-3.4/src/mappings.h diff --git a/external/glfw-3.4/glfw-3.4/src/mappings.h.in b/external/glfw-3.4/src/mappings.h.in similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/mappings.h.in rename to external/glfw-3.4/src/mappings.h.in diff --git a/external/glfw-3.4/glfw-3.4/src/monitor.c b/external/glfw-3.4/src/monitor.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/monitor.c rename to external/glfw-3.4/src/monitor.c diff --git a/external/glfw-3.4/glfw-3.4/src/nsgl_context.m b/external/glfw-3.4/src/nsgl_context.m similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/nsgl_context.m rename to external/glfw-3.4/src/nsgl_context.m diff --git a/external/glfw-3.4/glfw-3.4/src/null_init.c b/external/glfw-3.4/src/null_init.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/null_init.c rename to external/glfw-3.4/src/null_init.c diff --git a/external/glfw-3.4/glfw-3.4/src/null_joystick.c b/external/glfw-3.4/src/null_joystick.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/null_joystick.c rename to external/glfw-3.4/src/null_joystick.c diff --git a/external/glfw-3.4/glfw-3.4/src/null_joystick.h b/external/glfw-3.4/src/null_joystick.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/null_joystick.h rename to external/glfw-3.4/src/null_joystick.h diff --git a/external/glfw-3.4/glfw-3.4/src/null_monitor.c b/external/glfw-3.4/src/null_monitor.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/null_monitor.c rename to external/glfw-3.4/src/null_monitor.c diff --git a/external/glfw-3.4/glfw-3.4/src/null_platform.h b/external/glfw-3.4/src/null_platform.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/null_platform.h rename to external/glfw-3.4/src/null_platform.h diff --git a/external/glfw-3.4/glfw-3.4/src/null_window.c b/external/glfw-3.4/src/null_window.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/null_window.c rename to external/glfw-3.4/src/null_window.c diff --git a/external/glfw-3.4/glfw-3.4/src/osmesa_context.c b/external/glfw-3.4/src/osmesa_context.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/osmesa_context.c rename to external/glfw-3.4/src/osmesa_context.c diff --git a/external/glfw-3.4/glfw-3.4/src/platform.c b/external/glfw-3.4/src/platform.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/platform.c rename to external/glfw-3.4/src/platform.c diff --git a/external/glfw-3.4/glfw-3.4/src/platform.h b/external/glfw-3.4/src/platform.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/platform.h rename to external/glfw-3.4/src/platform.h diff --git a/external/glfw-3.4/glfw-3.4/src/posix_module.c b/external/glfw-3.4/src/posix_module.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/posix_module.c rename to external/glfw-3.4/src/posix_module.c diff --git a/external/glfw-3.4/glfw-3.4/src/posix_poll.c b/external/glfw-3.4/src/posix_poll.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/posix_poll.c rename to external/glfw-3.4/src/posix_poll.c diff --git a/external/glfw-3.4/glfw-3.4/src/posix_poll.h b/external/glfw-3.4/src/posix_poll.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/posix_poll.h rename to external/glfw-3.4/src/posix_poll.h diff --git a/external/glfw-3.4/glfw-3.4/src/posix_thread.c b/external/glfw-3.4/src/posix_thread.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/posix_thread.c rename to external/glfw-3.4/src/posix_thread.c diff --git a/external/glfw-3.4/glfw-3.4/src/posix_thread.h b/external/glfw-3.4/src/posix_thread.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/posix_thread.h rename to external/glfw-3.4/src/posix_thread.h diff --git a/external/glfw-3.4/glfw-3.4/src/posix_time.c b/external/glfw-3.4/src/posix_time.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/posix_time.c rename to external/glfw-3.4/src/posix_time.c diff --git a/external/glfw-3.4/glfw-3.4/src/posix_time.h b/external/glfw-3.4/src/posix_time.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/posix_time.h rename to external/glfw-3.4/src/posix_time.h diff --git a/external/glfw-3.4/glfw-3.4/src/vulkan.c b/external/glfw-3.4/src/vulkan.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/vulkan.c rename to external/glfw-3.4/src/vulkan.c diff --git a/external/glfw-3.4/glfw-3.4/src/wgl_context.c b/external/glfw-3.4/src/wgl_context.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/wgl_context.c rename to external/glfw-3.4/src/wgl_context.c diff --git a/external/glfw-3.4/glfw-3.4/src/win32_init.c b/external/glfw-3.4/src/win32_init.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_init.c rename to external/glfw-3.4/src/win32_init.c diff --git a/external/glfw-3.4/glfw-3.4/src/win32_joystick.c b/external/glfw-3.4/src/win32_joystick.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_joystick.c rename to external/glfw-3.4/src/win32_joystick.c diff --git a/external/glfw-3.4/glfw-3.4/src/win32_joystick.h b/external/glfw-3.4/src/win32_joystick.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_joystick.h rename to external/glfw-3.4/src/win32_joystick.h diff --git a/external/glfw-3.4/glfw-3.4/src/win32_module.c b/external/glfw-3.4/src/win32_module.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_module.c rename to external/glfw-3.4/src/win32_module.c diff --git a/external/glfw-3.4/glfw-3.4/src/win32_monitor.c b/external/glfw-3.4/src/win32_monitor.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_monitor.c rename to external/glfw-3.4/src/win32_monitor.c diff --git a/external/glfw-3.4/glfw-3.4/src/win32_platform.h b/external/glfw-3.4/src/win32_platform.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_platform.h rename to external/glfw-3.4/src/win32_platform.h diff --git a/external/glfw-3.4/glfw-3.4/src/win32_thread.c b/external/glfw-3.4/src/win32_thread.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_thread.c rename to external/glfw-3.4/src/win32_thread.c diff --git a/external/glfw-3.4/glfw-3.4/src/win32_thread.h b/external/glfw-3.4/src/win32_thread.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_thread.h rename to external/glfw-3.4/src/win32_thread.h diff --git a/external/glfw-3.4/glfw-3.4/src/win32_time.c b/external/glfw-3.4/src/win32_time.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_time.c rename to external/glfw-3.4/src/win32_time.c diff --git a/external/glfw-3.4/glfw-3.4/src/win32_time.h b/external/glfw-3.4/src/win32_time.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_time.h rename to external/glfw-3.4/src/win32_time.h diff --git a/external/glfw-3.4/glfw-3.4/src/win32_window.c b/external/glfw-3.4/src/win32_window.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/win32_window.c rename to external/glfw-3.4/src/win32_window.c diff --git a/external/glfw-3.4/glfw-3.4/src/window.c b/external/glfw-3.4/src/window.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/window.c rename to external/glfw-3.4/src/window.c diff --git a/external/glfw-3.4/glfw-3.4/src/wl_init.c b/external/glfw-3.4/src/wl_init.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/wl_init.c rename to external/glfw-3.4/src/wl_init.c diff --git a/external/glfw-3.4/glfw-3.4/src/wl_monitor.c b/external/glfw-3.4/src/wl_monitor.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/wl_monitor.c rename to external/glfw-3.4/src/wl_monitor.c diff --git a/external/glfw-3.4/glfw-3.4/src/wl_platform.h b/external/glfw-3.4/src/wl_platform.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/wl_platform.h rename to external/glfw-3.4/src/wl_platform.h diff --git a/external/glfw-3.4/glfw-3.4/src/wl_window.c b/external/glfw-3.4/src/wl_window.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/wl_window.c rename to external/glfw-3.4/src/wl_window.c diff --git a/external/glfw-3.4/glfw-3.4/src/x11_init.c b/external/glfw-3.4/src/x11_init.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/x11_init.c rename to external/glfw-3.4/src/x11_init.c diff --git a/external/glfw-3.4/glfw-3.4/src/x11_monitor.c b/external/glfw-3.4/src/x11_monitor.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/x11_monitor.c rename to external/glfw-3.4/src/x11_monitor.c diff --git a/external/glfw-3.4/glfw-3.4/src/x11_platform.h b/external/glfw-3.4/src/x11_platform.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/x11_platform.h rename to external/glfw-3.4/src/x11_platform.h diff --git a/external/glfw-3.4/glfw-3.4/src/x11_window.c b/external/glfw-3.4/src/x11_window.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/x11_window.c rename to external/glfw-3.4/src/x11_window.c diff --git a/external/glfw-3.4/glfw-3.4/src/xkb_unicode.c b/external/glfw-3.4/src/xkb_unicode.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/xkb_unicode.c rename to external/glfw-3.4/src/xkb_unicode.c diff --git a/external/glfw-3.4/glfw-3.4/src/xkb_unicode.h b/external/glfw-3.4/src/xkb_unicode.h similarity index 100% rename from external/glfw-3.4/glfw-3.4/src/xkb_unicode.h rename to external/glfw-3.4/src/xkb_unicode.h diff --git a/external/glfw-3.4/glfw-3.4/tests/CMakeLists.txt b/external/glfw-3.4/tests/CMakeLists.txt similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/CMakeLists.txt rename to external/glfw-3.4/tests/CMakeLists.txt diff --git a/external/glfw-3.4/glfw-3.4/tests/allocator.c b/external/glfw-3.4/tests/allocator.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/allocator.c rename to external/glfw-3.4/tests/allocator.c diff --git a/external/glfw-3.4/glfw-3.4/tests/clipboard.c b/external/glfw-3.4/tests/clipboard.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/clipboard.c rename to external/glfw-3.4/tests/clipboard.c diff --git a/external/glfw-3.4/glfw-3.4/tests/cursor.c b/external/glfw-3.4/tests/cursor.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/cursor.c rename to external/glfw-3.4/tests/cursor.c diff --git a/external/glfw-3.4/glfw-3.4/tests/empty.c b/external/glfw-3.4/tests/empty.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/empty.c rename to external/glfw-3.4/tests/empty.c diff --git a/external/glfw-3.4/glfw-3.4/tests/events.c b/external/glfw-3.4/tests/events.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/events.c rename to external/glfw-3.4/tests/events.c diff --git a/external/glfw-3.4/glfw-3.4/tests/gamma.c b/external/glfw-3.4/tests/gamma.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/gamma.c rename to external/glfw-3.4/tests/gamma.c diff --git a/external/glfw-3.4/glfw-3.4/tests/glfwinfo.c b/external/glfw-3.4/tests/glfwinfo.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/glfwinfo.c rename to external/glfw-3.4/tests/glfwinfo.c diff --git a/external/glfw-3.4/glfw-3.4/tests/icon.c b/external/glfw-3.4/tests/icon.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/icon.c rename to external/glfw-3.4/tests/icon.c diff --git a/external/glfw-3.4/glfw-3.4/tests/iconify.c b/external/glfw-3.4/tests/iconify.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/iconify.c rename to external/glfw-3.4/tests/iconify.c diff --git a/external/glfw-3.4/glfw-3.4/tests/inputlag.c b/external/glfw-3.4/tests/inputlag.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/inputlag.c rename to external/glfw-3.4/tests/inputlag.c diff --git a/external/glfw-3.4/glfw-3.4/tests/joysticks.c b/external/glfw-3.4/tests/joysticks.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/joysticks.c rename to external/glfw-3.4/tests/joysticks.c diff --git a/external/glfw-3.4/glfw-3.4/tests/monitors.c b/external/glfw-3.4/tests/monitors.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/monitors.c rename to external/glfw-3.4/tests/monitors.c diff --git a/external/glfw-3.4/glfw-3.4/tests/msaa.c b/external/glfw-3.4/tests/msaa.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/msaa.c rename to external/glfw-3.4/tests/msaa.c diff --git a/external/glfw-3.4/glfw-3.4/tests/reopen.c b/external/glfw-3.4/tests/reopen.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/reopen.c rename to external/glfw-3.4/tests/reopen.c diff --git a/external/glfw-3.4/glfw-3.4/tests/tearing.c b/external/glfw-3.4/tests/tearing.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/tearing.c rename to external/glfw-3.4/tests/tearing.c diff --git a/external/glfw-3.4/glfw-3.4/tests/threads.c b/external/glfw-3.4/tests/threads.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/threads.c rename to external/glfw-3.4/tests/threads.c diff --git a/external/glfw-3.4/glfw-3.4/tests/timeout.c b/external/glfw-3.4/tests/timeout.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/timeout.c rename to external/glfw-3.4/tests/timeout.c diff --git a/external/glfw-3.4/glfw-3.4/tests/title.c b/external/glfw-3.4/tests/title.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/title.c rename to external/glfw-3.4/tests/title.c diff --git a/external/glfw-3.4/glfw-3.4/tests/triangle-vulkan.c b/external/glfw-3.4/tests/triangle-vulkan.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/triangle-vulkan.c rename to external/glfw-3.4/tests/triangle-vulkan.c diff --git a/external/glfw-3.4/glfw-3.4/tests/window.c b/external/glfw-3.4/tests/window.c similarity index 100% rename from external/glfw-3.4/glfw-3.4/tests/window.c rename to external/glfw-3.4/tests/window.c diff --git a/src/render/render.cpp b/src/render/render.cpp index 73d3144..7441c48 100644 --- a/src/render/render.cpp +++ b/src/render/render.cpp @@ -26,7 +26,24 @@ PlumageRender::PlumageRender() } - void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFModel::Material::AlphaMode alphaMode) { +void PlumageRender::initWindow(int Width, int Height) +{ + glfwInit(); + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE); + window = glfwCreateWindow(Width, Height, "vulkan", nullptr, nullptr); + glfwSetWindowUserPointer(window, this); + glfwSetFramebufferSizeCallback(window, framebufferResizeCallback); + +} + +void PlumageRender::framebufferResizeCallback(GLFWwindow* window, int width, int height) +{ + auto app = reinterpret_cast(glfwGetWindowUserPointer(window)); + app->framebufferResized = true; +} + +void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFModel::Material::AlphaMode alphaMode) { if (node->mesh) { // Render mesh primitives for (glTFModel::Primitive* primitive : node->mesh->primitives) { @@ -110,7 +127,7 @@ PlumageRender::PlumageRender() cmdBufferBeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; VkClearValue clearValues[3]; - if (settings.multiSampling) { + if (setter.settings.multiSampling) { clearValues[0].color = { { 0.0f, 0.0f, 0.0f, 1.0f } }; clearValues[1].color = { { 0.0f, 0.0f, 0.0f, 1.0f } }; clearValues[2].depthStencil = { 1.0f, 0 }; @@ -125,9 +142,9 @@ PlumageRender::PlumageRender() renderPassBeginInfo.renderPass = renderPass; renderPassBeginInfo.renderArea.offset.x = 0; renderPassBeginInfo.renderArea.offset.y = 0; - renderPassBeginInfo.renderArea.extent.width = width; - renderPassBeginInfo.renderArea.extent.height = height; - renderPassBeginInfo.clearValueCount = settings.multiSampling ? 3 : 2; + renderPassBeginInfo.renderArea.extent.width = setter.settings.width; + renderPassBeginInfo.renderArea.extent.height = setter.settings.height; + renderPassBeginInfo.clearValueCount = setter.settings.multiSampling ? 3 : 2; renderPassBeginInfo.pClearValues = clearValues; @@ -141,14 +158,14 @@ PlumageRender::PlumageRender() vkCmdBeginRenderPass(currentCB, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); VkViewport viewport{}; - viewport.width = (float)width; - viewport.height = (float)height; + viewport.width = (float)setter.settings.width; + viewport.height = (float)setter.settings.height; viewport.minDepth = 0.0f; viewport.maxDepth = 1.0f; vkCmdSetViewport(currentCB, 0, 1, &viewport); VkRect2D scissor{}; - scissor.extent = { width, height }; + scissor.extent = { setter.settings.width, setter.settings.height }; vkCmdSetScissor(currentCB, 0, 1, &scissor); VkDeviceSize offsets[1] = { 0 }; @@ -183,7 +200,7 @@ PlumageRender::PlumageRender() } // User interface - if (!settings.headless) + if (!setter.settings.headless) { gui->draw(currentCB); } @@ -240,33 +257,13 @@ PlumageRender::PlumageRender() readDirectory(assetpath + "environments", "*.ktx", environments, false); - textures.empty.loadFromFile(PlumageRender::filePath.emptyEnvmapFilePath, VK_FORMAT_R8G8B8A8_UNORM, vulkanDevice, queue); - - std::string sceneFile = filePath.glTFModelFilePath; - std::string envMapFile = filePath.envMapFilePath; - for (size_t i = 0; i < args.size(); i++) { - if ((std::string(args[i]).find(".gltf") != std::string::npos) || (std::string(args[i]).find(".glb") != std::string::npos)) { - std::ifstream file(args[i]); - if (file.good()) { - sceneFile = args[i]; - } - else { - std::cout << "could not load \"" << args[i] << "\"" << std::endl; - } - } - if (std::string(args[i]).find(".ktx") != std::string::npos) { - std::ifstream file(args[i]); - if (file.good()) { - envMapFile = args[i]; - } - else { - std::cout << "could not load \"" << args[i] << "\"" << std::endl; - } - } - } + textures.empty.loadFromFile(setter.filePath.emptyEnvmapFilePath, VK_FORMAT_R8G8B8A8_UNORM, vulkanDevice, queue); + std::string sceneFile = setter.filePath.glTFModelFilePath; + std::string envMapFile = setter.filePath.envMapFilePath; + loadScene(sceneFile.c_str()); - models.skybox.loadFromFile(PlumageRender::filePath.skyboxModleFilePath, vulkanDevice, queue); + models.skybox.loadFromFile(setter.filePath.skyboxModleFilePath, vulkanDevice, queue); loadEnvironment(envMapFile.c_str()); } @@ -560,8 +557,8 @@ PlumageRender::PlumageRender() VkPipelineMultisampleStateCreateInfo multisampleStateCI{}; multisampleStateCI.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; - if (settings.multiSampling) { - multisampleStateCI.rasterizationSamples = settings.sampleCount; + if (setter.settings.multiSampling) { + multisampleStateCI.rasterizationSamples = setter.settings.sampleCount; } std::vector dynamicStateEnables = { @@ -624,14 +621,14 @@ PlumageRender::PlumageRender() pipelineCI.stageCount = static_cast(shaderStages.size()); pipelineCI.pStages = shaderStages.data(); - if (settings.multiSampling) { - multisampleStateCI.rasterizationSamples = settings.sampleCount; + if (setter.settings.multiSampling) { + multisampleStateCI.rasterizationSamples = setter.settings.sampleCount; } // Skybox pipeline (background cube) shaderStages = { - loadShader(device,PlumageRender::filePath.skyboxVertShaderPath, VK_SHADER_STAGE_VERTEX_BIT), - loadShader(device,PlumageRender::filePath.skyboxFragShaderPath, VK_SHADER_STAGE_FRAGMENT_BIT) + loadShader(device,setter.filePath.skyboxVertShaderPath, VK_SHADER_STAGE_VERTEX_BIT), + loadShader(device,setter.filePath.skyboxFragShaderPath, VK_SHADER_STAGE_FRAGMENT_BIT) }; VK_CHECK_RESULT(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCI, nullptr, &pipelines.skybox)); for (auto shaderStage : shaderStages) { @@ -640,8 +637,8 @@ PlumageRender::PlumageRender() // PBR pipeline shaderStages = { - loadShader(device,PlumageRender::filePath.pbrVertShaderPath, VK_SHADER_STAGE_VERTEX_BIT), - loadShader(device,PlumageRender::filePath.pbrFragShaderPath, VK_SHADER_STAGE_FRAGMENT_BIT) + loadShader(device,setter.filePath.pbrVertShaderPath, VK_SHADER_STAGE_VERTEX_BIT), + loadShader(device,setter.filePath.pbrFragShaderPath, VK_SHADER_STAGE_FRAGMENT_BIT) }; depthStencilStateCI.depthWriteEnable = VK_TRUE; depthStencilStateCI.depthTestEnable = VK_TRUE; @@ -998,13 +995,13 @@ PlumageRender::PlumageRender() pipelineCI.pStages = shaderStages.data(); pipelineCI.renderPass = renderpass; - shaderStages[0] = loadShader(device, PlumageRender::filePath.filterVertShaderPath, VK_SHADER_STAGE_VERTEX_BIT); + shaderStages[0] = loadShader(device, setter.filePath.filterVertShaderPath, VK_SHADER_STAGE_VERTEX_BIT); switch (target) { case IRRADIANCE: - shaderStages[1] = loadShader(device, PlumageRender::filePath.irradianceFragShaderPath, VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[1] = loadShader(device, setter.filePath.irradianceFragShaderPath, VK_SHADER_STAGE_FRAGMENT_BIT); break; case PREFILTEREDENV: - shaderStages[1] = loadShader(device, PlumageRender::filePath.prefilterEnvmapFragShaderPath, VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[1] = loadShader(device, setter.filePath.prefilterEnvmapFragShaderPath, VK_SHADER_STAGE_FRAGMENT_BIT); break; }; VkPipeline pipeline; @@ -1408,8 +1405,8 @@ PlumageRender::PlumageRender() // Look-up-table (from BRDF) pipeline shaderStages = { - loadShader(device,PlumageRender::filePath.brdfVertShaderPath, VK_SHADER_STAGE_VERTEX_BIT), - loadShader(device,PlumageRender::filePath.brdfFragShaderPath, VK_SHADER_STAGE_FRAGMENT_BIT) + loadShader(device,setter.filePath.brdfVertShaderPath, VK_SHADER_STAGE_VERTEX_BIT), + loadShader(device,setter.filePath.brdfFragShaderPath, VK_SHADER_STAGE_FRAGMENT_BIT) }; VkPipeline pipeline; VK_CHECK_RESULT(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCI, nullptr, &pipeline)); @@ -1532,7 +1529,7 @@ PlumageRender::PlumageRender() camera.type = Camera::CameraType::lookat; - camera.setPerspective(45.0f, (float)width / (float)height, 0.1f, 256.0f); + camera.setPerspective(45.0f, (float)setter.settings.width / (float)setter.settings.height, 0.1f, 256.0f); camera.rotationSpeed = 0.25f; camera.movementSpeed = 0.1f; camera.setPosition({ 0.0f, 0.0f, -1.0f }); @@ -1549,7 +1546,7 @@ PlumageRender::PlumageRender() VkFenceCreateInfo fenceCI{ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, nullptr, VK_FENCE_CREATE_SIGNALED_BIT }; VK_CHECK_RESULT(vkCreateFence(device, &fenceCI, nullptr, &waitFence)); } - if (!settings.headless) + if (!setter.settings.headless) { for (auto& semaphore : presentCompleteSemaphores) { VkSemaphoreCreateInfo semaphoreCI{ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, nullptr, 0 }; @@ -1578,9 +1575,9 @@ PlumageRender::PlumageRender() prepareUniformBuffers(); setupDescriptors(); preparePipelines(); - if (!settings.headless) + if (!setter.settings.headless) { - gui = new UI(vulkanDevice, renderPass, queue, pipelineCache, settings.sampleCount); + gui = new UI(vulkanDevice, renderPass, queue, pipelineCache, setter.settings.sampleCount); updateUIOverlay(); } @@ -1635,8 +1632,8 @@ PlumageRender::PlumageRender() imageCreateCI.imageType = VK_IMAGE_TYPE_2D; // Note that vkCmdBlitImage (if supported) will also do format conversions if the swapchain color format would differ imageCreateCI.format = VK_FORMAT_R8G8B8A8_UNORM; - imageCreateCI.extent.width = width; - imageCreateCI.extent.height = height; + imageCreateCI.extent.width = setter.settings.width; + imageCreateCI.extent.height = setter.settings.height; imageCreateCI.extent.depth = 1; imageCreateCI.arrayLayers = 1; imageCreateCI.mipLevels = 1; @@ -1691,8 +1688,8 @@ PlumageRender::PlumageRender() { // Define the region to blit (we will blit the whole swapchain image) VkOffset3D blitSize; - blitSize.x = width; - blitSize.y = height; + blitSize.x = setter.settings.width; + blitSize.y = setter.settings.height; blitSize.z = 1; VkImageBlit imageBlitRegion{}; imageBlitRegion.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; @@ -1719,8 +1716,8 @@ PlumageRender::PlumageRender() imageCopyRegion.srcSubresource.layerCount = 1; imageCopyRegion.dstSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; imageCopyRegion.dstSubresource.layerCount = 1; - imageCopyRegion.extent.width = width; - imageCopyRegion.extent.height = height; + imageCopyRegion.extent.width = setter.settings.width; + imageCopyRegion.extent.height = setter.settings.height; imageCopyRegion.extent.depth = 1; // Issue the copy command @@ -1744,7 +1741,7 @@ PlumageRender::PlumageRender() VK_PIPELINE_STAGE_TRANSFER_BIT, VkImageSubresourceRange{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }); - if (!settings.headless) + if (!setter.settings.headless) { // Transition back the swap chain image after the blit is done vks::tools::insertImageMemoryBarrier( @@ -1781,16 +1778,16 @@ PlumageRender::PlumageRender() colorSwizzle = (std::find(formatsBGR.begin(), formatsBGR.end(), swapChain.colorFormat) != formatsBGR.end()); } - if (settings.outputPNGimage) + if (setter.settings.outputPNGimage) { if (colorSwizzle) { // 暂时不改,此处需要将BGR通道改成RGB格式 - stbi_write_png(filePath.c_str(), width, height, 4, data, static_cast(subResourceLayout.rowPitch)); + stbi_write_png(filePath.c_str(), setter.settings.width, setter.settings.height, 4, data, static_cast(subResourceLayout.rowPitch)); } else { - stbi_write_png(filePath.c_str(), width, height, 4, data, static_cast(subResourceLayout.rowPitch)); + stbi_write_png(filePath.c_str(), setter.settings.width, setter.settings.height, 4, data, static_cast(subResourceLayout.rowPitch)); } } @@ -1800,13 +1797,13 @@ PlumageRender::PlumageRender() std::ofstream file(filePath, std::ios::out | std::ios::binary); // ppm header - file << "P6\n" << width << "\n" << height << "\n" << 255 << "\n"; + file << "P6\n" << setter.settings.width << "\n" << setter.settings.height << "\n" << 255 << "\n"; // ppm binary pixel data - for (uint32_t y = 0; y < height; y++) + for (uint32_t y = 0; y < setter.settings.height; y++) { unsigned int* row = (unsigned int*)data; - for (uint32_t x = 0; x < width; x++) + for (uint32_t x = 0; x < setter.settings.width; x++) { if (colorSwizzle) { @@ -1840,15 +1837,15 @@ PlumageRender::PlumageRender() void PlumageRender::outputImageSequence() { // 比较已保存的帧数和设置里的开始帧数,在生成前清理上一次生成的图片序列 - if (savedFrameCounter == settings.startFrameCount) + if (savedFrameCounter == setter.settings.startFrameCount) { std::cout << "clean up directory for image sequence generation" << std::endl; removeImageSequence(); } // 根据显卡编号设置输出路径(todo:提前到配置里) - filePath.deviceSpecFilePath = filePath.imageOutputPath + "/device" + std::to_string(selectedPhysicalDeviceIndex); + setter.filePath.deviceSpecFilePath = setter.filePath.imageOutputPath + "/device" + std::to_string(selectedPhysicalDeviceIndex); // 非第一次生成,生成结束的边界条件 - if (savedFrameCounter > settings.outputFrameCount) + if (savedFrameCounter > setter.settings.outputFrameCount) { // 避免重复改变为true带来的无效性能开销 if (signal.imageSequenceOutputComplete) @@ -1859,20 +1856,20 @@ PlumageRender::PlumageRender() signal.imageSequenceOutputComplete = true; // 构造ffmpeg脚本需要的路径变量(提前到配置) std::string fileName = "/%dresult.ppm"; - filePath.totalImageOutputPath = filePath.deviceSpecFilePath + fileName; + setter.filePath.totalImageOutputPath = setter.filePath.deviceSpecFilePath + fileName; return; } // 路径存在性检查,不存在则创建 - if (!std::filesystem::exists(filePath.deviceSpecFilePath.c_str())) + if (!std::filesystem::exists(setter.filePath.deviceSpecFilePath.c_str())) { - std::filesystem::create_directories(filePath.deviceSpecFilePath.c_str()); + std::filesystem::create_directories(setter.filePath.deviceSpecFilePath.c_str()); } // 拼接图片序列编号到路径里 std::string fileName ="/" + std::to_string(savedFrameCounter) + "result.ppm"; - filePath.totalImageOutputPath = filePath.deviceSpecFilePath + fileName; + setter.filePath.totalImageOutputPath = setter.filePath.deviceSpecFilePath + fileName; //std::cout << outputPath << std::endl; // 写入文件 - writeImageToFile(filePath.totalImageOutputPath.c_str()); + writeImageToFile(setter.filePath.totalImageOutputPath.c_str()); // 写入一帧后已保存帧数+1 savedFrameCounter++; } @@ -1890,7 +1887,7 @@ PlumageRender::PlumageRender() return; } // 拼接视频保存的设备编号路径(提前到配置文件进行) - std::string deviceFilePath = filePath.videoOutputPath + "/device" + std::to_string(selectedPhysicalDeviceIndex); + std::string deviceFilePath = setter.filePath.videoOutputPath + "/device" + std::to_string(selectedPhysicalDeviceIndex); // 判断路径是否存在,不存在则创建 if (std::filesystem::exists(deviceFilePath.c_str())) { @@ -1899,12 +1896,12 @@ PlumageRender::PlumageRender() // 构造结果视频路径 std::string resultVideoPath = deviceFilePath + "/result.mp4"; // 构造脚本需要参数,图片序列路径和设定的帧率 - std::string commandLineImageSequencePath = filePath.totalImageOutputPath; + std::string commandLineImageSequencePath = setter.filePath.totalImageOutputPath; //std::string commandLineCodecAndResultPath = resultVideoPath; - std::string commandLineFrameRate = std::to_string(settings.videoFrameRate); + std::string commandLineFrameRate = std::to_string(setter.settings.videoFrameRate); // 根据不同系统使用不同脚本 #if defined(_WIN32) - std::string commandLine = filePath.image2videoBatFilePath + " " + commandLineFrameRate + " " + commandLineImageSequencePath + " " + resultVideoPath; + std::string commandLine = setter.filePath.image2videoBatFilePath + " " + commandLineFrameRate + " " + commandLineImageSequencePath + " " + resultVideoPath; #else std::string commandLine = filePath.image2videoShFilePath + " " + commandLineFrameRate + " " + commandLineImageSequencePath + " " + resultVideoPath; #endif @@ -1920,7 +1917,7 @@ PlumageRender::PlumageRender() void PlumageRender::removeImageSequence() { // 函数非第一次运行的边界条件 - if (savedFrameCounter != settings.startFrameCount) + if (savedFrameCounter != setter.settings.startFrameCount) { // 检查视频输出完成的标志位 if (!signal.imageSequenceToVideoComplete) @@ -1930,9 +1927,9 @@ PlumageRender::PlumageRender() } // 遍历删除图片序列文件和空文件夹 - if (std::filesystem::exists(filePath.deviceSpecFilePath)) + if (std::filesystem::exists(setter.filePath.deviceSpecFilePath)) { - for (const auto& entry : std::filesystem::directory_iterator(filePath.deviceSpecFilePath)) + for (const auto& entry : std::filesystem::directory_iterator(setter.filePath.deviceSpecFilePath)) { if (std::filesystem::is_directory(entry.path())) { @@ -1943,7 +1940,7 @@ PlumageRender::PlumageRender() std::filesystem::remove(entry.path()); } } - std::filesystem::remove(filePath.deviceSpecFilePath); + std::filesystem::remove(setter.filePath.deviceSpecFilePath); std::cout << "clean up complete" << std::endl; } return; @@ -1958,7 +1955,7 @@ PlumageRender::PlumageRender() return; } - if (!settings.headless) + if (!setter.settings.headless) { updateUIOverlay(); } @@ -2021,7 +2018,7 @@ PlumageRender::PlumageRender() frameIndex %= renderAhead; if (!paused) { - if (settings.rotateModel) { + if (setter.settings.rotateModel) { modelrot.y += frameTimer * 35.0f; if (modelrot.y > 360.0f) { modelrot.y -= 360.0f; @@ -2035,7 +2032,7 @@ PlumageRender::PlumageRender() models.scene.updateAnimation(animationIndex, animationTimer); } updateShaderData(); - if (settings.rotateModel) { + if (setter.settings.rotateModel) { updateUniformBuffers(); } } @@ -2059,7 +2056,7 @@ PlumageRender::PlumageRender() ImGuiIO& io = ImGui::GetIO(); ImVec2 lastDisplaySize = io.DisplaySize; - io.DisplaySize = ImVec2((float)width, (float)height); + io.DisplaySize = ImVec2((float)setter.settings.width, (float)setter.settings.height); io.DeltaTime = frameTimer; io.MousePos = ImVec2(mousePos.x, mousePos.y); @@ -2282,11 +2279,12 @@ PlumageRender::PlumageRender() } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) { - for (int32_t i = 0; i < __argc; i++) { PlumageRender::args.push_back(__argv[i]); }; + VulkanBackend::Setter setter; + for (int32_t i = 0; i < __argc; i++) {setter.args.push_back(__argv[i]); }; plumageRender = new PlumageRender(); plumageRender->initVulkan(); - if (!plumageRender->settings.headless) + if (!plumageRender->setter.settings.headless) { plumageRender->setupWindow(hInstance, WndProc); } diff --git a/src/render/render.h b/src/render/render.h index 5e1ef09..0125fb5 100644 --- a/src/render/render.h +++ b/src/render/render.h @@ -23,6 +23,8 @@ #include "VulkanDevice.hpp" #include "ui.hpp" #include +#include "renderSetter.h" +#include "GLFW/glfw3.h" #define STB_IMAGE_WRITE_IMPLEMENTATION #include "stb_image_write.h" @@ -34,6 +36,11 @@ class PlumageRender : public VulkanExampleBase { public: + + GLFWwindow* window; + + VulkanBackend::Setter setter; + bool wireframe = false; bool normalMapping = true; bool ToneMapping = true; @@ -131,63 +138,7 @@ public: float alphaMaskCutoff; } pushConstBlockMaterial; - struct FilePath - { - - std::filesystem::path fallbackRootDataPath = "./data"; - - // model path - std::string glTFModelFilePath = getAssetPath() + "models/DamagedHelmet/DamagedHelmet.gltf"; - std::string modelVertShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.vert.spv"; - std::string modelFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.frag.spv"; - - //ui - std::string uiVertShaderPath = getAssetPath() + "shaders/ui.vert.spv"; - std::string uiFragShaderPath = getAssetPath() + "shaders/ui.frag.spv"; - - // skybox path - std::string skyboxModleFilePath = getAssetPath() + "models/cube.gltf"; - std::string skyboxVertShaderPath = getAssetPath() + "shaders/skybox.vert.spv"; - std::string skyboxFragShaderPath = getAssetPath() + "shaders/skybox.frag.spv"; - - std::string iblTexturesFilePath = getAssetPath() + "textures/hdr/gcanyon_cube.ktx"; - //tonemapping - std::string tonemappingVertShaderPath = getAssetPath() + "buster_drone/shaders/glsl/genbrdflut.vert.spv"; - std::string tonemappingEnableFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/tonemapping_enable.frag.spv"; - std::string tonemappingDisableFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/tonemapping_disable.frag.spv"; - - - // cube map - std::string irradianceFragShaderPath = getAssetPath() + "shaders/irradiancecube.frag.spv"; - - std::string filterVertShaderPath = getAssetPath() + "shaders/filtercube.vert.spv"; - - std::string prefilterEnvmapFragShaderPath = getAssetPath() + "shaders/prefilterenvmap.frag.spv"; - //brdf cube map - std::string brdfVertShaderPath = getAssetPath() + "shaders/genbrdflut.vert.spv"; - std::string brdfFragShaderPath = getAssetPath() + "shaders/genbrdflut.frag.spv"; - // environment map texture - std::string envMapFilePath = getAssetPath() + "environments/papermill.ktx"; - std::string emptyEnvmapFilePath = getAssetPath() + "textures/empty.ktx"; - // pbr shader - std::string pbrVertShaderPath = getAssetPath() + "shaders/pbr.vert.spv"; - std::string pbrFragShaderPath = getAssetPath() + "shaders/pbr_khr.frag.spv"; - - //ttf file path - std::string ttfFilePath = getAssetPath() + "/data/Roboto-Medium.ttf"; - - // output file path - - std::string imageOutputPath = getAssetPath() + "output/imageSequence"; - std::string videoOutputPath = getAssetPath() + "output/video"; - std::string totalImageOutputPath; - std::string deviceSpecFilePath; - - // script file path - std::string image2videoBatFilePath = getAssetPath() + "script/image2video.bat"; - std::string image2videoShFilePath = getAssetPath() + "script/image2video.sh"; - - } filePath; + glm::vec3 modelrot = glm::vec3(0.0f); @@ -298,8 +249,9 @@ public: UI* gui; - uint64_t savedFrameCounter = settings.startFrameCount; + uint64_t savedFrameCounter = setter.settings.startFrameCount; + bool framebufferResized = false; PlumageRender(); ~PlumageRender() @@ -341,7 +293,10 @@ public: delete gui; } + + void initWindow(int width, int height); + static void framebufferResizeCallback(GLFWwindow* window, int width, int height); void renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFModel::Material::AlphaMode alphaMode); void loadScene(std::string filename); void loadEnvironment(std::string filename); diff --git a/src/render/renderFoundation.h b/src/render/renderFoundation.h index 6405ba4..f84a852 100644 --- a/src/render/renderFoundation.h +++ b/src/render/renderFoundation.h @@ -1,6 +1,7 @@ #pragma once #include +#include "GLFW/glfw3.h" namespace VulkanBackend { @@ -10,6 +11,10 @@ namespace VulkanBackend VulkanFondation(); ~VulkanFondation(); + + VkInstance instance; + + private: void createSurface(); diff --git a/src/render/renderSetter.cpp b/src/render/renderSetter.cpp index e69de29..bab3b85 100644 --- a/src/render/renderSetter.cpp +++ b/src/render/renderSetter.cpp @@ -0,0 +1,53 @@ +#include "renderSetter.h" + + void VulkanBackend::Setter::getSettingFromCommandLine() +{ + // 暂定 + char* numConvPtr; + // Parse command line arguments + for (size_t i = 0; i < args.size(); i++) + { + if (args[i] == std::string("-validation")) { + settings.validation = true; + } + if (args[i] == std::string("-vsync")) { + settings.vsync = true; + } + if ((args[i] == std::string("-f")) || (args[i] == std::string("--fullscreen"))) { + settings.fullscreen = true; + } + if ((args[i] == std::string("-w")) || (args[i] == std::string("--width"))) { + uint32_t w = strtol(args[i + 1], &numConvPtr, 10); + if (numConvPtr != args[i + 1]) { settings.width = w; }; + } + if ((args[i] == std::string("-h")) || (args[i] == std::string("--height"))) { + uint32_t h = strtol(args[i + 1], &numConvPtr, 10); + if (numConvPtr != args[i + 1]) { settings.height = h; }; + } + if ((args[i] == std::string("-g")) || (args[i] == std::string("--gpu"))) { + char* endptr; + settings.selectedPhysicalDeviceIndex = strtol(args[i + 1], &endptr, 10); + break; + } + if ((std::string(args[i]).find(".gltf") != std::string::npos) || (std::string(args[i]).find(".glb") != std::string::npos)) { + std::ifstream file(args[i]); + if (file.good()) { + filePath.glTFModelFilePath = args[i]; + } + else { + std::cout << "could not load \"" << args[i] << "\"" << std::endl; + } + } + if (std::string(args[i]).find(".ktx") != std::string::npos) { + std::ifstream file(args[i]); + if (file.good()) { + filePath.envMapFilePath = args[i]; + } + else { + std::cout << "could not load \"" << args[i] << "\"" << std::endl; + } + } + + } + +} \ No newline at end of file diff --git a/src/render/renderSetter.h b/src/render/renderSetter.h index 6f70f09..d70075e 100644 --- a/src/render/renderSetter.h +++ b/src/render/renderSetter.h @@ -1 +1,113 @@ #pragma once + +#include +#include +#include +#include +#include + +#include +#include "VulkanTools.h" + +namespace VulkanBackend +{ + class Setter + { + public: + Setter(); + ~Setter(); + + static std::vector args; + + struct Settings { + uint32_t width = 1280; + uint32_t height = 720; + bool validation = false; // 校验层开关 + bool fullscreen = false; // 全屏开关 + bool vsync = false; // 垂直同步开关 + bool multiSampling = true; // 多重采样 + bool rotateModel = true; // 模型自旋转(暂时失效) + bool headless = true; // 无头开关 + bool outputPNGimage = false; // 输出图片序列格式为PNG(四通道) + bool enableSaveToImageSequeue = false; // 图片序列开关(暂时弃用) + uint32_t outputFrameCount = 75; // 图片序列结束帧 + bool enableIMGUI = false; // gui使用imgui + uint32_t startFrameCount = 1; // 图片序列开始帧 + uint32_t videoFrameRate = 25; // 视频帧率 + uint32_t selectedPhysicalDeviceIndex = 0; + + VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_4_BIT; // 多重采样倍率 + } settings; + + struct FilePath + { + + std::filesystem::path fallbackRootDataPath = "./data"; + + // model path + std::string glTFModelFilePath = getAssetPath() + "models/DamagedHelmet/DamagedHelmet.gltf"; + std::string modelVertShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.vert.spv"; + std::string modelFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.frag.spv"; + + //ui + std::string uiVertShaderPath = getAssetPath() + "shaders/ui.vert.spv"; + std::string uiFragShaderPath = getAssetPath() + "shaders/ui.frag.spv"; + + // skybox path + std::string skyboxModleFilePath = getAssetPath() + "models/cube.gltf"; + std::string skyboxVertShaderPath = getAssetPath() + "shaders/skybox.vert.spv"; + std::string skyboxFragShaderPath = getAssetPath() + "shaders/skybox.frag.spv"; + + std::string iblTexturesFilePath = getAssetPath() + "textures/hdr/gcanyon_cube.ktx"; + //tonemapping + std::string tonemappingVertShaderPath = getAssetPath() + "buster_drone/shaders/glsl/genbrdflut.vert.spv"; + std::string tonemappingEnableFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/tonemapping_enable.frag.spv"; + std::string tonemappingDisableFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/tonemapping_disable.frag.spv"; + + + // cube map + std::string irradianceFragShaderPath = getAssetPath() + "shaders/irradiancecube.frag.spv"; + + std::string filterVertShaderPath = getAssetPath() + "shaders/filtercube.vert.spv"; + + std::string prefilterEnvmapFragShaderPath = getAssetPath() + "shaders/prefilterenvmap.frag.spv"; + //brdf cube map + std::string brdfVertShaderPath = getAssetPath() + "shaders/genbrdflut.vert.spv"; + std::string brdfFragShaderPath = getAssetPath() + "shaders/genbrdflut.frag.spv"; + // environment map texture + std::string envMapFilePath = getAssetPath() + "environments/papermill.ktx"; + std::string emptyEnvmapFilePath = getAssetPath() + "textures/empty.ktx"; + // pbr shader + std::string pbrVertShaderPath = getAssetPath() + "shaders/pbr.vert.spv"; + std::string pbrFragShaderPath = getAssetPath() + "shaders/pbr_khr.frag.spv"; + + //ttf file path + std::string ttfFilePath = getAssetPath() + "/data/Roboto-Medium.ttf"; + + // output file path + + std::string imageOutputPath = getAssetPath() + "output/imageSequence"; + std::string videoOutputPath = getAssetPath() + "output/video"; + std::string totalImageOutputPath; + std::string deviceSpecFilePath; + + // script file path + std::string image2videoBatFilePath = getAssetPath() + "script/image2video.bat"; + std::string image2videoShFilePath = getAssetPath() + "script/image2video.sh"; + + } filePath; + + private: + + void getSettingFromCommandLine(); + + }; + + Setter::Setter() + { + } + + Setter::~Setter() + { + } +} \ No newline at end of file