Compare commits
4 Commits
2e111c13e9
...
f05e1605d6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f05e1605d6 | ||
|
|
f5965b2142 | ||
|
|
76947a59ee | ||
|
|
78b5577ff2 |
1
.clangd
1
.clangd
@ -6,6 +6,7 @@ CompileFlags:
|
||||
- -DINITIALIZERS_IMPL
|
||||
- -DPIPELINES_IMPL
|
||||
- -DDESCRIPTORS_IMPL
|
||||
- -DCALLBACK_IMPL
|
||||
- -DTIMER_IMPL
|
||||
- -DLOGGER_IMPL
|
||||
- -DSERVER_INIT_IMPL
|
||||
|
||||
@ -18,6 +18,24 @@ if (GIT_FOUND)
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_QUIET
|
||||
)
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
OUTPUT_VARIABLE GIT_BRANCH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_QUIET
|
||||
)
|
||||
set(GIT_DEPS "${CMAKE_SOURCE_DIR}/.git/HEAD")
|
||||
if(GIT_BRANCH AND EXISTS "${CMAKE_SOURCE_DIR}/.git/refs/heads/${GIT_BRANCH}")
|
||||
list(APPEND GIT_DEPS "${CMAKE_SOURCE_DIR}/.git/refs/heads/${GIT_BRANCH}")
|
||||
endif()
|
||||
# Optionnel : index pour les modifications stagées
|
||||
if(EXISTS "${CMAKE_SOURCE_DIR}/.git/index")
|
||||
list(APPEND GIT_DEPS "${CMAKE_SOURCE_DIR}/.git/index")
|
||||
endif()
|
||||
|
||||
# On définit la propriété pour le répertoire source.
|
||||
set_directory_properties(PROPERTIES CMAKE_CONFIGURE_DEPENDS "${GIT_DEPS}")
|
||||
endif()
|
||||
# Fallback
|
||||
|
||||
|
||||
@ -127,6 +127,7 @@ function ( addBinary BINARY_NAME )
|
||||
${CMAKE_SOURCE_DIR}/src/imgui/imgui_draw.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/imgui/imgui_tables.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/imgui/imgui_widgets.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/imgui/imgui_demo.cpp
|
||||
|
||||
${CMAKE_SOURCE_DIR}/src/imgui/backends/imgui_impl_glfw.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/imgui/backends/imgui_impl_vulkan.cpp
|
||||
|
||||
@ -109,10 +109,15 @@ class Engine {
|
||||
uint32_t width,
|
||||
uint32_t height
|
||||
);
|
||||
void buildImgui();
|
||||
void destroySwapchain();
|
||||
void drawBackground(
|
||||
VkCommandBuffer cmd
|
||||
);
|
||||
void drawImgui(
|
||||
VkCommandBuffer cmd,
|
||||
VkImageView targetImageView
|
||||
);
|
||||
|
||||
|
||||
};
|
||||
@ -325,6 +330,19 @@ void Engine::draw() {
|
||||
_swapchainExtent
|
||||
);
|
||||
|
||||
// Set the swapchain image layout to Attachment Optimal so ImGui can write on top of it
|
||||
vkutil::transitionImage(
|
||||
cmd,
|
||||
_swapchainImages[swapchainImageIndex],
|
||||
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
||||
);
|
||||
|
||||
drawImgui(
|
||||
cmd,
|
||||
_swapchainImageViews[swapchainImageIndex]
|
||||
);
|
||||
|
||||
// Uses the present layout to display into the screen
|
||||
vkutil::transitionImage(
|
||||
cmd,
|
||||
@ -384,6 +402,7 @@ void Engine::run() {
|
||||
continue;
|
||||
}
|
||||
|
||||
buildImgui();
|
||||
draw();
|
||||
}
|
||||
#ifdef DEBUG
|
||||
@ -404,6 +423,7 @@ void Engine::initRender() {
|
||||
initSyncStructures();
|
||||
initDescriptors();
|
||||
initPipelines();
|
||||
initImgui();
|
||||
}
|
||||
|
||||
void Engine::initVulkan() {
|
||||
@ -890,7 +910,7 @@ void Engine::initImgui() {
|
||||
.PipelineRenderingCreateInfo {
|
||||
.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR,
|
||||
.colorAttachmentCount = 1,
|
||||
.pColorAttachmentFormats = &_swapchainImageFormat
|
||||
.pColorAttachmentFormats = &_drawImage.imageFormat
|
||||
}
|
||||
},
|
||||
.UseDynamicRendering = true
|
||||
@ -898,7 +918,7 @@ void Engine::initImgui() {
|
||||
|
||||
ImGui_ImplVulkan_Init(&initInfo);
|
||||
|
||||
_mainDeletionQueue.pushFonction([this]() {
|
||||
_mainDeletionQueue.pushFunction([this, imguiPool]() {
|
||||
ImGui_ImplVulkan_Shutdown();
|
||||
vkDestroyDescriptorPool(
|
||||
_device,
|
||||
@ -955,6 +975,19 @@ void Engine::createSwapchain(
|
||||
#endif
|
||||
}
|
||||
|
||||
void Engine::buildImgui() {
|
||||
// New frames
|
||||
ImGui_ImplVulkan_NewFrame();
|
||||
ImGui_ImplGlfw_NewFrame();
|
||||
ImGui::NewFrame();
|
||||
|
||||
// Main ImGui things
|
||||
ImGui::ShowDemoWindow();
|
||||
|
||||
// Finish everything
|
||||
ImGui::Render();
|
||||
}
|
||||
|
||||
void Engine::destroySwapchain() {
|
||||
#ifdef DEBUG
|
||||
fmt::println("[Engine:Cleanup] Destroying the swapchain...");
|
||||
@ -1011,6 +1044,38 @@ void Engine::drawBackground(
|
||||
|
||||
}
|
||||
|
||||
void Engine::drawImgui(
|
||||
VkCommandBuffer cmd,
|
||||
VkImageView targetImageView
|
||||
) {
|
||||
VkRenderingAttachmentInfo colorAttachment {
|
||||
vkinit::attachmentInfo(
|
||||
targetImageView,
|
||||
nullptr,
|
||||
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
|
||||
)
|
||||
};
|
||||
VkRenderingInfo renderInfo {
|
||||
vkinit::renderingInfo(
|
||||
_swapchainExtent,
|
||||
&colorAttachment,
|
||||
nullptr
|
||||
)
|
||||
};
|
||||
|
||||
vkCmdBeginRendering(
|
||||
cmd,
|
||||
&renderInfo
|
||||
);
|
||||
|
||||
ImGui_ImplVulkan_RenderDrawData(
|
||||
ImGui::GetDrawData(),
|
||||
cmd
|
||||
);
|
||||
|
||||
vkCmdEndRendering(cmd);
|
||||
}
|
||||
|
||||
void Engine::immediateSubmit(
|
||||
std::function<
|
||||
void(VkCommandBuffer cmd)
|
||||
@ -1080,5 +1145,7 @@ void Engine::immediateSubmit(
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
#define INITIALIZERS_H
|
||||
// Normal header
|
||||
#include "Common/Types.h"
|
||||
#include <vulkan/vulkan_core.h>
|
||||
|
||||
namespace vkinit {
|
||||
VkCommandPoolCreateInfo commandPoolCreateInfo(
|
||||
@ -57,6 +58,17 @@ namespace vkinit {
|
||||
VkImageAspectFlags aspectFlags
|
||||
);
|
||||
|
||||
VkRenderingAttachmentInfo attachmentInfo(
|
||||
VkImageView view,
|
||||
VkClearValue* clear,
|
||||
VkImageLayout layout /*= VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL*/
|
||||
);
|
||||
|
||||
VkRenderingInfo renderingInfo(
|
||||
VkExtent2D renderExtent,
|
||||
VkRenderingAttachmentInfo* colorAttachment,
|
||||
VkRenderingAttachmentInfo* depthAttachment
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -242,6 +254,52 @@ namespace vkinit {
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
VkRenderingAttachmentInfo attachmentInfo(
|
||||
VkImageView view,
|
||||
VkClearValue* clear,
|
||||
VkImageLayout layout /*= VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL*/
|
||||
) {
|
||||
VkRenderingAttachmentInfo colorAttachment {
|
||||
.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
|
||||
.pNext = nullptr,
|
||||
.imageView = view,
|
||||
.imageLayout = layout,
|
||||
.loadOp = clear ? VK_ATTACHMENT_LOAD_OP_CLEAR : VK_ATTACHMENT_LOAD_OP_LOAD,
|
||||
.storeOp = VK_ATTACHMENT_STORE_OP_STORE
|
||||
};
|
||||
|
||||
if (clear) {
|
||||
colorAttachment.clearValue = *clear;
|
||||
}
|
||||
|
||||
return colorAttachment;
|
||||
}
|
||||
|
||||
VkRenderingInfo renderingInfo(
|
||||
VkExtent2D renderExtent,
|
||||
VkRenderingAttachmentInfo* colorAttachment,
|
||||
VkRenderingAttachmentInfo* depthAttachment
|
||||
) {
|
||||
VkRenderingInfo renderInfo {
|
||||
.sType = VK_STRUCTURE_TYPE_RENDERING_INFO,
|
||||
.pNext = nullptr,
|
||||
.renderArea = VkRect2D {
|
||||
VkOffset2D {
|
||||
0,
|
||||
0
|
||||
}, renderExtent
|
||||
},
|
||||
.layerCount = 1,
|
||||
.colorAttachmentCount = 1,
|
||||
.pColorAttachments = colorAttachment,
|
||||
.pDepthAttachment = depthAttachment,
|
||||
.pStencilAttachment = nullptr
|
||||
};
|
||||
return renderInfo;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user