Skip to content

Commit

Permalink
Added animation components
Browse files Browse the repository at this point in the history
  • Loading branch information
denis-beqiraj committed Apr 22, 2024
1 parent 6e70c86 commit e67a3ab
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 31 deletions.
2 changes: 1 addition & 1 deletion Engine/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(SOURCES "src/engine.cpp" ../GUI/src/MeshInfo.cpp ../GUI/include/MeshInfo.h src/Containers/VAO.cpp include/Containers/VAO.h src/Containers/VBO.cpp include/Containers/VBO.h src/Containers/EBO.cpp include/Containers/EBO.h ../GUI/src/ImGuiTabs.cpp ../GUI/include/ImGuiTabs.h src/Pipelines/PipelineSSR.cpp include/Pipelines/PipelineSSR.h src/Components/Component.cpp include/Components/Component.h src/Components/PhysicsMeshComponent.cpp include/Components/PhysicsMeshComponent.h src/Handlers/ComponentsHandler.cpp include/Handlers/ComponentsHandler.h ../GUI/src/FolderView.cpp ../GUI/include/FolderView.h)

add_library(PrismaEngineDll STATIC ${SOURCES} "include/SceneObjects/Node.h" "src/SceneObjects/Node.cpp" "include/Helpers/Shader.h" "include/Helpers/stb_image.h" "include/SceneData/SceneLoader.h" "src/SceneData/SceneLoader.cpp" "include/Containers/Texture.h" "src/Containers/Texture.cpp" "include/SceneObjects/Camera.h" "src/SceneObjects/Camera.cpp" "include/SceneObjects/Mesh.h" "src/SceneObjects/Mesh.cpp" "include/Pipelines/PipelineForward.h" "src/Pipelines/PipelineForward.cpp" "include/Helpers/Settings.h" "include/Components/MaterialComponent.h" "src/Components/MaterialComponent.cpp" "include/SceneObjects/Light.h" "../GUI/include/ImGuiDebug.h" "../GUI/src/ImguiDebug.cpp" "../GUI/include/ImGuiCamera.h" "../GUI/src/ImguiCamera.cpp" "include/Containers/Ubo.h" "include/GlobalData/Defines.h" "include/Handlers/LightHandler.h" "src/Handlers/LightHandler.cpp" "include/Helpers/MultithreadLoad.h" "src/Helpers/MultithreadLoad.cpp" "include/Helpers/NodeHelper.h" "src/Helpers/NodeHelper.cpp" "include/SceneData/SceneData.h" "include/Helpers/ScenePrinter.h" "src/Helpers/ScenePrinter.cpp" "include/Containers/SSBO.h" "include/Handlers/MeshHandler.h" "src/Handlers/MeshHandler.cpp" "include/GlobalData/PrismaFunc.h" "src/GlobalData/PrismaFunc.cpp" "include/SceneData/MeshIndirect.h" "src/SceneData/MeshIndirect.cpp" "include/Containers/FBO.h" "src/Containers/FBO.cpp" "include/Pipelines/PipelineFullScreen.h" "src/Pipelines/PipelineFullScreen.cpp" "include/Pipelines/PipelineDeferred.h" "src/Pipelines/PipelineDeferred.cpp" "include/GlobalData/GlobalData.h" "include/GlobalData/Keys.h" "src/Containers/SSBO.cpp" "src/Containers/UBO.cpp" "include/Pipelines/PipelineHandler.h" "src/Pipelines/PipelineHandler.cpp" "include/Helpers/SettingsLoader.h" "src/Helpers/SettingsLoader.cpp" "include/Pipelines/PipelineSkybox.h" "src/Pipelines/PipelineSkybox.cpp" "src/GlobalData/GlobalData.cpp" "include/Pipelines/PipelineDIffuseIrradiance.h" "src/Pipelines/PipelineDiffuseIrradiance.cpp" "include/Pipelines/PipelinePrefilter.h" "src/Pipelines/PipelinePrefilter.cpp" "include/Pipelines/PipelineLUT.h" "src/Pipelines/PipelineLUT.cpp" "include/Pipelines/PipelineOmniShadow.h" "src/Pipelines/PipelineOmniShadow.cpp" "include/Helpers/IBLBuilder.h" "src/Helpers/IBLBuilder.cpp" "include/Pipelines/GenericShadow.h" "include/Physics/Physics.h" "src/Physics/Physics.cpp" "include/Physics/Line.h" "src/Physics/Line.cpp" "include/Physics/DrawDebugger.h" "src/Physics/DrawDebugger.cpp" "include/Helpers/GarbageCollector.h" "src/Helpers/GarbageCollector.cpp" ../GUI/src/ImGuiSelector.cpp ../GUI/include/ImGuiSelector.h include/Helpers/PrismaMath.h "include/Postprocess/Postprocess.h" "src/Postprocess/Postprocess.cpp" "include/Postprocess/PostprocessEffect.h" "src/Postprocess/PostprocessEffect.cpp" "include/Pipelines/PipelineCSM.h" "src/Pipelines/PipelineCSM.cpp" "include/Helpers/ClusterCalculation.h" "src/Helpers/ClusterCalculation.cpp" "include/Helpers/Timer.h")
add_library(PrismaEngineDll STATIC ${SOURCES} "include/SceneObjects/Node.h" "src/SceneObjects/Node.cpp" "include/Helpers/Shader.h" "include/Helpers/stb_image.h" "include/SceneData/SceneLoader.h" "src/SceneData/SceneLoader.cpp" "include/Containers/Texture.h" "src/Containers/Texture.cpp" "include/SceneObjects/Camera.h" "src/SceneObjects/Camera.cpp" "include/SceneObjects/Mesh.h" "src/SceneObjects/Mesh.cpp" "include/Pipelines/PipelineForward.h" "src/Pipelines/PipelineForward.cpp" "include/Helpers/Settings.h" "include/Components/MaterialComponent.h" "src/Components/MaterialComponent.cpp" "include/SceneObjects/Light.h" "../GUI/include/ImGuiDebug.h" "../GUI/src/ImguiDebug.cpp" "../GUI/include/ImGuiCamera.h" "../GUI/src/ImguiCamera.cpp" "include/Containers/Ubo.h" "include/GlobalData/Defines.h" "include/Handlers/LightHandler.h" "src/Handlers/LightHandler.cpp" "include/Helpers/MultithreadLoad.h" "src/Helpers/MultithreadLoad.cpp" "include/Helpers/NodeHelper.h" "src/Helpers/NodeHelper.cpp" "include/SceneData/SceneData.h" "include/Helpers/ScenePrinter.h" "src/Helpers/ScenePrinter.cpp" "include/Containers/SSBO.h" "include/Handlers/MeshHandler.h" "src/Handlers/MeshHandler.cpp" "include/GlobalData/PrismaFunc.h" "src/GlobalData/PrismaFunc.cpp" "include/SceneData/MeshIndirect.h" "src/SceneData/MeshIndirect.cpp" "include/Containers/FBO.h" "src/Containers/FBO.cpp" "include/Pipelines/PipelineFullScreen.h" "src/Pipelines/PipelineFullScreen.cpp" "include/Pipelines/PipelineDeferred.h" "src/Pipelines/PipelineDeferred.cpp" "include/GlobalData/GlobalData.h" "include/GlobalData/Keys.h" "src/Containers/SSBO.cpp" "src/Containers/UBO.cpp" "include/Pipelines/PipelineHandler.h" "src/Pipelines/PipelineHandler.cpp" "include/Helpers/SettingsLoader.h" "src/Helpers/SettingsLoader.cpp" "include/Pipelines/PipelineSkybox.h" "src/Pipelines/PipelineSkybox.cpp" "src/GlobalData/GlobalData.cpp" "include/Pipelines/PipelineDIffuseIrradiance.h" "src/Pipelines/PipelineDiffuseIrradiance.cpp" "include/Pipelines/PipelinePrefilter.h" "src/Pipelines/PipelinePrefilter.cpp" "include/Pipelines/PipelineLUT.h" "src/Pipelines/PipelineLUT.cpp" "include/Pipelines/PipelineOmniShadow.h" "src/Pipelines/PipelineOmniShadow.cpp" "include/Helpers/IBLBuilder.h" "src/Helpers/IBLBuilder.cpp" "include/Pipelines/GenericShadow.h" "include/Physics/Physics.h" "src/Physics/Physics.cpp" "include/Physics/Line.h" "src/Physics/Line.cpp" "include/Physics/DrawDebugger.h" "src/Physics/DrawDebugger.cpp" "include/Helpers/GarbageCollector.h" "src/Helpers/GarbageCollector.cpp" ../GUI/src/ImGuiSelector.cpp ../GUI/include/ImGuiSelector.h include/Helpers/PrismaMath.h "include/Postprocess/Postprocess.h" "src/Postprocess/Postprocess.cpp" "include/Postprocess/PostprocessEffect.h" "src/Postprocess/PostprocessEffect.cpp" "include/Pipelines/PipelineCSM.h" "src/Pipelines/PipelineCSM.cpp" "include/Helpers/ClusterCalculation.h" "src/Helpers/ClusterCalculation.cpp" "include/Helpers/Timer.h" "include/Components/AnimatorComponent.h" "src/Components/AnimatorComponent.cpp")

