From 589c434d3731cb3373494268283fb99b31b98643 Mon Sep 17 00:00:00 2001 From: Jean Philippe Date: Fri, 10 Jan 2025 20:31:28 +0100 Subject: [PATCH 1/2] attempted to run on macos --- Resources/Shaders/infinite_grid.frag | 2 +- Resources/Shaders/utility.glsl | 2 +- Tetragrama/Components/LogUIComponent.cpp | 7 +++-- Tetragrama/Components/LogUIComponent.h | 1 + ZEngine/ZEngine/Hardwares/VulkanDevice.cpp | 9 +++--- ZEngine/ZEngine/Logging/Logger.cpp | 29 ++++++++++++------- ZEngine/ZEngine/Logging/Logger.h | 29 ++++++++++--------- .../Rendering/Renderers/GraphicRenderer.cpp | 4 +-- .../Rendering/Renderers/ImGUIRenderer.cpp | 10 +++---- 9 files changed, 53 insertions(+), 40 deletions(-) diff --git a/Resources/Shaders/infinite_grid.frag b/Resources/Shaders/infinite_grid.frag index 307ed184..14fceda8 100644 --- a/Resources/Shaders/infinite_grid.frag +++ b/Resources/Shaders/infinite_grid.frag @@ -17,7 +17,7 @@ void main() { vec2 dudv = vec2(length(vec2(dFdx(uv.x), dFdy(uv.x))), length(vec2(dFdx(uv.y), dFdy(uv.y)))); - float lodLevel = max(0.0, log10((length(dudv) * gridMinPixelsBetweenCells) / gridCellSize) + 1.0); + float lodLevel = max(0.0, log_10((length(dudv) * gridMinPixelsBetweenCells) / gridCellSize) + 1.0); float lodFade = fract(lodLevel); float lod0 = gridCellSize * pow(10.0, floor(lodLevel + 0)); diff --git a/Resources/Shaders/utility.glsl b/Resources/Shaders/utility.glsl index 3e1ac3ca..c25e5a90 100644 --- a/Resources/Shaders/utility.glsl +++ b/Resources/Shaders/utility.glsl @@ -1,4 +1,4 @@ -float log10(float x) +float log_10(float x) { return log(x) / log(10.0); } diff --git a/Tetragrama/Components/LogUIComponent.cpp b/Tetragrama/Components/LogUIComponent.cpp index 722088e6..11b55d1a 100644 --- a/Tetragrama/Components/LogUIComponent.cpp +++ b/Tetragrama/Components/LogUIComponent.cpp @@ -11,10 +11,13 @@ namespace Tetragrama::Components { LogUIComponent::LogUIComponent(std::string_view name, bool visibility) : UIComponent(name, visibility, false) { - Logger::AddEventHandler(std::bind(&LogUIComponent::OnLog, this, std::placeholders::_1)); + auto m_cookie = Logger::AddEventHandler(std::bind(&LogUIComponent::OnLog, this, std::placeholders::_1)); } - LogUIComponent::~LogUIComponent() {} + LogUIComponent::~LogUIComponent() + { + Logger::RemoveEventHandler(m_cookie); + } void LogUIComponent::Update(ZEngine::Core::TimeStep dt) {} diff --git a/Tetragrama/Components/LogUIComponent.h b/Tetragrama/Components/LogUIComponent.h index b08c407d..b4c8d2cf 100644 --- a/Tetragrama/Components/LogUIComponent.h +++ b/Tetragrama/Components/LogUIComponent.h @@ -21,6 +21,7 @@ namespace Tetragrama::Components std::string GetMessageType(const ZEngine::Logging::LogMessage& message); private: + uint32_t m_cookie{0}; uint32_t m_maxCount{1024}; uint32_t m_currentCount{0}; bool m_auto_scroll{true}; diff --git a/ZEngine/ZEngine/Hardwares/VulkanDevice.cpp b/ZEngine/ZEngine/Hardwares/VulkanDevice.cpp index 7084dc9f..c8ee83f2 100644 --- a/ZEngine/ZEngine/Hardwares/VulkanDevice.cpp +++ b/ZEngine/ZEngine/Hardwares/VulkanDevice.cpp @@ -31,7 +31,7 @@ namespace ZEngine::Hardwares /*Create Vulkan Instance*/ VkApplicationInfo app_info = {.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO, .pNext = VK_NULL_HANDLE, .pApplicationName = ApplicationName.data(), .applicationVersion = 1, .pEngineName = EngineName.data(), .engineVersion = 1, .apiVersion = VK_API_VERSION_1_3}; - VkInstanceCreateInfo instance_create_info = {.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, .pNext = VK_NULL_HANDLE, .flags = 0, .pApplicationInfo = &app_info}; + VkInstanceCreateInfo instance_create_info = {.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, .pNext = VK_NULL_HANDLE, .flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR, .pApplicationInfo = &app_info}; auto layer_properties = m_layer.GetInstanceLayerProperties(); @@ -39,7 +39,7 @@ namespace ZEngine::Hardwares std::vector selected_layer_property_collection; #ifdef ENABLE_VULKAN_VALIDATION_LAYER - std::unordered_set validation_layer_name_collection = {"VK_LAYER_LUNARG_api_dump", "VK_LAYER_KHRONOS_validation", "VK_LAYER_LUNARG_monitor", "VK_LAYER_LUNARG_screenshot"}; + std::unordered_set validation_layer_name_collection = {"VK_LAYER_LUNARG_api_dump", "VK_LAYER_KHRONOS_validation"}; for (std::string_view layer_name : validation_layer_name_collection) { @@ -91,6 +91,7 @@ namespace ZEngine::Hardwares } } + enabled_extension_layer_name_collection.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); instance_create_info.enabledLayerCount = enabled_layer_name_collection.size(); instance_create_info.ppEnabledLayerNames = enabled_layer_name_collection.data(); instance_create_info.enabledExtensionCount = enabled_extension_layer_name_collection.size(); @@ -144,7 +145,7 @@ namespace ZEngine::Hardwares vkGetPhysicalDeviceProperties(physical_device, &physical_device_properties); vkGetPhysicalDeviceFeatures(physical_device, &physical_device_feature); - if ((physical_device_feature.geometryShader == VK_TRUE) && (physical_device_feature.samplerAnisotropy == VK_TRUE) && ((physical_device_properties.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU) || (physical_device_properties.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU))) + if ((physical_device_feature.samplerAnisotropy == VK_TRUE) && ((physical_device_properties.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU) || (physical_device_properties.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU))) { PhysicalDevice = physical_device; PhysicalDeviceProperties = physical_device_properties; @@ -155,7 +156,7 @@ namespace ZEngine::Hardwares } std::vector requested_device_enabled_layer_name_collection = {}; - std::vector requested_device_extension_layer_name_collection = {VK_KHR_SWAPCHAIN_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME}; + std::vector requested_device_extension_layer_name_collection = {VK_KHR_SWAPCHAIN_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, "VK_KHR_portability_subset"}; for (LayerProperty& layer : selected_layer_property_collection) { diff --git a/ZEngine/ZEngine/Logging/Logger.cpp b/ZEngine/ZEngine/Logging/Logger.cpp index 55f4c32e..9447d693 100644 --- a/ZEngine/ZEngine/Logging/Logger.cpp +++ b/ZEngine/ZEngine/Logging/Logger.cpp @@ -9,13 +9,13 @@ namespace ZEngine::Logging { - static std::atomic_uint32_t g_cookie = 0; - spdlog::sink_ptr Logger::s_sink = nullptr; - std::recursive_mutex Logger::s_mutex = {}; - std::vector> Logger::s_logger_collection = {}; - std::vector> Logger::s_log_event_handlers = {}; + static std::atomic_uint32_t g_cookie = 0; + spdlog::sink_ptr Logger::s_sink = nullptr; + std::recursive_mutex Logger::s_mutex = {}; + std::vector> Logger::s_logger_collection = {}; + std::map Logger::s_log_event_handlers = {}; - void Logger::Initialize(const LoggerConfiguration& configuration) + void Logger::Initialize(const LoggerConfiguration& configuration) { const auto current_directoy = std::filesystem::current_path(); const auto log_directory = fmt::format("{0}/{1}", current_directoy.string(), configuration.OutputDirectory); @@ -53,16 +53,23 @@ namespace ZEngine::Logging void Logger::Dispose() { s_log_event_handlers.clear(); - s_log_event_handlers.shrink_to_fit(); - Flush(); s_logger_collection.clear(); - s_logger_collection.shrink_to_fit(); } - void Logger::AddEventHandler(LogEventHandler handler) + uint32_t Logger::AddEventHandler(LogEventHandler handler) { - s_log_event_handlers.emplace_back(g_cookie++, handler); + std::unique_lock l(s_mutex); + uint32_t cookie = g_cookie++; + s_log_event_handlers[cookie] = handler; + return cookie; } + + void Logger::RemoveEventHandler(uint32_t cookie) + { + std::unique_lock l(s_mutex); + s_log_event_handlers.erase(cookie); + } + } // namespace ZEngine::Logging diff --git a/ZEngine/ZEngine/Logging/Logger.h b/ZEngine/ZEngine/Logging/Logger.h index 5ef27018..ad6ee711 100644 --- a/ZEngine/ZEngine/Logging/Logger.h +++ b/ZEngine/ZEngine/Logging/Logger.h @@ -18,25 +18,26 @@ namespace ZEngine::Logging { using LogEventHandler = std::function; - static void Initialize(const LoggerConfiguration&); - static void Flush(); - static void Dispose(); - static void AddEventHandler(LogEventHandler handler); - - static void Info(std::string msg); - static void Trace(std::string msg); - static void Warn(std::string msg); - static void Error(std::string msg); - static void Critical(std::string msg); + static void Initialize(const LoggerConfiguration&); + static void Flush(); + static void Dispose(); + static uint32_t AddEventHandler(LogEventHandler handler); + static void RemoveEventHandler(uint32_t cookie); + + static void Info(std::string msg); + static void Trace(std::string msg); + static void Warn(std::string msg); + static void Error(std::string msg); + static void Critical(std::string msg); private: Logger() = delete; Logger(const Logger&) = delete; - static spdlog::sink_ptr s_sink; - static std::recursive_mutex s_mutex; - static std::vector> s_logger_collection; - static std::vector> s_log_event_handlers; + static spdlog::sink_ptr s_sink; + static std::recursive_mutex s_mutex; + static std::vector> s_logger_collection; + static std::map s_log_event_handlers; }; inline void Logger::Info(std::string msg) diff --git a/ZEngine/ZEngine/Rendering/Renderers/GraphicRenderer.cpp b/ZEngine/ZEngine/Rendering/Renderers/GraphicRenderer.cpp index 75e8ff45..b4feaf10 100644 --- a/ZEngine/ZEngine/Rendering/Renderers/GraphicRenderer.cpp +++ b/ZEngine/ZEngine/Rendering/Renderers/GraphicRenderer.cpp @@ -75,8 +75,8 @@ namespace ZEngine::Rendering::Renderers RenderGraph->AddCallbackPass("Depth Pre-Pass", scene_depth_prepass); RenderGraph->AddCallbackPass("Skybox Pass", skybox_pass); RenderGraph->AddCallbackPass("Grid Pass", grid_pass); - RenderGraph->AddCallbackPass("G-Buffer Pass", gbuffer_pass); - RenderGraph->AddCallbackPass("Lighting Pass", lighting_pass); + // RenderGraph->AddCallbackPass("G-Buffer Pass", gbuffer_pass); + // RenderGraph->AddCallbackPass("Lighting Pass", lighting_pass); RenderGraph->Setup(); RenderGraph->Compile(); diff --git a/ZEngine/ZEngine/Rendering/Renderers/ImGUIRenderer.cpp b/ZEngine/ZEngine/Rendering/Renderers/ImGUIRenderer.cpp index 4f7c2c97..80d4db72 100644 --- a/ZEngine/ZEngine/Rendering/Renderers/ImGUIRenderer.cpp +++ b/ZEngine/ZEngine/Rendering/Renderers/ImGUIRenderer.cpp @@ -48,10 +48,10 @@ namespace ZEngine::Rendering::Renderers style.ChildBorderSize = 0.f; style.FrameRounding = 7.0f; - auto window_property = current_window->GetWindowProperty(); - io.Fonts->AddFontFromFileTTF("Settings/Fonts/OpenSans/OpenSans-Bold.ttf", 17.f * window_property.DpiScale); - io.FontDefault = io.Fonts->AddFontFromFileTTF("Settings/Fonts/OpenSans/OpenSans-Regular.ttf", 17.f * window_property.DpiScale); - io.FontGlobalScale = window_property.DpiScale; + // auto window_property = current_window->GetWindowProperty(); + // io.Fonts->AddFontFromFileTTF("Settings/Fonts/OpenSans/OpenSans-Bold.ttf", 0.0f); + // io.FontDefault = io.Fonts->AddFontFromFileTTF("Settings/Fonts/OpenSans/OpenSans-Regular.ttf", 0.0f); + // io.FontGlobalScale = window_property.DpiScale; ImGui_ImplGlfw_InitForVulkan(reinterpret_cast(current_window->GetNativeWindow()), false); @@ -344,4 +344,4 @@ namespace ZEngine::Rendering::Renderers return m_frame_output; } -} // namespace ZEngine::Rendering::Renderers \ No newline at end of file +} // namespace ZEngine::Rendering::Renderers From b9485074d6d92c5acdb6564dd5530ec7dbe2df07 Mon Sep 17 00:00:00 2001 From: Jean Philippe Date: Tue, 28 Jan 2025 00:36:10 +0100 Subject: [PATCH 2/2] fixed imgui renderer font scaling --- ZEngine/ZEngine/Hardwares/VulkanDevice.cpp | 2 +- ZEngine/ZEngine/Rendering/Renderers/ImGUIRenderer.cpp | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/ZEngine/ZEngine/Hardwares/VulkanDevice.cpp b/ZEngine/ZEngine/Hardwares/VulkanDevice.cpp index c8ee83f2..4e4d07a4 100644 --- a/ZEngine/ZEngine/Hardwares/VulkanDevice.cpp +++ b/ZEngine/ZEngine/Hardwares/VulkanDevice.cpp @@ -39,7 +39,7 @@ namespace ZEngine::Hardwares std::vector selected_layer_property_collection; #ifdef ENABLE_VULKAN_VALIDATION_LAYER - std::unordered_set validation_layer_name_collection = {"VK_LAYER_LUNARG_api_dump", "VK_LAYER_KHRONOS_validation"}; + std::unordered_set validation_layer_name_collection = {"VK_LAYER_LUNARG_api_dump", "VK_LAYER_KHRONOS_validation", "VK_LAYER_LUNAR_monitor"}; for (std::string_view layer_name : validation_layer_name_collection) { diff --git a/ZEngine/ZEngine/Rendering/Renderers/ImGUIRenderer.cpp b/ZEngine/ZEngine/Rendering/Renderers/ImGUIRenderer.cpp index 80d4db72..5936dfff 100644 --- a/ZEngine/ZEngine/Rendering/Renderers/ImGUIRenderer.cpp +++ b/ZEngine/ZEngine/Rendering/Renderers/ImGUIRenderer.cpp @@ -48,10 +48,7 @@ namespace ZEngine::Rendering::Renderers style.ChildBorderSize = 0.f; style.FrameRounding = 7.0f; - // auto window_property = current_window->GetWindowProperty(); - // io.Fonts->AddFontFromFileTTF("Settings/Fonts/OpenSans/OpenSans-Bold.ttf", 0.0f); - // io.FontDefault = io.Fonts->AddFontFromFileTTF("Settings/Fonts/OpenSans/OpenSans-Regular.ttf", 0.0f); - // io.FontGlobalScale = window_property.DpiScale; + io.FontDefault = io.Fonts->AddFontFromFileTTF("Settings/Fonts/OpenSans/OpenSans-Regular.ttf", 13.0f); ImGui_ImplGlfw_InitForVulkan(reinterpret_cast(current_window->GetNativeWindow()), false);