]> git.localhorst.tv Git - blank.git/blob - src/graphics/DirectionalLighting.hpp
42554014c51707b3dbd4d218cf68f001e8fb39f9
[blank.git] / src / graphics / DirectionalLighting.hpp
1 #ifndef BLANK_GRAPHICS_DIRECTIONALLIGHTING_HPP_
2 #define BLANK_GRAPHICS_DIRECTIONALLIGHTING_HPP_
3
4 #include "Program.hpp"
5
6 #include <GL/glew.h>
7 #include <glm/glm.hpp>
8
9
10 namespace blank {
11
12 class ArrayTexture;
13
14 class DirectionalLighting {
15
16 public:
17         DirectionalLighting();
18
19         void Activate() noexcept;
20
21         void SetLightDirection(const glm::vec3 &) noexcept;
22         void SetLightColor(const glm::vec3 &) noexcept;
23         void SetAmbientColor(const glm::vec3 &) noexcept;
24
25         void SetTexture(ArrayTexture &) noexcept;
26         void SetFogDensity(float) noexcept;
27
28         void SetM(const glm::mat4 &m) noexcept;
29         void SetProjection(const glm::mat4 &p) noexcept;
30         void SetView(const glm::mat4 &v) noexcept;
31         void SetVP(const glm::mat4 &v, const glm::mat4 &p) noexcept;
32         void SetMVP(const glm::mat4 &m, const glm::mat4 &v, const glm::mat4 &p) noexcept;
33
34         const glm::mat4 &Projection() const noexcept { return projection; }
35         const glm::mat4 &View() const noexcept { return view; }
36         const glm::mat4 &GetVP() const noexcept { return vp; }
37
38 private:
39         Program program;
40
41         glm::mat4 projection;
42         glm::mat4 view;
43         glm::mat4 vp;
44
45         GLuint m_handle;
46         GLuint mv_handle;
47         GLuint mvp_handle;
48         GLuint sampler_handle;
49         GLuint light_direction_handle;
50         GLuint light_color_handle;
51         GLuint ambient_color_handle;
52         GLuint fog_density_handle;
53
54 };
55
56 }
57
58 #endif