find_package(nlohmann_json CONFIG REQUIRED)
find_package(imguizmo CONFIG REQUIRED)
Expand Down
6 changes: 6 additions & 0 deletions Engine/include/Components/AnimatorComponent.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include "Component.h"


class AnimatorComponent {

};
4 changes: 3 additions & 1 deletion Engine/include/SceneData/MeshIndirect.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ namespace Prisma {
MeshIndirect(const MeshIndirect&) = delete;
MeshIndirect& operator=(const MeshIndirect&) = delete;
void load();
Prisma::IndirectLoaded indirectLoaded();

void renderMeshes();

void update();
void updateSize();
void updateModels();
Expand Down
Empty file.
9 changes: 1 addition & 8 deletions Engine/src/Pipelines/PipelineCSM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,7 @@ void Prisma::PipelineCSM::update(glm::vec3 lightPos) {
glViewport(0, 0, m_width, m_height);
glBindFramebuffer(GL_FRAMEBUFFER, m_fbo);
glClear(GL_DEPTH_BUFFER_BIT);
//Render scene
const auto& indirectLoaded = Prisma::MeshIndirect::getInstance().indirectLoaded();

glBindVertexArray(indirectLoaded.m_vao);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, indirectLoaded.m_drawBuffer);
// Call glMultiDrawElementsIndirect to render
glMultiDrawElementsIndirect(GL_TRIANGLES, GL_UNSIGNED_INT, nullptr, static_cast<GLuint>(currentGlobalScene->meshes.size()), 0);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, 0);
Prisma::MeshIndirect::getInstance().renderMeshes();

