From 72f51d5ef6750e9e65a0eb0c0eea7169edbdc0d4 Mon Sep 17 00:00:00 2001 From: Azad Kshitij Date: Sun, 25 Jul 2021 14:21:38 +0530 Subject: [PATCH] Working with Nvidia and Intel graphics driver Will not work with AMD as of now --- Dependencies.lua | 2 +- Sandbox/premake5.lua | 2 +- Tridor/imgui.ini | 2 +- Tridor/premake5.lua | 15 + Tridor/src/EditorLayer.cpp | 17 +- Tridor/src/EditorLayer.h | 1 - Triger/src/Triger/Core/Assert.h | 2 +- Triger/src/Triger/Debug/Instrumentor.h | 2 +- .../src/Triger/Platform/Linux/LinuxWindow.h | 4 +- .../Platform/OpenGL/OpenGLRendererAPI.cpp | 2 +- .../Triger/Platform/OpenGL/OpenGLShader.cpp | 272 +++++++++--------- .../Platform/OpenGL/OpenGLUniformBuffer.cpp | 26 ++ .../Platform/OpenGL/OpenGLUniformBuffer.h | 17 ++ .../Platform/Windows/WindowsPlatformUtils.cpp | 2 +- .../Triger/Platform/Windows/WindowsWindow.cpp | 169 +++++------ Triger/src/Triger/Renderer/Renderer2D.cpp | 7 +- Triger/src/Triger/Renderer/UniformBuffer.cpp | 4 +- Triger/src/Triger/Utils/PlatformUtils.h | 1 - scripts/Setup.py | 2 +- vendor/premake/premake5.lua | 3 +- 20 files changed, 312 insertions(+), 240 deletions(-) diff --git a/Dependencies.lua b/Dependencies.lua index 15f727b..28f37ba 100644 --- a/Dependencies.lua +++ b/Dependencies.lua @@ -20,7 +20,7 @@ LibraryDir = {} LibraryDir["VulkanSDK"] = "%{VULKAN_SDK}/Lib" LibraryDir["VulkanSDK_Debug"] = "%{wks.location}/Triger/vendor/VulkanSDK/Lib" - +LibraryDir["VulkanSDK_DebugDLL"] = "%{wks.location}/Triger/vendor/VulkanSDK/Bin" Library = {} Library["Vulkan"] = "%{LibraryDir.VulkanSDK}/vulkan-1.lib" Library["VulkanUtils"] = "%{LibraryDir.VulkanSDK}/VkLayer_utils.lib" diff --git a/Sandbox/premake5.lua b/Sandbox/premake5.lua index 041171e..88f37c3 100644 --- a/Sandbox/premake5.lua +++ b/Sandbox/premake5.lua @@ -2,7 +2,7 @@ project "Sandbox" kind "ConsoleApp" language "C++" cppdialect "C++17" - staticruntime "on" + staticruntime "off" targetdir ("%{wks.location}/bin/" .. outputdir .. "/%{prj.name}") objdir ("%{wks.location}/bin-int/" .. outputdir .. "/%{prj.name}") diff --git a/Tridor/imgui.ini b/Tridor/imgui.ini index 2488633..3f4ce1d 100644 --- a/Tridor/imgui.ini +++ b/Tridor/imgui.ini @@ -58,7 +58,7 @@ Collapsed=0 DockId=0x0000000A,0 [Docking][Data] -DockSpace ID=0x3BC79352 Window=0x4647B76E Pos=137,191 Size=1280,695 Split=X Selected=0x1C33C293 +DockSpace ID=0x3BC79352 Window=0x4647B76E Pos=41,95 Size=1280,695 Split=X Selected=0x1C33C293 DockNode ID=0x00000005 Parent=0x3BC79352 SizeRef=771,994 Split=X DockNode ID=0x00000001 Parent=0x00000005 SizeRef=298,701 Selected=0x1C33C293 DockNode ID=0x00000003 Parent=0x00000005 SizeRef=980,701 Split=X Selected=0x995B0CF8 diff --git a/Tridor/premake5.lua b/Tridor/premake5.lua index fecc90f..6f0c34b 100644 --- a/Tridor/premake5.lua +++ b/Tridor/premake5.lua @@ -39,12 +39,27 @@ project "Tridor" runtime "Debug" symbols "on" + postbuildcommands + { + "{COPYDIR} \"%{LibraryDir.VulkanSDK_DebugDLL}\" \"%{cfg.targetdir}\"" + } + filter "configurations:Release" defines "TR_RELEASE" runtime "Release" optimize "on" + + postbuildcommands + { + "{COPYDIR} \"%{LibraryDir.VulkanSDK_DebugDLL}\" \"%{cfg.targetdir}\"" + } filter "configurations:Dist" defines "TR_DIST" runtime "Release" optimize "on" + + postbuildcommands + { + "{COPYDIR} \"%{LibraryDir.VulkanSDK_DebugDLL}\" \"%{cfg.targetdir}\"" + } diff --git a/Tridor/src/EditorLayer.cpp b/Tridor/src/EditorLayer.cpp index c6fc210..3c98f3e 100644 --- a/Tridor/src/EditorLayer.cpp +++ b/Tridor/src/EditorLayer.cpp @@ -13,13 +13,20 @@ #include #include -#include "Log/AppLog.h" -#include "Triger.h" +#include "Triger/Scene/SceneSerializer.h" + +#include "Triger/Utils/PlatformUtils.h" #include "ImGuizmo.h" #include "Triger/Math/Math.h" +#include "Log/AppLog.h" + +#include "ImGuizmo.h" + +#include "Triger/Math/Math.h" + namespace Triger { @@ -566,11 +573,11 @@ namespace Triger } void EditorLayer::SaveSceneAs() { - std::optional filepath = FileDialogs::SaveFile("Triger Scene (*.triger)\0*.triger\0"); - if (filepath) + std::string filepath = FileDialogs::SaveFile("Triger Scene (*.triger)\0*.triger\0"); + if (!filepath.empty()) { SceneSerializer serializer(m_ActiveScene); - serializer.Serialize(*filepath); + serializer.Serialize(filepath); } } diff --git a/Tridor/src/EditorLayer.h b/Tridor/src/EditorLayer.h index 8e14907..f8b4491 100644 --- a/Tridor/src/EditorLayer.h +++ b/Tridor/src/EditorLayer.h @@ -11,7 +11,6 @@ #include "Triger.h" #include "Panels/SceneHierarchyPanel.h" -#include "Triger/Renderer/EditorCamera.h" namespace Triger { diff --git a/Triger/src/Triger/Core/Assert.h b/Triger/src/Triger/Core/Assert.h index b3b6f42..38befb8 100644 --- a/Triger/src/Triger/Core/Assert.h +++ b/Triger/src/Triger/Core/Assert.h @@ -12,7 +12,7 @@ { \ if (!(check)) \ { \ - HZ##type##ERROR(msg, __VA_ARGS__); \ + TR##type##ERROR(msg, __VA_ARGS__); \ TR_DEBUGBREAK(); \ } \ } diff --git a/Triger/src/Triger/Debug/Instrumentor.h b/Triger/src/Triger/Debug/Instrumentor.h index ccfd3cc..54c7faf 100644 --- a/Triger/src/Triger/Debug/Instrumentor.h +++ b/Triger/src/Triger/Debug/Instrumentor.h @@ -19,7 +19,7 @@ #include #include "Triger/Core/Log.h" - namespace Triger +namespace Triger { using FloatingPointMicroseconds = std::chrono::duration; diff --git a/Triger/src/Triger/Platform/Linux/LinuxWindow.h b/Triger/src/Triger/Platform/Linux/LinuxWindow.h index ceeced6..472fbc4 100644 --- a/Triger/src/Triger/Platform/Linux/LinuxWindow.h +++ b/Triger/src/Triger/Platform/Linux/LinuxWindow.h @@ -8,7 +8,7 @@ // Created By : Azad Kshitij @AzadKshitij //--------------------------------------------------------------------------*/ -#pragma one +#pragma once #include "Triger/Core/Window.h" #include "Triger/Renderer/GraphicsContext.h" @@ -57,4 +57,4 @@ namespace Triger WindowData m_Data; }; -} \ No newline at end of file +} diff --git a/Triger/src/Triger/Platform/OpenGL/OpenGLRendererAPI.cpp b/Triger/src/Triger/Platform/OpenGL/OpenGLRendererAPI.cpp index 10e035f..fcf9aae 100644 --- a/Triger/src/Triger/Platform/OpenGL/OpenGLRendererAPI.cpp +++ b/Triger/src/Triger/Platform/OpenGL/OpenGLRendererAPI.cpp @@ -82,4 +82,4 @@ namespace Triger glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_INT, nullptr); glBindTexture(GL_TEXTURE_2D, 0); } -} \ No newline at end of file +} diff --git a/Triger/src/Triger/Platform/OpenGL/OpenGLShader.cpp b/Triger/src/Triger/Platform/OpenGL/OpenGLShader.cpp index 7ef2fbf..335fdfe 100644 --- a/Triger/src/Triger/Platform/OpenGL/OpenGLShader.cpp +++ b/Triger/src/Triger/Platform/OpenGL/OpenGLShader.cpp @@ -327,180 +327,178 @@ namespace Triger void OpenGLShader::CreateProgram() { GLuint program = glCreateProgram(); - break; - } - std::vector shaderIDs; - for (auto &&[stage, spirv] : m_OpenGLSPIRV) - { - GLuint shaderID = shaderIDs.emplace_back(glCreateShader(stage)); - glShaderBinary(1, &shaderID, GL_SHADER_BINARY_FORMAT_SPIR_V, spirv.data(), spirv.size() * sizeof(uint32_t)); - glSpecializeShader(shaderID, "main", 0, nullptr, nullptr); - glAttachShader(program, shaderID); - } + std::vector shaderIDs; + for (auto &&[stage, spirv] : m_OpenGLSPIRV) + { + GLuint shaderID = shaderIDs.emplace_back(glCreateShader(stage)); + glShaderBinary(1, &shaderID, GL_SHADER_BINARY_FORMAT_SPIR_V, spirv.data(), spirv.size() * sizeof(uint32_t)); + glSpecializeShader(shaderID, "main", 0, nullptr, nullptr); + glAttachShader(program, shaderID); + } - // Link our program - glLinkProgram(program); + // Link our program + glLinkProgram(program); - // Note the different functions here: glGetProgram* instead of glGetShader*. - GLint isLinked; - glGetProgramiv(program, GL_LINK_STATUS, &isLinked); - if (isLinked == GL_FALSE) - { - GLint maxLength; - glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength); + // Note the different functions here: glGetProgram* instead of glGetShader*. + GLint isLinked; + glGetProgramiv(program, GL_LINK_STATUS, &isLinked); + if (isLinked == GL_FALSE) + { + GLint maxLength; + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength); - // The maxLength includes the NULL character - std::vector infoLog(maxLength); - glGetProgramInfoLog(program, maxLength, &maxLength, infoLog.data()); - TR_CORE_ERROR("Shader linking failed ({0}):\n{1}", m_FilePath, infoLog.data()); + // The maxLength includes the NULL character + std::vector infoLog(maxLength); + glGetProgramInfoLog(program, maxLength, &maxLength, infoLog.data()); + TR_CORE_ERROR("Shader linking failed ({0}):\n{1}", m_FilePath, infoLog.data()); - // We don't need the program anymore. - glDeleteProgram(program); + // We don't need the program anymore. + glDeleteProgram(program); + + for (auto id : shaderIDs) + glDeleteShader(id); + } for (auto id : shaderIDs) + { + glDetachShader(program, id); glDeleteShader(id); - } + } - for (auto id : shaderIDs) - { - glDetachShader(program, id); - glDeleteShader(id); + m_RendererID = program; } - m_RendererID = program; -} - -void OpenGLShader::Reflect(GLenum stage, const std::vector &shaderData) -{ - spirv_cross::Compiler compiler(shaderData); - spirv_cross::ShaderResources resources = compiler.get_shader_resources(); + void OpenGLShader::Reflect(GLenum stage, const std::vector &shaderData) + { + spirv_cross::Compiler compiler(shaderData); + spirv_cross::ShaderResources resources = compiler.get_shader_resources(); - TR_CORE_TRACE("OpenGLShader::Reflect - {0} {1}", Utils::GLShaderStageToString(stage), m_FilePath); - TR_CORE_TRACE(" {0} uniform buffers", resources.uniform_buffers.size()); - TR_CORE_TRACE(" {0} resources", resources.sampled_images.size()); + TR_CORE_TRACE("OpenGLShader::Reflect - {0} {1}", Utils::GLShaderStageToString(stage), m_FilePath); + TR_CORE_TRACE(" {0} uniform buffers", resources.uniform_buffers.size()); + TR_CORE_TRACE(" {0} resources", resources.sampled_images.size()); - TR_CORE_TRACE("Uniform buffers:"); - for (const auto &resource : resources.uniform_buffers) - { - const auto &bufferType = compiler.get_type(resource.base_type_id); - uint32_t bufferSize = compiler.get_declared_struct_size(bufferType); - uint32_t binding = compiler.get_decoration(resource.id, spv::DecorationBinding); - int memberCount = bufferType.member_types.size(); - - TR_CORE_TRACE(" {0}", resource.name); - TR_CORE_TRACE(" Size = {0}", bufferSize); - TR_CORE_TRACE(" Binding = {0}", binding); - TR_CORE_TRACE(" Members = {0}", memberCount); + TR_CORE_TRACE("Uniform buffers:"); + for (const auto &resource : resources.uniform_buffers) + { + const auto &bufferType = compiler.get_type(resource.base_type_id); + uint32_t bufferSize = compiler.get_declared_struct_size(bufferType); + uint32_t binding = compiler.get_decoration(resource.id, spv::DecorationBinding); + int memberCount = bufferType.member_types.size(); + + TR_CORE_TRACE(" {0}", resource.name); + TR_CORE_TRACE(" Size = {0}", bufferSize); + TR_CORE_TRACE(" Binding = {0}", binding); + TR_CORE_TRACE(" Members = {0}", memberCount); + } } -} -void OpenGLShader::Bind() const -{ - TR_PROFILE_FUNCTION(); + void OpenGLShader::Bind() const + { + TR_PROFILE_FUNCTION(); - glUseProgram(m_RendererID); -} + glUseProgram(m_RendererID); + } -void OpenGLShader::Unbind() const -{ - TR_PROFILE_FUNCTION(); + void OpenGLShader::Unbind() const + { + TR_PROFILE_FUNCTION(); - glUseProgram(0); -} + glUseProgram(0); + } -void OpenGLShader::SetInt(const std::string &name, int value) -{ - TR_PROFILE_FUNCTION(); + void OpenGLShader::SetInt(const std::string &name, int value) + { + TR_PROFILE_FUNCTION(); - UploadUniformInt(name, value); -} + UploadUniformInt(name, value); + } -void OpenGLShader::SetIntArray(const std::string &name, int *values, uint32_t count) -{ - UploadUniformIntArray(name, values, count); -} + void OpenGLShader::SetIntArray(const std::string &name, int *values, uint32_t count) + { + UploadUniformIntArray(name, values, count); + } -void OpenGLShader::SetFloat(const std::string &name, float value) -{ - TR_PROFILE_FUNCTION(); + void OpenGLShader::SetFloat(const std::string &name, float value) + { + TR_PROFILE_FUNCTION(); - UploadUniformFloat(name, value); -} + UploadUniformFloat(name, value); + } -void OpenGLShader::SetFloat2(const std::string &name, const glm::vec2 &value) -{ - TR_PROFILE_FUNCTION(); + void OpenGLShader::SetFloat2(const std::string &name, const glm::vec2 &value) + { + TR_PROFILE_FUNCTION(); - UploadUniformFloat2(name, value); -} + UploadUniformFloat2(name, value); + } -void OpenGLShader::SetFloat3(const std::string &name, const glm::vec3 &value) -{ - TR_PROFILE_FUNCTION(); + void OpenGLShader::SetFloat3(const std::string &name, const glm::vec3 &value) + { + TR_PROFILE_FUNCTION(); - UploadUniformFloat3(name, value); -} + UploadUniformFloat3(name, value); + } -void OpenGLShader::SetFloat4(const std::string &name, const glm::vec4 &value) -{ - TR_PROFILE_FUNCTION(); + void OpenGLShader::SetFloat4(const std::string &name, const glm::vec4 &value) + { + TR_PROFILE_FUNCTION(); - UploadUniformFloat4(name, value); -} + UploadUniformFloat4(name, value); + } -void OpenGLShader::SetMat4(const std::string &name, const glm::mat4 &value) -{ - TR_PROFILE_FUNCTION(); + void OpenGLShader::SetMat4(const std::string &name, const glm::mat4 &value) + { + TR_PROFILE_FUNCTION(); - UploadUniformMat4(name, value); -} + UploadUniformMat4(name, value); + } -void OpenGLShader::UploadUniformInt(const std::string &name, int value) -{ - GLint location = glGetUniformLocation(m_RendererID, name.c_str()); - glUniform1i(location, value); -} + void OpenGLShader::UploadUniformInt(const std::string &name, int value) + { + GLint location = glGetUniformLocation(m_RendererID, name.c_str()); + glUniform1i(location, value); + } -void OpenGLShader::UploadUniformIntArray(const std::string &name, int *values, uint32_t count) -{ - GLint location = glGetUniformLocation(m_RendererID, name.c_str()); - glUniform1iv(location, count, values); -} + void OpenGLShader::UploadUniformIntArray(const std::string &name, int *values, uint32_t count) + { + GLint location = glGetUniformLocation(m_RendererID, name.c_str()); + glUniform1iv(location, count, values); + } -void OpenGLShader::UploadUniformFloat(const std::string &name, float value) -{ - GLint location = glGetUniformLocation(m_RendererID, name.c_str()); - glUniform1f(location, value); -} + void OpenGLShader::UploadUniformFloat(const std::string &name, float value) + { + GLint location = glGetUniformLocation(m_RendererID, name.c_str()); + glUniform1f(location, value); + } -void OpenGLShader::UploadUniformFloat2(const std::string &name, const glm::vec2 &value) -{ - GLint location = glGetUniformLocation(m_RendererID, name.c_str()); - glUniform2f(location, value.x, value.y); -} + void OpenGLShader::UploadUniformFloat2(const std::string &name, const glm::vec2 &value) + { + GLint location = glGetUniformLocation(m_RendererID, name.c_str()); + glUniform2f(location, value.x, value.y); + } -void OpenGLShader::UploadUniformFloat3(const std::string &name, const glm::vec3 &value) -{ - GLint location = glGetUniformLocation(m_RendererID, name.c_str()); - glUniform3f(location, value.x, value.y, value.z); -} + void OpenGLShader::UploadUniformFloat3(const std::string &name, const glm::vec3 &value) + { + GLint location = glGetUniformLocation(m_RendererID, name.c_str()); + glUniform3f(location, value.x, value.y, value.z); + } -void OpenGLShader::UploadUniformFloat4(const std::string &name, const glm::vec4 &value) -{ - GLint location = glGetUniformLocation(m_RendererID, name.c_str()); - glUniform4f(location, value.x, value.y, value.z, value.w); -} + void OpenGLShader::UploadUniformFloat4(const std::string &name, const glm::vec4 &value) + { + GLint location = glGetUniformLocation(m_RendererID, name.c_str()); + glUniform4f(location, value.x, value.y, value.z, value.w); + } -void OpenGLShader::UploadUniformMat3(const std::string &name, const glm::mat3 &matrix) -{ - GLint location = glGetUniformLocation(m_RendererID, name.c_str()); - glUniformMatrix3fv(location, 1, GL_FALSE, glm::value_ptr(matrix)); -} + void OpenGLShader::UploadUniformMat3(const std::string &name, const glm::mat3 &matrix) + { + GLint location = glGetUniformLocation(m_RendererID, name.c_str()); + glUniformMatrix3fv(location, 1, GL_FALSE, glm::value_ptr(matrix)); + } -void OpenGLShader::UploadUniformMat4(const std::string &name, const glm::mat4 &matrix) -{ - GLint location = glGetUniformLocation(m_RendererID, name.c_str()); - glUniformMatrix4fv(location, 1, GL_FALSE, glm::value_ptr(matrix)); -} + void OpenGLShader::UploadUniformMat4(const std::string &name, const glm::mat4 &matrix) + { + GLint location = glGetUniformLocation(m_RendererID, name.c_str()); + glUniformMatrix4fv(location, 1, GL_FALSE, glm::value_ptr(matrix)); + } } diff --git a/Triger/src/Triger/Platform/OpenGL/OpenGLUniformBuffer.cpp b/Triger/src/Triger/Platform/OpenGL/OpenGLUniformBuffer.cpp index e69de29..68572ac 100644 --- a/Triger/src/Triger/Platform/OpenGL/OpenGLUniformBuffer.cpp +++ b/Triger/src/Triger/Platform/OpenGL/OpenGLUniformBuffer.cpp @@ -0,0 +1,26 @@ +#include "trpch.h" +#include "OpenGLUniformBuffer.h" + +#include + +namespace Triger { + + OpenGLUniformBuffer::OpenGLUniformBuffer(uint32_t size, uint32_t binding) + { + glCreateBuffers(1, &m_RendererID); + glNamedBufferData(m_RendererID, size, nullptr, GL_DYNAMIC_DRAW); // TODO: investigate usage hint + glBindBufferBase(GL_UNIFORM_BUFFER, binding, m_RendererID); + } + + OpenGLUniformBuffer::~OpenGLUniformBuffer() + { + glDeleteBuffers(1, &m_RendererID); + } + + + void OpenGLUniformBuffer::SetData(const void* data, uint32_t size, uint32_t offset) + { + glNamedBufferSubData(m_RendererID, offset, size, data); + } + +} diff --git a/Triger/src/Triger/Platform/OpenGL/OpenGLUniformBuffer.h b/Triger/src/Triger/Platform/OpenGL/OpenGLUniformBuffer.h index e69de29..d5ff909 100644 --- a/Triger/src/Triger/Platform/OpenGL/OpenGLUniformBuffer.h +++ b/Triger/src/Triger/Platform/OpenGL/OpenGLUniformBuffer.h @@ -0,0 +1,17 @@ +#pragma once + +#include "Triger/Renderer/UniformBuffer.h" + +namespace Triger { + + class OpenGLUniformBuffer : public UniformBuffer + { + public: + OpenGLUniformBuffer(uint32_t size, uint32_t binding); + virtual ~OpenGLUniformBuffer(); + + virtual void SetData(const void* data, uint32_t size, uint32_t offset = 0) override; + private: + uint32_t m_RendererID = 0; + }; +} diff --git a/Triger/src/Triger/Platform/Windows/WindowsPlatformUtils.cpp b/Triger/src/Triger/Platform/Windows/WindowsPlatformUtils.cpp index 2325f27..cad64ed 100644 --- a/Triger/src/Triger/Platform/Windows/WindowsPlatformUtils.cpp +++ b/Triger/src/Triger/Platform/Windows/WindowsPlatformUtils.cpp @@ -20,7 +20,7 @@ namespace Triger { - std::string FileDialogs::OpenFile(const char *filter) + std::string FileDialogs::OpenFile(const char* filter) { OPENFILENAMEA ofn; CHAR szFile[260] = {0}; diff --git a/Triger/src/Triger/Platform/Windows/WindowsWindow.cpp b/Triger/src/Triger/Platform/Windows/WindowsWindow.cpp index 7b23af1..1e47a66 100644 --- a/Triger/src/Triger/Platform/Windows/WindowsWindow.cpp +++ b/Triger/src/Triger/Platform/Windows/WindowsWindow.cpp @@ -99,87 +99,94 @@ namespace Triger SetVSync(true); // Set GLFW callbacks - glfwSetWindowSizeCallback(m_Window, [](GLFWwindow *window, int width, int height) { - WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); - data.Width = width; - data.Height = height; - - WindowResizeEvent event(width, height); - data.EventCallback(event); - }); - - glfwSetWindowCloseCallback(m_Window, [](GLFWwindow *window) { - WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); - WindowCloseEvent event; - data.EventCallback(event); - }); - - glfwSetKeyCallback(m_Window, [](GLFWwindow *window, int key, int scancode, int action, int mods) { - WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); - - switch (action) - { - case GLFW_PRESS: - { - KeyPressedEvent event(key, 0); - data.EventCallback(event); - break; - } - case GLFW_RELEASE: - { - KeyReleasedEvent event(key); - data.EventCallback(event); - break; - } - case GLFW_REPEAT: - { - KeyPressedEvent event(key, 1); - data.EventCallback(event); - break; - } - } - }); - - glfwSetCharCallback(m_Window, [](GLFWwindow *window, unsigned int keycode) { - WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); - - KeyTypedEvent event(keycode); - data.EventCallback(event); - }); - - glfwSetMouseButtonCallback(m_Window, [](GLFWwindow *window, int button, int action, int mods) { - WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); - - switch (action) - { - case GLFW_PRESS: - { - MouseButtonPressedEvent event(button); - data.EventCallback(event); - break; - } - case GLFW_RELEASE: - { - MouseButtonReleasedEvent event(button); - data.EventCallback(event); - break; - } - } - }); - - glfwSetScrollCallback(m_Window, [](GLFWwindow *window, double xOffset, double yOffset) { - WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); - - MouseScrolledEvent event((float)xOffset, (float)yOffset); - data.EventCallback(event); - }); - - glfwSetCursorPosCallback(m_Window, [](GLFWwindow *window, double xPos, double yPos) { - WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); - - MouseMovedEvent event((float)xPos, (float)yPos); - data.EventCallback(event); - }); + glfwSetWindowSizeCallback(m_Window, [](GLFWwindow *window, int width, int height) + { + WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); + data.Width = width; + data.Height = height; + + WindowResizeEvent event(width, height); + data.EventCallback(event); + }); + + glfwSetWindowCloseCallback(m_Window, [](GLFWwindow *window) + { + WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); + WindowCloseEvent event; + data.EventCallback(event); + }); + + glfwSetKeyCallback(m_Window, [](GLFWwindow *window, int key, int scancode, int action, int mods) + { + WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); + + switch (action) + { + case GLFW_PRESS: + { + KeyPressedEvent event(key, 0); + data.EventCallback(event); + break; + } + case GLFW_RELEASE: + { + KeyReleasedEvent event(key); + data.EventCallback(event); + break; + } + case GLFW_REPEAT: + { + KeyPressedEvent event(key, 1); + data.EventCallback(event); + break; + } + } + }); + + glfwSetCharCallback(m_Window, [](GLFWwindow *window, unsigned int keycode) + { + WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); + + KeyTypedEvent event(keycode); + data.EventCallback(event); + }); + + glfwSetMouseButtonCallback(m_Window, [](GLFWwindow *window, int button, int action, int mods) + { + WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); + + switch (action) + { + case GLFW_PRESS: + { + MouseButtonPressedEvent event(button); + data.EventCallback(event); + break; + } + case GLFW_RELEASE: + { + MouseButtonReleasedEvent event(button); + data.EventCallback(event); + break; + } + } + }); + + glfwSetScrollCallback(m_Window, [](GLFWwindow *window, double xOffset, double yOffset) + { + WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); + + MouseScrolledEvent event((float)xOffset, (float)yOffset); + data.EventCallback(event); + }); + + glfwSetCursorPosCallback(m_Window, [](GLFWwindow *window, double xPos, double yPos) + { + WindowData &data = *(WindowData *)glfwGetWindowUserPointer(window); + + MouseMovedEvent event((float)xPos, (float)yPos); + data.EventCallback(event); + }); } void WindowsWindow::Shutdown() diff --git a/Triger/src/Triger/Renderer/Renderer2D.cpp b/Triger/src/Triger/Renderer/Renderer2D.cpp index 752bfa8..af697bb 100644 --- a/Triger/src/Triger/Renderer/Renderer2D.cpp +++ b/Triger/src/Triger/Renderer/Renderer2D.cpp @@ -134,8 +134,11 @@ namespace Triger { TR_PROFILE_FUNCTION(); - s_Data.TextureShader->Bind(); - s_Data.TextureShader->SetMat4("u_ViewProjection", camera.GetViewProjectionMatrix()); + //s_Data.TextureShader->Bind(); + //s_Data.TextureShader->SetMat4("u_ViewProjection", camera.GetViewProjectionMatrix()); + + s_Data.CameraBuffer.ViewProjection = camera.GetViewProjectionMatrix(); + s_Data.CameraUniformBuffer->SetData(&s_Data.CameraBuffer, sizeof(Renderer2DData::CameraData)); StartBatch(); } diff --git a/Triger/src/Triger/Renderer/UniformBuffer.cpp b/Triger/src/Triger/Renderer/UniformBuffer.cpp index 83ed9f1..08fca52 100644 --- a/Triger/src/Triger/Renderer/UniformBuffer.cpp +++ b/Triger/src/Triger/Renderer/UniformBuffer.cpp @@ -2,7 +2,7 @@ #include "UniformBuffer.h" #include "Triger/Renderer/Renderer.h" -#include "Platform/OpenGL/OpenGLUniformBuffer.h" +#include "Triger/Platform/OpenGL/OpenGLUniformBuffer.h" namespace Triger { @@ -22,4 +22,4 @@ namespace Triger return nullptr; } -} \ No newline at end of file +} diff --git a/Triger/src/Triger/Utils/PlatformUtils.h b/Triger/src/Triger/Utils/PlatformUtils.h index f567698..282ae68 100644 --- a/Triger/src/Triger/Utils/PlatformUtils.h +++ b/Triger/src/Triger/Utils/PlatformUtils.h @@ -10,7 +10,6 @@ #pragma once #include -#include namespace Triger { diff --git a/scripts/Setup.py b/scripts/Setup.py index abcae30..f2b38db 100644 --- a/scripts/Setup.py +++ b/scripts/Setup.py @@ -22,5 +22,5 @@ print("\nSetup completed!") else: - print("Triger requires Premake to generate project files.") + print("Trigar requires Premake to generate project files.") diff --git a/vendor/premake/premake5.lua b/vendor/premake/premake5.lua index ab734b1..8dffc57 100644 --- a/vendor/premake/premake5.lua +++ b/vendor/premake/premake5.lua @@ -12,5 +12,6 @@ project "Premake" postbuildmessage "Regenerating project files with Premake5!" postbuildcommands { - "%{prj.location}bin/premake5 %{_ACTION} --file=\"%{wks.location}premake5.lua\"" + -- "%{prj.location}bin/premake5 %{_ACTION} --file=\"%{wks.location}premake5.lua\"" + "\"%{prj.location}bin/premake5\" %{_ACTION} --file=\"%{wks.location}premake5.lua\"" }