]> git.localhorst.tv Git - blobs.git/blobdiff - src/graphics/PlanetSurface.hpp
multiple light sources
[blobs.git] / src / graphics / PlanetSurface.hpp
index 2482703b070b8eff0fe4e07409933b0b852afb92..8e98875851d70c0d859b0386aaae604396bab070 100644 (file)
@@ -13,6 +13,9 @@ class ArrayTexture;
 
 class PlanetSurface {
 
+public:
+       static constexpr int MAX_LIGHTS = 8;
+
 public:
        PlanetSurface();
        ~PlanetSurface();
@@ -29,7 +32,8 @@ public:
        void SetMVP(const glm::mat4 &m, const glm::mat4 &v, const glm::mat4 &p) noexcept;
        void SetNormal(const glm::vec3 &) noexcept;
        void SetTexture(ArrayTexture &) noexcept;
-       void SetLight(const glm::vec3 &pos, const glm::vec3 &color, float strength) noexcept;
+       void SetLight(int n, const glm::vec3 &pos, const glm::vec3 &color, float strength) noexcept;
+       void SetNumLights(int n) noexcept;
 
        const glm::mat4 &M() const noexcept { return m; }
        const glm::mat4 &V() const noexcept { return v; }
@@ -40,6 +44,8 @@ public:
 private:
        Program prog;
 
+       int num_lights;
+
        glm::mat4 m;
        glm::mat4 v;
        glm::mat4 p;
@@ -52,9 +58,8 @@ private:
        GLuint sampler_handle;
        GLuint normal_handle;
 
-       GLuint light_position_handle;
-       GLuint light_color_handle;
-       GLuint light_strength_handle;
+       GLuint num_lights_handle;
+       GLuint light_handle[MAX_LIGHTS * 3];
 
 };