uncomplete reconstruct

ink-soul 2024-04-11 10:37:36 +08:00
parent b07037ecfb
commit 210932ab19
6 changed files with 32 additions and 17 deletions

View File

@ -68,3 +68,6 @@
#endif // !_TINY_GLTF_H #endif // !_TINY_GLTF_H
``` ```
```

View File

@ -18,9 +18,15 @@
#include "renderIO.h" #include "renderIO.h"
#endif // !RENDERIO_H #endif // !RENDERIO_H
#ifndef _RENDERSETTER_H
#define _RENDERSETTER_H
#include "renderSetter.h" #include "renderSetter.h"
#endif // !RENDERSETTER_H
#ifndef _PBR_H
#define _PBR_H
#include "PBR.h" #include "PBR.h"
#endif // !PBR_H
void PlumageRender::renderMain::initWindow(int Width, int Height) 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) 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) { if (!prepared) {
return; return;
@ -101,7 +107,7 @@ void PlumageRender::renderMain::render(Setter setter,PlumageGUI plumageGUI,UI* g
if (!setter.settings.headless) if (!setter.settings.headless)
{ {
plumageGUI.updateUIOverlay(gui,setter,mainRender,vkFoundation,renderInput,renderOutput,); plumageGUI.updateUIOverlay(gui,setter,mainRender,vkFoundation,renderInput,renderOutput,pbrMaterial);
} }
uint32_t imageIndex; 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) if (setter.settings.headless)
{ {
uint32_t frameRange =setter.getFrameRange(); uint32_t frameRange =setter.getFrameRange();
for (size_t i = 0; i < frameRange; i++) for (size_t i = 0; i < frameRange; i++)
{ {
drawFrame(); drawFrame(setter, plumageGUI, gui, mainRender, vkFoundation, renderInput, renderOutput, pbrMaterial);
} }
} }
else else
@ -169,17 +175,17 @@ void PlumageRender::renderMain::renderLoop(GLFWwindow* window,Setter setter)
while (!glfwWindowShouldClose(window)) while (!glfwWindowShouldClose(window))
{ {
glfwPollEvents(); glfwPollEvents();
drawFrame(); drawFrame(setter, plumageGUI, gui, mainRender, vkFoundation, renderInput, renderOutput, pbrMaterial);
} }
} }
vkDeviceWaitIdle(PlumageVulkanBackend::VulkanFoundation::device); 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(); auto tStart = std::chrono::high_resolution_clock::now();
render(); render(setter,plumageGUI, gui, mainRender, vkFoundation, renderInput,renderOutput,pbrMaterial);
frameCounter++; frameCounter++;
auto tEnd = std::chrono::high_resolution_clock::now(); auto tEnd = std::chrono::high_resolution_clock::now();
@ -212,6 +218,8 @@ void PlumageRender::renderMain::destroyModel(PlumageVulkanBackend::VulkanFoundat
int main() int main()
{ {
PBR::Material pbrMaterial;
PlumageRender::PlumageGUI plumageGUI;
PlumageRender::RenderOutput renderOutput; PlumageRender::RenderOutput renderOutput;
PlumageRender::RenderInput renderInput; PlumageRender::RenderInput renderInput;
PlumageRender::Setter setter; PlumageRender::Setter setter;
@ -219,12 +227,13 @@ int main()
PlumageVulkanBackend::VulkanFoundation vkFoundation; PlumageVulkanBackend::VulkanFoundation vkFoundation;
UI* gui = new UI(vkFoundation.vulkanDevice, vkFoundation.renderPass, vkFoundation.graphicQueue, vkFoundation.pipelineCache, setter.settings.sampleCount); 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) if (!setter.settings.headless)
{ {
plumageRender.initWindow(setter.settings.width,setter.settings.height); plumageRender.initWindow(setter.settings.width,setter.settings.height);
} }
plumageRender.renderLoop(vkFoundation.window, setter, plumageGUI, gui, plumageRender, vkFoundation, renderInput, renderOutput, pbrMaterial);
return 0; return 0;
} }

View File

@ -157,9 +157,9 @@ namespace PlumageRender
void submitWork(VkCommandBuffer cmdBuffer, VkQueue queue); void submitWork(VkCommandBuffer cmdBuffer, VkQueue queue);
void submitToPresentQueue(); void submitToPresentQueue();
virtual void render(Setter setter, PlumageGUI plumageGUI, UI* gui, renderMain mainRender, PlumageVulkanBackend::VulkanFoundation vkFoundation, RenderInput renderInput, RenderOutput renderOutput); 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); void renderLoop(GLFWwindow* window, Setter setter, PlumageGUI plumageGUI, UI* gui, renderMain mainRender, PlumageVulkanBackend::VulkanFoundation vkFoundation, RenderInput renderInput, RenderOutput renderOutput, PBR::Material pbrMaterial);
void drawFrame(); 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); void destroyModel(PlumageVulkanBackend::VulkanFoundation vkFoundation);
private: private:
@ -177,8 +177,6 @@ namespace PlumageRender
renderMain::~renderMain() renderMain::~renderMain()
{ {
models.scene.destroy(PlumageVulkanBackend::VulkanFoundation::device);
models.skybox.destroy(PlumageVulkanBackend::VulkanFoundation::device);
} }

View File

@ -19,7 +19,10 @@
#include "renderSetter.h" #include "renderSetter.h"
#endif // !RENDERSETTER_H #endif // !RENDERSETTER_H
#ifndef _PBR_H
#define _PBR_H
#include "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) void PlumageRender::PlumageGUI::updateUIOverlay(UI* gui,Setter& setter,renderMain mainRender, PlumageVulkanBackend::VulkanFoundation vkFoundation,RenderInput renderInput,RenderOutput& renderOutput,PBR::Material pbrMaterial)

View File

@ -786,9 +786,9 @@ void PlumageVulkanBackend::VulkanFoundation::createImageView(PlumageRender::Sett
memAlloc.pNext = NULL; memAlloc.pNext = NULL;
memAlloc.allocationSize = 0; memAlloc.allocationSize = 0;
memAlloc.memoryTypeIndex = 0; memAlloc.memoryTypeIndex = 0;
VkMemoryRequirements memReqs; VkMemoryRequirements depthAttachmentMemReqs;
vkGetImageMemoryRequirements(device, depthAttachment.image, &memReqs); 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); memAlloc.memoryTypeIndex = vulkanDevice->getMemoryType(memReqs.memoryTypeBits, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
VK_CHECK_RESULT(vkAllocateMemory(device, &memAlloc, nullptr, &depthAttachment.memory)); VK_CHECK_RESULT(vkAllocateMemory(device, &memAlloc, nullptr, &depthAttachment.memory));
VK_CHECK_RESULT(vkBindImageMemory(device, depthAttachment.image, depthAttachment.memory, 0)); VK_CHECK_RESULT(vkBindImageMemory(device, depthAttachment.image, depthAttachment.memory, 0));

View File

@ -124,6 +124,8 @@ namespace PlumageVulkanBackend
VkQueue presentQueue; VkQueue presentQueue;
GLFWwindow* window;
void initVulkan(PlumageRender::Setter setter, Camera camera, PlumageRender::renderMain mainRender, UI* plumageGUI); void initVulkan(PlumageRender::Setter setter, Camera camera, PlumageRender::renderMain mainRender, UI* plumageGUI);
// 创建描述符集合 // 创建描述符集合
@ -178,7 +180,7 @@ namespace PlumageVulkanBackend
GLFWwindow* window;
VkSurfaceKHR surface; VkSurfaceKHR surface;
VkPhysicalDeviceFeatures deviceFeatures; VkPhysicalDeviceFeatures deviceFeatures;