OGL Engine 1.2.0-dev
Loading...
Searching...
No Matches
material.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include "../defaults.hpp"
8
9#include "texture.hpp"
10#include "shader.hpp"
11
12#include <variant>
13#include <unordered_map>
14#include <glm/glm.hpp>
15
16namespace Engine::Graphics {
21 using UniformValue = std::variant<
22 int,
23 float,
24 bool,
25 glm::vec2,
26 glm::vec3,
27 glm::vec4,
28 glm::mat4
29 >;
30
38 class Material {
39 private:
41 std::unordered_map<std::string, UniformValue> mUniforms;
42
43 public:
49 glm::vec4 color = {1.0f, 1.0f, 1.0f, 1.0f};
50
58
69 void SetUniform(const std::string& name, const UniformValue& value);
70
77 UniformValue GetUniform(const std::string& name) const;
78
82 void Bind() const;
83 };
84}
void SetUniform(const std::string &name, const UniformValue &value)
Enregistre un uniform dans le tableau interne du material.
Definition material.cpp:6
void Bind() const
Permet de lier le Material courant et de setup les uniforms avant un drawcall.
Definition material.cpp:16
Material(Texture *texture=Defaults::texture, Shader *shader=Defaults::shader)
Construit un nouveau Material.
Definition material.cpp:4
UniformValue GetUniform(const std::string &name) const
Renvoie la valeur d'un uniforme stockée dans le material.
Definition material.cpp:10
Shader * shader
Pointeur vers un objet Shader préalablement compilé
Definition material.hpp:45
glm::vec4 color
La couleur du Material (automatiquement envoyée à l'uniform u_Color, peut être utilisée par les shade...
Definition material.hpp:49
Texture * texture
Pointeur vers un objet Texture (peut être nullptr)
Definition material.hpp:47
Classe Shader qui porte un identifiant OpenGL pointant vers le shader compilé
Definition shader.hpp:16
Transporte un ID de texture OpenGL.
Definition texture.hpp:18
Expose des variables par défaut globalement pour les modules qui en ont besoin.
Graphics::Texture * texture
Une texture par défaut.
Definition defaults.cpp:7
Graphics::Shader * shader
Un shader par défaut, utilisé pour initialiser les materials.
Definition defaults.cpp:5
Definition material.cpp:3
std::variant< int, float, bool, glm::vec2, glm::vec3, glm::vec4, glm::mat4 > UniformValue
Permet de ranger sous le nom "UniformValue" tous les types actuellement gérés par les uniforms shader...
Definition material.hpp:21
Classe qui encapsule le chargement let l'usage d'un shader OpenGL.
Définit la classe Texture utilisée dans pas mal de renderers graphiques Son principal intérêt est d...