mirror of
https://github.com/antopilo/Nuake.git
synced 2026-01-03 14:09:46 +03:00
Cleaned up a lot of old code
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
@@ -123,6 +123,7 @@ namespace Nuake
|
||||
VkSampler SamplerLinear;
|
||||
VkSampler SamplerNearest;
|
||||
|
||||
|
||||
public:
|
||||
ModelData ModelTransforms;
|
||||
MaterialData MaterialDataContainer;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user