Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@
[submodule "engine/vendor/stb"]
path = engine/vendor/stb
url = https://github.com/bald-org/stb
[submodule "engine/vendor/assimp"]
path = engine/vendor/assimp
url = https://github.com/bald-org/assimp.git
119 changes: 96 additions & 23 deletions engine/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,74 @@ cmake_minimum_required(VERSION 3.14)
project(bald_engine)

#### LIBRARIES
SET(OpenGL_GL_PREFERENCE GLVND)

set(ASSIMP_BUILD_TESTS OFF)

set(ASSIMP_BUILD_AMF_IMPORTER FALSE)
set(ASSIMP_BUILD_3DS_IMPORTER FALSE)
set(ASSIMP_BUILD_AC_IMPORTER FALSE)
set(ASSIMP_BUILD_ASE_IMPORTER FALSE)
set(ASSIMP_BUILD_ASSBIN_IMPORTER FALSE)
set(ASSIMP_BUILD_BVH_IMPORTER FALSE)
set(ASSIMP_BUILD_COLLADA_IMPORTER FALSE)
set(ASSIMP_BUILD_DXF_IMPORTER FALSE)
set(ASSIMP_BUILD_CSM_IMPORTER FALSE)
set(ASSIMP_BUILD_HMP_IMPORTER FALSE)
set(ASSIMP_BUILD_IRRMESH_IMPORTER FALSE)
set(ASSIMP_BUILD_IRR_IMPORTER FALSE)
set(ASSIMP_BUILD_LWO_IMPORTER FALSE)
set(ASSIMP_BUILD_LWS_IMPORTER FALSE)
set(ASSIMP_BUILD_MD2_IMPORTER FALSE)
set(ASSIMP_BUILD_MD3_IMPORTER FALSE)
set(ASSIMP_BUILD_MD5_IMPORTER FALSE)
set(ASSIMP_BUILD_MDC_IMPORTER FALSE)
set(ASSIMP_BUILD_MDL_IMPORTER FALSE)
set(ASSIMP_BUILD_NFF_IMPORTER FALSE)
set(ASSIMP_BUILD_NDO_IMPORTER FALSE)
set(ASSIMP_BUILD_OFF_IMPORTER FALSE)
set(ASSIMP_BUILD_OBJ_IMPORTER TRUE)
set(ASSIMP_BUILD_OGRE_IMPORTER FALSE)
set(ASSIMP_BUILD_OPENGEX_IMPORTER FALSE)
set(ASSIMP_BUILD_PLY_IMPORTER FALSE)
set(ASSIMP_BUILD_MS3D_IMPORTER FALSE)
set(ASSIMP_BUILD_COB_IMPORTER FALSE)
set(ASSIMP_BUILD_BLEND_IMPORTER TRUE)
set(ASSIMP_BUILD_IFC_IMPORTER FALSE)
set(ASSIMP_BUILD_XGL_IMPORTER FALSE)
set(ASSIMP_BUILD_FBX_IMPORTER FALSE)
set(ASSIMP_BUILD_Q3D_IMPORTER FALSE)
set(ASSIMP_BUILD_Q3BSP_IMPORTER FALSE)
set(ASSIMP_BUILD_RAW_IMPORTER FALSE)
set(ASSIMP_BUILD_SIB_IMPORTER FALSE)
set(ASSIMP_BUILD_SMD_IMPORTER FALSE)
set(ASSIMP_BUILD_STL_IMPORTER FALSE)
set(ASSIMP_BUILD_TERRAGEN_IMPORTER FALSE)
set(ASSIMP_BUILD_3D_IMPORTER FALSE)
set(ASSIMP_BUILD_X_IMPORTER FALSE)
set(ASSIMP_BUILD_X3D_IMPORTER FALSE)
set(ASSIMP_BUILD_GLTF_IMPORTER FALSE)
set(ASSIMP_BUILD_3MF_IMPORTER FALSE)
set(ASSIMP_BUILD_MMD_IMPORTER FALSE)
set(ASSIMP_BUILD_STEP_IMPORTER FALSE)
set(ASSIMP_BUILD_B3D_IMPORTER FALSE)


