This commit is contained in:
ZY4N
2025-03-25 15:57:32 +01:00
parent a78be71e34
commit 70893c083b
24 changed files with 78 additions and 64 deletions

View File

@@ -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<shader_metadata, shader_data>;
using metadata_type = shader_metadata;
using data_type = shader_data;
using handle_type = shader_handle;
using entry_type = std::pair<metadata_type, data_type>;
using entry_view_type = std::pair<metadata_type, handle_type>;
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<std::pair<shader_metadata, shader_handle>> find_shader(
std::optional<entry_view_type> 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<entry_type> m_shader_lookup{};
private:
std::vector<shading::shader_source_requirements> m_source_requirement_buffer{};
std::vector<preprocessed_shader_source_metadata> m_preprocessed_shader_source_metadata_buffer{};
std::vector<const char*> m_source_strings_buffer{};
std::vector<shader_lookup_entry_type> m_shader_lookup{};
};
}