From 70893c083b1c0f7dc5d9fd67e5ee69aae7f16781 Mon Sep 17 00:00:00 2001 From: ZY4N Date: Tue, 25 Mar 2025 15:57:32 +0100 Subject: [PATCH] rubbish --- CMakeLists.txt | 2 +- .../assets/data_loaders/texture_loader.hpp | 2 +- ...dynamic_data_store.hpp => data_stores.hpp} | 2 +- include/assets/file_parsers/glsl_loader.hpp | 2 +- include/assets/file_parsers/kitti_loader.hpp | 2 +- .../assets/file_parsers/kitti_pose_loader.hpp | 2 +- include/assets/file_parsers/mtl_loader.hpp | 2 +- include/assets/file_parsers/stl_loader.hpp | 2 +- .../file_parsers/threedtk_pose_loader.hpp | 2 +- .../mesh_index_buffer_manager.hpp | 7 +++--- .../mesh_vertex_buffer_manager.hpp | 3 ++- .../point_cloud_vertex_buffer_manager.hpp | 3 ++- .../opengl/data_managers/shader_manager.hpp | 21 +++++++++++------- .../data_managers/shader_program_manager.hpp | 20 ++++++++--------- .../data_managers/shader_source_manager.hpp | 22 ++++++++++++------- .../opengl/data_managers/texture_manager.hpp | 11 +++++----- .../metadata/mesh_vertex_buffer_metadata.hpp | 3 ++- .../mesh_index_buffer_manager.cpp | 4 ++-- .../mesh_vertex_buffer_manager.cpp | 8 +++---- .../point_cloud_vertex_buffer_manager.cpp | 4 ++-- .../opengl/data_managers/shader_manager.cpp | 4 ++-- .../data_managers/shader_program_manager.cpp | 4 ++-- .../data_managers/shader_source_manager.cpp | 4 ++-- .../opengl/data_managers/texture_manager.cpp | 6 ++--- 24 files changed, 78 insertions(+), 64 deletions(-) rename include/assets/{dynamic_data_store.hpp => data_stores.hpp} (95%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 10c9210..e29a054 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -166,7 +166,7 @@ add_executable(z3d main.cpp source/assets/file_parsers/generic/generic_3dtk_loader.ipp include/assets/prefetch_lookup.hpp source/assets/prefetch_lookups/pose_prefetch_lookup.cpp - include/assets/dynamic_data_store.hpp + include/assets/data_stores.hpp include/opengl/metadata/shader_source_metadata.hpp source/opengl/data_managers/shader_manager.cpp include/opengl/shading/model_geometry.hpp diff --git a/include/assets/data_loaders/texture_loader.hpp b/include/assets/data_loaders/texture_loader.hpp index 51d2ce9..0e2aba7 100644 --- a/include/assets/data_loaders/texture_loader.hpp +++ b/include/assets/data_loaders/texture_loader.hpp @@ -10,7 +10,7 @@ #include "assets/components/texture_components.hpp" #include "assets/data/texture_data.hpp" #include "assets/data_stores/texture_store.hpp" -#include "assets/dynamic_data_store.hpp" +#include "assets/data_stores.hpp" #include "assets/prefetch_queue.hpp" #include "assets/prefetch_lookups/texture_prefetch_lookup.hpp" #include "util/string_list.hpp" diff --git a/include/assets/dynamic_data_store.hpp b/include/assets/data_stores.hpp similarity index 95% rename from include/assets/dynamic_data_store.hpp rename to include/assets/data_stores.hpp index 79e7e47..05a9bda 100644 --- a/include/assets/dynamic_data_store.hpp +++ b/include/assets/data_stores.hpp @@ -11,7 +11,7 @@ namespace assets { -struct dynamic_data_store +struct data_stores { material_library_store material_libraries; material_store materials; diff --git a/include/assets/file_parsers/glsl_loader.hpp b/include/assets/file_parsers/glsl_loader.hpp index a6a652f..f66bed1 100644 --- a/include/assets/file_parsers/glsl_loader.hpp +++ b/include/assets/file_parsers/glsl_loader.hpp @@ -4,7 +4,7 @@ #include #include -#include "assets/dynamic_data_store.hpp" +#include "assets/data_stores.hpp" #include "assets/prefetch_lookup.hpp" #include "assets/prefetch_queue.hpp" #include "assets/prefetch_lookups/mesh_prefetch_lookup.hpp" diff --git a/include/assets/file_parsers/kitti_loader.hpp b/include/assets/file_parsers/kitti_loader.hpp index ef012af..5cdb4ff 100644 --- a/include/assets/file_parsers/kitti_loader.hpp +++ b/include/assets/file_parsers/kitti_loader.hpp @@ -4,7 +4,7 @@ #include #include -#include "assets/dynamic_data_store.hpp" +#include "assets/data_stores.hpp" #include "assets/components/point_cloud_vertex_components.hpp" #include "assets/data/point_cloud_data.hpp" #include "assets/data_stores/point_cloud_store.hpp" diff --git a/include/assets/file_parsers/kitti_pose_loader.hpp b/include/assets/file_parsers/kitti_pose_loader.hpp index f00fbee..b286ae1 100644 --- a/include/assets/file_parsers/kitti_pose_loader.hpp +++ b/include/assets/file_parsers/kitti_pose_loader.hpp @@ -2,7 +2,7 @@ #include -#include "assets/dynamic_data_store.hpp" +#include "assets/data_stores.hpp" #include "assets/prefetch_lookup.hpp" #include "assets/prefetch_queue.hpp" #include "util/string_list.hpp" diff --git a/include/assets/file_parsers/mtl_loader.hpp b/include/assets/file_parsers/mtl_loader.hpp index efd8ea6..4384dd0 100644 --- a/include/assets/file_parsers/mtl_loader.hpp +++ b/include/assets/file_parsers/mtl_loader.hpp @@ -3,7 +3,7 @@ #include #include -#include "assets/dynamic_data_store.hpp" +#include "assets/data_stores.hpp" #include "assets/prefetch_lookup.hpp" #include "assets/prefetch_queue.hpp" #include "assets/data" diff --git a/include/assets/file_parsers/stl_loader.hpp b/include/assets/file_parsers/stl_loader.hpp index 1d4b3ff..04e8f7f 100644 --- a/include/assets/file_parsers/stl_loader.hpp +++ b/include/assets/file_parsers/stl_loader.hpp @@ -4,7 +4,7 @@ #include #include -#include "assets/dynamic_data_store.hpp" +#include "assets/data_stores.hpp" #include "assets/data" #include "../data_stores" #include "assets/prefetch_lookup.hpp" diff --git a/include/assets/file_parsers/threedtk_pose_loader.hpp b/include/assets/file_parsers/threedtk_pose_loader.hpp index aabf515..8184e3d 100644 --- a/include/assets/file_parsers/threedtk_pose_loader.hpp +++ b/include/assets/file_parsers/threedtk_pose_loader.hpp @@ -2,7 +2,7 @@ #include -#include "assets/dynamic_data_store.hpp" +#include "assets/data_stores.hpp" #include "assets/prefetch_lookup.hpp" #include "assets/prefetch_queue.hpp" #include "assets/data" diff --git a/include/opengl/data_managers/mesh_index_buffer_manager.hpp b/include/opengl/data_managers/mesh_index_buffer_manager.hpp index ad03446..43bfe8d 100644 --- a/include/opengl/data_managers/mesh_index_buffer_manager.hpp +++ b/include/opengl/data_managers/mesh_index_buffer_manager.hpp @@ -1,6 +1,7 @@ #pragma once -#include "../../assets/data_stores" +#include "assets/data_stores.hpp" +#include "assets/data_stores/mesh_store.hpp" #include "opengl/resource_management/resource_manager.hpp" #include "opengl/handles/index_buffer_handle.hpp" #include "opengl/metadata/index_buffer_metadata.hpp" @@ -10,7 +11,7 @@ namespace zgl class mesh_index_buffer_manager { public: - using store_type = dynamic_mesh_store; + using store_type = assets::mesh_store; using store_id_type = store_type::id_type; using metadata_type = index_buffer_metadata; using handle_type = index_buffer_handle; @@ -19,7 +20,7 @@ public: static constexpr std::size_t min_garbage_collection_count = 4; - void process(store_type& store); + void process(const assets::data_stores& stores); std::optional get_handle(store_id_type id); diff --git a/include/opengl/data_managers/mesh_vertex_buffer_manager.hpp b/include/opengl/data_managers/mesh_vertex_buffer_manager.hpp index 9261bc9..bfede74 100644 --- a/include/opengl/data_managers/mesh_vertex_buffer_manager.hpp +++ b/include/opengl/data_managers/mesh_vertex_buffer_manager.hpp @@ -1,6 +1,7 @@ #pragma once +#include "assets/data_stores.hpp" #include "assets/data_stores/mesh_store.hpp" #include "opengl/resource_management/resource_manager.hpp" #include "opengl/handles/vertex_buffer_handle.hpp" @@ -20,7 +21,7 @@ public: static constexpr std::size_t min_garbage_collection_count = 4; - void process(store_type& store); + void process(const assets::data_stores& stores); std::optional get_handle(store_id_type id); diff --git a/include/opengl/data_managers/point_cloud_vertex_buffer_manager.hpp b/include/opengl/data_managers/point_cloud_vertex_buffer_manager.hpp index 8ad971a..6005b01 100644 --- a/include/opengl/data_managers/point_cloud_vertex_buffer_manager.hpp +++ b/include/opengl/data_managers/point_cloud_vertex_buffer_manager.hpp @@ -1,5 +1,6 @@ #pragma once +#include "assets/data_stores.hpp" #include "assets/data_stores/point_cloud_store.hpp" #include "opengl/resource_management/resource_manager.hpp" #include "opengl/handles/vertex_buffer_handle.hpp" @@ -20,7 +21,7 @@ public: static constexpr std::size_t min_garbage_collection_count = 4; - void process(store_type& store); + void process(const assets::data_stores& stores); std::optional get_handle(store_id_type id); diff --git a/include/opengl/data_managers/shader_manager.hpp b/include/opengl/data_managers/shader_manager.hpp index eecb2c4..02e34de 100644 --- a/include/opengl/data_managers/shader_manager.hpp +++ b/include/opengl/data_managers/shader_manager.hpp @@ -11,6 +11,7 @@ #include "opengl/handles/shader_handle.hpp" #include "util/string_lookup.hpp" #include "shader_source_manager.hpp" +#include "assets/data_stores.hpp" #include "opengl/metadata/shader_metadata.hpp" #include "opengl/data/shader_data.hpp" #include "opengl/handles/shader_handle_set.hpp" @@ -22,12 +23,15 @@ namespace zgl { class shader_manager { - using shader_lookup_entry_type = std::pair; + using metadata_type = shader_metadata; + using data_type = shader_data; + using handle_type = shader_handle; + using entry_type = std::pair; + using entry_view_type = std::pair; + public: - void process( - const assets::shader_source_store& shader_sources - ); + void process(const assets::data_stores& stores); void get_handles( const assets::shader_source_store& shader_sources, @@ -37,7 +41,7 @@ public: ); protected: - std::optional> find_shader( + std::optional find_shader( const shading::shader_requirements& requirements ); @@ -47,12 +51,13 @@ protected: shader_data& shader ); -private: - shader_source_manager m_preprocessor{}; + shader_source_manager m_preprocessor{}; + std::vector m_shader_lookup{}; + +private: std::vector m_source_requirement_buffer{}; std::vector m_preprocessed_shader_source_metadata_buffer{}; std::vector m_source_strings_buffer{}; - std::vector m_shader_lookup{}; }; } diff --git a/include/opengl/data_managers/shader_program_manager.hpp b/include/opengl/data_managers/shader_program_manager.hpp index 478e317..e14a1c3 100644 --- a/include/opengl/data_managers/shader_program_manager.hpp +++ b/include/opengl/data_managers/shader_program_manager.hpp @@ -11,15 +11,14 @@ namespace zgl class shader_program_manager { - using shader_program_lookup_entry_type = std::pair< - shader_program_metadata, - shader_program_data - >; - public: - void process( - const assets::shader_source_store& shader_sources - ); + using metadata_type = shader_program_metadata; + using data_type = shader_program_data; + using handle_type = shader_program_handle; + using entry_type = std::pair; + using entry_view_type = std::pair; + + void process(const assets::data_stores& stores); void get_handles( const assets::shader_source_store& shader_sources, @@ -29,7 +28,7 @@ public: ); protected: - std::optional> find_shader_program( + std::optional find_shader_program( const shading::shader_program_requirements& requirements ); @@ -38,10 +37,9 @@ protected: ); shader_manager m_shader_manager; - std::vector m_shader_program_lookup; + std::vector m_shader_program_lookup; private: - std::vector m_shader_requirements_buffer; std::vector m_shader_metadata_buffer; std::vector shader_set_buffer; diff --git a/include/opengl/data_managers/shader_source_manager.hpp b/include/opengl/data_managers/shader_source_manager.hpp index 8d2e5a4..37325a0 100644 --- a/include/opengl/data_managers/shader_source_manager.hpp +++ b/include/opengl/data_managers/shader_source_manager.hpp @@ -4,6 +4,8 @@ #include #include #include + +#include "assets/data_stores.hpp" #include "util/string_lookup.hpp" #include "opengl/metadata/shader_source_metadata.hpp" @@ -18,9 +20,15 @@ namespace zgl { class shader_source_manager { public: - void process( - const assets::shader_source_store& shader_sources - ); + using store_type = assets::shader_source_store; + using store_id_type = store_type::id_type; + using metadata_type = shader_source_metadata; + using data_type = char*; + using handle_type = const char*; + using entry_type = std::pair; + using entry_view_type = std::pair; + + void process(const assets::data_stores& stores); void get_shader_sources( const assets::shader_source_store& shader_sources, @@ -74,14 +82,12 @@ protected: std::vector& defines ); + + std::vector m_shader_source_lookup; + private: std::vector m_value_token_buffer; std::vector m_declaration_token_count_buffer; std::array m_declaration_type_index_buffer; - - using source_lookup_entry_type = std::pair; - using source_lookup_type = std::vector; - - source_lookup_type m_shader_source_lookup; }; } diff --git a/include/opengl/data_managers/texture_manager.hpp b/include/opengl/data_managers/texture_manager.hpp index 899eb3a..83ccdf6 100644 --- a/include/opengl/data_managers/texture_manager.hpp +++ b/include/opengl/data_managers/texture_manager.hpp @@ -2,11 +2,12 @@ #include -#include "../../assets/read_buffers" -#include "../../assets/data_stores" +#include "assets/data/texture_data.hpp" +#include "assets/data_stores/texture_store.hpp" #include "opengl/handles/texture_handle.hpp" #include +#include "assets/data_stores.hpp" #include "opengl/metadata/texture_metadata.hpp" #include "opengl/resource_management/resource_manager.hpp" @@ -15,7 +16,7 @@ namespace zgl class texture_manager { public: - using store_type = dynamic_texture_store; + using store_type = assets::texture_store; using store_id_type = store_type::id_type; using metadata_type = texture_metadata; using handle_type = texture_handle; @@ -24,7 +25,7 @@ public: static constexpr std::size_t min_garbage_collection_count = 4; - void process(store_type& store); + void process(const assets::data_stores& stores); std::optional get_handle(store_id_type id); @@ -34,7 +35,7 @@ protected: resource_manager_type m_resource_manager; private: - std::vector> m_texture_buffer; + std::vector> m_texture_buffer; std::vector m_texture_id_buffer; }; diff --git a/include/opengl/metadata/mesh_vertex_buffer_metadata.hpp b/include/opengl/metadata/mesh_vertex_buffer_metadata.hpp index 022f33e..b0fb059 100644 --- a/include/opengl/metadata/mesh_vertex_buffer_metadata.hpp +++ b/include/opengl/metadata/mesh_vertex_buffer_metadata.hpp @@ -2,6 +2,7 @@ #include "assets/components/mesh_vertex_components.hpp" #include "assets/data_stores/material_store.hpp" +#include "opengl/handles/material_handle.hpp" namespace zgl { @@ -9,7 +10,7 @@ namespace zgl struct mesh_vertex_buffer_metadata { assets::mesh_vertex_components::flags component_flags; - assets::material_store::id_type material_id{}; + material_handle material{}; }; } diff --git a/source/opengl/data_managers/mesh_index_buffer_manager.cpp b/source/opengl/data_managers/mesh_index_buffer_manager.cpp index feea741..33cf1f9 100644 --- a/source/opengl/data_managers/mesh_index_buffer_manager.cpp +++ b/source/opengl/data_managers/mesh_index_buffer_manager.cpp @@ -4,9 +4,9 @@ #include "opengl/error.hpp" #include "opengl/type_utils.hpp" -void zgl::mesh_index_buffer_manager::process(store_type& store) +void zgl::mesh_index_buffer_manager::process(const assets::data_stores& stores) { - for (const auto& [ id, mesh ] : store) + for (const auto& [ id, mesh ] : stores.meshes) { if (not m_resource_manager.has_resource(id)) { diff --git a/source/opengl/data_managers/mesh_vertex_buffer_manager.cpp b/source/opengl/data_managers/mesh_vertex_buffer_manager.cpp index c3b4eac..7146684 100644 --- a/source/opengl/data_managers/mesh_vertex_buffer_manager.cpp +++ b/source/opengl/data_managers/mesh_vertex_buffer_manager.cpp @@ -5,9 +5,9 @@ #include "opengl/vertex_buffer_utils.hpp" -void zgl::mesh_vertex_buffer_manager::process(store_type& store) +void zgl::mesh_vertex_buffer_manager::process(const assets::data_stores& stores) { - for (const auto& [ id, mesh ] : store) + for (const auto& [ id, mesh ] : stores.meshes) { if (not m_resource_manager.has_resource(id)) { @@ -62,9 +62,9 @@ void zgl::mesh_vertex_buffer_manager::process(store_type& store) continue; } - const auto meta = mesh_vertex_buffer_metadata{ + auto meta = mesh_vertex_buffer_metadata{ .component_flags = mesh.component_flags, - .material_id = mesh.material_id + .material = stores.materials.find(mesh.material_id) }; m_resource_manager.add_resource(store_id, buffer_id, meta); diff --git a/source/opengl/data_managers/point_cloud_vertex_buffer_manager.cpp b/source/opengl/data_managers/point_cloud_vertex_buffer_manager.cpp index 30d4b83..0e1f7ac 100644 --- a/source/opengl/data_managers/point_cloud_vertex_buffer_manager.cpp +++ b/source/opengl/data_managers/point_cloud_vertex_buffer_manager.cpp @@ -5,9 +5,9 @@ #include "opengl/vertex_buffer_utils.hpp" -void zgl::point_cloud_vertex_buffer_manager::process(store_type& store) +void zgl::point_cloud_vertex_buffer_manager::process(const assets::data_stores& stores) { - for (const auto& [ id, point_cloud ] : store) + for (const auto& [ id, point_cloud ] : stores.point_clouds) { if (not m_resource_manager.has_resource(id)) { diff --git a/source/opengl/data_managers/shader_manager.cpp b/source/opengl/data_managers/shader_manager.cpp index 31e41a4..ddbeb89 100644 --- a/source/opengl/data_managers/shader_manager.cpp +++ b/source/opengl/data_managers/shader_manager.cpp @@ -258,7 +258,7 @@ bool zgl::shader_manager::compile_shader( } void zgl::shader_manager::process( - const assets::shader_source_store& shader_sources + const assets::data_stores& stores ) { - m_preprocessor.process(shader_sources); + m_preprocessor.process(stores); } \ No newline at end of file diff --git a/source/opengl/data_managers/shader_program_manager.cpp b/source/opengl/data_managers/shader_program_manager.cpp index c25e36b..f8d049e 100644 --- a/source/opengl/data_managers/shader_program_manager.cpp +++ b/source/opengl/data_managers/shader_program_manager.cpp @@ -25,9 +25,9 @@ struct prioritized_metadata_comparator }; void zgl::shader_program_manager::process( - const assets::shader_source_store& shader_sources + const assets::data_stores& stores ) { - m_shader_manager.preprocess(shader_sources); + m_shader_manager.preprocess(stores); } void zgl::shader_program_manager::get_handles( diff --git a/source/opengl/data_managers/shader_source_manager.cpp b/source/opengl/data_managers/shader_source_manager.cpp index ba5d7c4..64951b0 100644 --- a/source/opengl/data_managers/shader_source_manager.cpp +++ b/source/opengl/data_managers/shader_source_manager.cpp @@ -77,11 +77,11 @@ private: void zgl::shader_source_manager::process( - const assets::shader_source_store& shader_sources + const assets::data_stores& stores ) { namespace language = shading::shader_metadata_language; - for (const auto& [ id, shader_source ] : shader_sources) + for (const auto& [ id, shader_source ] : stores.shader_sources) { m_value_token_buffer.clear(); m_declaration_token_count_buffer.clear(); diff --git a/source/opengl/data_managers/texture_manager.cpp b/source/opengl/data_managers/texture_manager.cpp index 0c480ee..94373aa 100644 --- a/source/opengl/data_managers/texture_manager.cpp +++ b/source/opengl/data_managers/texture_manager.cpp @@ -6,11 +6,11 @@ void zgl::texture_manager::process( - dynamic_texture_store& store + const assets::data_stores& stores ) { m_texture_buffer.clear(); - for (const auto& [ id, texture ] : store) + for (const auto& [ id, texture ] : stores.textures) { if (not m_resource_manager.has_resource(id)) { @@ -33,7 +33,7 @@ void zgl::texture_manager::process( GLenum format; switch (texture.components()) { - using enum texture_components::flags; + using enum assets::texture_components::flags; case luminance: format = GL_LUMINANCE; break;