set(ASSIMP_BUILD_3DS_EXPORTER FALSE)
set(ASSIMP_BUILD_ASSBIN_EXPORTER FALSE)
set(ASSIMP_BUILD_ASSXML_EXPORTER FALSE)
set(ASSIMP_BUILD_COLLADA_EXPORTER FALSE)
set(ASSIMP_BUILD_OBJ_EXPORTER FALSE)
set(ASSIMP_BUILD_OPENGEX_EXPORTER FALSE)
set(ASSIMP_BUILD_PLY_EXPORTER FALSE)
set(ASSIMP_BUILD_FBX_EXPORTER FALSE)
set(ASSIMP_BUILD_STL_EXPORTER FALSE)
set(ASSIMP_BUILD_X_EXPORTER FALSE)
set(ASSIMP_BUILD_X3D_EXPORTER FALSE)
set(ASSIMP_BUILD_GLTF_EXPORTER FALSE)
set(ASSIMP_BUILD_3MF_EXPORTER FALSE)
set(ASSIMP_BUILD_ASSJSON_EXPORTER FALSE)
set(ASSIMP_BUILD_STEP_EXPORTER FALSE)

list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/vendor/cotire/CMake/)

Expand All @@ -14,29 +82,32 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/vendor/glad/)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/vendor/glm/)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/vendor/glfw/)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/vendor/imgui/)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/vendor/assimp)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/vendor/stb/)

set(${PROJECT_NAME}_include_dirs
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/src/core
${CMAKE_CURRENT_SOURCE_DIR}/src/core/app
${CMAKE_CURRENT_SOURCE_DIR}/src/core/debug
${CMAKE_CURRENT_SOURCE_DIR}/src/core/debug/ui
${CMAKE_CURRENT_SOURCE_DIR}/src/core/events
${CMAKE_CURRENT_SOURCE_DIR}/src/core/events/callback
${CMAKE_CURRENT_SOURCE_DIR}/src/core/graphics
${CMAKE_CURRENT_SOURCE_DIR}/src/core/input
${CMAKE_CURRENT_SOURCE_DIR}/src/core/platform
${CMAKE_CURRENT_SOURCE_DIR}/src/core/utils
${CMAKE_CURRENT_SOURCE_DIR}/src/math
${CMAKE_CURRENT_SOURCE_DIR}/vendor/glfw/include/
${CMAKE_CURRENT_SOURCE_DIR}/vendor/glad/include/
${CMAKE_CURRENT_SOURCE_DIR}/vendor/glm/
${CMAKE_CURRENT_SOURCE_DIR}/vendor/imgui/
CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/src/core
${CMAKE_CURRENT_SOURCE_DIR}/src/core/app
${CMAKE_CURRENT_SOURCE_DIR}/src/core/debug
${CMAKE_CURRENT_SOURCE_DIR}/src/core/debug/ui
${CMAKE_CURRENT_SOURCE_DIR}/src/core/events
${CMAKE_CURRENT_SOURCE_DIR}/src/core/events/callback
${CMAKE_CURRENT_SOURCE_DIR}/src/core/graphics
${CMAKE_CURRENT_SOURCE_DIR}/src/core/input
${CMAKE_CURRENT_SOURCE_DIR}/src/core/platform
${CMAKE_CURRENT_SOURCE_DIR}/src/core/utils
${CMAKE_CURRENT_SOURCE_DIR}/src/math
${CMAKE_CURRENT_SOURCE_DIR}/vendor/glfw/include/
${CMAKE_CURRENT_SOURCE_DIR}/vendor/glad/include/
${CMAKE_CURRENT_SOURCE_DIR}/vendor/glm/
${CMAKE_CURRENT_SOURCE_DIR}/vendor/imgui/
CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)