glBindFramebuffer(GL_FRAMEBUFFER, 0);
glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); // don't forget to configure the viewport to the capture dimensions.
Expand Down
7 changes: 1 addition & 6 deletions Engine/src/Pipelines/PipelineDeferred.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,7 @@ void Prisma::PipelineDeferred::render(std::shared_ptr<Camera> camera)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
m_shader->use();

const auto& indirectLoaded = Prisma::MeshIndirect::getInstance().indirectLoaded();

glBindVertexArray(indirectLoaded.m_vao);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, indirectLoaded.m_drawBuffer);
// Call glMultiDrawElementsIndirect to render
glMultiDrawElementsIndirect(GL_TRIANGLES, GL_UNSIGNED_INT, nullptr, static_cast<GLuint>(currentGlobalScene->meshes.size()), 0);
Prisma::MeshIndirect::getInstance().renderMeshes();

// Unbind the buffer
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, 0);
Expand Down
7 changes: 1 addition & 6 deletions Engine/src/Pipelines/PipelineForward.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,7 @@ void Prisma::PipelineForward::render(std::shared_ptr<Camera> camera)
m_shader->setUVec3(m_gridSizePos, Prisma::ClusterCalculation::grids());
m_shader->setUVec2(m_screenDimensionsPos, { m_settings.width,m_settings.height });

const auto& indirectLoaded = Prisma::MeshIndirect::getInstance().indirectLoaded();

glBindVertexArray(indirectLoaded.m_vao);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, indirectLoaded.m_drawBuffer);

glMultiDrawElementsIndirect(GL_TRIANGLES, GL_UNSIGNED_INT, nullptr, static_cast<GLuint>(currentGlobalScene->meshes.size()), 0);
Prisma::MeshIndirect::getInstance().renderMeshes();

Prisma::PipelineSkybox::getInstance().render(camera);

Expand Down
8 changes: 1 addition & 7 deletions Engine/src/Pipelines/PipelineOmniShadow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,8 @@ void Prisma::PipelineOmniShadow::update(glm::vec3 lightPos) {
}
m_shader->setFloat(m_farPlanePos, m_farPlane);
m_shader->setVec3(m_lightPos, lightPos);
//Render scene
const auto& indirectLoaded = Prisma::MeshIndirect::getInstance().indirectLoaded();

glBindVertexArray(indirectLoaded.m_vao);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, indirectLoaded.m_drawBuffer);
// Call glMultiDrawElementsIndirect to render
glMultiDrawElementsIndirect(GL_TRIANGLES, GL_UNSIGNED_INT, nullptr, static_cast<GLuint>(currentGlobalScene->meshes.size()), 0);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, 0);
Prisma::MeshIndirect::getInstance().renderMeshes();

glBindFramebuffer(GL_FRAMEBUFFER, 0);
glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); // don't forget to configure the viewport to the capture dimensions.
Expand Down
7 changes: 5 additions & 2 deletions Engine/src/SceneData/MeshIndirect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,12 @@ void Prisma::MeshIndirect::load()
updateSize();
}

Prisma::IndirectLoaded Prisma::MeshIndirect::indirectLoaded()
void Prisma::MeshIndirect::renderMeshes()
{
return m_indirectLoaded;
m_vao->bind();
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, m_indirectDraw);
glMultiDrawElementsIndirect(GL_TRIANGLES, GL_UNSIGNED_INT, nullptr, static_cast<GLuint>(currentGlobalScene->meshes.size()), 0);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, 0);
}

void Prisma::MeshIndirect::update()
Expand Down

0 comments on commit e67a3ab

Please sign in to comment.