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

@ -67,4 +67,7 @@
#include "tiny_gltf.h"
#endif // !_TINY_GLTF_H
```
```

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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)

View File

@ -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));

View File

@ -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;