From 8fe3456c464fdc0f67801c6dfd5cdfe58fbe8b52 Mon Sep 17 00:00:00 2001 From: snowapril Date: Sat, 4 Nov 2023 12:08:57 +0900 Subject: [PATCH] feat : add initial class for scene objects --- CMakeLists.txt | 16 +----------- Dependencies/bootstrap.json | 6 ++--- Includes/VoxFlow/Core/Scene/Material.hpp | 14 +++++++++++ .../Core/Scene/PrimitiveBufferPool.hpp | 14 +++++++++++ Includes/VoxFlow/Core/Scene/SceneObject.hpp | 14 +++++++++++ .../VoxFlow/Core/Scene/SceneObjectLoader.hpp | 25 +++++++++++++++++++ Sources/VoxFlow/Core/CMakeLists.txt | 8 ++++++ Sources/VoxFlow/Core/Scene/Material.cpp | 7 ++++++ .../Core/Scene/PrimitiveBufferPool.cpp | 7 ++++++ Sources/VoxFlow/Core/Scene/SceneObject.cpp | 7 ++++++ .../VoxFlow/Core/Scene/SceneObjectLoader.cpp | 12 +++++++++ 11 files changed, 112 insertions(+), 18 deletions(-) create mode 100644 Includes/VoxFlow/Core/Scene/Material.hpp create mode 100644 Includes/VoxFlow/Core/Scene/PrimitiveBufferPool.hpp create mode 100644 Includes/VoxFlow/Core/Scene/SceneObject.hpp create mode 100644 Includes/VoxFlow/Core/Scene/SceneObjectLoader.hpp create mode 100644 Sources/VoxFlow/Core/Scene/Material.cpp create mode 100644 Sources/VoxFlow/Core/Scene/PrimitiveBufferPool.cpp create mode 100644 Sources/VoxFlow/Core/Scene/SceneObject.cpp create mode 100644 Sources/VoxFlow/Core/Scene/SceneObjectLoader.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index e23dea99..8081a82a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,7 +75,7 @@ include_directories(Dependencies/src/vulkan/include) include_directories(Dependencies/src/vma/src) include_directories(Dependencies/src/glfw/include) include_directories(Dependencies/src/glm) -include_directories(Dependencies/src/assimp/include) +include_directories(Dependencies/src/tinygltf) include_directories(Dependencies/src/etc2comp/EtcLib/Etc) include_directories(Dependencies/src/etc2comp/EtcLib/EtcCodec) include_directories(Dependencies/src/glslang/glslang/Include) @@ -103,16 +103,6 @@ set(GLFW_BUILD_DOCS OFF CACHE BOOL "") set(GLFW_INSTALL OFF CACHE BOOL "") add_subdirectory(Dependencies/src/glfw) -set(ASSIMP_NO_EXPORT ON CACHE BOOL "") -set(ASSIMP_BUILD_DRACO OFF CACHE BOOL "") -set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "") -set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "") -set(ASSIMP_INSTALL_PDB OFF CACHE BOOL "") -set(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT OFF CACHE BOOL "") -set(ASSIMP_BUILD_OBJ_IMPORTER ON CACHE BOOL "") -set(ASSIMP_BUILD_GLTF_IMPORTER ON CACHE BOOL "") -add_subdirectory(Dependencies/src/assimp) - set(MESHOPT_BUILD_DEMO OFF CACHE BOOL "") set(MESHOPT_BUILD_TOOLS OFF CACHE BOOL "") set(MESHOPT_BUILD_SHARED_LIBS OFF CACHE BOOL "") @@ -153,14 +143,10 @@ add_subdirectory(Dependencies/src/backward-cpp) set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(TARGET glfw PROPERTY FOLDER "ThirdPartyLibraries") -set_property(TARGET assimp PROPERTY FOLDER "ThirdPartyLibraries") set_property(TARGET EtcLib PROPERTY FOLDER "ThirdPartyLibraries") set_property(TARGET EtcTool PROPERTY FOLDER "ThirdPartyLibraries") set_property(TARGET meshoptimizer PROPERTY FOLDER "ThirdPartyLibraries") set_property(TARGET volk PROPERTY FOLDER "ThirdPartyLibraries") -if(WIN32) - set_property(TARGET UpdateAssimpLibsDebugSymbolsAndDLLs PROPERTY FOLDER "ThirdPartyLibraries") -endif() set_property(TARGET uninstall PROPERTY FOLDER "ThirdPartyLibraries") set_property(TARGET glslang PROPERTY FOLDER "ThirdPartyLibraries/glslang") set_property(TARGET OGLCompiler PROPERTY FOLDER "ThirdPartyLibraries/glslang") diff --git a/Dependencies/bootstrap.json b/Dependencies/bootstrap.json index dbb51bd4..47aa8860 100644 --- a/Dependencies/bootstrap.json +++ b/Dependencies/bootstrap.json @@ -64,11 +64,11 @@ } }, { - "name": "assimp", + "name": "tinygltf", "source": { "type": "git", - "url": "https://github.com/assimp/assimp.git", - "revision": "a9f82dbe0b8a658003f93c7b5108ee4521458a18" + "url": "https://github.com/syoyo/tinygltf.git", + "revision": "v2.8.18" } }, { diff --git a/Includes/VoxFlow/Core/Scene/Material.hpp b/Includes/VoxFlow/Core/Scene/Material.hpp new file mode 100644 index 00000000..2856261d --- /dev/null +++ b/Includes/VoxFlow/Core/Scene/Material.hpp @@ -0,0 +1,14 @@ +// Author : snowapril + +#ifndef VOX_FLOW_MATERIAL_HPP +#define VOX_FLOW_MATERIAL_HPP + +namespace VoxFlow +{ +class Material +{ + public: +}; +} // namespace VoxFlow + +#endif // VOX_FLOW_MATERIAL_HPP \ No newline at end of file diff --git a/Includes/VoxFlow/Core/Scene/PrimitiveBufferPool.hpp b/Includes/VoxFlow/Core/Scene/PrimitiveBufferPool.hpp new file mode 100644 index 00000000..e0a57613 --- /dev/null +++ b/Includes/VoxFlow/Core/Scene/PrimitiveBufferPool.hpp @@ -0,0 +1,14 @@ +// Author : snowapril + +#ifndef VOX_FLOW_PRIMITIVE_BUFFER_POOL_HPP +#define VOX_FLOW_PRIMITIVE_BUFFER_POOL_HPP + +namespace VoxFlow +{ +class PrimitiveBufferPool +{ + public: +}; +} // namespace VoxFlow + +#endif // VOX_FLOW_PRIMITIVE_BUFFER_POOL_HPP \ No newline at end of file diff --git a/Includes/VoxFlow/Core/Scene/SceneObject.hpp b/Includes/VoxFlow/Core/Scene/SceneObject.hpp new file mode 100644 index 00000000..fad44b40 --- /dev/null +++ b/Includes/VoxFlow/Core/Scene/SceneObject.hpp @@ -0,0 +1,14 @@ +// Author : snowapril + +#ifndef VOX_FLOW_SCENE_OBJECT_HPP +#define VOX_FLOW_SCENE_OBJECT_HPP + +namespace VoxFlow +{ +class SceneObject +{ + public: +}; +} // namespace VoxFlow + +#endif // VOX_FLOW_SCENE_OBJECT_HPP \ No newline at end of file diff --git a/Includes/VoxFlow/Core/Scene/SceneObjectLoader.hpp b/Includes/VoxFlow/Core/Scene/SceneObjectLoader.hpp new file mode 100644 index 00000000..e48290c5 --- /dev/null +++ b/Includes/VoxFlow/Core/Scene/SceneObjectLoader.hpp @@ -0,0 +1,25 @@ +// Author : snowapril + +#ifndef VOX_FLOW_SCENE_OBJECT_LOADER_HPP +#define VOX_FLOW_SCENE_OBJECT_LOADER_HPP + +#include +#include + +namespace VoxFlow +{ +class SceneObject; + + class SceneObjectLoader + { + public: + SceneObjectLoader(); + ~SceneObjectLoader(); + + public: + std::shared_ptr loadSceneObjectGltf(const std::string& gltfPath); + + }; +} + +#endif // VOX_FLOW_SCENE_OBJECT_LOADER_HPP \ No newline at end of file diff --git a/Sources/VoxFlow/Core/CMakeLists.txt b/Sources/VoxFlow/Core/CMakeLists.txt index ac70e238..0484a10a 100644 --- a/Sources/VoxFlow/Core/CMakeLists.txt +++ b/Sources/VoxFlow/Core/CMakeLists.txt @@ -71,6 +71,10 @@ set(PUBLIC_HDRS ${PUBLIC_HDR_DIR}/VoxFlow/Core/Resources/RenderResourceGarbageCollector.hpp ${PUBLIC_HDR_DIR}/VoxFlow/Core/Resources/RenderResourceMemoryPool.hpp ${PUBLIC_HDR_DIR}/VoxFlow/Core/Resources/StagingBufferContext.hpp + ${PUBLIC_HDR_DIR}/VoxFlow/Core/Scene/SceneObject.hpp + ${PUBLIC_HDR_DIR}/VoxFlow/Core/Scene/SceneObjectLoader.hpp + ${PUBLIC_HDR_DIR}/VoxFlow/Core/Scene/PrimitiveBufferPool.hpp + ${PUBLIC_HDR_DIR}/VoxFlow/Core/Scene/Material.hpp ${PUBLIC_HDR_DIR}/VoxFlow/Core/Utils/BitwiseOperators.hpp ${PUBLIC_HDR_DIR}/VoxFlow/Core/Utils/ChromeTracer.hpp ${PUBLIC_HDR_DIR}/VoxFlow/Core/Utils/DebugUtil.hpp @@ -139,6 +143,10 @@ set(SRCS ${SRC_DIR}/Core/Resources/RenderResourceMemoryPool.cpp ${SRC_DIR}/Core/Resources/StagingBufferContext.cpp ${SRC_DIR}/Core/Resources/StagingBuffer.cpp + ${SRC_DIR}/Core/Scene/SceneObject.hpp + ${SRC_DIR}/Core/Scene/SceneObjectLoader.hpp + ${SRC_DIR}/Core/Scene/PrimitiveBufferPool.hpp + ${SRC_DIR}/Core/Scene/Material.hpp ${SRC_DIR}/Core/Utils/ChromeTracer.cpp ${SRC_DIR}/Core/Utils/DecisionMaker.cpp ${SRC_DIR}/Core/Utils/DeviceInputSubscriber.cpp diff --git a/Sources/VoxFlow/Core/Scene/Material.cpp b/Sources/VoxFlow/Core/Scene/Material.cpp new file mode 100644 index 00000000..c5e2f066 --- /dev/null +++ b/Sources/VoxFlow/Core/Scene/Material.cpp @@ -0,0 +1,7 @@ +// Author : snowapril + +#include + +namespace VoxFlow +{ +} // namespace VoxFlow \ No newline at end of file diff --git a/Sources/VoxFlow/Core/Scene/PrimitiveBufferPool.cpp b/Sources/VoxFlow/Core/Scene/PrimitiveBufferPool.cpp new file mode 100644 index 00000000..60ab37ad --- /dev/null +++ b/Sources/VoxFlow/Core/Scene/PrimitiveBufferPool.cpp @@ -0,0 +1,7 @@ +// Author : snowapril + +#include + +namespace VoxFlow +{ +} // namespace VoxFlow \ No newline at end of file diff --git a/Sources/VoxFlow/Core/Scene/SceneObject.cpp b/Sources/VoxFlow/Core/Scene/SceneObject.cpp new file mode 100644 index 00000000..001c620c --- /dev/null +++ b/Sources/VoxFlow/Core/Scene/SceneObject.cpp @@ -0,0 +1,7 @@ +// Author : snowapril + +#include + +namespace VoxFlow +{ +} // namespace VoxFlow \ No newline at end of file diff --git a/Sources/VoxFlow/Core/Scene/SceneObjectLoader.cpp b/Sources/VoxFlow/Core/Scene/SceneObjectLoader.cpp new file mode 100644 index 00000000..adc54907 --- /dev/null +++ b/Sources/VoxFlow/Core/Scene/SceneObjectLoader.cpp @@ -0,0 +1,12 @@ +// Author : snowapril + +#include + +#define TINYGLTF_IMPLEMENTATION +#define STB_IMAGE_IMPLEMENTATION +#define STB_IMAGE_WRITE_IMPLEMENTATION +#include + +namespace VoxFlow +{ +} // namespace VoxFlow \ No newline at end of file