include_directories(${bald_engine_include_dirs})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/vendor/assimp/include/)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/vendor/assimp/include/)

#### END-LIBRARIES

Expand Down Expand Up @@ -74,7 +145,7 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

add_library(bald_engine STATIC
add_library(bald_engine STATIC
${CMAKE_CURRENT_SOURCE_DIR}/src/core/app/application.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/core/app/layer_stack.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/core/utils/file_manager.cpp
Expand All @@ -101,7 +172,10 @@ add_library(bald_engine STATIC
${CMAKE_CURRENT_SOURCE_DIR}/src/core/platform/opengl/textures/opengl_texture.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/core/utils/file_manager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/core/utils/image.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/core/utils/split_string.cpp )
${CMAKE_CURRENT_SOURCE_DIR}/src/core/utils/split_string.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/core/graphics/rendering/mesh/mesh.h ${CMAKE_CURRENT_SOURCE_DIR}/src/core/graphics/rendering/mesh/mesh.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/core/graphics/rendering/model/model.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/core/graphics/rendering/model/model.h
)

if (APPLE_BUILD)
target_link_libraries(bald_engine
Expand All @@ -115,14 +189,13 @@ if (APPLE_BUILD)
"-framework IOKit"
"-framework CoreVideo")
elseif (LINUX_BUILD)
target_link_libraries(bald_engine glad glfw glm imgui stb GL X11 Xi Xrandr Xxf86vm Xinerama Xcursor rt m pthread dl)
target_link_libraries(bald_engine glad glfw glm imgui stb GL X11 Xi Xrandr Xxf86vm Xinerama Xcursor rt m pthread dl assimp)
else ()
target_link_libraries(bald_engine glad glfw glm imgui stb)
target_link_libraries(bald_engine glad glfw glm imgui stb assimp)
endif ()

target_include_directories(bald_engine INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src)


if(DEFINE_DEBUG)
target_compile_options(bald_engine PUBLIC ${DEBUG_COMPILE_FLAGS})
elseif(DEFINE_RELEASE)
Expand Down
20 changes: 20 additions & 0 deletions engine/res/shaders/texture.vert
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#version 330 core

layout (location = 0) in vec3 in_Position;
layout (location = 1) in vec4 in_Color;
layout (location = 2) in vec2 in_TexCoord;

uniform sampler2D texture_diffuse1;
uniform sampler2D texture_diffuse2;
uniform sampler2D texture_diffuse3;
uniform sampler2D texture_specular1;
uniform sampler2D texture_specular2;

out vec4 v_Color;
out vec2 v_TexCoord;

void main() {
gl_Position = vec4(in_Position.xyz, 1.0);
v_Color = in_Color;
v_TexCoord = in_TexCoord;
}
1 change: 1 addition & 0 deletions engine/src/bald.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,4 @@
#include "core/events/window_events.h"

#include "core/input/input_manager.h"
#include "core/graphics/rendering/model/model.h"
41 changes: 0 additions & 41 deletions engine/src/core/app/application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,6 @@ namespace Bald {
while(m_Running) {
m_Window->Clear();

// TRIANGLE
m_Shader->Bind();
m_Texture->Bind();
m_TriangleVAO->Bind();
glDrawElements(GL_TRIANGLES, static_cast<int32_t>(m_TriangleVAO->GetIndexBuffer()->GetCount()), GL_UNSIGNED_INT, nullptr);
// END TRIANGLE

#ifdef TRAVIS
if(timer.ElapsedSeconds() > 1.0){
EventManager::Emit<WindowClosedEvent>();
Expand Down Expand Up @@ -94,40 +87,6 @@ namespace Bald {

CORE_LOG_INFO("[Application] Initialization was successful");

// TRIANGLE
float vertices[] = {
//layout(location = 0) layout(location = 1) layout(location = 2)
-0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
-0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f,
0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f,
0.5f, -0.5f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f
};//

unsigned indices[] = {
0, 1, 2, // first triangle
0, 2, 3 // second triangle
};

Graphics::VertexBufferLayout layout = {
{0, Graphics::ShaderBuiltInType::Float, Graphics::ShaderBuiltInTypeSize::Vec3, "in_Position"},
{1, Graphics::ShaderBuiltInType::Float, Graphics::ShaderBuiltInTypeSize::Vec4, "in_Color"},
{2, Graphics::ShaderBuiltInType::Float, Graphics::ShaderBuiltInTypeSize::Vec2, "in_TexCoord"}
};

m_TriangleVBO = Graphics::VertexBuffer::Create(vertices, sizeof(vertices));
m_TriangleVBO->SetLayout(layout);

m_TriangleIBO = Graphics::IndexBuffer::Create(indices, sizeof(indices));

m_TriangleVAO = Graphics::VertexArray::Create();
m_TriangleVAO->AddVertexBuffer(m_TriangleVBO);
m_TriangleVAO->AddIndexBuffer(m_TriangleIBO);

m_Shader = Graphics::Shader::Create("../engine/res/shaders/basic.vert", "../engine/res/shaders/basic.frag");

m_Texture = Graphics::Texture::Create("../engine/res/textures/lena.jpg");
// END OF TRIANGLE

return true;
}

Expand Down
11 changes: 2 additions & 9 deletions engine/src/core/app/application.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ namespace Bald {
* @return [std::unique_ptr<Graphics::Window>] Pointer to window instance
*/

[[nodiscard]] inline std::weak_ptr<Graphics::Window> GetWindow() noexcept;
[[nodiscard]] inline std::shared_ptr<Graphics::Window> GetWindow() noexcept;

/**
* @fn Create
Expand Down Expand Up @@ -185,13 +185,6 @@ namespace Bald {
private:
static Application* m_Instance; /**< Application is a singleton, meaning only one instance of it can occur in a running program */

private:
std::shared_ptr<Graphics::VertexArray> m_TriangleVAO = nullptr;
std::shared_ptr<Graphics::VertexBuffer> m_TriangleVBO = nullptr;
std::shared_ptr<Graphics::IndexBuffer> m_TriangleIBO = nullptr;
std::shared_ptr<Graphics::Shader> m_Shader = nullptr;
std::shared_ptr<Graphics::Texture> m_Texture = nullptr;

}; // END OF CLASS Application

template<typename L, typename ... Args>
Expand Down Expand Up @@ -234,7 +227,7 @@ namespace Bald {
m_LayerStack.PopOverlayImmediately<L>();
}

inline std::weak_ptr<Graphics::Window> Application::GetWindow() noexcept {
inline std::shared_ptr<Graphics::Window> Application::GetWindow() noexcept {
return m_Window;
}

Expand Down
12 changes: 6 additions & 6 deletions engine/src/core/debug/ui/imgui_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ namespace Bald::Debug {
}

Application& app = Application::GetApplication();
if(auto window = app.GetWindow().lock()) {
ImGui_ImplGlfw_InitForOpenGL(window->GetWindow(), true);
}
auto window = app.GetWindow();
ImGui_ImplGlfw_InitForOpenGL(window->GetWindow(), true);


ImGui_ImplOpenGL3_Init("#version 330");
}
Expand Down Expand Up @@ -90,9 +90,9 @@ namespace Bald::Debug {
void ImGuiLayer::End() noexcept {
Application& app = Application::GetApplication();
ImGuiIO& io = ImGui::GetIO();
if(auto window = app.GetWindow().lock()) {
io.DisplaySize = ImVec2(static_cast<float>(window->GetWidth()), static_cast<float>(window->GetHeight()));
}
auto window = app.GetWindow();
io.DisplaySize = ImVec2(static_cast<float>(window->GetWidth()), static_cast<float>(window->GetHeight()));


ImGui::Render();
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
Expand Down
10 changes: 10 additions & 0 deletions engine/src/core/graphics/rendering/buffers/vertex_buffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,14 @@ namespace Bald::Graphics {
}
}

void VertexBuffer::SetLayout(Bald::Graphics::VertexBufferLayout&& layout) noexcept {
m_Layout = std::move(layout);

uint32_t offset = 0;
for(auto& layoutElement: m_Layout) {
layoutElement.SetOffset(offset);
offset += layoutElement.GetStride();
}
}

} // END OF NAMESPACE Bald::Graphics
2 changes: 2 additions & 0 deletions engine/src/core/graphics/rendering/buffers/vertex_buffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ namespace Bald::Graphics {

void SetLayout(const VertexBufferLayout& layout) noexcept;

void SetLayout(VertexBufferLayout&& layout) noexcept;

/**
* @fn GetLayout
* @brief Vertex buffer layout getter
Expand Down
59 changes: 59 additions & 0 deletions engine/src/core/graphics/rendering/mesh/mesh.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//
// Created by grzegorz on 24.08.2019.
//

#include "mesh.h"

namespace Bald::Graphics {


// Mesh::Mesh(const std::vector<Vertex>& vertices, const std::vector<uint32_t>& indices, const std::vector<std::shared_ptr<Texture>>& textures)
// :
// m_vertices(vertices), m_indices(indices), m_textures(textures),
// m_VBO(VertexBuffer::Create(&( m_vertices[0].Pos.x ), static_cast<unsigned int>(m_vertices.size()) * 8)),
// m_EBO(IndexBuffer::Create(m_indices.data(), static_cast<unsigned int>(m_indices.size()))),
// m_VAO(VertexArray::Create()) {
// Init();
// }
//
// Mesh::Mesh(std::vector<Vertex>&& vertices, std::vector<uint32_t>&& indices, std::vector<std::shared_ptr<Texture>>&& textures)
// :
// m_vertices(std::move(vertices)), m_indices(std::move(indices)), m_textures(std::move(textures)),
// m_VBO(VertexBuffer::Create(&( m_vertices[0].Pos.x ), static_cast<unsigned int>(m_vertices.size()) * 8)),
// m_EBO(IndexBuffer::Create(m_indices.data(), static_cast<unsigned int>(m_indices.size()))),
// m_VAO(VertexArray::Create()) {
// Init();
// }
//
// void Mesh::Init() {
// m_VBO->SetLayout({
// {0, ShaderBuiltInType::Float, ShaderBuiltInTypeSize::Vec3, "in_Position"},
// {1, ShaderBuiltInType::Float, ShaderBuiltInTypeSize::Vec3, "in_Normal"},
// {2, ShaderBuiltInType::Float, ShaderBuiltInTypeSize::Vec2, "in_TexCoord"}
// });
//
// m_VAO->AddVertexBuffer(m_VBO);
// m_VAO->AddIndexBuffer(m_EBO);
// }
//
// void Mesh::Draw([[maybe_unused]]const Shader& shader) {
// unsigned int diffuseNr = 1;
// unsigned int specularNr = 1;
// for (unsigned int i = 0; i < m_textures.size(); i++) {
// m_textures[i]->Activate(static_cast<uint8_t>(GL_TEXTURE0 + i));
// std::string number;
// std::string name = m_textures[i]->type;
// if (name == "texture_diffuse")
// number = std::to_string(diffuseNr++);
// else if (name == "texture_specular")
// number = std::to_string(specularNr++);
//
// shader.SetUniform1f((( "material." + name ).append(number)).c_str(), static_cast<float>(i));
// m_textures[i]->Bind();
// }
// glActiveTexture(GL_TEXTURE0);
// m_VAO->Bind();
// glDrawElements(GL_TRIANGLES, static_cast<int>(m_indices.size()), GL_UNSIGNED_INT, 0);
// m_VAO->Unbind();
// }
}
Loading