diff --git a/noteForDevelop.md b/noteForDevelop.md index 2e20ef7..213d47e 100644 --- a/noteForDevelop.md +++ b/noteForDevelop.md @@ -67,4 +67,7 @@ #include "tiny_gltf.h" #endif // !_TINY_GLTF_H +``` + + ``` \ No newline at end of file diff --git a/src/render/render.cpp b/src/render/render.cpp index d20f895..ec9381a 100644 --- a/src/render/render.cpp +++ b/src/render/render.cpp @@ -18,9 +18,15 @@ #include "renderIO.h" #endif // !RENDERIO_H +#ifndef _RENDERSETTER_H +#define _RENDERSETTER_H #include "renderSetter.h" +#endif // !RENDERSETTER_H +#ifndef _PBR_H +#define _PBR_H #include "PBR.h" +#endif // !PBR_H void PlumageRender::renderMain::initWindow(int Width, int Height) @@ -56,7 +62,7 @@ void PlumageRender::renderMain::prepare(Setter setter,PlumageGUI renderGUI,Rende if (!setter.settings.headless) { - renderGUI.updateUIOverlay(ui,setter,mainRender,vkFoundation,renderInput,renderOutput); + renderGUI.updateUIOverlay(ui,setter,mainRender,vkFoundation,renderInput,renderOutput,pbrMaterial); } ; @@ -93,7 +99,7 @@ void PlumageRender::renderMain::submitToPresentQueue() } -void PlumageRender::renderMain::render(Setter setter,PlumageGUI plumageGUI,UI* gui,renderMain mainRender,PlumageVulkanBackend::VulkanFoundation vkFoundation,RenderInput renderInput,RenderOutput renderOutput) +void PlumageRender::renderMain::render(Setter setter,PlumageGUI plumageGUI,UI* gui,renderMain mainRender,PlumageVulkanBackend::VulkanFoundation vkFoundation,RenderInput renderInput,RenderOutput renderOutput,PBR::Material pbrMaterial) { if (!prepared) { return; @@ -101,7 +107,7 @@ void PlumageRender::renderMain::render(Setter setter,PlumageGUI plumageGUI,UI* g if (!setter.settings.headless) { - plumageGUI.updateUIOverlay(gui,setter,mainRender,vkFoundation,renderInput,renderOutput,); + plumageGUI.updateUIOverlay(gui,setter,mainRender,vkFoundation,renderInput,renderOutput,pbrMaterial); } uint32_t imageIndex; @@ -154,14 +160,14 @@ void PlumageRender::renderMain::render(Setter setter,PlumageGUI plumageGUI,UI* g } -void PlumageRender::renderMain::renderLoop(GLFWwindow* window,Setter setter) +void PlumageRender::renderMain::renderLoop(GLFWwindow* window,Setter setter, PlumageGUI plumageGUI, UI* gui, renderMain mainRender, PlumageVulkanBackend::VulkanFoundation vkFoundation, RenderInput renderInput, RenderOutput renderOutput, PBR::Material pbrMaterial) { if (setter.settings.headless) { uint32_t frameRange =setter.getFrameRange(); for (size_t i = 0; i < frameRange; i++) { - drawFrame(); + drawFrame(setter, plumageGUI, gui, mainRender, vkFoundation, renderInput, renderOutput, pbrMaterial); } } else @@ -169,17 +175,17 @@ void PlumageRender::renderMain::renderLoop(GLFWwindow* window,Setter setter) while (!glfwWindowShouldClose(window)) { glfwPollEvents(); - drawFrame(); + drawFrame(setter, plumageGUI, gui, mainRender, vkFoundation, renderInput, renderOutput, pbrMaterial); } } vkDeviceWaitIdle(PlumageVulkanBackend::VulkanFoundation::device); } -void PlumageRender::renderMain::drawFrame() +void PlumageRender::renderMain::drawFrame(Setter setter, PlumageGUI plumageGUI, UI* gui, renderMain mainRender, PlumageVulkanBackend::VulkanFoundation vkFoundation, RenderInput renderInput, RenderOutput renderOutput, PBR::Material pbrMaterial) { auto tStart = std::chrono::high_resolution_clock::now(); - render(); + render(setter,plumageGUI, gui, mainRender, vkFoundation, renderInput,renderOutput,pbrMaterial); frameCounter++; auto tEnd = std::chrono::high_resolution_clock::now(); @@ -212,6 +218,8 @@ void PlumageRender::renderMain::destroyModel(PlumageVulkanBackend::VulkanFoundat int main() { + PBR::Material pbrMaterial; + PlumageRender::PlumageGUI plumageGUI; PlumageRender::RenderOutput renderOutput; PlumageRender::RenderInput renderInput; PlumageRender::Setter setter; @@ -219,12 +227,13 @@ int main() PlumageVulkanBackend::VulkanFoundation vkFoundation; UI* gui = new UI(vkFoundation.vulkanDevice, vkFoundation.renderPass, vkFoundation.graphicQueue, vkFoundation.pipelineCache, setter.settings.sampleCount); - vkFoundation.initVulkan(); + vkFoundation.initVulkan(setter,plumageRender.camera,plumageRender,gui); if (!setter.settings.headless) { plumageRender.initWindow(setter.settings.width,setter.settings.height); } + plumageRender.renderLoop(vkFoundation.window, setter, plumageGUI, gui, plumageRender, vkFoundation, renderInput, renderOutput, pbrMaterial); return 0; } diff --git a/src/render/render.h b/src/render/render.h index 63e2bcb..461d9d5 100644 --- a/src/render/render.h +++ b/src/render/render.h @@ -157,9 +157,9 @@ namespace PlumageRender void submitWork(VkCommandBuffer cmdBuffer, VkQueue queue); void submitToPresentQueue(); - virtual void render(Setter setter, PlumageGUI plumageGUI, UI* gui, renderMain mainRender, PlumageVulkanBackend::VulkanFoundation vkFoundation, RenderInput renderInput, RenderOutput renderOutput); - void renderLoop(GLFWwindow* window, Setter setter); - void drawFrame(); + virtual void render(Setter setter, PlumageGUI plumageGUI, UI* gui, renderMain mainRender, PlumageVulkanBackend::VulkanFoundation vkFoundation, RenderInput renderInput, RenderOutput renderOutput,PBR::Material pbrMaterial); + void renderLoop(GLFWwindow* window, Setter setter, PlumageGUI plumageGUI, UI* gui, renderMain mainRender, PlumageVulkanBackend::VulkanFoundation vkFoundation, RenderInput renderInput, RenderOutput renderOutput, PBR::Material pbrMaterial); + void drawFrame(Setter setter, PlumageGUI plumageGUI, UI* gui, renderMain mainRender, PlumageVulkanBackend::VulkanFoundation vkFoundation, RenderInput renderInput, RenderOutput renderOutput, PBR::Material pbrMaterial); void destroyModel(PlumageVulkanBackend::VulkanFoundation vkFoundation); private: @@ -177,8 +177,6 @@ namespace PlumageRender renderMain::~renderMain() { - models.scene.destroy(PlumageVulkanBackend::VulkanFoundation::device); - models.skybox.destroy(PlumageVulkanBackend::VulkanFoundation::device); } diff --git a/src/render/renderUI.cpp b/src/render/renderUI.cpp index 98653bf..919ecc8 100644 --- a/src/render/renderUI.cpp +++ b/src/render/renderUI.cpp @@ -19,7 +19,10 @@ #include "renderSetter.h" #endif // !RENDERSETTER_H +#ifndef _PBR_H +#define _PBR_H #include "PBR.h" +#endif // !PBR_H void PlumageRender::PlumageGUI::updateUIOverlay(UI* gui,Setter& setter,renderMain mainRender, PlumageVulkanBackend::VulkanFoundation vkFoundation,RenderInput renderInput,RenderOutput& renderOutput,PBR::Material pbrMaterial) diff --git a/src/render/vulkanFoundation.cpp b/src/render/vulkanFoundation.cpp index a76b253..9425aed 100644 --- a/src/render/vulkanFoundation.cpp +++ b/src/render/vulkanFoundation.cpp @@ -786,9 +786,9 @@ void PlumageVulkanBackend::VulkanFoundation::createImageView(PlumageRender::Sett memAlloc.pNext = NULL; memAlloc.allocationSize = 0; memAlloc.memoryTypeIndex = 0; - VkMemoryRequirements memReqs; + VkMemoryRequirements depthAttachmentMemReqs; vkGetImageMemoryRequirements(device, depthAttachment.image, &memReqs); - memAlloc.allocationSize = memReqs.size; + 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)); diff --git a/src/render/vulkanFoundation.h b/src/render/vulkanFoundation.h index 27a4f34..f6b7683 100644 --- a/src/render/vulkanFoundation.h +++ b/src/render/vulkanFoundation.h @@ -124,6 +124,8 @@ namespace PlumageVulkanBackend VkQueue presentQueue; + GLFWwindow* window; + void initVulkan(PlumageRender::Setter setter, Camera camera, PlumageRender::renderMain mainRender, UI* plumageGUI); // 创建描述符集合 @@ -178,7 +180,7 @@ namespace PlumageVulkanBackend - GLFWwindow* window; + VkSurfaceKHR surface; VkPhysicalDeviceFeatures deviceFeatures;