From f3212fc19d2bf551959f5cf7d3a5460d56084307 Mon Sep 17 00:00:00 2001 From: ink-soul Date: Fri, 12 Apr 2024 18:13:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=AE=8C=E6=88=90=EF=BC=8Cgl?= =?UTF-8?q?fw=E9=93=BE=E6=8E=A5=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 1 + base/camera.hpp | 5 +- base/vulkanexamplebase.cpp | 2177 +---------------- base/vulkanexamplebase.h | 128 +- .../metro_noord_4k_hdr16f_cube.ktx | Bin 16777304 -> 16777304 bytes data/output/video/device0/result.mp4 | Bin 213523 -> 283767 bytes src/render/render.cpp | 1490 ++++++++++- src/render/render.h | 266 +- 8 files changed, 1636 insertions(+), 2431 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ac0a9a..9a0935a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,7 @@ include_directories(external/tinygltf) include_directories(external/ktx/include) include_directories(external/ktx/other_include) include_directories(external/glfw-3.4/include) +include_directories(external/glfw) include_directories(base) OPTION(USE_D2D_WSI "Build the project using Direct to Display swapchain" OFF) diff --git a/base/camera.hpp b/base/camera.hpp index 160c26e..920b8c6 100644 --- a/base/camera.hpp +++ b/base/camera.hpp @@ -23,6 +23,7 @@ private: glm::mat4 rotM = glm::mat4(1.0f); glm::mat4 transM; + //根据传入角度,绕x,y,z轴旋转 rotM = glm::rotate(rotM, glm::radians(rotation.x * (flipY ? -1.0f : 1.0f)), glm::vec3(1.0f, 0.0f, 0.0f)); rotM = glm::rotate(rotM, glm::radians(rotation.y), glm::vec3(0.0f, 1.0f, 0.0f)); rotM = glm::rotate(rotM, glm::radians(rotation.z), glm::vec3(0.0f, 0.0f, 1.0f)); @@ -86,7 +87,7 @@ public: float getFarClip() { return zfar; } - + // 投影计算 void setPerspective(float fov, float aspect, float znear, float zfar) { this->fov = fov; @@ -153,6 +154,7 @@ public: { if (moving()) { + // 相机朝向 glm::vec3 camFront; camFront.x = -cos(glm::radians(rotation.x)) * sin(glm::radians(rotation.y)); camFront.y = sin(glm::radians(rotation.x)); @@ -161,6 +163,7 @@ public: float moveSpeed = deltaTime * movementSpeed; + // 位置的平移计算 if (keys.up) position += camFront * moveSpeed; if (keys.down) diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp index 98b827d..598497e 100644 --- a/base/vulkanexamplebase.cpp +++ b/base/vulkanexamplebase.cpp @@ -9,2173 +9,28 @@ #include "VulkanExampleBase.h" -std::vector VulkanExampleBase::args; - -VKAPI_ATTR VkBool32 VKAPI_CALL debugMessageCallback(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t srcObject, size_t location, int32_t msgCode, const char * pLayerPrefix, const char * pMsg, void * pUserData) -{ - std::string prefix(""); - if (flags & VK_DEBUG_REPORT_ERROR_BIT_EXT) { - prefix += "ERROR:"; - }; - if (flags & VK_DEBUG_REPORT_WARNING_BIT_EXT) { - prefix += "WARNING:"; - }; - if (flags & VK_DEBUG_REPORT_DEBUG_BIT_EXT) { - prefix += "DEBUG:"; - } - std::stringstream debugMessage; - debugMessage << prefix << " [" << pLayerPrefix << "] Code " << msgCode << " : " << pMsg; -#if defined(__ANDROID__) - LOGD("%s", debugMessage.str().c_str()); -#else - std::cout << debugMessage.str() << "\n"; -#endif - fflush(stdout); - return VK_FALSE; -} - -VkResult VulkanExampleBase::createInstance(bool enableValidation) -{ - -} -void VulkanExampleBase::prepare() -{ - /* - Swapchain - */ - initSwapchain(); - setupSwapChain(); - -#if defined(VK_USE_PLATFORM_ANDROID_KHR) - width = swapChain.extent.width; - height = swapChain.extent.height; -#endif - - /* - Command pool - */ - VkCommandPoolCreateInfo cmdPoolInfo = {}; - cmdPoolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; - cmdPoolInfo.queueFamilyIndex = swapChain.queueNodeIndex; - cmdPoolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; - VK_CHECK_RESULT(vkCreateCommandPool(device, &cmdPoolInfo, nullptr, &cmdPool)); - - /* - Render pass - */ - - if (settings.multiSampling) { - std::array attachments = {}; - - // Multisampled attachment that we render to - attachments[0].format = swapChain.colorFormat; - attachments[0].samples = settings.sampleCount; - attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; - attachments[0].storeOp = VK_ATTACHMENT_STORE_OP_STORE; - attachments[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; - attachments[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; - attachments[0].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - attachments[0].finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - - // This is the frame buffer attachment to where the multisampled image - // will be resolved to and which will be presented to the swapchain - attachments[1].format = swapChain.colorFormat; - attachments[1].samples = VK_SAMPLE_COUNT_1_BIT; - attachments[1].loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; - attachments[1].storeOp = VK_ATTACHMENT_STORE_OP_STORE; - attachments[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; - attachments[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; - attachments[1].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - attachments[1].finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; - - // Multisampled depth attachment we render to - attachments[2].format = depthFormat; - attachments[2].samples = settings.sampleCount; - attachments[2].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; - attachments[2].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; - attachments[2].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; - attachments[2].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; - attachments[2].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - attachments[2].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; - - // Depth resolve attachment - attachments[3].format = depthFormat; - attachments[3].samples = VK_SAMPLE_COUNT_1_BIT; - attachments[3].loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; - attachments[3].storeOp = VK_ATTACHMENT_STORE_OP_STORE; - attachments[3].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; - attachments[3].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; - attachments[3].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - attachments[3].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; - - VkAttachmentReference colorReference = {}; - colorReference.attachment = 0; - colorReference.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - - VkAttachmentReference depthReference = {}; - depthReference.attachment = 2; - depthReference.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; - - // Resolve attachment reference for the color attachment - VkAttachmentReference resolveReference = {}; - resolveReference.attachment = 1; - resolveReference.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - - VkSubpassDescription subpass = {}; - subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; - subpass.colorAttachmentCount = 1; - subpass.pColorAttachments = &colorReference; - // Pass our resolve attachments to the sub pass - subpass.pResolveAttachments = &resolveReference; - subpass.pDepthStencilAttachment = &depthReference; - - std::array dependencies; - - dependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL; - dependencies[0].dstSubpass = 0; - dependencies[0].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; - dependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - dependencies[0].srcAccessMask = VK_ACCESS_MEMORY_READ_BIT; - dependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; - dependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; - - dependencies[1].srcSubpass = 0; - dependencies[1].dstSubpass = VK_SUBPASS_EXTERNAL; - dependencies[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - dependencies[1].dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; - dependencies[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; - dependencies[1].dstAccessMask = VK_ACCESS_MEMORY_READ_BIT; - dependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; - - VkRenderPassCreateInfo renderPassCI = {}; - renderPassCI.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; - renderPassCI.attachmentCount = static_cast(attachments.size()); - renderPassCI.pAttachments = attachments.data(); - renderPassCI.subpassCount = 1; - renderPassCI.pSubpasses = &subpass; - renderPassCI.dependencyCount = 2; - renderPassCI.pDependencies = dependencies.data(); - VK_CHECK_RESULT(vkCreateRenderPass(device, &renderPassCI, nullptr, &renderPass)); - } - else { - std::array attachments = {}; - // Color attachment - attachments[0].format = swapChain.colorFormat; - attachments[0].samples = VK_SAMPLE_COUNT_1_BIT; - attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; - attachments[0].storeOp = VK_ATTACHMENT_STORE_OP_STORE; - attachments[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; - attachments[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; - attachments[0].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - attachments[0].finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; - // Depth attachment - attachments[1].format = depthFormat; - attachments[1].samples = VK_SAMPLE_COUNT_1_BIT; - attachments[1].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; - attachments[1].storeOp = VK_ATTACHMENT_STORE_OP_STORE; - attachments[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; - attachments[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; - attachments[1].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - attachments[1].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; - - VkAttachmentReference colorReference = {}; - colorReference.attachment = 0; - colorReference.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - - VkAttachmentReference depthReference = {}; - depthReference.attachment = 1; - depthReference.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; - - VkSubpassDescription subpassDescription = {}; - subpassDescription.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; - subpassDescription.colorAttachmentCount = 1; - subpassDescription.pColorAttachments = &colorReference; - subpassDescription.pDepthStencilAttachment = &depthReference; - subpassDescription.inputAttachmentCount = 0; - subpassDescription.pInputAttachments = nullptr; - subpassDescription.preserveAttachmentCount = 0; - subpassDescription.pPreserveAttachments = nullptr; - subpassDescription.pResolveAttachments = nullptr; - - // Subpass dependencies for layout transitions - std::array dependencies; - - dependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL; - dependencies[0].dstSubpass = 0; - dependencies[0].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; - dependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - dependencies[0].srcAccessMask = VK_ACCESS_MEMORY_READ_BIT; - dependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; - dependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; - - dependencies[1].srcSubpass = 0; - dependencies[1].dstSubpass = VK_SUBPASS_EXTERNAL; - dependencies[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - dependencies[1].dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; - dependencies[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; - dependencies[1].dstAccessMask = VK_ACCESS_MEMORY_READ_BIT; - dependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; - - VkRenderPassCreateInfo renderPassCI{}; - renderPassCI.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; - renderPassCI.attachmentCount = static_cast(attachments.size()); - renderPassCI.pAttachments = attachments.data(); - renderPassCI.subpassCount = 1; - renderPassCI.pSubpasses = &subpassDescription; - renderPassCI.dependencyCount = static_cast(dependencies.size()); - renderPassCI.pDependencies = dependencies.data(); - VK_CHECK_RESULT(vkCreateRenderPass(device, &renderPassCI, nullptr, &renderPass)); - } - - /* - Pipeline cache - */ - VkPipelineCacheCreateInfo pipelineCacheCreateInfo{}; - pipelineCacheCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO; - VK_CHECK_RESULT(vkCreatePipelineCache(device, &pipelineCacheCreateInfo, nullptr, &pipelineCache)); - - /* - Frame buffer - */ - setupFrameBuffer(); -} - -void VulkanExampleBase::fileDropped(std::string filename) { } - -void VulkanExampleBase::renderFrame() -{ - auto tStart = std::chrono::high_resolution_clock::now(); - - render(); - - frameCounter++; - auto tEnd = std::chrono::high_resolution_clock::now(); - auto tDiff = std::chrono::duration(tEnd - tStart).count(); - frameTimer = (float)tDiff / 1000.0f; - camera.update(frameTimer); - fpsTimer += (float)tDiff; - if (fpsTimer > 1000.0f) { - lastFPS = static_cast((float)frameCounter * (1000.0f / fpsTimer)); - fpsTimer = 0.0f; - frameCounter = 0; - } -} - -void VulkanExampleBase::renderLoop() -{ - destWidth = width; - destHeight = height; -#if defined(_WIN32) - MSG msg; - bool quitMessageReceived = false; - while (!quitMessageReceived) { - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { - TranslateMessage(&msg); - DispatchMessage(&msg); - if (msg.message == WM_QUIT) { - quitMessageReceived = true; - break; - } - } - if (!IsIconic(window)) { - renderFrame(); - } - } -#elif defined(VK_USE_PLATFORM_ANDROID_KHR) - while (1) - { - int ident; - int events; - struct android_poll_source* source; - bool destroy = false; - - focused = true; - - while ((ident = ALooper_pollAll(focused ? 0 : -1, NULL, &events, (void**)&source)) >= 0) - { - if (source != NULL) - { - source->process(androidApp, source); - } - if (androidApp->destroyRequested != 0) - { - LOGD("Android app destroy requested"); - destroy = true; - break; - } - } - - // App destruction requested - // Exit loop, example will be destroyed in application main - if (destroy) - { - break; - } - - // Render frame - if (prepared) - { - auto tStart = std::chrono::high_resolution_clock::now(); - render(); - frameCounter++; - auto tEnd = std::chrono::high_resolution_clock::now(); - auto tDiff = std::chrono::duration(tEnd - tStart).count(); - frameTimer = tDiff / 1000.0f; - camera.update(frameTimer); - fpsTimer += (float)tDiff; - if (fpsTimer > 1000.0f) - { - lastFPS = (float)frameCounter * (1000.0f / fpsTimer); - fpsTimer = 0.0f; - frameCounter = 0; - } - - // Check gamepad state - const float deadZone = 0.0015f; - // todo : check if gamepad is present - // todo : time based and relative axis positions - if (camera.type != Camera::CameraType::firstperson) - { - // Rotate - if (std::abs(gamePadState.axisLeft.x) > deadZone) { - camera.rotate(glm::vec3(0.0f, gamePadState.axisLeft.x * 0.5f, 0.0f)); - } - if (std::abs(gamePadState.axisLeft.y) > deadZone) { - camera.rotate(glm::vec3(gamePadState.axisLeft.y * 0.5f, 0.0f, 0.0f)); - } - } else { - camera.updatePad(gamePadState.axisLeft, gamePadState.axisRight, frameTimer); - } - } - } -#elif defined(_DIRECT2DISPLAY) - while (!quit) - { - auto tStart = std::chrono::high_resolution_clock::now(); - render(); - frameCounter++; - auto tEnd = std::chrono::high_resolution_clock::now(); - auto tDiff = std::chrono::duration(tEnd - tStart).count(); - frameTimer = tDiff / 1000.0f; - camera.update(frameTimer); - fpsTimer += (float)tDiff; - if (fpsTimer > 1000.0f) - { - lastFPS = (float)frameCounter * (1000.0f / fpsTimer); - fpsTimer = 0.0f; - frameCounter = 0; - } - } -#elif defined(VK_USE_PLATFORM_WAYLAND_KHR) - while (!quit) - { - auto tStart = std::chrono::high_resolution_clock::now(); - - while (wl_display_prepare_read(display) != 0) - wl_display_dispatch_pending(display); - wl_display_flush(display); - wl_display_read_events(display); - wl_display_dispatch_pending(display); - - render(); - frameCounter++; - auto tEnd = std::chrono::high_resolution_clock::now(); - auto tDiff = std::chrono::duration(tEnd - tStart).count(); - frameTimer = tDiff / 1000.0f; - camera.update(frameTimer); - fpsTimer += (float)tDiff; - if (fpsTimer > 1000.0f) - { - wl_shell_surface_set_title(shell_surface, title.c_str()); - lastFPS = (float)frameCounter * (1000.0f / fpsTimer); - fpsTimer = 0.0f; - frameCounter = 0; - } - } -#elif defined(VK_USE_PLATFORM_XCB_KHR) - xcb_flush(connection); - while (!quit) - { - auto tStart = std::chrono::high_resolution_clock::now(); - xcb_generic_event_t *event; - while ((event = xcb_poll_for_event(connection))) - { - handleEvent(event); - free(event); - } - render(); - frameCounter++; - auto tEnd = std::chrono::high_resolution_clock::now(); - auto tDiff = std::chrono::duration(tEnd - tStart).count(); - frameTimer = tDiff / 1000.0f; - camera.update(frameTimer); - fpsTimer += (float)tDiff; - if (fpsTimer > 1000.0f) - { - xcb_change_property(connection, XCB_PROP_MODE_REPLACE, - window, XCB_ATOM_WM_NAME, XCB_ATOM_STRING, 8, - title.size(), title.c_str()); - lastFPS = (float)frameCounter * (1000.0f / fpsTimer); - fpsTimer = 0.0f; - frameCounter = 0; - } - } -#elif defined(VK_USE_PLATFORM_MACOS_MVK) - [NSApp run]; -#endif - // Flush device to make sure all resources can be freed - vkDeviceWaitIdle(device); -} - -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 - bool libLoaded = vks::android::loadVulkanLibrary(); - assert(libLoaded); -#elif defined(_DIRECT2DISPLAY) - -#elif defined(VK_USE_PLATFORM_WAYLAND_KHR) - initWaylandConnection(); -#elif defined(VK_USE_PLATFORM_XCB_KHR) - initxcbConnection(); -#endif - -#if defined(_WIN32) - AllocConsole(); - AttachConsole(GetCurrentProcessId()); - FILE *stream; - freopen_s(&stream, "CONOUT$", "w+", stdout); - freopen_s(&stream, "CONOUT$", "w+", stderr); - SetConsoleTitle(TEXT("Vulkan validation output")); -#endif -} - VulkanExampleBase::~VulkanExampleBase() { - // Clean up Vulkan resources - swapChain.cleanup(); - vkDestroyDescriptorPool(device, descriptorPool, nullptr); - vkDestroyRenderPass(device, renderPass, nullptr); - for (uint32_t i = 0; i < frameBuffers.size(); i++) { - vkDestroyFramebuffer(device, frameBuffers[i], nullptr); - } - vkDestroyImageView(device, depthStencil.view, nullptr); - vkDestroyImage(device, depthStencil.image, nullptr); - vkFreeMemory(device, depthStencil.mem, nullptr); - vkDestroyPipelineCache(device, pipelineCache, nullptr); - vkDestroyCommandPool(device, cmdPool, nullptr); - if (settings.multiSampling) { - vkDestroyImage(device, multisampleTarget.color.image, nullptr); - vkDestroyImageView(device, multisampleTarget.color.view, nullptr); - vkFreeMemory(device, multisampleTarget.color.memory, nullptr); - vkDestroyImage(device, multisampleTarget.depth.image, nullptr); - vkDestroyImageView(device, multisampleTarget.depth.view, nullptr); - vkFreeMemory(device, multisampleTarget.depth.memory, nullptr); - } - delete vulkanDevice; - if (settings.validation) { - vkDestroyDebugReportCallback(instance, debugReportCallback, nullptr); - } - vkDestroyInstance(instance, nullptr); -#if defined(_DIRECT2DISPLAY) -#elif defined(VK_USE_PLATFORM_WAYLAND_KHR) - wl_shell_surface_destroy(shell_surface); - wl_surface_destroy(surface); - if (keyboard) - wl_keyboard_destroy(keyboard); - if (pointer) - wl_pointer_destroy(pointer); - wl_seat_destroy(seat); - wl_shell_destroy(shell); - wl_compositor_destroy(compositor); - wl_registry_destroy(registry); - wl_display_disconnect(display); -#elif defined(VK_USE_PLATFORM_ANDROID_KHR) - // todo : android cleanup (if required) -#elif defined(VK_USE_PLATFORM_XCB_KHR) - xcb_destroy_window(connection, window); - xcb_disconnect(connection); -#endif -} - -void VulkanExampleBase::initVulkan() -{ - VkResult err; - - /* - Instance creation - */ - err = createInstance(settings.validation); - if (err) { - std::cerr << "Could not create Vulkan instance!" << std::endl; - exit(err); - } - -#if defined(VK_USE_PLATFORM_ANDROID_KHR) - vks::android::loadVulkanFunctions(instance); -#endif - - /* - Validation layers - */ - if (settings.validation) { - vkCreateDebugReportCallback = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT")); - vkDestroyDebugReportCallback = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT")); - VkDebugReportCallbackCreateInfoEXT debugCreateInfo{}; - debugCreateInfo.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT; - debugCreateInfo.pfnCallback = (PFN_vkDebugReportCallbackEXT)debugMessageCallback; - debugCreateInfo.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT; - VK_CHECK_RESULT(vkCreateDebugReportCallback(instance, &debugCreateInfo, nullptr, &debugReportCallback)); - } - - /* - GPU selection - */ - uint32_t gpuCount = 0; - VK_CHECK_RESULT(vkEnumeratePhysicalDevices(instance, &gpuCount, nullptr)); - assert(gpuCount > 0); - std::vector physicalDevices(gpuCount); - err = vkEnumeratePhysicalDevices(instance, &gpuCount, physicalDevices.data()); - if (err) { - std::cerr << "Could not enumerate physical devices!" << std::endl; - 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); - vkGetPhysicalDeviceFeatures(physicalDevice, &deviceFeatures); - vkGetPhysicalDeviceMemoryProperties(physicalDevice, &deviceMemoryProperties); - - /* - Device creation - */ - vulkanDevice = new vks::VulkanDevice(physicalDevice); - VkPhysicalDeviceFeatures enabledFeatures{}; - if (deviceFeatures.samplerAnisotropy) { - enabledFeatures.samplerAnisotropy = VK_TRUE; - } - std::vector enabledExtensions{}; - VkResult res = vulkanDevice->createLogicalDevice(enabledFeatures, enabledExtensions); - if (res != VK_SUCCESS) { - std::cerr << "Could not create Vulkan device!" << std::endl; - exit(res); - } - device = vulkanDevice->logicalDevice; - - /* - Graphics queue - */ - vkGetDeviceQueue(device, vulkanDevice->queueFamilyIndices.graphics, 0, &queue); - - /* - Suitable depth format - */ - std::vector depthFormats = { VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_D32_SFLOAT, VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D16_UNORM }; - VkBool32 validDepthFormat = false; - for (auto& format : depthFormats) { - VkFormatProperties formatProps; - vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &formatProps); - if (formatProps.optimalTilingFeatures & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) { - depthFormat = format; - validDepthFormat = true; - break; - } - } - assert(validDepthFormat); - - swapChain.connect(instance, physicalDevice, device); - -#if defined(VK_USE_PLATFORM_ANDROID_KHR) - // Get Android device name and manufacturer (to display along GPU name) - androidProduct = ""; - char prop[PROP_VALUE_MAX+1]; - int len = __system_property_get("ro.product.manufacturer", prop); - if (len > 0) { - androidProduct += std::string(prop) + " "; - }; - len = __system_property_get("ro.product.model", prop); - if (len > 0) { - androidProduct += std::string(prop); - }; - LOGD("androidProduct = %s", androidProduct.c_str()); -#endif -} - -#if defined(_WIN32) - -HWND VulkanExampleBase::setupWindow(HINSTANCE hinstance, WNDPROC wndproc) -{ - this->windowInstance = hinstance; - - WNDCLASSEX wndClass; - - wndClass.cbSize = sizeof(WNDCLASSEX); - wndClass.style = CS_HREDRAW | CS_VREDRAW; - wndClass.lpfnWndProc = wndproc; - wndClass.cbClsExtra = 0; - wndClass.cbWndExtra = 0; - wndClass.hInstance = hinstance; - wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); - wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); - wndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); - wndClass.lpszMenuName = NULL; - wndClass.lpszClassName = name.c_str(); - wndClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); - - if (!RegisterClassEx(&wndClass)) { - std::cout << "Could not register window class!\n"; - fflush(stdout); - exit(1); - } - - int screenWidth = GetSystemMetrics(SM_CXSCREEN); - int screenHeight = GetSystemMetrics(SM_CYSCREEN); - - if (settings.fullscreen) { - DEVMODE dmScreenSettings; - memset(&dmScreenSettings, 0, sizeof(dmScreenSettings)); - dmScreenSettings.dmSize = sizeof(dmScreenSettings); - dmScreenSettings.dmPelsWidth = screenWidth; - dmScreenSettings.dmPelsHeight = screenHeight; - dmScreenSettings.dmBitsPerPel = 32; - dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; - if ((width != (uint32_t)screenWidth) && (height != (uint32_t)screenHeight)) { - if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL) { - if (MessageBox(NULL, "Fullscreen Mode not supported!\n Switch to window mode?", "Error", MB_YESNO | MB_ICONEXCLAMATION) == IDYES) { - settings.fullscreen = false; - } else { - return nullptr; - } - } - } - } - - DWORD dwExStyle; - DWORD dwStyle; - - if (settings.fullscreen) { - dwExStyle = WS_EX_APPWINDOW; - dwStyle = WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; - } else { - dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; - dwStyle = WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; - } - - RECT windowRect; - windowRect.left = 0L; - windowRect.top = 0L; - windowRect.right = settings.fullscreen ? (long)screenWidth : (long)width; - windowRect.bottom = settings.fullscreen ? (long)screenHeight : (long)height; - - AdjustWindowRectEx(&windowRect, dwStyle, FALSE, dwExStyle); - - window = CreateWindowEx(WS_EX_ACCEPTFILES, - name.c_str(), - title.c_str(), - dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, - 0, - 0, - windowRect.right - windowRect.left, - windowRect.bottom - windowRect.top, - NULL, - NULL, - hinstance, - NULL); - - if (!settings.fullscreen) { - uint32_t x = (GetSystemMetrics(SM_CXSCREEN) - windowRect.right) / 2; - uint32_t y = (GetSystemMetrics(SM_CYSCREEN) - windowRect.bottom) / 2; - SetWindowPos(window, 0, x, y, 0, 0, SWP_NOZORDER | SWP_NOSIZE); - } - - if (!window) { - printf("Could not create window!\n"); - fflush(stdout); - return nullptr; - exit(1); - } - - ShowWindow(window, SW_SHOW); - SetForegroundWindow(window); - SetFocus(window); - - return window; -} - -void VulkanExampleBase::handleMessages(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - switch (uMsg) - { - case WM_CLOSE: - prepared = false; - DestroyWindow(hWnd); - PostQuitMessage(0); - break; - case WM_PAINT: - ValidateRect(window, NULL); - break; - case WM_KEYDOWN: - switch (wParam) - { - case KEY_P: - paused = !paused; - break; - case KEY_ESCAPE: - PostQuitMessage(0); - break; - } - - if (camera.firstperson) - { - switch (wParam) - { - case KEY_W: - camera.keys.up = true; - break; - case KEY_S: - camera.keys.down = true; - break; - case KEY_A: - camera.keys.left = true; - break; - case KEY_D: - camera.keys.right = true; - break; - } - } - - break; - case WM_KEYUP: - if (camera.firstperson) - { - switch (wParam) - { - case KEY_W: - camera.keys.up = false; - break; - case KEY_S: - camera.keys.down = false; - break; - case KEY_A: - camera.keys.left = false; - break; - case KEY_D: - camera.keys.right = false; - break; - } - } - break; - case WM_LBUTTONDOWN: - mousePos = glm::vec2((float)LOWORD(lParam), (float)HIWORD(lParam)); - mouseButtons.left = true; - break; - case WM_RBUTTONDOWN: - mousePos = glm::vec2((float)LOWORD(lParam), (float)HIWORD(lParam)); - mouseButtons.right = true; - break; - case WM_MBUTTONDOWN: - mousePos = glm::vec2((float)LOWORD(lParam), (float)HIWORD(lParam)); - mouseButtons.middle = true; - break; - case WM_LBUTTONUP: - mouseButtons.left = false; - break; - case WM_RBUTTONUP: - mouseButtons.right = false; - break; - case WM_MBUTTONUP: - mouseButtons.middle = false; - break; - case WM_MOUSEWHEEL: - { - short wheelDelta = GET_WHEEL_DELTA_WPARAM(wParam); - camera.translate(glm::vec3(0.0f, 0.0f, -(float)wheelDelta * 0.005f * camera.movementSpeed)); - break; - } - case WM_MOUSEMOVE: - { - handleMouseMove(LOWORD(lParam), HIWORD(lParam)); - break; - } - case WM_SIZE: - if ((prepared) && (wParam != SIZE_MINIMIZED)) { - if ((resizing) || ((wParam == SIZE_MAXIMIZED) || (wParam == SIZE_RESTORED))) { - destWidth = LOWORD(lParam); - destHeight = HIWORD(lParam); - windowResize(); - } - } - break; - case WM_ENTERSIZEMOVE: - resizing = true; - break; - case WM_EXITSIZEMOVE: - resizing = false; - break; - case WM_DROPFILES: - { - std::string fname; - HDROP hDrop = reinterpret_cast(wParam); - // extract files here - char filename[MAX_PATH]; - uint32_t count = DragQueryFileA(hDrop, -1, nullptr, 0); - for (uint32_t i = 0; i < count; ++i) { - if (DragQueryFileA(hDrop, i, filename, MAX_PATH)) { - fname = filename; - } - break; - } - DragFinish(hDrop); - fileDropped(fname); - break; - } - } -} -#elif defined(VK_USE_PLATFORM_ANDROID_KHR) -int32_t VulkanExampleBase::handleAppInput(struct android_app* app, AInputEvent* event) -{ - ImGuiIO& io = ImGui::GetIO(); - bool uiMouseCapture = io.WantCaptureMouse; - - VulkanExampleBase* vulkanExample = reinterpret_cast(app->userData); - if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_MOTION) - { - int32_t eventSource = AInputEvent_getSource(event); - switch (eventSource) { - case AINPUT_SOURCE_JOYSTICK: { - // Left thumbstick - vulkanExample->gamePadState.axisLeft.x = AMotionEvent_getAxisValue(event, AMOTION_EVENT_AXIS_X, 0); - vulkanExample->gamePadState.axisLeft.y = AMotionEvent_getAxisValue(event, AMOTION_EVENT_AXIS_Y, 0); - // Right thumbstick - vulkanExample->gamePadState.axisRight.x = AMotionEvent_getAxisValue(event, AMOTION_EVENT_AXIS_Z, 0); - vulkanExample->gamePadState.axisRight.y = AMotionEvent_getAxisValue(event, AMOTION_EVENT_AXIS_RZ, 0); - break; - } - - // FIXME: Reusing code for TOUCHSCREEN seemingly works well for MOUSE event source, - // but it would be better to provide a dedicated event handling logic for MOUSE event source. - case AINPUT_SOURCE_MOUSE: - case AINPUT_SOURCE_TOUCHSCREEN: { - int32_t action = AMotionEvent_getAction(event); - int32_t pointerCount = AMotionEvent_getPointerCount(event); - int32_t flags = action & AMOTION_EVENT_ACTION_MASK; - - switch (flags) { - case AMOTION_EVENT_ACTION_DOWN: - case AMOTION_EVENT_ACTION_POINTER_DOWN: { - for (uint32_t i = 0; i < pointerCount; i++) { - vulkanExample->touchPoints[i].x = AMotionEvent_getX(event, i); - vulkanExample->touchPoints[i].y = AMotionEvent_getY(event, i); - }; - int32_t pointerIndex = (action & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; - if (pointerIndex < 2) { - vulkanExample->touchPoints[pointerIndex].down = true; - } - if (pointerCount < 2) { - // Detect single tap - int64_t eventTime = AMotionEvent_getEventTime(event); - int64_t downTime = AMotionEvent_getDownTime(event); - if (eventTime - downTime <= vks::android::TAP_TIMEOUT) { - float deadZone = (160.f / vks::android::screenDensity) * vks::android::TAP_SLOP * vks::android::TAP_SLOP; - float x = AMotionEvent_getX(event, 0) - vulkanExample->touchPoints[0].x; - float y = AMotionEvent_getY(event, 0) - vulkanExample->touchPoints[0].y; - if ((x * x + y * y) < deadZone) { - vulkanExample->mousePos.x = vulkanExample->touchPoints[0].x; - vulkanExample->mousePos.y = vulkanExample->touchPoints[0].y; - vulkanExample->mouseButtons.left = true; - } - }; - } - break; - } - case AMOTION_EVENT_ACTION_UP: - case AMOTION_EVENT_ACTION_POINTER_UP: { - int32_t pointerIndex = (action & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; - if (pointerIndex < 2) { - vulkanExample->touchPoints[pointerIndex].down = false; - } - if (pointerCount < 2) { - vulkanExample->touchPoints[1].down = false; - } - break; - } - case AMOTION_EVENT_ACTION_MOVE: { - // Pinch and zoom - if (!uiMouseCapture && vulkanExample->touchPoints[0].down && vulkanExample->touchPoints[1].down) { - for (uint32_t i = 0; i < pointerCount; i++) { - if (vulkanExample->touchPoints[i].down) { - vulkanExample->touchPoints[i].x = AMotionEvent_getX(event, i); - vulkanExample->touchPoints[i].y = AMotionEvent_getY(event, i); - } - }; - float dx = vulkanExample->touchPoints[1].x - vulkanExample->touchPoints[0].x; - float dy = vulkanExample->touchPoints[1].y - vulkanExample->touchPoints[0].y; - float d = sqrt(dx * dx + dy * dy); - if (d < vulkanExample->pinchDist) { - vulkanExample->camera.translate(glm::vec3(0.0f, 0.0f, 0.03f)); - }; - if (d > vulkanExample->pinchDist) { - vulkanExample->camera.translate(glm::vec3(0.0f, 0.0f, -0.03f)); - }; - vulkanExample->pinchDist = d; - } else { - // Rotate - if (!uiMouseCapture && vulkanExample->touchPoints[0].down) { - int32_t eventX = AMotionEvent_getX(event, 0); - int32_t eventY = AMotionEvent_getY(event, 0); - - float deltaX = (vulkanExample->touchPoints[0].y - eventY) * vulkanExample->camera.rotationSpeed * 0.5f; - float deltaY = (vulkanExample->touchPoints[0].x - eventX) * vulkanExample->camera.rotationSpeed * 0.5f; - - vulkanExample->camera.rotate(glm::vec3(deltaX, 0.0f, 0.0f)); - vulkanExample->camera.rotate(glm::vec3(0.0f, -deltaY, 0.0f)); - - vulkanExample->touchPoints[0].x = eventX; - vulkanExample->touchPoints[0].y = eventY; - } - } - break; - } - default: - return 1; - } - } - - return 1; - } - } - - if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_KEY) - { - int32_t keyCode = AKeyEvent_getKeyCode((const AInputEvent*)event); - int32_t action = AKeyEvent_getAction((const AInputEvent*)event); - int32_t button = 0; - - if (action == AKEY_EVENT_ACTION_UP) - return 0; - - switch (keyCode) - { - case AKEYCODE_BUTTON_START: - vulkanExample->paused = !vulkanExample->paused; - break; - }; - - LOGD("Button %d pressed", keyCode); - } - - return 0; -} - -void VulkanExampleBase::handleAppCommand(android_app * app, int32_t cmd) -{ - assert(app->userData != NULL); - VulkanExampleBase* vulkanExample = reinterpret_cast(app->userData); - switch (cmd) - { - case APP_CMD_SAVE_STATE: - LOGD("APP_CMD_SAVE_STATE"); - /* - vulkanExample->app->savedState = malloc(sizeof(struct saved_state)); - *((struct saved_state*)vulkanExample->app->savedState) = vulkanExample->state; - vulkanExample->app->savedStateSize = sizeof(struct saved_state); - */ - break; - case APP_CMD_INIT_WINDOW: - LOGD("APP_CMD_INIT_WINDOW"); - if (androidApp->window != NULL) - { - vulkanExample->initVulkan(); - vulkanExample->prepare(); - assert(vulkanExample->prepared); - } - else - { - LOGE("No window assigned!"); - } - break; - case APP_CMD_LOST_FOCUS: - LOGD("APP_CMD_LOST_FOCUS"); - vulkanExample->focused = false; - break; - case APP_CMD_GAINED_FOCUS: - LOGD("APP_CMD_GAINED_FOCUS"); - vulkanExample->focused = true; - break; - case APP_CMD_TERM_WINDOW: - // Window is hidden or closed, clean up resources - LOGD("APP_CMD_TERM_WINDOW"); - vulkanExample->swapChain.cleanup(); - break; - } -} -#elif defined(_DIRECT2DISPLAY) -#elif defined(VK_USE_PLATFORM_WAYLAND_KHR) -/*static*/void VulkanExampleBase::registryGlobalCb(void *data, - wl_registry *registry, uint32_t name, const char *interface, - uint32_t version) -{ - VulkanExampleBase *self = reinterpret_cast(data); - self->registryGlobal(registry, name, interface, version); -} - -/*static*/void VulkanExampleBase::seatCapabilitiesCb(void *data, wl_seat *seat, - uint32_t caps) -{ - VulkanExampleBase *self = reinterpret_cast(data); - self->seatCapabilities(seat, caps); -} - -/*static*/void VulkanExampleBase::pointerEnterCb(void *data, - wl_pointer *pointer, uint32_t serial, wl_surface *surface, - wl_fixed_t sx, wl_fixed_t sy) -{ -} - -/*static*/void VulkanExampleBase::pointerLeaveCb(void *data, - wl_pointer *pointer, uint32_t serial, wl_surface *surface) -{ -} - -/*static*/void VulkanExampleBase::pointerMotionCb(void *data, - wl_pointer *pointer, uint32_t time, wl_fixed_t sx, wl_fixed_t sy) -{ - VulkanExampleBase *self = reinterpret_cast(data); - self->pointerMotion(pointer, time, sx, sy); -} -void VulkanExampleBase::pointerMotion(wl_pointer *pointer, uint32_t time, wl_fixed_t sx, wl_fixed_t sy) -{ - handleMouseMove(wl_fixed_to_int(sx), wl_fixed_to_int(sy)); -} - -/*static*/void VulkanExampleBase::pointerButtonCb(void *data, - wl_pointer *pointer, uint32_t serial, uint32_t time, uint32_t button, - uint32_t state) -{ - VulkanExampleBase *self = reinterpret_cast(data); - self->pointerButton(pointer, serial, time, button, state); -} - -void VulkanExampleBase::pointerButton(struct wl_pointer *pointer, - uint32_t serial, uint32_t time, uint32_t button, uint32_t state) -{ - switch (button) - { - case BTN_LEFT: - mouseButtons.left = !!state; - break; - case BTN_MIDDLE: - mouseButtons.middle = !!state; - break; - case BTN_RIGHT: - mouseButtons.right = !!state; - break; - default: - break; - } -} - -/*static*/void VulkanExampleBase::pointerAxisCb(void *data, - wl_pointer *pointer, uint32_t time, uint32_t axis, - wl_fixed_t value) -{ - VulkanExampleBase *self = reinterpret_cast(data); - self->pointerAxis(pointer, time, axis, value); -} - -void VulkanExampleBase::pointerAxis(wl_pointer *pointer, uint32_t time, - uint32_t axis, wl_fixed_t value) -{ - double d = wl_fixed_to_double(value); - switch (axis) - { - case REL_X: - camera.translate(glm::vec3(0.0f, 0.0f, -d * 0.005f * camera.movementSpeed)); - break; - default: - break; - } -} - -/*static*/void VulkanExampleBase::keyboardKeymapCb(void *data, - struct wl_keyboard *keyboard, uint32_t format, int fd, uint32_t size) -{ -} - -/*static*/void VulkanExampleBase::keyboardEnterCb(void *data, - struct wl_keyboard *keyboard, uint32_t serial, - struct wl_surface *surface, struct wl_array *keys) -{ -} - -/*static*/void VulkanExampleBase::keyboardLeaveCb(void *data, - struct wl_keyboard *keyboard, uint32_t serial, - struct wl_surface *surface) -{ -} - -/*static*/void VulkanExampleBase::keyboardKeyCb(void *data, - struct wl_keyboard *keyboard, uint32_t serial, uint32_t time, - uint32_t key, uint32_t state) -{ - VulkanExampleBase *self = reinterpret_cast(data); - self->keyboardKey(keyboard, serial, time, key, state); -} - -void VulkanExampleBase::keyboardKey(struct wl_keyboard *keyboard, - uint32_t serial, uint32_t time, uint32_t key, uint32_t state) -{ - switch (key) - { - case KEY_W: - camera.keys.up = !!state; - break; - case KEY_S: - camera.keys.down = !!state; - break; - case KEY_A: - camera.keys.left = !!state; - break; - case KEY_D: - camera.keys.right = !!state; - break; - case KEY_P: - if (state) - paused = !paused; - break; - case KEY_ESC: - quit = true; - break; - } -} - -/*static*/void VulkanExampleBase::keyboardModifiersCb(void *data, - struct wl_keyboard *keyboard, uint32_t serial, uint32_t mods_depressed, - uint32_t mods_latched, uint32_t mods_locked, uint32_t group) -{ -} - -void VulkanExampleBase::seatCapabilities(wl_seat *seat, uint32_t caps) -{ - if ((caps & WL_SEAT_CAPABILITY_POINTER) && !pointer) - { - pointer = wl_seat_get_pointer(seat); - static const struct wl_pointer_listener pointer_listener = - { pointerEnterCb, pointerLeaveCb, pointerMotionCb, pointerButtonCb, - pointerAxisCb, }; - wl_pointer_add_listener(pointer, &pointer_listener, this); - } - else if (!(caps & WL_SEAT_CAPABILITY_POINTER) && pointer) - { - wl_pointer_destroy(pointer); - pointer = nullptr; - } - - if ((caps & WL_SEAT_CAPABILITY_KEYBOARD) && !keyboard) - { - keyboard = wl_seat_get_keyboard(seat); - static const struct wl_keyboard_listener keyboard_listener = - { keyboardKeymapCb, keyboardEnterCb, keyboardLeaveCb, keyboardKeyCb, - keyboardModifiersCb, }; - wl_keyboard_add_listener(keyboard, &keyboard_listener, this); - } - else if (!(caps & WL_SEAT_CAPABILITY_KEYBOARD) && keyboard) - { - wl_keyboard_destroy(keyboard); - keyboard = nullptr; - } -} - -void VulkanExampleBase::registryGlobal(wl_registry *registry, uint32_t name, - const char *interface, uint32_t version) -{ - if (strcmp(interface, "wl_compositor") == 0) - { - compositor = (wl_compositor *) wl_registry_bind(registry, name, - &wl_compositor_interface, 3); - } - else if (strcmp(interface, "wl_shell") == 0) - { - shell = (wl_shell *) wl_registry_bind(registry, name, - &wl_shell_interface, 1); - } - else if (strcmp(interface, "wl_seat") == 0) - { - seat = (wl_seat *) wl_registry_bind(registry, name, &wl_seat_interface, - 1); - - static const struct wl_seat_listener seat_listener = - { seatCapabilitiesCb, }; - wl_seat_add_listener(seat, &seat_listener, this); - } -} - -/*static*/void VulkanExampleBase::registryGlobalRemoveCb(void *data, - struct wl_registry *registry, uint32_t name) -{ -} - -void VulkanExampleBase::initWaylandConnection() -{ - display = wl_display_connect(NULL); - if (!display) - { - std::cout << "Could not connect to Wayland display!\n"; - fflush(stdout); - exit(1); - } - - registry = wl_display_get_registry(display); - if (!registry) - { - std::cout << "Could not get Wayland registry!\n"; - fflush(stdout); - exit(1); - } - - static const struct wl_registry_listener registry_listener = - { registryGlobalCb, registryGlobalRemoveCb }; - wl_registry_add_listener(registry, ®istry_listener, this); - wl_display_dispatch(display); - wl_display_roundtrip(display); - if (!compositor || !shell || !seat) - { - std::cout << "Could not bind Wayland protocols!\n"; - fflush(stdout); - exit(1); - } -} - -static void PingCb(void *data, struct wl_shell_surface *shell_surface, - uint32_t serial) -{ - wl_shell_surface_pong(shell_surface, serial); -} - -static void ConfigureCb(void *data, struct wl_shell_surface *shell_surface, - uint32_t edges, int32_t width, int32_t height) -{ -} - -static void PopupDoneCb(void *data, struct wl_shell_surface *shell_surface) -{ -} - -wl_shell_surface *VulkanExampleBase::setupWindow() -{ - surface = wl_compositor_create_surface(compositor); - shell_surface = wl_shell_get_shell_surface(shell, surface); - - static const struct wl_shell_surface_listener shell_surface_listener = - { PingCb, ConfigureCb, PopupDoneCb }; - - wl_shell_surface_add_listener(shell_surface, &shell_surface_listener, this); - wl_shell_surface_set_toplevel(shell_surface); - wl_shell_surface_set_title(shell_surface, title.c_str()); - return shell_surface; -} - -#elif defined(VK_USE_PLATFORM_XCB_KHR) - -static inline xcb_intern_atom_reply_t* intern_atom_helper(xcb_connection_t *conn, bool only_if_exists, const char *str) -{ - xcb_intern_atom_cookie_t cookie = xcb_intern_atom(conn, only_if_exists, strlen(str), str); - return xcb_intern_atom_reply(conn, cookie, NULL); -} - -// Set up a window using XCB and request event types -xcb_window_t VulkanExampleBase::setupWindow() -{ - uint32_t value_mask, value_list[32]; - - window = xcb_generate_id(connection); - - value_mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK; - value_list[0] = screen->black_pixel; - value_list[1] = - XCB_EVENT_MASK_KEY_RELEASE | - XCB_EVENT_MASK_KEY_PRESS | - XCB_EVENT_MASK_EXPOSURE | - XCB_EVENT_MASK_STRUCTURE_NOTIFY | - XCB_EVENT_MASK_POINTER_MOTION | - XCB_EVENT_MASK_BUTTON_PRESS | - XCB_EVENT_MASK_BUTTON_RELEASE; - - if (settings.fullscreen) - { - width = destWidth = screen->width_in_pixels; - height = destHeight = screen->height_in_pixels; - } - - xcb_create_window(connection, - XCB_COPY_FROM_PARENT, - window, screen->root, - 0, 0, width, height, 0, - XCB_WINDOW_CLASS_INPUT_OUTPUT, - screen->root_visual, - value_mask, value_list); - - /* Magic code that will send notification when window is destroyed */ - xcb_intern_atom_reply_t* reply = intern_atom_helper(connection, true, "WM_PROTOCOLS"); - atom_wm_delete_window = intern_atom_helper(connection, false, "WM_DELETE_WINDOW"); - - xcb_change_property(connection, XCB_PROP_MODE_REPLACE, - window, (*reply).atom, 4, 32, 1, - &(*atom_wm_delete_window).atom); - - xcb_change_property(connection, XCB_PROP_MODE_REPLACE, - window, XCB_ATOM_WM_NAME, XCB_ATOM_STRING, 8, - title.size(), title.c_str()); - - free(reply); - - if (settings.fullscreen) - { - xcb_intern_atom_reply_t *atom_wm_state = intern_atom_helper(connection, false, "_NET_WM_STATE"); - xcb_intern_atom_reply_t *atom_wm_fullscreen = intern_atom_helper(connection, false, "_NET_WM_STATE_FULLSCREEN"); - xcb_change_property(connection, - XCB_PROP_MODE_REPLACE, - window, atom_wm_state->atom, - XCB_ATOM_ATOM, 32, 1, - &(atom_wm_fullscreen->atom)); - free(atom_wm_fullscreen); - free(atom_wm_state); - } - - xcb_map_window(connection, window); - - return(window); -} - -// Initialize XCB connection -void VulkanExampleBase::initxcbConnection() -{ - const xcb_setup_t *setup; - xcb_screen_iterator_t iter; - int scr; - - connection = xcb_connect(NULL, &scr); - if (connection == NULL) { - printf("Could not find a compatible Vulkan ICD!\n"); - fflush(stdout); - exit(1); - } - - setup = xcb_get_setup(connection); - iter = xcb_setup_roots_iterator(setup); - while (scr-- > 0) - xcb_screen_next(&iter); - screen = iter.data; -} - -void VulkanExampleBase::handleEvent(const xcb_generic_event_t *event) -{ - switch (event->response_type & 0x7f) - { - case XCB_CLIENT_MESSAGE: - if ((*(xcb_client_message_event_t*)event).data.data32[0] == - (*atom_wm_delete_window).atom) { - quit = true; - } - break; - case XCB_MOTION_NOTIFY: - { - xcb_motion_notify_event_t *motion = (xcb_motion_notify_event_t *)event; - handleMouseMove((int32_t)motion->event_x, (int32_t)motion->event_y); - break; - } - break; - case XCB_BUTTON_PRESS: - { - xcb_button_press_event_t *press = (xcb_button_press_event_t *)event; - if (press->detail == XCB_BUTTON_INDEX_1) - mouseButtons.left = true; - if (press->detail == XCB_BUTTON_INDEX_2) - mouseButtons.middle = true; - if (press->detail == XCB_BUTTON_INDEX_3) - mouseButtons.right = true; - } - break; - case XCB_BUTTON_RELEASE: - { - xcb_button_press_event_t *press = (xcb_button_press_event_t *)event; - if (press->detail == XCB_BUTTON_INDEX_1) - mouseButtons.left = false; - if (press->detail == XCB_BUTTON_INDEX_2) - mouseButtons.middle = false; - if (press->detail == XCB_BUTTON_INDEX_3) - mouseButtons.right = false; - } - break; - case XCB_KEY_PRESS: - { - const xcb_key_release_event_t *keyEvent = (const xcb_key_release_event_t *)event; - switch (keyEvent->detail) - { - case KEY_W: - camera.keys.up = true; - break; - case KEY_S: - camera.keys.down = true; - break; - case KEY_A: - camera.keys.left = true; - break; - case KEY_D: - camera.keys.right = true; - break; - case KEY_P: - paused = !paused; - break; - } - } - break; - case XCB_KEY_RELEASE: - { - const xcb_key_release_event_t *keyEvent = (const xcb_key_release_event_t *)event; - switch (keyEvent->detail) - { - case KEY_W: - camera.keys.up = false; - break; - case KEY_S: - camera.keys.down = false; - break; - case KEY_A: - camera.keys.left = false; - break; - case KEY_D: - camera.keys.right = false; - break; - case KEY_ESCAPE: - quit = true; - break; - } - } - break; - case XCB_DESTROY_NOTIFY: - quit = true; - break; - case XCB_CONFIGURE_NOTIFY: - { - const xcb_configure_notify_event_t *cfgEvent = (const xcb_configure_notify_event_t *)event; - if ((prepared) && ((cfgEvent->width != width) || (cfgEvent->height != height))) - { - destWidth = cfgEvent->width; - destHeight = cfgEvent->height; - if ((destWidth > 0) && (destHeight > 0)) - { - windowResize(); - } - } - } - break; - default: - break; - } -} -#elif defined(VK_USE_PLATFORM_MACOS_MVK) -@interface AppDelegate : NSObject -{ -} - -@end - -@implementation AppDelegate -{ -} - -- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender -{ - return YES; -} - -@end - -CVReturn OnDisplayLinkOutput(CVDisplayLinkRef displayLink, const CVTimeStamp *inNow, const CVTimeStamp *inOutputTime, - CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext) -{ - @autoreleasepool - { - auto vulkanExampleBase = static_cast(displayLinkContext); - vulkanExampleBase->renderFrame(); - } - return kCVReturnSuccess; -} - -@interface View : NSView -{ -@public - VulkanExampleBase* vulkanExampleBase; -} - -@end - -@implementation View -{ - CVDisplayLinkRef displayLink; -} - -- (instancetype)initWithFrame:(NSRect)frameRect -{ - self = [super initWithFrame:(frameRect)]; - if (self) - { - self.wantsLayer = YES; - self.layer = [CAMetalLayer layer]; - } - return self; -} - -- (void)viewDidMoveToWindow -{ - CVDisplayLinkCreateWithActiveCGDisplays(&displayLink); - CVDisplayLinkSetOutputCallback(displayLink, &OnDisplayLinkOutput, vulkanExampleBase); - CVDisplayLinkStart(displayLink); -} - -- (BOOL)acceptsFirstResponder -{ - return YES; -} - -- (void)keyDown:(NSEvent*)event -{ - switch (event.keyCode) - { - case kVK_ANSI_P: - vulkanExampleBase->paused = !vulkanExampleBase->paused; - break; - case kVK_Escape: - [NSApp terminate:nil]; - break; - default: - break; - } -} - -- (void)keyUp:(NSEvent*)event -{ - if (vulkanExampleBase->camera.firstperson) - { - switch (event.keyCode) - { - case kVK_ANSI_W: - vulkanExampleBase->camera.keys.up = false; - break; - case kVK_ANSI_S: - vulkanExampleBase->camera.keys.down = false; - break; - case kVK_ANSI_A: - vulkanExampleBase->camera.keys.left = false; - break; - case kVK_ANSI_D: - vulkanExampleBase->camera.keys.right = false; - break; - default: - break; - } - } -} - -- (void)mouseDown:(NSEvent *)event -{ - NSPoint location = [event locationInWindow]; - NSPoint point = [self convertPoint:location fromView:nil]; - vulkanExampleBase->mousePos = glm::vec2(point.x, point.y); - vulkanExampleBase->mouseButtons.left = true; -} - -- (void)mouseUp:(NSEvent *)event -{ - NSPoint location = [event locationInWindow]; - NSPoint point = [self convertPoint:location fromView:nil]; - vulkanExampleBase->mousePos = glm::vec2(point.x, point.y); - vulkanExampleBase->mouseButtons.left = false; -} - -- (void)otherMouseDown:(NSEvent *)event -{ - vulkanExampleBase->mouseButtons.right = true; -} - -- (void)otherMouseUp:(NSEvent *)event -{ - vulkanExampleBase->mouseButtons.right = false; -} - -- (void)mouseDragged:(NSEvent *)event -{ - NSPoint location = [event locationInWindow]; - NSPoint point = [self convertPoint:location fromView:nil]; - vulkanExampleBase->mouseDragged(point.x, point.y); -} - -- (void)mouseMoved:(NSEvent *)event -{ - NSPoint location = [event locationInWindow]; - NSPoint point = [self convertPoint:location fromView:nil]; - vulkanExampleBase->mouseDragged(point.x, point.y); -} - -- (void)scrollWheel:(NSEvent *)event -{ - short wheelDelta = [event deltaY]; - vulkanExampleBase->camera.translate(glm::vec3(0.0f, 0.0f, - -(float)wheelDelta * 0.05f * vulkanExampleBase->camera.movementSpeed)); -} - -- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize -{ - CVDisplayLinkStop(displayLink); - vulkanExampleBase->windowWillResize(frameSize.width, frameSize.height); - return frameSize; -} - -- (void)windowDidResize:(NSNotification *)notification -{ - vulkanExampleBase->windowDidResize(); - CVDisplayLinkStart(displayLink); -} - -- (BOOL)windowShouldClose:(NSWindow *)sender -{ - return TRUE; -} - -- (void)windowWillClose:(NSNotification *)notification -{ - CVDisplayLinkStop(displayLink); -} - -@end - -NSWindow* VulkanExampleBase::setupWindow() -{ - NSApp = [NSApplication sharedApplication]; - [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]; - [NSApp setDelegate:[AppDelegate new]]; - - const auto kContentRect = NSMakeRect(0.0f, 0.0f, width, height); - - window = [[NSWindow alloc] initWithContentRect:kContentRect - styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskResizable - backing:NSBackingStoreBuffered - defer:NO]; - [window setTitle:@(title.c_str())]; - [window setAcceptsMouseMovedEvents:YES]; - [window center]; - [window makeKeyAndOrderFront:nil]; - - auto view = [[View alloc] initWithFrame:kContentRect]; - view->vulkanExampleBase = this; - - [window setDelegate:view]; - [window setContentView:view]; - - return window; -} - -void VulkanExampleBase::mouseDragged(float x, float y) -{ - handleMouseMove(static_cast(x), static_cast(y)); -} - -void VulkanExampleBase::windowWillResize(float x, float y) -{ - resizing = true; - if (prepared) - { - destWidth = x; - destHeight = y; - windowResize(); - } - std::cout << "resize" << std::endl; -} - -void VulkanExampleBase::windowDidResize() -{ - std::cout << "done" << std::endl; - resizing = false; -} -#endif - -void VulkanExampleBase::windowResized() {} - -void VulkanExampleBase::setupFrameBuffer() -{ - /* - MSAA - */ - VkFormat colorAttachmentFormat = VK_FORMAT_R8G8B8A8_UNORM; - VkFormat depthFormat = findDepthFormat(); - if (settings.headless) - { - if (settings.multiSampling) - { - - VkImageCreateInfo imageCI{}; - imageCI.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; - imageCI.imageType = VK_IMAGE_TYPE_2D; - imageCI.format = colorAttachmentFormat; - imageCI.extent.width = settings.width; - imageCI.extent.height = settings.height; - imageCI.extent.depth = 1; - imageCI.mipLevels = 1; - imageCI.arrayLayers = 1; - imageCI.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - imageCI.tiling = VK_IMAGE_TILING_OPTIMAL; - imageCI.samples = settings.sampleCount; - imageCI.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; - imageCI.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - - VK_CHECK_RESULT(vkCreateImage(device, &imageCI, nullptr, &multisampleTarget.color.image)); - - VkMemoryRequirements memReqs; - vkGetImageMemoryRequirements(device, multisampleTarget.color.image, &memReqs); - VkMemoryAllocateInfo memAllocInfo{}; - memAllocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; - memAllocInfo.allocationSize = memReqs.size; - VkBool32 lazyMemTypePresent; - memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, &lazyMemTypePresent); - if (!lazyMemTypePresent) { - memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); - } - VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &multisampleTarget.color.memory)); - vkBindImageMemory(device, multisampleTarget.color.image, multisampleTarget.color.memory, 0); - - // Create image view for the MSAA color image target - VkImageViewCreateInfo imageViewCI{}; - imageViewCI.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; - imageViewCI.image = multisampleTarget.color.image; - imageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D; - imageViewCI.format = colorAttachmentFormat; - imageViewCI.components.r = VK_COMPONENT_SWIZZLE_R; - imageViewCI.components.g = VK_COMPONENT_SWIZZLE_G; - imageViewCI.components.b = VK_COMPONENT_SWIZZLE_B; - imageViewCI.components.a = VK_COMPONENT_SWIZZLE_A; - imageViewCI.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - imageViewCI.subresourceRange.levelCount = 1; - imageViewCI.subresourceRange.layerCount = 1; - VK_CHECK_RESULT(vkCreateImageView(device, &imageViewCI, nullptr, &multisampleTarget.color.view)); - - // Depth target - imageCI.imageType = VK_IMAGE_TYPE_2D; - imageCI.format = depthFormat; - imageCI.extent.width = settings.width; - imageCI.extent.height = settings.height; - imageCI.extent.depth = 1; - imageCI.mipLevels = 1; - imageCI.arrayLayers = 1; - imageCI.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - imageCI.tiling = VK_IMAGE_TILING_OPTIMAL; - imageCI.samples = settings.sampleCount; - imageCI.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; - imageCI.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - VK_CHECK_RESULT(vkCreateImage(device, &imageCI, nullptr, &multisampleTarget.depth.image)); - - vkGetImageMemoryRequirements(device, multisampleTarget.depth.image, &memReqs); - memAllocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; - memAllocInfo.allocationSize = memReqs.size; - memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, &lazyMemTypePresent); - if (!lazyMemTypePresent) { - memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); - } - VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &multisampleTarget.depth.memory)); - vkBindImageMemory(device, multisampleTarget.depth.image, multisampleTarget.depth.memory, 0); - - // Create image view for the MSAA target - imageViewCI.image = multisampleTarget.depth.image; - imageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D; - imageViewCI.format = depthFormat; - imageViewCI.components.r = VK_COMPONENT_SWIZZLE_R; - imageViewCI.components.g = VK_COMPONENT_SWIZZLE_G; - imageViewCI.components.b = VK_COMPONENT_SWIZZLE_B; - imageViewCI.components.a = VK_COMPONENT_SWIZZLE_A; - imageViewCI.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; - imageViewCI.subresourceRange.levelCount = 1; - imageViewCI.subresourceRange.layerCount = 1; - VK_CHECK_RESULT(vkCreateImageView(device, &imageViewCI, nullptr, &multisampleTarget.depth.view)); - } - // creat color image - VkImageCreateInfo imageCI{}; - imageCI.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; - imageCI.imageType = VK_IMAGE_TYPE_2D; - imageCI.format = colorAttachmentFormat; - imageCI.extent.width = settings.width; - imageCI.extent.height = settings.height; - imageCI.extent.depth = 1; - imageCI.mipLevels = 1; - imageCI.arrayLayers = 1; - imageCI.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - imageCI.tiling = VK_IMAGE_TILING_OPTIMAL; - imageCI.samples = VK_SAMPLE_COUNT_1_BIT; - imageCI.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; - imageCI.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - - VK_CHECK_RESULT(vkCreateImage(device, &imageCI, nullptr, &colorAttachment.image)); - - VkMemoryRequirements memReqs; - vkGetImageMemoryRequirements(device, colorAttachment.image, &memReqs); - - VkMemoryAllocateInfo memAllocInfo{}; - memAllocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; - memAllocInfo.allocationSize = memReqs.size; - VkBool32 lazyMemTypePresent; - memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, &lazyMemTypePresent); - if (!lazyMemTypePresent) { - memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); - } - VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &colorAttachment.memory)); - - vkBindImageMemory(device, colorAttachment.image, colorAttachment.memory, 0); - - // Create image view for the color image - VkImageViewCreateInfo imageViewCI{}; - imageViewCI.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; - imageViewCI.image = colorAttachment.image; - imageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D; - imageViewCI.format = colorAttachmentFormat; - imageViewCI.components.r = VK_COMPONENT_SWIZZLE_R; - imageViewCI.components.g = VK_COMPONENT_SWIZZLE_G; - imageViewCI.components.b = VK_COMPONENT_SWIZZLE_B; - imageViewCI.components.a = VK_COMPONENT_SWIZZLE_A; - imageViewCI.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - imageViewCI.subresourceRange.levelCount = 1; - imageViewCI.subresourceRange.layerCount = 1; - VK_CHECK_RESULT(vkCreateImageView(device, &imageViewCI, nullptr, &colorAttachment.view)); - - // create image for the depth image - VkImageCreateInfo image = {}; - image.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; - image.pNext = NULL; - image.imageType = VK_IMAGE_TYPE_2D; - image.format = depthFormat; - image.extent.width = settings.width; - image.extent.height = settings.height; - image.extent.depth = 1; - image.mipLevels = 1; - image.arrayLayers = 1; - image.samples = VK_SAMPLE_COUNT_1_BIT; - image.tiling = VK_IMAGE_TILING_OPTIMAL; - image.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - image.flags = 0; - - VK_CHECK_RESULT(vkCreateImage(device, &image, nullptr, &depthStencil.image)); - - VkMemoryAllocateInfo memAlloc = {}; - memAlloc.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; - memAlloc.pNext = NULL; - memAlloc.allocationSize = 0; - memAlloc.memoryTypeIndex = 0; - VkMemoryRequirements depthAttachmentMemReqs; - vkGetImageMemoryRequirements(device, depthStencil.image, &memReqs); - memAlloc.allocationSize = depthAttachmentMemReqs.size; - memAlloc.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); - VK_CHECK_RESULT(vkAllocateMemory(device, &memAlloc, nullptr, &depthStencil.mem)); - VK_CHECK_RESULT(vkBindImageMemory(device, depthStencil.image, depthStencil.mem, 0)); - - - // create image view for depth image - VkImageViewCreateInfo depthStencilView = {}; - depthStencilView.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; - depthStencilView.pNext = NULL; - depthStencilView.viewType = VK_IMAGE_VIEW_TYPE_2D; - depthStencilView.format = depthFormat; - depthStencilView.image = depthStencil.image; - depthStencilView.flags = 0; - depthStencilView.subresourceRange = {}; - depthStencilView.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; - if (depthFormat >= VK_FORMAT_D16_UNORM_S8_UINT) - { - depthStencilView.subresourceRange.aspectMask |= VK_IMAGE_ASPECT_STENCIL_BIT; - } - depthStencilView.subresourceRange.baseMipLevel = 0; - depthStencilView.subresourceRange.levelCount = 1; - depthStencilView.subresourceRange.baseArrayLayer = 0; - depthStencilView.subresourceRange.layerCount = 1; - VK_CHECK_RESULT(vkCreateImageView(device, &depthStencilView, nullptr, &depthStencil.view)); - - } - else - { - - swapChainImageViews.resize(swapChain.imageCount); - for (size_t i = 0; i < swapChain.imageCount; i++) - { - VkImageViewCreateInfo creatInfo{}; - creatInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; - creatInfo.image = swapChain.images[i]; - creatInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; - creatInfo.format = swapChain.colorFormat; - - creatInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; - creatInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; - creatInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; - creatInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY; - - creatInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - creatInfo.subresourceRange.baseMipLevel = 0; - creatInfo.subresourceRange.levelCount = 1; - creatInfo.subresourceRange.baseArrayLayer = 0; - creatInfo.subresourceRange.layerCount = 1; - - if (vkCreateImageView(device, &creatInfo, nullptr, &swapChainImageViews[i]) != VK_SUCCESS) - { - throw std::runtime_error("failed to creat image view"); - } - } - } - - if (settings.headless) - { - auto frameRange = settings.endFrameIndex - settings.startFrameCount; - if (settings.multiSampling) - { - - for (int i = 0; i < frameRange; i++) - { - VkImageView attachments[4]; - attachments[0] = multisampleTarget.color.view; - attachments[1] = multisampleTarget.depth.view; - attachments[2] = depthStencil.view; - attachments[3] = colorAttachment.view; - - VkFramebufferCreateInfo framebufferCreateInfo = vks::initializers::framebufferCreateInfo(); - framebufferCreateInfo.renderPass = renderPass; - framebufferCreateInfo.attachmentCount = 4; - framebufferCreateInfo.pAttachments = attachments; - framebufferCreateInfo.width = settings.width; - framebufferCreateInfo.height = settings.height; - framebufferCreateInfo.layers = 1; - - VK_CHECK_RESULT(vkCreateFramebuffer(device, &framebufferCreateInfo, nullptr, &frameBuffers[i])); - } - - } - else - { - for (int i = 0; i < frameRange; i++) - { - VkImageView attachments[2]; - attachments[0] = colorAttachment.view; - attachments[1] = depthStencil.view; - - VkFramebufferCreateInfo framebufferCreateInfo = vks::initializers::framebufferCreateInfo(); - framebufferCreateInfo.renderPass = renderPass; - framebufferCreateInfo.attachmentCount = 2; - framebufferCreateInfo.pAttachments = attachments; - framebufferCreateInfo.width = settings.width; - framebufferCreateInfo.height = settings.height; - framebufferCreateInfo.layers = 1; - VK_CHECK_RESULT(vkCreateFramebuffer(device, &framebufferCreateInfo, nullptr, &frameBuffers[i])); - - } - } - - - } - else - { - createSwapChainFramebuffer(); - } -} - -void VulkanExampleBase::createSwapChainFramebuffer() -{ - uint32_t attachmentCount; - VkImageView attachments[attachmentCount]; - - if (settings.multiSampling) { - attachmentCount = 4; - attachments[0] = multisampleTarget.color.view; - attachments[1] = multisampleTarget.depth.view; - attachments[2] = depthStencil.view; - - } - else { - attachmentCount = 2; - attachments[1] = depthStencil.view; - } - - VkFramebufferCreateInfo frameBufferCI{}; - frameBufferCI.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO; - frameBufferCI.pNext = NULL; - frameBufferCI.renderPass = renderPass; - frameBufferCI.attachmentCount = attachmentCount; - frameBufferCI.pAttachments = attachments; - frameBufferCI.width = settings.width; - frameBufferCI.height = settings.height; - frameBufferCI.layers = 1; - - - - // Create frame buffers for every swap chain image - frameBuffers.resize(swapChainImageViews.size()); - for (uint32_t i = 0; i < swapChainImageViews.size(); i++) { - if (settings.multiSampling) { - attachments[3] = swapChainImageViews[i]; - } - else { - attachments[0] = swapChainImageViews[i]; - } - VK_CHECK_RESULT(vkCreateFramebuffer(device, &frameBufferCI, nullptr, &frameBuffers[i])); - } -} - -void VulkanExampleBase::windowResize() -{ - if (!prepared) { - return; - } - prepared = false; - - vkDeviceWaitIdle(device); - width = destWidth; - height = destHeight; - setupSwapChain(); - if (settings.multiSampling) { - vkDestroyImageView(device, multisampleTarget.color.view, nullptr); - vkDestroyImage(device, multisampleTarget.color.image, nullptr); - vkFreeMemory(device, multisampleTarget.color.memory, nullptr); - vkDestroyImageView(device, multisampleTarget.depth.view, nullptr); - vkDestroyImage(device, multisampleTarget.depth.image, nullptr); - vkFreeMemory(device, multisampleTarget.depth.memory, nullptr); - } - vkDestroyImageView(device, depthStencil.view, nullptr); - vkDestroyImage(device, depthStencil.image, nullptr); - vkFreeMemory(device, depthStencil.mem, nullptr); - for (uint32_t i = 0; i < frameBuffers.size(); i++) { - vkDestroyFramebuffer(device, frameBuffers[i], nullptr); - } - setupFrameBuffer(); - vkDeviceWaitIdle(device); - - camera.updateAspectRatio((float)width / (float)height); - windowResized(); - - prepared = true; -} - -void VulkanExampleBase::handleMouseMove(int32_t x, int32_t y) -{ - int32_t dx = (int32_t)mousePos.x - x; - int32_t dy = (int32_t)mousePos.y - y; - ImGuiIO& io = ImGui::GetIO(); - bool handled = io.WantCaptureMouse; - - if (handled) { - mousePos = glm::vec2((float)x, (float)y); - return; - } - - if (handled) { - mousePos = glm::vec2((float)x, (float)y); - return; - } - - if (mouseButtons.left) { - camera.rotate(glm::vec3(dy * camera.rotationSpeed, -dx * camera.rotationSpeed, 0.0f)); - } - if (mouseButtons.right) { - camera.translate(glm::vec3(-0.0f, 0.0f, dy * .005f * camera.movementSpeed)); - } - if (mouseButtons.middle) { - camera.translate(glm::vec3(-dx * 0.01f, dy * 0.01f, 0.0f)); - } - mousePos = glm::vec2((float)x, (float)y); } -void VulkanExampleBase::initSwapchain() -{ -#if defined(_WIN32) - swapChain.initSurface(windowInstance, window); -#elif defined(VK_USE_PLATFORM_ANDROID_KHR) - swapChain.initSurface(androidApp->window); -#elif defined(_DIRECT2DISPLAY) - swapChain.initSurface(width, height); -#elif defined(VK_USE_PLATFORM_WAYLAND_KHR) - swapChain.initSurface(display, surface); -#elif defined(VK_USE_PLATFORM_XCB_KHR) - swapChain.initSurface(connection, window); -#elif defined(VK_USE_PLATFORM_MACOS_MVK) - swapChain.initSurface((__bridge void*)[window contentView]); -#endif -} -void VulkanExampleBase::setupSwapChain() -{ - swapChain.create(&width, &height, settings.vsync); -} -VkFormat VulkanExampleBase::findDepthFormat() -{ - return findSupportedFormat( - { VK_FORMAT_D32_SFLOAT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT }, - VK_IMAGE_TILING_OPTIMAL, - VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT - ); -} -VkFormat VulkanExampleBase::findSupportedFormat(const std::vector& candidates, VkImageTiling tiling, VkFormatFeatureFlags features) -{ - for (VkFormat format : candidates) - { - VkFormatProperties props; - vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &props); - if (tiling == VK_IMAGE_TILING_LINEAR && (props.linearTilingFeatures & features) == features) - { - return format; - } - else if (tiling == VK_IMAGE_TILING_OPTIMAL && (props.optimalTilingFeatures & features) == features) - { - return format; - } - } - throw std::runtime_error("failed to find supported format"); -} + + + + + + + + + + + + + + + + diff --git a/base/vulkanexamplebase.h b/base/vulkanexamplebase.h index 3ff3db2..c1f33d3 100644 --- a/base/vulkanexamplebase.h +++ b/base/vulkanexamplebase.h @@ -8,43 +8,17 @@ #pragma once -#ifdef _WIN32 -#pragma comment(linker, "/subsystem:windows") -#include -#include -#include -#elif defined(VK_USE_PLATFORM_ANDROID_KHR) -#include -#include -#include -#include -#include "VulkanAndroid.h" -#elif defined(VK_USE_PLATFORM_WAYLAND_KHR) -#include -#elif defined(_DIRECT2DISPLAY) -// -#elif defined(VK_USE_PLATFORM_XCB_KHR) -#include -#elif defined(VK_USE_PLATFORM_MACOS_MVK) -#include -#include -#include -#include -#endif - #include #include #include -#define GLM_FORCE_RADIANS -#define GLM_FORCE_DEPTH_ZERO_TO_ONE -#define GLM_ENABLE_EXPERIMENTAL -#include + #include #include #include #include + #include "vulkan/vulkan.h" #include "VulkanTools.h" @@ -54,51 +28,37 @@ #include "VulkanDevice.hpp" #include "VulkanSwapChain.hpp" -#include "imgui/imgui.h" +//#include "imgui/imgui.h" class VulkanExampleBase { private: - float fpsTimer = 0.0f; + uint32_t frameCounter = 0; - uint32_t destWidth; - uint32_t destHeight; + bool resizing = false; - void handleMouseMove(int32_t x, int32_t y); + //void handleMouseMove(int32_t x, int32_t y); PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallback; PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallback; VkDebugReportCallbackEXT debugReportCallback; - struct MultisampleTarget { - struct { - VkImage image; - VkImageView view; - VkDeviceMemory memory; - } color; - struct { - VkImage image; - VkImageView view; - VkDeviceMemory memory; - } depth; - } multisampleTarget; + protected: VkInstance instance; - VkPhysicalDevice physicalDevice; + VkPhysicalDeviceProperties deviceProperties; - VkPhysicalDeviceFeatures deviceFeatures; + VkPhysicalDeviceMemoryProperties deviceMemoryProperties; - VkDevice device; - vks::VulkanDevice *vulkanDevice; + + VkQueue queue; VkFormat depthFormat; VkCommandPool cmdPool; - VkRenderPass renderPass; + std::vectorframeBuffers; uint32_t currentBuffer = 0; - VkDescriptorPool descriptorPool; - VkPipelineCache pipelineCache; - VulkanSwapChain swapChain; - std::string title = "Vulkan Example"; - std::string name = "vulkanExample"; + + + //VulkanSwapChain swapChain; void windowResize(); public: static std::vector args; @@ -106,67 +66,31 @@ public: bool prepared = false; uint32_t width = 1280; uint32_t height = 720; - float frameTimer = 1.0f; - Camera camera; - glm::vec2 mousePos; - bool paused = false; - uint32_t lastFPS = 0; - - struct Settings { - uint32_t width = 1280; - uint32_t height = 720; - bool validation = true; // 鏍¢獙灞傚紑鍏 - bool fullscreen = false; // 鍏ㄥ睆寮鍏 - bool vsync = false; // 鍨傜洿鍚屾寮鍏 - bool multiSampling = true; // 澶氶噸閲囨牱 - bool rotateModel = true; // 妯″瀷鑷棆杞(鏆傛椂澶辨晥) - bool headless = false; // 鏃犲ご寮鍏 - bool outputPNGimage = false; - uint32_t endFrameIndex = 75; - bool enableSaveToImageSequeue = true; // 鍥剧墖搴忓垪寮鍏筹紙鏆傛椂寮冪敤锛 - uint32_t outputFrameCount = 100; // 鍥剧墖搴忓垪缁撴潫甯 - bool takeScreenShot = false; // 鎴睆锛堟殏鏃跺純鐢級 - uint32_t startFrameCount = 1; // 鍥剧墖搴忓垪寮濮嬪抚 - - uint32_t videoFrameRate = 25; - - VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_4_BIT; // 澶氶噸閲囨牱鍊嶇巼 - } settings; - struct DepthStencil { - VkImage image; - VkDeviceMemory mem; - VkImageView view; - } depthStencil; + + + bool paused = false; + - struct ColorAttachment { - VkImage image; - VkDeviceMemory memory; - VkImageView view; - } colorAttachment; + + + - std::vector swapChainImageViews; + struct GamePadState { glm::vec2 axisLeft = glm::vec2(0.0f); glm::vec2 axisRight = glm::vec2(0.0f); } gamePadState; - struct MouseButtons { - bool left = false; - bool right = false; - bool middle = false; - } mouseButtons; + VulkanExampleBase(); virtual ~VulkanExampleBase(); - void initVulkan(); - - virtual VkResult createInstance(bool enableValidation); - virtual void render() = 0; + //virtual void render() = 0; virtual void windowResized(); virtual void setupFrameBuffer(); void createSwapChainFramebuffer(); @@ -178,6 +102,4 @@ public: VkFormat findDepthFormat(); VkFormat findSupportedFormat(const std::vector& candidates, VkImageTiling tiling, VkFormatFeatureFlags features); - void renderLoop(); - void renderFrame(); }; diff --git a/data/environments/metro_noord_4k_hdr16f_cube.ktx b/data/environments/metro_noord_4k_hdr16f_cube.ktx index f62890ea9ba1a7db391478cc02b215eaa423eb05..5f8728b9e7c58248e31fd53346bb8336f9a702bd 100644 GIT binary patch delta 32800 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 N<3Bs_zCE-<{vXyjkv9MU delta 32801 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 TbHdT%Kf6=Ywz+eRHsSvP)2E!R diff --git a/data/output/video/device0/result.mp4 b/data/output/video/device0/result.mp4 index 69275801a9f200c285fb43deda184a630c5acb92..d52aebfe7da70c9bf4e559dee396812807ddf2d7 100644 GIT binary patch literal 283767 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%0AGGPbdha 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 z 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 literal 213523 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/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 k@}24b^jJcr#&V_fso6J%*5dE#u37k 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.size()); createInfo.ppEnabledExtensionNames = requiredExtensions.data(); @@ -77,6 +86,1185 @@ VkResult PlumageRender::createInstance() } } +bool PlumageRender::checkValidationLayerSupport() +{ + uint32_t layerCount; + vkEnumerateInstanceLayerProperties(&layerCount, nullptr); + + std::vector availableLayers(layerCount); + vkEnumerateInstanceLayerProperties(&layerCount, availableLayers.data()); + + // check if validationLayers can be found in availableLayers + for (const char* layerName : validationLayers) + { + bool layerFound = false; + for (const auto& layerProperties : availableLayers) { + if (strcmp(layerName, layerProperties.layerName) == 0) + { + layerFound = true; + break; + } + } + if (!layerFound) + { + return false; + } + } + return true; +} + +std::vector PlumageRender::getRequiredExtensions() +{ + std::vector extensions; + if (!settings.headless) + { + uint32_t glfwExtensionCount = 0; + const char** glfwExtensions; + glfwExtensions = glfwGetRequiredInstanceExtensions(&glfwExtensionCount); + + std::vector extensions(glfwExtensions, glfwExtensions + glfwExtensionCount); + } + + if (settings.validation) + { + extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); + + } + + return extensions; +} + +void PlumageRender::setupDebugMessager() +{ + if (!settings.validation) + { + return; + } + + VkDebugUtilsMessengerCreateInfoEXT createInfo{}; + populateDebugMessengerCreateInfo(createInfo); + + + if (CreateDebugUtilsMessengerEXT(instance, &createInfo, nullptr, &debugMessenger) != VK_SUCCESS) + { + throw std::runtime_error("failed to set up debug messenger in setupDebugMessenger"); + } +} + +void PlumageRender::populateDebugMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& debugCreateInfo) +{ + debugCreateInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; + + debugCreateInfo.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT; + debugCreateInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT; + debugCreateInfo.pfnUserCallback = &debugCallback; + debugCreateInfo.pUserData = nullptr; +} + +VKAPI_ATTR VkBool32 VKAPI_CALL PlumageRender::debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData) +{ + { + std::cerr << "validation layer: " << pCallbackData->pMessage << "/n" << std::endl; + + return VK_FALSE; + } +} + +VkResult PlumageRender::CreateDebugUtilsMessengerEXT(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pDebugMessenger) +{ + auto func = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT"); + + if (func != nullptr) + { + return func(instance, pCreateInfo, pAllocator, pDebugMessenger); + } + else + { + return VK_ERROR_EXTENSION_NOT_PRESENT; + } +} + +void PlumageRender::DestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT debugMessenger, const VkAllocationCallbacks* pAllocator) +{ + auto func = (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT"); + + if (func != nullptr) + { + func(instance, debugMessenger, pAllocator); + } +} + +void PlumageRender::createSurface() +{ + if (settings.headless) + { + return; + } + + if (glfwCreateWindowSurface(instance, window, nullptr, &surface) != VK_SUCCESS) + { + throw std::runtime_error("failed to create window surface in createSurface()"); + } +} + +void PlumageRender::pickupPhysicalDevice() +{ + uint32_t deviceCount = 0; + vkEnumeratePhysicalDevices(instance, &deviceCount, nullptr); + if (deviceCount == 0) + { + throw std::runtime_error("failed to find GPUs with Vulkan support"); + + } + std::vector devices(deviceCount); + vkEnumeratePhysicalDevices(instance, &deviceCount, devices.data()); + if (settings.selectedPhysicalDeviceIndex <= deviceCount - 1) + { + physicalDevice = devices[settings.selectedPhysicalDeviceIndex]; + } + + for (const auto& device : devices) + { + if (isDeviceSuitable(device)) + { + physicalDevice = device; + break; + } + + } + if (physicalDevice == VK_NULL_HANDLE) + { + throw std::runtime_error("failed to find a suitable GPU"); + } +} + +bool PlumageRender::isDeviceSuitable(VkPhysicalDevice device) +{ + if (settings.headless) + { + bool extensionsSupported = checkDeviceExtensionSupport(device); + return extensionsSupported; + } + else + { // 闈炴棤澶翠笅鍦ㄦ鏌ユ墿灞曟敮鎸佺殑鍚屾椂瑕佹鏌wapchain + bool extensionsSupported = checkDeviceExtensionSupport(device); + bool swapChainAdequate = false; + QueueFamilyIndices indices = findQueueFamilies(device); + if (extensionsSupported) + { + SwapChainSupportDetails swapChainSupport = querySwapChainSupport(device); + swapChainAdequate = !swapChainSupport.formats.empty() && !swapChainSupport.presentModes.empty(); + } + } +} + +bool PlumageRender::checkDeviceExtensionSupport(VkPhysicalDevice device) +{ + uint32_t extensionCount; + vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, nullptr); + + std::vector availableExtensions(extensionCount); + vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, availableExtensions.data()); + + std::set requiredExtensions(swapchainExtensions.begin(), swapchainExtensions.end()); + + for (const auto& extension : availableExtensions) + { + requiredExtensions.erase(extension.extensionName); + } + + return requiredExtensions.empty(); +} + +PlumageRender::QueueFamilyIndices PlumageRender::findQueueFamilies(VkPhysicalDevice device) +{ + QueueFamilyIndices indices; + + uint32_t queueFamilyCount = 0; + vkGetPhysicalDeviceQueueFamilyProperties(device, &queueFamilyCount, nullptr); + + std::vector queueFamilies(queueFamilyCount); + vkGetPhysicalDeviceQueueFamilyProperties(device, &queueFamilyCount, queueFamilies.data()); + + VkBool32 presentSupport = false; + + // 妫鏌ユ樉绀洪槦鍒楁敮鎸 + int i = 0; + if (!settings.headless) + { + vkGetPhysicalDeviceSurfaceSupportKHR(device, i, surface, &presentSupport); + } + + for (const auto& queueFamily : queueFamilies) + { + if (queueFamily.queueFlags & VK_QUEUE_GRAPHICS_BIT) { + indices.graphicsFamily = i; + } + // 鏃犲ご涓嬩笉闇瑕佹鏌resent queue + if (settings.headless) + { + if (indices.isGraphicsFamilyComplete()) + { + break; + } + } + else + { + if (indices.isGraphicsFamilyComplete() && indices.isPresentFamilyComplete()) + { + break; + } + } + if (presentSupport) + { + indices.presentFamily = i; + } + i++; + } + + return indices; +} + +PlumageRender::SwapChainSupportDetails PlumageRender::querySwapChainSupport(VkPhysicalDevice device) +{ + // 鑾峰緱surface缁嗚妭 + SwapChainSupportDetails details; + vkGetPhysicalDeviceSurfaceCapabilitiesKHR(device, surface, &details.capabilities); + + // 妫鏌ユ牸寮忔敮鎸侊紙image锛 + uint32_t formatCount; + vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &formatCount, nullptr); + if (formatCount != 0) + { + details.formats.resize(formatCount); + vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &formatCount, details.formats.data()); + } + + // 妫鏌ユ樉绀烘ā寮忔敮鎸 + uint32_t presentModeCount; + vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &presentModeCount, nullptr); + + if (presentModeCount != 0) + { + details.presentModes.resize(presentModeCount); + vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &presentModeCount, details.presentModes.data()); + } + + return details; +} + +void PlumageRender::createLogicalDevice() +{ + QueueFamilyIndices indices = findQueueFamilies(physicalDevice); + std::vector queueCreateInfos; + + if (settings.headless) + { + VkDeviceQueueCreateInfo queueCreateInfo{}; + queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO; + queueCreateInfo.queueFamilyIndex = indices.graphicsFamily.value(); + queueCreateInfo.queueCount = 1; + float queuePriority = 1.0f; + queueCreateInfo.pQueuePriorities = &queuePriority; + queueCreateInfos.push_back(queueCreateInfo); + } + else + { + + std::set uniqueQueueFamilies = { indices.graphicsFamily.value(),indices.presentFamily.value() }; + + float queuePriority = 1.0f; + for (uint32_t queueFamily : uniqueQueueFamilies) + { + VkDeviceQueueCreateInfo queueCreateInfo{}; + queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO; + queueCreateInfo.queueFamilyIndex = queueFamily; + queueCreateInfo.queueCount = 1; + queueCreateInfo.pQueuePriorities = &queuePriority; + queueCreateInfos.push_back(queueCreateInfo); + } + } + + VkPhysicalDeviceFeatures enableFeatures{}; + if (deviceFeatures.samplerAnisotropy) { + enableFeatures.samplerAnisotropy = VK_TRUE; + } + + std::vector enabledExtensions{}; + if (!settings.headless) + { + for (auto swapchainExtension : swapchainExtensions) + { + enabledExtensions.push_back(swapchainExtension); + } + } + + VkDeviceCreateInfo deviceCreateInfo{}; + deviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; + deviceCreateInfo.queueCreateInfoCount = static_cast(queueCreateInfos.size()); + deviceCreateInfo.pQueueCreateInfos = queueCreateInfos.data(); + deviceCreateInfo.pEnabledFeatures = &enableFeatures; + deviceCreateInfo.enabledExtensionCount = static_cast(enabledExtensions.size()); + deviceCreateInfo.ppEnabledExtensionNames = enabledExtensions.data(); + + //鏂扮増鏈瑅ulkan宸蹭笉瀵瑰疄渚嬪拰璁惧鐗瑰畾楠岃瘉灞傚仛鍖哄垎锛屾澶勪繚璇佸吋瀹规 + if (settings.validation) + { + deviceCreateInfo.enabledLayerCount = static_cast(validationLayers.size()); + deviceCreateInfo.ppEnabledLayerNames = validationLayers.data(); + } + else + { + deviceCreateInfo.enabledLayerCount = 0; + } + + if (vkCreateDevice(physicalDevice, &deviceCreateInfo, nullptr, &device) != VK_SUCCESS) + { + throw std::runtime_error("failed to create logical device"); + } + + vkGetDeviceQueue(device, indices.graphicsFamily.value(), 0, &graphicQueue); + if (settings.headless) + { + vkGetDeviceQueue(device, indices.presentFamily.value(), 0, &presentQueue); + } +} + +void PlumageRender::createSwapChain() +{ + if (settings.headless) + { + return; + } + + SwapChainSupportDetails swapChainSupport = querySwapChainSupport(physicalDevice); + + VkSurfaceFormatKHR surfaceFormat = chooseSwapSurfaceFormat(swapChainSupport.formats); + VkPresentModeKHR presentMode = chooseSwapPresentMode(swapChainSupport.presentModes); + VkExtent2D extent = chooseSwapExtent(swapChainSupport.capabilities); + + uint32_t imageCount = swapChainSupport.capabilities.minImageCount + 1; + + if (swapChainSupport.capabilities.maxImageCount > 0 && imageCount > swapChainSupport.capabilities.maxImageCount) + { + imageCount = swapChainSupport.capabilities.maxImageCount; + } + + VkSwapchainCreateInfoKHR createInfo{}; + createInfo.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; + createInfo.surface = surface; + + createInfo.minImageCount = imageCount; + createInfo.imageFormat = surfaceFormat.format; + createInfo.imageColorSpace = surfaceFormat.colorSpace; + createInfo.imageExtent = extent; + createInfo.imageArrayLayers = 1; + createInfo.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + + QueueFamilyIndices indices = findQueueFamilies(physicalDevice); + uint32_t queueFamilyIndices[] = { indices.graphicsFamily.value(),indices.presentFamily.value() }; + if (indices.graphicsFamily != indices.presentFamily) + { + createInfo.imageSharingMode = VK_SHARING_MODE_CONCURRENT; + createInfo.queueFamilyIndexCount = 2; + createInfo.pQueueFamilyIndices = queueFamilyIndices; + + } + else + { + createInfo.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE; + createInfo.queueFamilyIndexCount = 0; + createInfo.pQueueFamilyIndices = nullptr; + } + + createInfo.preTransform = swapChainSupport.capabilities.currentTransform; + createInfo.compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; + createInfo.presentMode = presentMode; + createInfo.clipped = VK_TRUE; + createInfo.oldSwapchain = VK_NULL_HANDLE; + + + if (vkCreateSwapchainKHR(device, &createInfo, nullptr, &swapChainKHR) != VK_SUCCESS) + { + throw std::runtime_error("failed to create swap chain !"); + } + + vkGetSwapchainImagesKHR(device, swapChainKHR, &imageCount, nullptr); + swapChainImages.resize(imageCount); + vkGetSwapchainImagesKHR(device, swapChainKHR, &imageCount, swapChainImages.data()); + // store swap format and swap extent to member variable + swapChainImageFormat = surfaceFormat.format; + swapChainExtent = extent; +} + +VkSurfaceFormatKHR PlumageRender::chooseSwapSurfaceFormat(const std::vector& availableFormats) +{ + for (const auto& availableFormat : availableFormats) { + if (availableFormat.format == VK_FORMAT_B8G8R8_SRGB && availableFormat.colorSpace == VK_COLORSPACE_SRGB_NONLINEAR_KHR) + { + return availableFormat; + } + } + + return availableFormats[0]; +} + +VkPresentModeKHR PlumageRender::chooseSwapPresentMode(const std::vector& availablePresentModes) +{ + // Get available present modes + uint32_t presentModeCount; + VK_CHECK_RESULT(fpGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, &presentModeCount, NULL)); + assert(presentModeCount > 0); + + std::vector presentModes(presentModeCount); + VK_CHECK_RESULT(fpGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, &presentModeCount, presentModes.data())); + // The VK_PRESENT_MODE_FIFO_KHR mode must always be present as per spec + // This mode waits for the vertical blank ("v-sync") + // 鍨傜洿鍚屾妯″紡 + VkPresentModeKHR swapchainPresentMode = VK_PRESENT_MODE_FIFO_KHR; + + // If v-sync is not requested, try to find a mailbox mode + // It's the lowest latency non-tearing present mode available + if (!settings.vsync) + { + for (size_t i = 0; i < presentModeCount; i++) + { + if (presentModes[i] == VK_PRESENT_MODE_MAILBOX_KHR) + { + swapchainPresentMode = VK_PRESENT_MODE_MAILBOX_KHR; + break; + } + if ((swapchainPresentMode != VK_PRESENT_MODE_MAILBOX_KHR) && (presentModes[i] == VK_PRESENT_MODE_IMMEDIATE_KHR)) + { + swapchainPresentMode = VK_PRESENT_MODE_IMMEDIATE_KHR; + } + } + } +} + +VkExtent2D PlumageRender::chooseSwapExtent(const VkSurfaceCapabilitiesKHR& capabilities) +{ + if (capabilities.currentExtent.width != std::numeric_limits::max()) + { + return capabilities.currentExtent; + } + else + { + int width, height; + glfwGetFramebufferSize(window, &width, &height); + + VkExtent2D actualExtent = { + static_cast(width), + static_cast(height) + }; + + actualExtent.width = std::clamp(actualExtent.width, capabilities.minImageExtent.width, capabilities.maxImageExtent.width); + actualExtent.height = std::clamp(actualExtent.height, capabilities.minImageExtent.height, capabilities.maxImageExtent.height); + + return actualExtent; + } +} + +void PlumageRender::cleanupSwapChain() +{ + for (auto framebuffer : framebuffers) + { + vkDestroyFramebuffer(device, framebuffer, nullptr); + } + + for (auto imageView : swapChainImageViews) + { + vkDestroyImageView(device, imageView, nullptr); + } + + vkDestroySwapchainKHR(device, swapChainKHR, nullptr); +} + +void PlumageRender::createCommandPool() +{ + QueueFamilyIndices queueFamilyIndices = findQueueFamilies(physicalDevice); + + VkCommandPoolCreateInfo poolInfo{}; + poolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; + poolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; + poolInfo.queueFamilyIndex = queueFamilyIndices.graphicsFamily.value(); + + if (vkCreateCommandPool(device, &poolInfo, nullptr, &commandPool) != VK_SUCCESS) + { + throw std::runtime_error("failed to create command pool in createCommandpool"); + } +} + +void PlumageRender::createRenderPass() +{ + VkFormat colorAttachmentFormat; + VkFormat depthAttachmentFormat = findDepthFormat(); + VkImageLayout colorAttachmentFinallayout; + if (settings.headless) + { + colorAttachmentFormat = VK_FORMAT_R8G8B8A8_UNORM; + colorAttachmentFinallayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; + } + else + { + colorAttachmentFormat = swapChainImageFormat; + colorAttachmentFinallayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; + } + + if (settings.multiSampling) { + std::array attachments = {}; + + // Multisampled attachment that we render to + attachments[0].format = colorAttachmentFormat; + attachments[0].samples = settings.sampleCount; + attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + attachments[0].storeOp = VK_ATTACHMENT_STORE_OP_STORE; + attachments[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + attachments[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + attachments[0].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + attachments[0].finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + + // This is the frame buffer attachment to where the multisampled image + // will be resolved to and which will be presented to the swapchain + attachments[1].format = colorAttachmentFormat; + attachments[1].samples = VK_SAMPLE_COUNT_1_BIT; + attachments[1].loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + attachments[1].storeOp = VK_ATTACHMENT_STORE_OP_STORE; + attachments[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + attachments[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + attachments[1].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + attachments[1].finalLayout = colorAttachmentFinallayout; + + // Multisampled depth attachment we render to + attachments[2].format = depthAttachmentFormat; + attachments[2].samples = settings.sampleCount; + attachments[2].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + attachments[2].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + attachments[2].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + attachments[2].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + attachments[2].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + attachments[2].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + + // Depth resolve attachment + attachments[3].format = depthAttachmentFormat; + attachments[3].samples = VK_SAMPLE_COUNT_1_BIT; + attachments[3].loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + attachments[3].storeOp = VK_ATTACHMENT_STORE_OP_STORE; + attachments[3].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + attachments[3].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + attachments[3].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + attachments[3].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + + VkAttachmentReference colorReference = {}; + colorReference.attachment = 0; + colorReference.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + + VkAttachmentReference depthReference = {}; + depthReference.attachment = 2; + depthReference.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + + // Resolve attachment reference for the color attachment + VkAttachmentReference resolveReference = {}; + resolveReference.attachment = 1; + resolveReference.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + + VkSubpassDescription subpass = {}; + subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; + subpass.colorAttachmentCount = 1; + subpass.pColorAttachments = &colorReference; + // Pass our resolve attachments to the sub pass + subpass.pResolveAttachments = &resolveReference; + subpass.pDepthStencilAttachment = &depthReference; + + std::array dependencies; + + dependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL; + dependencies[0].dstSubpass = 0; + dependencies[0].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; + dependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; + dependencies[0].srcAccessMask = VK_ACCESS_MEMORY_READ_BIT; + dependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + dependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; + + dependencies[1].srcSubpass = 0; + dependencies[1].dstSubpass = VK_SUBPASS_EXTERNAL; + dependencies[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; + dependencies[1].dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; + dependencies[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + dependencies[1].dstAccessMask = VK_ACCESS_MEMORY_READ_BIT; + dependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; + + VkRenderPassCreateInfo renderPassCI = {}; + renderPassCI.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; + renderPassCI.attachmentCount = static_cast(attachments.size()); + renderPassCI.pAttachments = attachments.data(); + renderPassCI.subpassCount = 1; + renderPassCI.pSubpasses = &subpass; + renderPassCI.dependencyCount = 2; + renderPassCI.pDependencies = dependencies.data(); + VK_CHECK_RESULT(vkCreateRenderPass(device, &renderPassCI, nullptr, &renderPass)); + } + else { + std::array attachments = {}; + // Color attachment + attachments[0].format = colorAttachmentFormat; + attachments[0].samples = VK_SAMPLE_COUNT_1_BIT; + attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + attachments[0].storeOp = VK_ATTACHMENT_STORE_OP_STORE; + attachments[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + attachments[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + attachments[0].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + attachments[0].finalLayout = colorAttachmentFinallayout; + // Depth attachment + attachments[1].format = depthAttachmentFormat; + attachments[1].samples = VK_SAMPLE_COUNT_1_BIT; + attachments[1].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + attachments[1].storeOp = VK_ATTACHMENT_STORE_OP_STORE; + attachments[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + attachments[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + attachments[1].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + attachments[1].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + + VkAttachmentReference colorReference = {}; + colorReference.attachment = 0; + colorReference.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + + VkAttachmentReference depthReference = {}; + depthReference.attachment = 1; + depthReference.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + + VkSubpassDescription subpassDescription = {}; + subpassDescription.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; + subpassDescription.colorAttachmentCount = 1; + subpassDescription.pColorAttachments = &colorReference; + subpassDescription.pDepthStencilAttachment = &depthReference; + subpassDescription.inputAttachmentCount = 0; + subpassDescription.pInputAttachments = nullptr; + subpassDescription.preserveAttachmentCount = 0; + subpassDescription.pPreserveAttachments = nullptr; + subpassDescription.pResolveAttachments = nullptr; + + // Subpass dependencies for layout transitions + std::array dependencies; + + dependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL; + dependencies[0].dstSubpass = 0; + dependencies[0].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; + dependencies[0].dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; + dependencies[0].srcAccessMask = VK_ACCESS_MEMORY_READ_BIT; + dependencies[0].dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + dependencies[0].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; + + dependencies[1].srcSubpass = 0; + dependencies[1].dstSubpass = VK_SUBPASS_EXTERNAL; + dependencies[1].srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; + dependencies[1].dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; + dependencies[1].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + dependencies[1].dstAccessMask = VK_ACCESS_MEMORY_READ_BIT; + dependencies[1].dependencyFlags = VK_DEPENDENCY_BY_REGION_BIT; + + VkRenderPassCreateInfo renderPassCI{}; + renderPassCI.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; + renderPassCI.attachmentCount = static_cast(attachments.size()); + renderPassCI.pAttachments = attachments.data(); + renderPassCI.subpassCount = 1; + renderPassCI.pSubpasses = &subpassDescription; + renderPassCI.dependencyCount = static_cast(dependencies.size()); + renderPassCI.pDependencies = dependencies.data(); + VK_CHECK_RESULT(vkCreateRenderPass(device, &renderPassCI, nullptr, &renderPass)); + } +} + +VkFormat PlumageRender::findDepthFormat() +{ + return findSupportedFormat( + { VK_FORMAT_D32_SFLOAT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT }, + VK_IMAGE_TILING_OPTIMAL, + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT + ); +} + +VkFormat PlumageRender::findSupportedFormat(const std::vector& candidates, VkImageTiling tiling, VkFormatFeatureFlags features) +{ + for (VkFormat format : candidates) + { + VkFormatProperties props; + vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &props); + + if (tiling == VK_IMAGE_TILING_LINEAR && (props.linearTilingFeatures & features) == features) + { + return format; + } + else if (tiling == VK_IMAGE_TILING_OPTIMAL && (props.optimalTilingFeatures & features) == features) + { + return format; + } + } + throw std::runtime_error("failed to find supported format"); +} + +bool PlumageRender::hasStencilComponent(VkFormat format) +{ + return format == VK_FORMAT_D32_SFLOAT_S8_UINT || format == VK_FORMAT_D24_UNORM_S8_UINT; +} + +void PlumageRender::createPipelineCache() +{ + VkPipelineCacheCreateInfo pipelineCacheCreateInfo{}; + pipelineCacheCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO; + VK_CHECK_RESULT(vkCreatePipelineCache(device, &pipelineCacheCreateInfo, nullptr, &pipelineCache)); +} + +void PlumageRender::createFramebuffer() +{ + if (settings.headless) + { + auto frameRange = settings.endFrameIndex - settings.startFrameCount; + if (settings.multiSampling) + { + + for (int i = 0; i < frameRange; i++) + { + VkImageView attachments[4]; + attachments[0] = multisampleTarget.colorAttachment.view; + attachments[1] = multisampleTarget.depthAttachment.view; + attachments[2] = depthAttachment.view; + attachments[3] = colorAttachment.view; + + VkFramebufferCreateInfo framebufferCreateInfo = vks::initializers::framebufferCreateInfo(); + framebufferCreateInfo.renderPass = renderPass; + framebufferCreateInfo.attachmentCount = 4; + framebufferCreateInfo.pAttachments = attachments; + framebufferCreateInfo.width = settings.width; + framebufferCreateInfo.height = settings.height; + framebufferCreateInfo.layers = 1; + + VK_CHECK_RESULT(vkCreateFramebuffer(device, &framebufferCreateInfo, nullptr, &framebuffers[i])); + } + + } + else + { + for (int i = 0; i < frameRange; i++) + { + VkImageView attachments[2]; + attachments[0] = colorAttachment.view; + attachments[1] = depthAttachment.view; + + VkFramebufferCreateInfo framebufferCreateInfo = vks::initializers::framebufferCreateInfo(); + framebufferCreateInfo.renderPass = renderPass; + framebufferCreateInfo.attachmentCount = 2; + framebufferCreateInfo.pAttachments = attachments; + framebufferCreateInfo.width = settings.width; + framebufferCreateInfo.height = settings.height; + framebufferCreateInfo.layers = 1; + VK_CHECK_RESULT(vkCreateFramebuffer(device, &framebufferCreateInfo, nullptr, &framebuffers[i])); + + } + } + + createImageView(); + } + else + { + createSwapChainFramebuffer(); + createImageView(); + } +} + +void PlumageRender::createSwapChainFramebuffer() +{ + uint32_t attachmentCount; + VkImageView attachments[attachmentCount]; + + if (settings.multiSampling) { + attachmentCount = 4; + attachments[0] = multisampleTarget.colorAttachment.view; + attachments[1] = multisampleTarget.depthAttachment.view; + attachments[2] = depthAttachment.view; + + } + else { + attachmentCount = 2; + attachments[1] = depthAttachment.view; + } + + VkFramebufferCreateInfo frameBufferCI{}; + frameBufferCI.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO; + frameBufferCI.pNext = NULL; + frameBufferCI.renderPass = renderPass; + frameBufferCI.attachmentCount = attachmentCount; + frameBufferCI.pAttachments = attachments; + frameBufferCI.width = settings.width; + frameBufferCI.height = settings.height; + frameBufferCI.layers = 1; + + + + // Create frame buffers for every swap chain image + framebuffers.resize(swapChainImageViews.size()); + for (uint32_t i = 0; i < swapChainImageViews.size(); i++) { + if (settings.multiSampling) { + attachments[3] = swapChainImageViews[i]; + } + else { + attachments[0] = swapChainImageViews[i]; + } + VK_CHECK_RESULT(vkCreateFramebuffer(device, &frameBufferCI, nullptr, &framebuffers[i])); + } +} + +void PlumageRender::createImageView() +{ + VkFormat colorAttachmentFormat = VK_FORMAT_R8G8B8A8_UNORM; + VkFormat depthFormat = findDepthFormat(); + if (settings.headless) + { + if (settings.multiSampling) + { + + VkImageCreateInfo imageCI{}; + imageCI.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; + imageCI.imageType = VK_IMAGE_TYPE_2D; + imageCI.format = colorAttachmentFormat; + imageCI.extent.width = settings.width; + imageCI.extent.height = settings.height; + imageCI.extent.depth = 1; + imageCI.mipLevels = 1; + imageCI.arrayLayers = 1; + imageCI.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + imageCI.tiling = VK_IMAGE_TILING_OPTIMAL; + imageCI.samples = settings.sampleCount; + imageCI.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + imageCI.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + + VK_CHECK_RESULT(vkCreateImage(device, &imageCI, nullptr, &multisampleTarget.colorAttachment.image)); + + VkMemoryRequirements memReqs; + vkGetImageMemoryRequirements(device, multisampleTarget.colorAttachment.image, &memReqs); + VkMemoryAllocateInfo memAllocInfo{}; + memAllocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; + memAllocInfo.allocationSize = memReqs.size; + VkBool32 lazyMemTypePresent; + memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, &lazyMemTypePresent); + if (!lazyMemTypePresent) { + memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); + } + VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &multisampleTarget.colorAttachment.memory)); + vkBindImageMemory(device, multisampleTarget.colorAttachment.image, multisampleTarget.colorAttachment.memory, 0); + + // Create image view for the MSAA color image target + VkImageViewCreateInfo imageViewCI{}; + imageViewCI.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; + imageViewCI.image = multisampleTarget.colorAttachment.image; + imageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D; + imageViewCI.format = colorAttachmentFormat; + imageViewCI.components.r = VK_COMPONENT_SWIZZLE_R; + imageViewCI.components.g = VK_COMPONENT_SWIZZLE_G; + imageViewCI.components.b = VK_COMPONENT_SWIZZLE_B; + imageViewCI.components.a = VK_COMPONENT_SWIZZLE_A; + imageViewCI.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + imageViewCI.subresourceRange.levelCount = 1; + imageViewCI.subresourceRange.layerCount = 1; + VK_CHECK_RESULT(vkCreateImageView(device, &imageViewCI, nullptr, &multisampleTarget.colorAttachment.view)); + + // Depth target + imageCI.imageType = VK_IMAGE_TYPE_2D; + imageCI.format = depthFormat; + imageCI.extent.width = settings.width; + imageCI.extent.height = settings.height; + imageCI.extent.depth = 1; + imageCI.mipLevels = 1; + imageCI.arrayLayers = 1; + imageCI.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + imageCI.tiling = VK_IMAGE_TILING_OPTIMAL; + imageCI.samples = settings.sampleCount; + imageCI.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + imageCI.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + VK_CHECK_RESULT(vkCreateImage(device, &imageCI, nullptr, &multisampleTarget.depthAttachment.image)); + + vkGetImageMemoryRequirements(device, multisampleTarget.depthAttachment.image, &memReqs); + memAllocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; + memAllocInfo.allocationSize = memReqs.size; + memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, &lazyMemTypePresent); + if (!lazyMemTypePresent) { + memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); + } + VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &multisampleTarget.depthAttachment.memory)); + vkBindImageMemory(device, multisampleTarget.depthAttachment.image, multisampleTarget.depthAttachment.memory, 0); + + // Create image view for the MSAA target + imageViewCI.image = multisampleTarget.depthAttachment.image; + imageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D; + imageViewCI.format = depthFormat; + imageViewCI.components.r = VK_COMPONENT_SWIZZLE_R; + imageViewCI.components.g = VK_COMPONENT_SWIZZLE_G; + imageViewCI.components.b = VK_COMPONENT_SWIZZLE_B; + imageViewCI.components.a = VK_COMPONENT_SWIZZLE_A; + imageViewCI.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; + imageViewCI.subresourceRange.levelCount = 1; + imageViewCI.subresourceRange.layerCount = 1; + VK_CHECK_RESULT(vkCreateImageView(device, &imageViewCI, nullptr, &multisampleTarget.depthAttachment.view)); + } + // creat color image + VkImageCreateInfo imageCI{}; + imageCI.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; + imageCI.imageType = VK_IMAGE_TYPE_2D; + imageCI.format = colorAttachmentFormat; + imageCI.extent.width = settings.width; + imageCI.extent.height = settings.height; + imageCI.extent.depth = 1; + imageCI.mipLevels = 1; + imageCI.arrayLayers = 1; + imageCI.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + imageCI.tiling = VK_IMAGE_TILING_OPTIMAL; + imageCI.samples = VK_SAMPLE_COUNT_1_BIT; + imageCI.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + imageCI.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + + VK_CHECK_RESULT(vkCreateImage(device, &imageCI, nullptr, &colorAttachment.image)); + + VkMemoryRequirements memReqs; + vkGetImageMemoryRequirements(device, colorAttachment.image, &memReqs); + + VkMemoryAllocateInfo memAllocInfo{}; + memAllocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; + memAllocInfo.allocationSize = memReqs.size; + VkBool32 lazyMemTypePresent; + memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, &lazyMemTypePresent); + if (!lazyMemTypePresent) { + memAllocInfo.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); + } + VK_CHECK_RESULT(vkAllocateMemory(device, &memAllocInfo, nullptr, &colorAttachment.memory)); + + vkBindImageMemory(device, multisampleTarget.colorAttachment.image, colorAttachment.memory, 0); + + // Create image view for the color image + VkImageViewCreateInfo imageViewCI{}; + imageViewCI.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; + imageViewCI.image = colorAttachment.image; + imageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D; + imageViewCI.format = colorAttachmentFormat; + imageViewCI.components.r = VK_COMPONENT_SWIZZLE_R; + imageViewCI.components.g = VK_COMPONENT_SWIZZLE_G; + imageViewCI.components.b = VK_COMPONENT_SWIZZLE_B; + imageViewCI.components.a = VK_COMPONENT_SWIZZLE_A; + imageViewCI.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + imageViewCI.subresourceRange.levelCount = 1; + imageViewCI.subresourceRange.layerCount = 1; + VK_CHECK_RESULT(vkCreateImageView(device, &imageViewCI, nullptr, &colorAttachment.view)); + + // create image for the depth image + VkImageCreateInfo image = {}; + image.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; + image.pNext = NULL; + image.imageType = VK_IMAGE_TYPE_2D; + image.format = depthFormat; + image.extent.width = settings.width; + image.extent.height = settings.height; + image.extent.depth = 1; + image.mipLevels = 1; + image.arrayLayers = 1; + image.samples = VK_SAMPLE_COUNT_1_BIT; + image.tiling = VK_IMAGE_TILING_OPTIMAL; + image.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + image.flags = 0; + + VK_CHECK_RESULT(vkCreateImage(device, &image, nullptr, &depthAttachment.image)); + + VkMemoryAllocateInfo memAlloc = {}; + memAlloc.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; + memAlloc.pNext = NULL; + memAlloc.allocationSize = 0; + memAlloc.memoryTypeIndex = 0; + VkMemoryRequirements depthAttachmentMemReqs; + vkGetImageMemoryRequirements(device, depthAttachment.image, &memReqs); + memAlloc.allocationSize = depthAttachmentMemReqs.size; + memAlloc.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); + VK_CHECK_RESULT(vkAllocateMemory(device, &memAlloc, nullptr, &depthAttachment.memory)); + VK_CHECK_RESULT(vkBindImageMemory(device, depthAttachment.image, depthAttachment.memory, 0)); + + + // create image view for depth image + VkImageViewCreateInfo depthStencilView = {}; + depthStencilView.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; + depthStencilView.pNext = NULL; + depthStencilView.viewType = VK_IMAGE_VIEW_TYPE_2D; + depthStencilView.format = depthFormat; + depthStencilView.image = depthAttachment.image; + depthStencilView.flags = 0; + depthStencilView.subresourceRange = {}; + depthStencilView.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; + if (depthFormat >= VK_FORMAT_D16_UNORM_S8_UINT) + { + depthStencilView.subresourceRange.aspectMask |= VK_IMAGE_ASPECT_STENCIL_BIT; + } + depthStencilView.subresourceRange.baseMipLevel = 0; + depthStencilView.subresourceRange.levelCount = 1; + depthStencilView.subresourceRange.baseArrayLayer = 0; + depthStencilView.subresourceRange.layerCount = 1; + VK_CHECK_RESULT(vkCreateImageView(device, &depthStencilView, nullptr, &depthAttachment.view)); + + } + else + { + swapChainImageViews.resize(swapChainImages.size()); + + for (size_t i = 0; i < swapChainImages.size(); i++) + { + VkImageViewCreateInfo creatInfo{}; + creatInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; + creatInfo.image = swapChainImages[i]; + creatInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; + creatInfo.format = swapChainImageFormat; + + creatInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; + creatInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; + creatInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; + creatInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY; + + creatInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + creatInfo.subresourceRange.baseMipLevel = 0; + creatInfo.subresourceRange.levelCount = 1; + creatInfo.subresourceRange.baseArrayLayer = 0; + creatInfo.subresourceRange.layerCount = 1; + + if (vkCreateImageView(device, &creatInfo, nullptr, &swapChainImageViews[i]) != VK_SUCCESS) + { + throw std::runtime_error("failed to creat image view"); + } + } + } +} + +void PlumageRender::renderLoop() +{ + if (settings.headless) + { + uint32_t frameRange = settings.endFrameIndex - settings.startFrameCount; + for (size_t i = 0; i < frameRange; i++) + { + drawFrame(); + } + } + else + { + while (!glfwWindowShouldClose(window)) + { + glfwPollEvents(); + drawFrame(); + } + } + vkDeviceWaitIdle(device); +} + +void PlumageRender::drawFrame() +{ + auto tStart = std::chrono::high_resolution_clock::now(); + + render(); + + frameCounter++; + auto tEnd = std::chrono::high_resolution_clock::now(); + auto tDiff = std::chrono::duration(tEnd - tStart).count(); + frameTimer = (float)tDiff / 1000.0f; + camera.update(frameTimer); + fpsTimer += (float)tDiff; + if (fpsTimer > 1000.0f) { + lastFPS = static_cast((float)frameCounter * (1000.0f / fpsTimer)); + fpsTimer = 0.0f; + frameCounter = 0; + } +} + + + +bool PlumageRender::swapChainAcquireNextImage(bool framebuffeerResized, uint32_t imageIndex, uint32_t frameIndex) +{ + VkResult result = vkAcquireNextImageKHR(device, swapChainKHR, UINT64_MAX, renderCompleteSemaphores[frameIndex], VK_NULL_HANDLE, &imageIndex); + + if (result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR || framebuffeerResized) + { + framebuffeerResized = false; + recreateSwapChain(); + return framebuffeerResized; + } + else if (result != VK_SUCCESS && result != VK_SUBOPTIMAL_KHR) + { + throw std::runtime_error("failed to acquire swap chain image in drawFrame"); + } +} + +void PlumageRender::recreateSwapChain() +{ + int width = 0, height = 0; + glfwGetFramebufferSize(window, &width, &height); + while (width == 0 || height == 0) + { + if (glfwWindowShouldClose(window)) + { + return; + } + glfwGetFramebufferSize(window, &width, &height); + glfwWaitEvents(); + } + + vkDeviceWaitIdle(device); + + cleanupSwapChain(); + + createSwapChain(); + createImageView(); + createFramebuffer(); +} + +void PlumageRender::submitToGraphicQueue(uint32_t frameIndex, uint32_t currentBuffer) +{ + const VkPipelineStageFlags waitDstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; + VkSubmitInfo submitInfo{}; + submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; + submitInfo.pWaitDstStageMask = &waitDstStageMask; + submitInfo.pWaitSemaphores = &presentCompleteSemaphores[frameIndex]; + submitInfo.waitSemaphoreCount = 1; + submitInfo.pSignalSemaphores = &renderCompleteSemaphores[frameIndex]; + submitInfo.signalSemaphoreCount = 1; + submitInfo.pCommandBuffers = &commandBuffers[currentBuffer]; + submitInfo.commandBufferCount = 1; + VK_CHECK_RESULT(vkQueueSubmit(graphicQueue, 1, &submitInfo, waitFences[frameIndex])); +} + +void PlumageRender::imageToQueuePresent(uint32_t frameIndex, uint32_t imageIndex, bool framebufferResized) +{ + //鏄剧ず闃熷垪 + VkSemaphore signalSemaphores[] = { renderCompleteSemaphores[frameIndex] }; + + VkPresentInfoKHR presentInfo{}; + presentInfo.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR; + + presentInfo.waitSemaphoreCount = 1; + presentInfo.pWaitSemaphores = signalSemaphores; + + VkSwapchainKHR swapChains[] = { swapChainKHR }; + presentInfo.swapchainCount = 1; + presentInfo.pSwapchains = swapChains; + presentInfo.pImageIndices = &imageIndex; + presentInfo.pResults = nullptr; + + VkResult result = vkQueuePresentKHR(presentQueue, &presentInfo); + if (result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR) + { + framebufferResized = false; + recreateSwapChain(); + } + else if (result != VK_SUCCESS) + { + throw std::runtime_error("failed to present swap chain image in drawFrame"); + } +} void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFModel::Material::AlphaMode alphaMode) { if (node->mesh) { @@ -156,7 +1344,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } } - void PlumageRender::buildCommandBuffers() +void PlumageRender::buildCommandBuffers() { VkCommandBufferBeginInfo cmdBufferBeginInfo{}; cmdBufferBeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; @@ -177,15 +1365,15 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode renderPassBeginInfo.renderPass = renderPass; renderPassBeginInfo.renderArea.offset.x = 0; renderPassBeginInfo.renderArea.offset.y = 0; - renderPassBeginInfo.renderArea.extent.width = width; - renderPassBeginInfo.renderArea.extent.height = height; + renderPassBeginInfo.renderArea.extent.width = settings.width; + renderPassBeginInfo.renderArea.extent.height = settings.height; renderPassBeginInfo.clearValueCount = settings.multiSampling ? 3 : 2; renderPassBeginInfo.pClearValues = clearValues; for (uint32_t i = 0; i < commandBuffers.size(); ++i) { - renderPassBeginInfo.framebuffer = frameBuffers[i]; + renderPassBeginInfo.framebuffer = framebuffers[i]; VkCommandBuffer currentCB = commandBuffers[i]; @@ -193,14 +1381,14 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode vkCmdBeginRenderPass(currentCB, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); VkViewport viewport{}; - viewport.width = (float)width; - viewport.height = (float)height; + viewport.width = (float)settings.width; + viewport.height = (float)settings.height; viewport.minDepth = 0.0f; viewport.maxDepth = 1.0f; vkCmdSetViewport(currentCB, 0, 1, &viewport); VkRect2D scissor{}; - scissor.extent = { width, height }; + scissor.extent = { settings.width, settings.height }; vkCmdSetScissor(currentCB, 0, 1, &scissor); VkDeviceSize offsets[1] = { 0 }; @@ -244,7 +1432,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } - void PlumageRender::loadScene(std::string filename) +void PlumageRender::loadScene(std::string filename) { std::cout << "Loading scene from " << filename << std::endl; models.scene.destroy(device); @@ -252,14 +1440,14 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode animationIndex = 0; animationTimer = 0.0f; auto tStart = std::chrono::high_resolution_clock::now(); - models.scene.loadFromFile(filename, vulkanDevice, queue); + models.scene.loadFromFile(filename, vulkanDevice, graphicQueue); auto tFileLoad = std::chrono::duration(std::chrono::high_resolution_clock::now() - tStart).count(); std::cout << "Loading took " << tFileLoad << " ms" << std::endl; camera.setPosition({ 0.0f, 0.0f, -6.0f }); camera.setRotation({ 0.0f, 0.0f, 0.0f }); } - void PlumageRender::loadEnvironment(std::string filename) +void PlumageRender::loadEnvironment(std::string filename) { std::cout << "Loading environment from " << filename << std::endl; if (textures.environmentCube.image) { @@ -267,11 +1455,11 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode textures.irradianceCube.destroy(); textures.prefilteredCube.destroy(); } - textures.environmentCube.loadFromFile(filename, VK_FORMAT_R16G16B16A16_SFLOAT, vulkanDevice, queue); + textures.environmentCube.loadFromFile(filename, VK_FORMAT_R16G16B16A16_SFLOAT, vulkanDevice, graphicQueue); generateCubemaps(); } - void PlumageRender::loadAssets() +void PlumageRender::loadAssets() { const std::string assetpath = getAssetPath(); @@ -288,7 +1476,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode readDirectory(assetpath + "environments", "*.ktx", environments, false); - textures.empty.loadFromFile(PlumageRender::filePath.emptyEnvmapFilePath, VK_FORMAT_R8G8B8A8_UNORM, vulkanDevice, queue); + textures.empty.loadFromFile(PlumageRender::filePath.emptyEnvmapFilePath, VK_FORMAT_R8G8B8A8_UNORM, vulkanDevice, graphicQueue); std::string sceneFile = filePath.glTFModelFilePath; std::string envMapFile = filePath.envMapFilePath; @@ -314,12 +1502,12 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } loadScene(sceneFile.c_str()); - models.skybox.loadFromFile(PlumageRender::filePath.skyboxModleFilePath, vulkanDevice, queue); + models.skybox.loadFromFile(PlumageRender::filePath.skyboxModleFilePath, vulkanDevice, graphicQueue); loadEnvironment(envMapFile.c_str()); } - void PlumageRender::setupNodeDescriptorSet(glTFModel::Node* node) +void PlumageRender::setupNodeDescriptorSet(glTFModel::Node* node) { /* This sample uses separate descriptor sets (and layouts) for the matrices and materials (textures) @@ -347,7 +1535,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } } - void PlumageRender::setupDescriptors() +void PlumageRender::setupDescriptors() { /* Descriptor Pool @@ -372,15 +1560,16 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } } + auto swapChainImageCount = static_cast(swapChainImages.size()); std::vector poolSizes = { - { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, (4 + meshCount) * swapChain.imageCount }, - { VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, imageSamplerCount * swapChain.imageCount } + { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, (4 + meshCount) * swapChainImageCount}, + { VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, imageSamplerCount * swapChainImageCount } }; VkDescriptorPoolCreateInfo descriptorPoolCI{}; descriptorPoolCI.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; descriptorPoolCI.poolSizeCount = 2; descriptorPoolCI.pPoolSizes = poolSizes.data(); - descriptorPoolCI.maxSets = (2 + materialCount + meshCount) * swapChain.imageCount; + descriptorPoolCI.maxSets = (2 + materialCount + meshCount) * swapChainImages.size(); VK_CHECK_RESULT(vkCreateDescriptorPool(device, &descriptorPoolCI, nullptr, &descriptorPool)); /* @@ -570,7 +1759,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } } - void PlumageRender::preparePipelines() +void PlumageRender::preparePipelines() { VkPipelineInputAssemblyStateCreateInfo inputAssemblyStateCI{}; inputAssemblyStateCI.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; @@ -718,10 +1907,10 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } - // generate two cube maps +// generate two cube maps // irradiance cube map // prefileter environment cube map - void PlumageRender::generateCubemaps() +void PlumageRender::generateCubemaps() { enum Target { IRRADIANCE = 0, PREFILTEREDENV = 1 }; @@ -912,7 +2101,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode imageMemoryBarrier.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; imageMemoryBarrier.subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }; vkCmdPipelineBarrier(layoutCmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier); - vulkanDevice->flushCommandBuffer(layoutCmd, queue, true); + vulkanDevice->flushCommandBuffer(layoutCmd, graphicQueue, true); } // Descriptors @@ -1113,7 +2302,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode imageMemoryBarrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; imageMemoryBarrier.subresourceRange = subresourceRange; vkCmdPipelineBarrier(cmdBuf, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier); - vulkanDevice->flushCommandBuffer(cmdBuf, queue, false); + vulkanDevice->flushCommandBuffer(cmdBuf, graphicQueue, false); } for (uint32_t m = 0; m < numMips; m++) { @@ -1209,7 +2398,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode vkCmdPipelineBarrier(cmdBuf, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier); } - vulkanDevice->flushCommandBuffer(cmdBuf, queue, false); + vulkanDevice->flushCommandBuffer(cmdBuf, graphicQueue, false); } } @@ -1224,7 +2413,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode imageMemoryBarrier.dstAccessMask = VK_ACCESS_HOST_WRITE_BIT | VK_ACCESS_TRANSFER_WRITE_BIT; imageMemoryBarrier.subresourceRange = subresourceRange; vkCmdPipelineBarrier(cmdBuf, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, nullptr, 0, nullptr, 1, &imageMemoryBarrier); - vulkanDevice->flushCommandBuffer(cmdBuf, queue, false); + vulkanDevice->flushCommandBuffer(cmdBuf, graphicQueue, false); } @@ -1258,8 +2447,8 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode std::cout << "Generating cube map with " << numMips << " mip levels took " << tDiff << " ms" << std::endl; } } - // generate BRDF integration map for roughness/NdotV - void PlumageRender::generateBRDFLUT() +// generate BRDF integration map for roughness/NdotV +void PlumageRender::generateBRDFLUT() { auto tStart = std::chrono::high_resolution_clock::now(); @@ -1496,9 +2685,9 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode vkCmdBindPipeline(cmdBuf, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline); vkCmdDraw(cmdBuf, 3, 1, 0, 0); vkCmdEndRenderPass(cmdBuf); - vulkanDevice->flushCommandBuffer(cmdBuf, queue); + vulkanDevice->flushCommandBuffer(cmdBuf, graphicQueue); - vkQueueWaitIdle(queue); + vkQueueWaitIdle(graphicQueue); vkDestroyPipeline(device, pipeline, nullptr); vkDestroyPipelineLayout(device, pipelinelayout, nullptr); @@ -1516,8 +2705,8 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode std::cout << "Generating BRDF LUT took " << tDiff << " ms" << std::endl; } - // Prepare and initialize uniform buffer containing shader uniforms - void PlumageRender::prepareUniformBuffers() +// Prepare and initialize uniform buffer containing shader uniforms +void PlumageRender::prepareUniformBuffers() { for (auto& uniformBuffer : uniformBuffers) { uniformBuffer.scene.create(vulkanDevice, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, sizeof(shaderDataScene)); @@ -1527,7 +2716,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode updateUniformBuffers(); } - void PlumageRender::updateUniformBuffers() +void PlumageRender::updateUniformBuffers() { // Scene shaderDataScene.projection = camera.matrices.perspective; @@ -1568,7 +2757,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode shaderDataSkybox.model = glm::mat4(glm::mat3(camera.matrices.view)); } - void PlumageRender::updateShaderData() +void PlumageRender::updateShaderData() { shaderData.lightDir = glm::vec4( sin(glm::radians(lightSource.rotation.x)) * cos(glm::radians(lightSource.rotation.y)), @@ -1578,7 +2767,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } - void PlumageRender::initWindow(int Width, int Height) +void PlumageRender::initWindow(int Width, int Height) { glfwInit(); glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); @@ -1588,13 +2777,13 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode glfwSetFramebufferSizeCallback(window, framebufferResizeCallback); } - void PlumageRender::framebufferResizeCallback(GLFWwindow* window, int width, int height) +void PlumageRender::framebufferResizeCallback(GLFWwindow* window, int width, int height) { auto app = reinterpret_cast(glfwGetWindowUserPointer(window)); app->framebufferResized = true; } - void PlumageRender::windowResized() +void PlumageRender::windowResized() { buildCommandBuffers(); vkDeviceWaitIdle(device); @@ -1603,13 +2792,17 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode updateUIOverlay(); } - void PlumageRender::prepare() +void PlumageRender::prepare() { - VulkanExampleBase::prepare(); + createSwapChain(); + + createCommandPool(); + + createRenderPass(); camera.type = Camera::CameraType::lookat; - camera.setPerspective(45.0f, (float)width / (float)height, 0.1f, 256.0f); + camera.setPerspective(45.0f, (float)settings.width / (float)settings.height, 0.1f, 256.0f); camera.rotationSpeed = 0.25f; camera.movementSpeed = 0.1f; @@ -1617,9 +2810,9 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode waitFences.resize(renderAhead); presentCompleteSemaphores.resize(renderAhead); renderCompleteSemaphores.resize(renderAhead); - commandBuffers.resize(swapChain.imageCount); - uniformBuffers.resize(swapChain.imageCount); - descriptorSets.resize(swapChain.imageCount); + commandBuffers.resize(swapChainImages.size()); + uniformBuffers.resize(swapChainImages.size()); + descriptorSets.resize(swapChainImages.size()); // Command buffer execution fences for (auto& waitFence : waitFences) { VkFenceCreateInfo fenceCI{ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, nullptr, VK_FENCE_CREATE_SIGNALED_BIT }; @@ -1638,7 +2831,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode { VkCommandBufferAllocateInfo cmdBufAllocateInfo{}; cmdBufAllocateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; - cmdBufAllocateInfo.commandPool = cmdPool; + cmdBufAllocateInfo.commandPool = commandPool; cmdBufAllocateInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; cmdBufAllocateInfo.commandBufferCount = static_cast(commandBuffers.size()); VK_CHECK_RESULT(vkAllocateCommandBuffers(device, &cmdBufAllocateInfo, commandBuffers.data())); @@ -1651,7 +2844,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode setupDescriptors(); preparePipelines(); - gui = new UI(vulkanDevice, renderPass, queue, pipelineCache, settings.sampleCount); + gui = new UI(vulkanDevice, renderPass, graphicQueue, pipelineCache, settings.sampleCount); updateUIOverlay(); buildCommandBuffers(); @@ -1659,7 +2852,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode prepared = true; } - void PlumageRender::submitWork(VkCommandBuffer cmdBuffer, VkQueue queue) +void PlumageRender::submitWork(VkCommandBuffer cmdBuffer, VkQueue queue) { VkSubmitInfo submitInfo = vks::initializers::submitInfo(); submitInfo.commandBufferCount = 1; @@ -1672,8 +2865,8 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode vkDestroyFence(device, fence, nullptr); } - // todo :鏍规嵁physicalDeviceIndex纭畾瀛愭枃浠跺す璺緞锛宖rameIndex纭畾fileName - void PlumageRender::writeImageToFile(std::string filePath) +// todo :鏍规嵁physicalDeviceIndex纭畾瀛愭枃浠跺す璺緞锛宖rameIndex纭畾fileName +void PlumageRender::writeImageToFile(std::string filePath) { bool screenshotSaved = false; @@ -1683,7 +2876,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode VkFormatProperties formatProps; // Check if the device supports blitting from optimal images (the swapchain images are in optimal format) - vkGetPhysicalDeviceFormatProperties(physicalDevice, swapChain.colorFormat, &formatProps); + vkGetPhysicalDeviceFormatProperties(physicalDevice, swapChainImageFormat, &formatProps); if (!(formatProps.optimalTilingFeatures & VK_FORMAT_FEATURE_BLIT_SRC_BIT)) { std::cerr << "Device does not support blitting from optimal tiled images, using copy instead of blit!" << std::endl; supportsBlit = false; @@ -1697,15 +2890,19 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } // Source for the copy is the last rendered swapchain image - VkImage srcImage = swapChain.images[currentBuffer]; + if (settings.headless) + { + VkImage srcImage = colorAttachment.image; + } + VkImage srcImage = swapChainImages[currentBuffer]; // Create the linear tiled destination image to copy to and to read the memory from VkImageCreateInfo imageCreateCI(vks::initializers::imageCreateInfo()); 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 = settings.width; + imageCreateCI.extent.height = settings.height; imageCreateCI.extent.depth = 1; imageCreateCI.arrayLayers = 1; imageCreateCI.mipLevels = 1; @@ -1759,8 +2956,8 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode { // Define the region to blit (we will blit the whole swapchain image) VkOffset3D blitSize; - blitSize.x = width; - blitSize.y = height; + blitSize.x = settings.width; + blitSize.y = settings.height; blitSize.z = 1; VkImageBlit imageBlitRegion{}; imageBlitRegion.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; @@ -1787,8 +2984,8 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode 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 = settings.width; + imageCopyRegion.extent.height = settings.height; imageCopyRegion.extent.depth = 1; // Issue the copy command @@ -1824,7 +3021,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode VK_PIPELINE_STAGE_TRANSFER_BIT, VkImageSubresourceRange{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }); - vulkanDevice->flushCommandBuffer(copyCmd, queue); + vulkanDevice->flushCommandBuffer(copyCmd, graphicQueue); // Get layout of the image (including row pitch) VkImageSubresource subResource{ VK_IMAGE_ASPECT_COLOR_BIT, 0, 0 }; @@ -1839,14 +3036,14 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode if (settings.outputPNGimage) { - stbi_write_png(filePath.c_str(), width, height, 4, data, static_cast(subResourceLayout.rowPitch)); + stbi_write_png(filePath.c_str(), settings.width, settings.height, 4, data, static_cast(subResourceLayout.rowPitch)); } else { std::ofstream file(filePath, std::ios::out | std::ios::binary); // ppm header - file << "P6\n" << width << "\n" << height << "\n" << 255 << "\n"; + file << "P6\n" << settings.width << "\n" << settings.height << "\n" << 255 << "\n"; // If source is BGR (destination is always RGB) and we can't use blit (which does automatic conversion), we'll have to manually swizzle color components bool colorSwizzle = false; @@ -1855,13 +3052,13 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode if (!supportsBlit) { std::vector formatsBGR = { VK_FORMAT_B8G8R8A8_SRGB, VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8A8_SNORM }; - colorSwizzle = (std::find(formatsBGR.begin(), formatsBGR.end(), swapChain.colorFormat) != formatsBGR.end()); + colorSwizzle = (std::find(formatsBGR.begin(), formatsBGR.end(), swapChainImageFormat) != formatsBGR.end()); } // ppm binary pixel data - for (uint32_t y = 0; y < height; y++) + for (uint32_t y = 0; y < settings.height; y++) { unsigned int* row = (unsigned int*)data; - for (uint32_t x = 0; x < width; x++) + for (uint32_t x = 0; x < settings.width; x++) { if (colorSwizzle) { @@ -1891,7 +3088,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } - void PlumageRender::outputImageSequence() +void PlumageRender::outputImageSequence() { if (savedFrameCounter == settings.startFrameCount) @@ -1900,7 +3097,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode removeImageSequence(); } - filePath.deviceSpecFilePath = filePath.imageOutputPath + "/device" + std::to_string(selectedPhysicalDeviceIndex); + filePath.deviceSpecFilePath = filePath.imageOutputPath + "/device" + std::to_string(settings.selectedPhysicalDeviceIndex); if (savedFrameCounter > settings.outputFrameCount) { @@ -1944,7 +3141,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode savedFrameCounter++; } - void PlumageRender::imageSequenceToVideo() +void PlumageRender::imageSequenceToVideo() { if (!signal.imageSequenceOutputComplete) { @@ -1954,7 +3151,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode { return; } - std::string deviceFilePath = filePath.videoOutputPath + "/device" + std::to_string(selectedPhysicalDeviceIndex); + std::string deviceFilePath = filePath.videoOutputPath + "/device" + std::to_string(settings.selectedPhysicalDeviceIndex); if (_access(deviceFilePath.c_str(), 0) == -1) { std::filesystem::create_directories(deviceFilePath.c_str()); @@ -1979,7 +3176,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode removeImageSequence(); } - void PlumageRender::removeImageSequence() +void PlumageRender::removeImageSequence() { if (savedFrameCounter != settings.startFrameCount) { @@ -2009,7 +3206,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } - uint32_t PlumageRender::getMemoryTypeIndex(uint32_t typeBits, VkMemoryPropertyFlags properties) +uint32_t PlumageRender::getMemoryTypeIndex(uint32_t typeBits, VkMemoryPropertyFlags properties) { VkPhysicalDeviceMemoryProperties deviceMemoryProperties; vkGetPhysicalDeviceMemoryProperties(physicalDevice, &deviceMemoryProperties); @@ -2027,35 +3224,34 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode return 0; } - void PlumageRender::render() +void PlumageRender::render() { if (!prepared) { return; } - updateUIOverlay(); + uint32_t imageIndex; + + if (settings.headless) + { + updateUIOverlay(); + } + //鍔犲叆鍐欏埌鏂囦欢鐨勫嚱鏁 //swapChainImage = swapChain.images[frameIndex]; //outputImageSequeue(swapChainImage,filePath.imageSequenceFilePath); - outputImageSequence(); + VK_CHECK_RESULT(vkWaitForFences(device, 1, &waitFences[frameIndex], VK_TRUE, UINT64_MAX)); - imageSequenceToVideo(); + framebufferResized = swapChainAcquireNextImage(framebufferResized, imageIndex, frameIndex); + VK_CHECK_RESULT(vkResetFences(device, 1, &waitFences[frameIndex])); - - VkResult acquire = swapChain.acquireNextImage(presentCompleteSemaphores[frameIndex], ¤tBuffer); - if ((acquire == VK_ERROR_OUT_OF_DATE_KHR) || (acquire == VK_SUBOPTIMAL_KHR)) { - windowResize(); - } - else { - VK_CHECK_RESULT(acquire); - - - } - + outputImageSequence(); + imageSequenceToVideo(); + // Update UBOs updateUniformBuffers(); UniformBufferSet currentUB = uniformBuffers[currentBuffer]; @@ -2063,30 +3259,11 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode memcpy(currentUB.params.mapped, &shaderData, sizeof(shaderData)); memcpy(currentUB.skybox.mapped, &shaderDataSkybox, sizeof(shaderDataSkybox)); - const VkPipelineStageFlags waitDstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - VkSubmitInfo submitInfo{}; - submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; - submitInfo.pWaitDstStageMask = &waitDstStageMask; - submitInfo.pWaitSemaphores = &presentCompleteSemaphores[frameIndex]; - submitInfo.waitSemaphoreCount = 1; - submitInfo.pSignalSemaphores = &renderCompleteSemaphores[frameIndex]; - submitInfo.signalSemaphoreCount = 1; - submitInfo.pCommandBuffers = &commandBuffers[currentBuffer]; - submitInfo.commandBufferCount = 1; - VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, waitFences[frameIndex])); + submitToGraphicQueue(frameIndex,currentBuffer); - //鏄剧ず闃熷垪 - VkResult present = swapChain.queuePresent(queue, currentBuffer, renderCompleteSemaphores[frameIndex]); - if (!((present == VK_SUCCESS) || (present == VK_SUBOPTIMAL_KHR))) { - if (present == VK_ERROR_OUT_OF_DATE_KHR) { - windowResize(); - return; - } - else { - VK_CHECK_RESULT(present); - } - } + imageToQueuePresent(frameIndex, imageIndex, framebufferResized); + frameIndex += 1; frameIndex %= renderAhead; @@ -2115,7 +3292,7 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } - void PlumageRender::fileDropped(std::string filename) +void PlumageRender::fileDropped(std::string filename) { vkDeviceWaitIdle(device); loadScene(filename); @@ -2124,12 +3301,80 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode } - void PlumageRender::updateUIOverlay() +void PlumageRender::destroyVulkan() + { + + // Clean up used Vulkan resources + // Note : Inherited destructor cleans up resources stored in base class + vkDestroyPipeline(device, pipelines.skybox, nullptr); + vkDestroyPipeline(device, pipelines.pbr, nullptr); + vkDestroyPipeline(device, pipelines.pbrAlphaBlend, nullptr); + + vkDestroyPipelineLayout(device, pipelineLayout, nullptr); + vkDestroyDescriptorSetLayout(device, descriptorSetLayouts.scene, nullptr); + vkDestroyDescriptorSetLayout(device, descriptorSetLayouts.material, nullptr); + vkDestroyDescriptorSetLayout(device, descriptorSetLayouts.node, nullptr); + + models.scene.destroy(device); + models.skybox.destroy(device); + + for (auto buffer : uniformBuffers) { + buffer.params.destroy(); + buffer.scene.destroy(); + buffer.skybox.destroy(); + } + for (auto fence : waitFences) { + vkDestroyFence(device, fence, nullptr); + } + for (auto semaphore : renderCompleteSemaphores) { + vkDestroySemaphore(device, semaphore, nullptr); + } + for (auto semaphore : presentCompleteSemaphores) { + vkDestroySemaphore(device, semaphore, nullptr); + } + + textures.environmentCube.destroy(); + textures.irradianceCube.destroy(); + textures.prefilteredCube.destroy(); + textures.lutBrdf.destroy(); + textures.empty.destroy(); + delete gui; + // Clean up Vulkan resources + cleanupSwapChain(); + vkDestroyDescriptorPool(device, descriptorPool, nullptr); + vkDestroyRenderPass(device, renderPass, nullptr); + for (uint32_t i = 0; i < framebuffers.size(); i++) { + vkDestroyFramebuffer(device, framebuffers[i], nullptr); + } + vkDestroyImageView(device, depthAttachment.view, nullptr); + vkDestroyImage(device, depthAttachment.image, nullptr); + vkFreeMemory(device, depthAttachment.memory, nullptr); + vkDestroyImageView(device, colorAttachment.view, nullptr); + vkDestroyImage(device, colorAttachment.image, nullptr); + vkFreeMemory(device, colorAttachment.memory, nullptr); + vkDestroyPipelineCache(device, pipelineCache, nullptr); + vkDestroyCommandPool(device, commandPool, nullptr); + if (settings.multiSampling) { + vkDestroyImage(device, multisampleTarget.colorAttachment.image, nullptr); + vkDestroyImageView(device, multisampleTarget.colorAttachment.view, nullptr); + vkFreeMemory(device, multisampleTarget.colorAttachment.memory, nullptr); + vkDestroyImage(device, multisampleTarget.depthAttachment.image, nullptr); + vkDestroyImageView(device, multisampleTarget.depthAttachment.view, nullptr); + vkFreeMemory(device, multisampleTarget.depthAttachment.memory, nullptr); + } + delete vulkanDevice; + if (settings.validation) { + DestroyDebugUtilsMessengerEXT(instance, debugMessenger, nullptr); + } + vkDestroyInstance(instance, nullptr); + } + +void PlumageRender::updateUIOverlay() { ImGuiIO& io = ImGui::GetIO(); ImVec2 lastDisplaySize = io.DisplaySize; - io.DisplaySize = ImVec2((float)width, (float)height); + io.DisplaySize = ImVec2((float)settings.width, (float)settings.height); io.DeltaTime = frameTimer; io.MousePos = ImVec2(mousePos.x, mousePos.y); @@ -2340,19 +3585,18 @@ void PlumageRender::renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFMode - int main(HINSTANCE hInstance, HINSTANCE, LPSTR, int) +int main() +{ + PlumageRender* plumageRender; + plumageRender = new PlumageRender(); + plumageRender->initVulkan(); + if (plumageRender->settings.headless) { - PlumageRender* plumageRender; - for (int32_t i = 0; i < __argc; i++) { PlumageRender::args.push_back(__argv[i]); }; - plumageRender = new PlumageRender(); - plumageRender->initVulkan(); - if (plumageRender->settings.headless) - { - plumageRender->initWindow(); - } - plumageRender->prepare(); - plumageRender->renderLoop(); - delete(plumageRender); - return 0; + plumageRender->initWindow(plumageRender->settings.width,plumageRender->settings.height); } -#endif + plumageRender->prepare(); + plumageRender->renderLoop(); + delete(plumageRender); + return 0; +} + diff --git a/src/render/render.h b/src/render/render.h index d90d1ed..cdd613f 100644 --- a/src/render/render.h +++ b/src/render/render.h @@ -3,8 +3,13 @@ #define STB_IMAGE_WRITE_IMPLEMENTATION #include "stb/stb_image_write.h" +#define GLFW_INCLUDE_VULKAN +#include - +#define GLM_FORCE_RADIANS +#define GLM_FORCE_DEPTH_ZERO_TO_ONE +#define GLM_ENABLE_EXPERIMENTAL +#include #include #include @@ -14,27 +19,34 @@ #include #include #include +#include +#include #include #include #include #include #include -#include +#include #include #include -#include "VulkanExampleBase.h" +//#include "VulkanExampleBase.h" #include "glTFModel.h" #include #include "VulkanDevice.hpp" #include "ui.hpp" #include +#include + + + + #define ENABLE_VALIDATION false -class PlumageRender : public VulkanExampleBase +class PlumageRender { public: bool wireframe = false; @@ -42,8 +54,41 @@ public: bool ToneMapping = true; bool pbrEnabled = true; + std::vector args; + GLFWwindow* window; + const std::vector validationLayers = { + "VK_LAYER_KHRONOS_validation" + + }; + + const std::vector swapchainExtensions = { + VK_KHR_SWAPCHAIN_EXTENSION_NAME, + //"VK_EXT_headless_surface" + }; + + std::string title; + std::string name; + Camera camera; + + VkPhysicalDevice physicalDevice; + VkPhysicalDeviceFeatures deviceFeatures; + VkDevice device; + vks::VulkanDevice* vulkanDevice; + + std::vector swapChainImageViews; + + VkRenderPass renderPass; + + VkPipelineCache pipelineCache; + + float fpsTimer = 0.0f; + + VkDescriptorPool descriptorPool; + + uint32_t currentBuffer; + struct stat { @@ -56,6 +101,7 @@ public: }signal; + bool prepared = false; struct Models { @@ -106,6 +152,9 @@ public: }chineseUI; + + VkInstance instance; + struct UniformBufferSet { Buffer scene; Buffer skybox; @@ -190,6 +239,27 @@ public: } filePath; + struct Settings { + uint32_t width = 1280; + uint32_t height = 720; + bool validation = true; // 鏍¢獙灞傚紑鍏 + bool fullscreen = false; // 鍏ㄥ睆寮鍏 + bool vsync = false; // 鍨傜洿鍚屾寮鍏 + bool multiSampling = true; // 澶氶噸閲囨牱 + bool rotateModel = true; // 妯″瀷鑷棆杞(鏆傛椂澶辨晥) + bool headless = false; // 鏃犲ご寮鍏 + bool outputPNGimage = false; + uint32_t endFrameIndex = 75; + bool enableSaveToImageSequeue = true; // 鍥剧墖搴忓垪寮鍏筹紙鏆傛椂寮冪敤锛 + uint32_t outputFrameCount = 100; // 鍥剧墖搴忓垪缁撴潫甯 + bool takeScreenShot = false; // 鎴睆锛堟殏鏃跺純鐢級 + uint32_t startFrameCount = 1; // 鍥剧墖搴忓垪寮濮嬪抚 + uint32_t selectedPhysicalDeviceIndex = 0; // 閫夊畾鐨勬樉鍗$储寮曪紝鏁扮粍褰㈠紡浠0寮濮 + uint32_t videoFrameRate = 25; + + VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_4_BIT; // 澶氶噸閲囨牱鍊嶇巼 + } settings; + float modelrot = 0.0f; glm::vec3 modelPos = glm::vec3(0.0f); @@ -303,48 +373,157 @@ public: bool framebufferResized = false; + VkDebugUtilsMessengerEXT debugMessenger; + + VkSurfaceKHR surface; + + VkQueue graphicQueue; + VkQueue presentQueue; + + VkSwapchainKHR swapChainKHR; + VkFormat swapChainImageFormat; + std::vector swapChainImages; + VkExtent2D swapChainExtent; + + uint32_t imageIndex; + + VkCommandPool commandPool; + + struct QueueFamilyIndices + { + std::optional graphicsFamily; + std::optional presentFamily; + + bool isGraphicsFamilyComplete() + { + return graphicsFamily.has_value(); + } + bool isPresentFamilyComplete() + { + return presentFamily.has_value(); + } + }; + + struct SwapChainSupportDetails + { + VkSurfaceCapabilitiesKHR capabilities; + std::vector formats; + std::vector presentModes; + }; + + PFN_vkGetPhysicalDeviceSurfacePresentModesKHR fpGetPhysicalDeviceSurfacePresentModesKHR; + + struct MultisampleTarget { + struct { + VkImage image; + VkImageView view; + VkDeviceMemory memory; + } colorAttachment; + struct { + VkImage image; + VkImageView view; + VkDeviceMemory memory; + } depthAttachment; + } multisampleTarget; + + struct DepthAttachment { + VkImage image; + VkDeviceMemory memory; + VkImageView view; + } depthAttachment; + + struct ColorAttachment { + VkImage image; + VkDeviceMemory memory; + VkImageView view; + } colorAttachment; + + std::vector framebuffers; + + uint32_t lastFPS = 0; + float frameTimer = 1.0f; + uint32_t frameCounter =0; + + glm::vec2 mousePos; + + struct MouseButtons { + bool left = false; + bool right = false; + bool middle = false; + } mouseButtons; + PlumageRender(); - ~PlumageRender() - { - // Clean up used Vulkan resources - // Note : Inherited destructor cleans up resources stored in base class - vkDestroyPipeline(device, pipelines.skybox, nullptr); - vkDestroyPipeline(device, pipelines.pbr, nullptr); - vkDestroyPipeline(device, pipelines.pbrAlphaBlend, nullptr); + ~PlumageRender(); + - vkDestroyPipelineLayout(device, pipelineLayout, nullptr); - vkDestroyDescriptorSetLayout(device, descriptorSetLayouts.scene, nullptr); - vkDestroyDescriptorSetLayout(device, descriptorSetLayouts.material, nullptr); - vkDestroyDescriptorSetLayout(device, descriptorSetLayouts.node, nullptr); - - models.scene.destroy(device); - models.skybox.destroy(device); - - for (auto buffer : uniformBuffers) { - buffer.params.destroy(); - buffer.scene.destroy(); - buffer.skybox.destroy(); - } - for (auto fence : waitFences) { - vkDestroyFence(device, fence, nullptr); - } - for (auto semaphore : renderCompleteSemaphores) { - vkDestroySemaphore(device, semaphore, nullptr); - } - for (auto semaphore : presentCompleteSemaphores) { - vkDestroySemaphore(device, semaphore, nullptr); - } - - textures.environmentCube.destroy(); - textures.irradianceCube.destroy(); - textures.prefilteredCube.destroy(); - textures.lutBrdf.destroy(); - textures.empty.destroy(); - delete gui; - } + void initVulkan(); VkResult createInstance(); + + bool checkValidationLayerSupport(); + std::vector getRequiredExtensions(); + void setupDebugMessager(); + void populateDebugMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& debugCreateInfo); + static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback( + VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, + const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, + void* pUserData); + VkResult CreateDebugUtilsMessengerEXT( + VkInstance instance, + const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDebugUtilsMessengerEXT* pDebugMessenger); + + void DestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT debugMessenger, const VkAllocationCallbacks* pAllocator); + + void createSurface(); + + void pickupPhysicalDevice(); + bool isDeviceSuitable(VkPhysicalDevice device); + bool checkDeviceExtensionSupport(VkPhysicalDevice device); + QueueFamilyIndices findQueueFamilies(VkPhysicalDevice device); + SwapChainSupportDetails querySwapChainSupport(VkPhysicalDevice device); + + // 鍒涘缓绋嬪簭浣跨敤鐨勯昏緫璁惧 + void createLogicalDevice(); + + void prepare(); + + // 鍒涘缓浜ゆ崲閾 + void createSwapChain(); + VkSurfaceFormatKHR chooseSwapSurfaceFormat(const std::vector& availableFormats); + VkPresentModeKHR chooseSwapPresentMode(const std::vector& availablePresentModes); + VkExtent2D chooseSwapExtent(const VkSurfaceCapabilitiesKHR& capabilities); + void cleanupSwapChain(); + + void createCommandPool(); + + void createRenderPass(); + VkFormat findDepthFormat(); + VkFormat findSupportedFormat(const std::vector& candidates, VkImageTiling tiling, VkFormatFeatureFlags features); + bool hasStencilComponent(VkFormat format); + + void createPipelineCache(); + + void createFramebuffer(); + void createSwapChainFramebuffer(); + void createImageView(); + + void renderLoop(); + + void drawFrame(); + + + bool swapChainAcquireNextImage(bool framebuffeerResized, uint32_t imageIndex, uint32_t frameIndex); + + void recreateSwapChain(); + + void submitToGraphicQueue(uint32_t frameIndex, uint32_t currentBuffer); + + void imageToQueuePresent(uint32_t frameIndex, uint32_t imageIndex, bool framebufferResized); + void renderNode(glTFModel::Node* node, uint32_t cbIndex, glTFModel::Material::AlphaMode alphaMode); void loadScene(std::string filename); void loadEnvironment(std::string filename); @@ -360,9 +539,9 @@ public: void updateUniformBuffers(); void updateShaderData(); void initWindow(int Width,int Height); - void framebufferResizeCallback(GLFWwindow* window, int width, int height); + static void framebufferResizeCallback(GLFWwindow* window, int width, int height); + void windowResized(); - void prepare(); void submitWork(VkCommandBuffer cmdBuffer, VkQueue queue); void writeImageToFile(std::string filePath); @@ -374,4 +553,5 @@ public: virtual void render(); virtual void updateUIOverlay(); virtual void fileDropped(std::string filename); + void destroyVulkan(); }; \ No newline at end of file

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