2#include <unordered_map>
24 kVertexLightProjection,
37static constexpr std::string_view kULightColor =
"u_light.light_color";
38static constexpr std::string_view kULightPosition =
"u_light.light_position";
39static constexpr std::string_view kULightConstant =
"u_light.constant_falloff";
40static constexpr std::string_view kULightLinear =
"u_light.linear_falloff";
41static constexpr std::string_view kULightQuadratic =
"u_light.quadratic_falloff";
42static constexpr std::string_view kULightDirection =
"u_light.light_direction";
43static constexpr std::string_view kULightCutoff =
"u_light.cut_off";
44static constexpr std::string_view kULightOuterCutoff =
"u_light.outer_cut_off";
45static constexpr std::string_view kULightIntensity =
"u_light.intensity";
47static constexpr std::string_view kUObjectColor =
"u_color";
48static constexpr std::string_view kUObjectTransform =
"u_m_matrix";
49static constexpr std::string_view kUObjectRoughness =
"u_roughness";
50static constexpr std::string_view kUObjectShininess =
"u_shininess";
52static constexpr std::string_view u_view_matrix =
"u_view_matrix";
53static constexpr std::string_view u_projection_matrix =
"u_projection_matrix";
54static constexpr std::string_view u_light_space_matrix =
"u_light_space_matrix";
56static constexpr std::string_view u_ambient_strength =
"u_ambient_strength";
57static constexpr std::string_view u_camera_position =
"u_camera_position";
67 ShaderManager(
const ShaderManager& other) =
delete;
68 ShaderManager(
const ShaderManager&& other) =
delete;
69 ShaderManager& operator=(
const ShaderManager& other) =
delete;
70 ShaderManager& operator=(
const ShaderManager&& other) =
delete;
72 bool CreateDefaultShaders();
74 bool CreateShader(
unsigned int shader, ShaderType type,
75 const std::string& source);
78 void attachShaders(
unsigned int program,
unsigned int fragment,
79 unsigned int vertex,
unsigned int geometry = -1)
const;
82 void useProgram(
unsigned int program)
const;
84 void setAllUniform(DataType dt,
const float* number,
85 const std::string_view& uniform_name)
const;
87 void uploadLightData(
const LightData& data,
88 unsigned int program)
const;
89 void uploadObjectData(
const ObjectData& data,
90 unsigned int program)
const;
92 void setUniformValue(DataType dt,
const float* number,
unsigned int program,
93 const std::string_view& uniform_name,
int quantity = 1)
const;
96 std::array<unsigned int, 10> fragments_;
97 std::array<unsigned int, 10> vertex_;
98 std::array<unsigned int, 5> geometry_;
99 std::array<unsigned int, 12> programs_;
contains globally accessible enums
Component used to simulate different types of lights.
Definition: default_components.hpp:69