Cleaned up a lot of old code

This commit is contained in:
antopilo
2025-01-29 21:33:17 -05:00
parent ea136b729c
commit 7d0af312ef
9 changed files with 35 additions and 51 deletions

View File

@@ -45,7 +45,7 @@ void ViewportWidget::Draw()
ImVec2 regionAvail = ImGui::GetContentRegionAvail();
Vector2 viewportPanelSize = glm::vec2(regionAvail.x, regionAvail.y);
//this->sceneViewport->SetViewportSize(viewportPanelSize);
sceneViewport->QueueResize(viewportPanelSize);
// This is important for make UI mouse coord relative to viewport
// Nuake::Input::SetViewportDimensions(m_ViewportPos, viewportPanelSize);

View File

@@ -299,6 +299,6 @@ Ref<VulkanImage> SceneRenderPipeline::ResizeImage(Ref<VulkanImage> image, const
gpuResources.AddTexture(newAttachment);
// We might need to do this?
// newAttachment->TransitionLayout(ctx.commandBuffer, VK_IMAGE_LAYOUT_GENERAL);
//newAttachment->TransitionLayout(ctx.commandBuffer, VK_IMAGE_LAYOUT_GENERAL);
return newAttachment;
}

View File

@@ -7,6 +7,7 @@ using namespace Nuake;
Viewport::Viewport(UUID inViewId, const Vector2& inViewportSize) :
id(UUID()),
viewportSize(inViewportSize),
queuedResize(inViewportSize),
viewId(inViewId)
{
renderTarget = CreateRef<VulkanImage>(ImageFormat::RGBA16F, viewportSize);
@@ -14,8 +15,10 @@ Viewport::Viewport(UUID inViewId, const Vector2& inViewportSize) :
bool Viewport::Resize()
{
if (renderTarget->GetSize() != viewportSize)
if (viewportSize != queuedResize)
{
viewportSize = queuedResize;
renderTarget = CreateRef<VulkanImage>(ImageFormat::RGBA16F, viewportSize);
return true;
}

View File

@@ -12,6 +12,7 @@ namespace Nuake
{
private:
UUID id;
Vector2 queuedResize;
Vector2 viewportSize;
UUID viewId;
@@ -31,6 +32,11 @@ namespace Nuake
viewportSize = size;
}
void QueueResize(const Vector2& inSize)
{
queuedResize = inSize;
}
Ref<VulkanImage> GetRenderTarget() const { return renderTarget; }
bool Resize();
};

View File

@@ -123,6 +123,7 @@ namespace Nuake
VkSampler SamplerLinear;
VkSampler SamplerNearest;
public:
ModelData ModelTransforms;
MaterialData MaterialDataContainer;

View File

@@ -1,10 +1,13 @@
#include "VulkanImage.h"
#include "src/Core/Logger.h"
#include "src/Rendering/Vulkan/VulkanInit.h"
#include "src/Rendering/Vulkan/VulkanCheck.h"
#include "src/Rendering/Vulkan/VulkanAllocator.h"
#include "src/Rendering/Vulkan/VulkanRenderer.h"
#include <volk/volk.h>
#include <imgui/imgui_impl_vulkan.h>
@@ -136,6 +139,8 @@ VulkanImage::VulkanImage(ImageFormat inFormat, Vector2 inSize, ImageUsage usage)
}
VK_CALL(vkCreateImageView(VkRenderer::Get().GetDevice(), &imageViewCreateInfo, nullptr, &ImageView));
Logger::Log("Image created", "vulkan", VERBOSE);
}
VulkanImage::VulkanImage(void* inData, ImageFormat inFormat, Vector2 inSize) : VulkanImage(inFormat, inSize)
@@ -278,6 +283,7 @@ VulkanImage::VulkanImage(void* inData, size_t inSize) :
VulkanImage::~VulkanImage()
{
// TODO: deletion of image
Logger::Log("Deleting VulkanImage", "vulkan", VERBOSE);
}
void VulkanImage::TransitionLayout(VkCommandBuffer cmd, VkImageLayout layout)

View File

@@ -220,7 +220,6 @@ void VkRenderer::RecreateSwapchain()
DestroySwapchain();
CreateSwapchain(Window::Get()->GetSize());
UpdateDescriptorSets();
}
void VkRenderer::CreateSwapchain(const Vector2& size)
@@ -331,19 +330,6 @@ void VkRenderer::InitSync()
void VkRenderer::InitDescriptors()
{
//create a descriptor pool that will hold 10 sets with 1 image each
//make the descriptor set layout for our compute draw
{
DescriptorLayoutBuilder builder;
builder.AddBinding(0, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE);
DrawImageDescriptorLayout = builder.Build(Device, VK_SHADER_STAGE_COMPUTE_BIT);
}
DrawImageDescriptors = GlobalDescriptorAllocator.Allocate(Device, DrawImageDescriptorLayout);
UpdateDescriptorSets();
for (int i = 0; i < FRAME_OVERLAP; i++)
{
// create a descriptor pool
@@ -365,8 +351,13 @@ void VkRenderer::PrepareSceneData(RenderContext ctx)
std::vector<Ref<Scene>> scenes;
scenes.reserve(SceneViewports.size());
for (auto& [scene, _] : SceneViewports)
for (auto& [scene, views] : SceneViewports)
{
for (auto& view : views)
{
//Viewports[view]->Resize();
}
scenes.push_back(scene);
}
@@ -385,10 +376,10 @@ void VkRenderer::DrawScenes()
for (auto& view : views)
{
Ref<Viewport> viewport = Viewports[view];
assert(viewport);
assert(viewport && "Viewport is null");
ctx.CameraID = viewport->GetViewID();
ctx.Size = viewport->GetViewportSize();
ctx.Size = viewport->GetRenderTarget()->GetSize();
ctx.ViewportImage = viewport->GetRenderTarget();
SceneRenderer->DrawSceneView(ctx);
@@ -663,6 +654,11 @@ bool VkRenderer::Draw()
return false;
}
for (auto& [_id, viewport] : Viewports)
{
//viewport->Resize();
}
FrameSkipped = false;
GetCurrentFrame().FrameDescriptors.ClearPools(Device);
@@ -691,16 +687,7 @@ bool VkRenderer::Draw()
viewport->GetRenderTarget()->TransitionLayout(cmd, VK_IMAGE_LAYOUT_GENERAL);
}
DrawImage->TransitionLayout(cmd, VK_IMAGE_LAYOUT_GENERAL);
//VulkanUtil::TransitionImage(cmd, DrawImage->GetImage(), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_GENERAL);
// Transition rendering iamge to transfert onto swapchain images
//VulkanUtil::TransitionImage(cmd, DrawImage->GetImage(), VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
//SwapchainImages[swapchainImageIndex]->TransitionLayout(cmd, VK_IMAGE_LAYOUT_GENERAL);
//DepthImage->TransitionLayout(cmd, VK_IMAGE_LAYOUT_GENERAL);
VulkanUtil::TransitionImage(cmd, SwapchainImages[swapchainImageIndex], VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
//VulkanUtil::TransitionImage(cmd, DepthImage->GetImage(), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL);
//DrawGeometry(cmd);
@@ -721,7 +708,6 @@ void VkRenderer::EndDraw()
// set swapchain image layout to Attachment Optimal so we can draw it
VulkanUtil::TransitionImage(cmd, SwapchainImages[swapchainImageIndex], VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
DrawImage->TransitionLayout(cmd, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
for (auto& [_id, viewport] : Viewports)
{
viewport->GetRenderTarget()->TransitionLayout(cmd, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
@@ -732,7 +718,6 @@ void VkRenderer::EndDraw()
// Transition the swapchain image to VK_IMAGE_LAYOUT_PRESENT_SRC_KHR for presentation
VulkanUtil::TransitionImage(cmd, SwapchainImages[swapchainImageIndex], VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR);
DrawImage->TransitionLayout(cmd, VK_IMAGE_LAYOUT_GENERAL);
for (auto& [_id, viewport] : Viewports)
{
viewport->GetRenderTarget()->TransitionLayout(cmd, VK_IMAGE_LAYOUT_GENERAL);

View File

@@ -315,6 +315,9 @@ void VkSceneRenderer::DrawSceneView(RenderContext inContext)
sceneRenderPipeline->Render(passCtx);
// in case we just resized
inContext.CommandBuffer.TransitionImageLayout(inContext.ViewportImage, VK_IMAGE_LAYOUT_GENERAL);
inContext.CommandBuffer.TransitionImageLayout(sceneRenderPipeline->GetOutput(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
inContext.CommandBuffer.TransitionImageLayout(inContext.ViewportImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
inContext.CommandBuffer.CopyImageToImage(sceneRenderPipeline->GetOutput(), inContext.ViewportImage);

View File

@@ -202,26 +202,6 @@ void Window::Draw()
size.y = std::max(size.y, 1.0f);
cam->AspectRatio = size.x / size.y;
if (Engine::IsPlayMode())
{
ZoneScopedN("PIE Draw");
this->scene->Draw(*this->framebuffer.get());
}
else
{
ZoneScopedN("Non-playmode Draw");
float resolutionScale = glm::clamp(Engine::GetProject()->Settings.ResolutionScale, 0.5f, 2.0f);
this->scene->m_EditorCamera->OnWindowResize(size.x * resolutionScale, size.y * resolutionScale);
auto& vkRenderer = VkRenderer::Get();
//vkRenderer.PrepareSceneData();
VkRenderer::Get().BeginScene(scene->m_EditorCamera->ID);
this->scene->Draw(*this->framebuffer.get(), this->scene->m_EditorCamera->GetPerspective(), this->scene->m_EditorCamera->GetTransform());
}
//glEnable(GL_DEPTH_TEST);
Renderer::EndDraw();
}
void Window::EndDraw()