X-Git-Url: https://git.lukelau.me/?p=opengl.git;a=blobdiff_plain;f=skybox.hpp;h=6961e8d861104d82843739e28978e399b7104d12;hp=759ce7a2f484886a8302c446252eb9c83f4f7de5;hb=d0c631f46c6db417e013b1bc0edec24cb9c2824a;hpb=8abaf8f77191e1c660def0832d8036a8b4639ba8 diff --git a/skybox.hpp b/skybox.hpp index 759ce7a..6961e8d 100644 --- a/skybox.hpp +++ b/skybox.hpp @@ -6,14 +6,23 @@ #include #include #include "program.hpp" +#include "image.hpp" class Skybox { public: - Skybox(const std::vector faces); + // img must be HDR + Skybox(const Image img); void draw(glm::mat4 proj, glm::mat4 view) const; - GLuint getTexture() const; + GLuint getTexture() const { return cubemapTexId; } + GLuint getIrradianceMap() const { return irradianceTexId; } + GLuint getPrefilterMap() const { return prefilterTexId; } + GLuint getBRDFMap() const { return brdfMapTexId; } private: - GLuint texId, vao; + GLuint hdrTexId, cubemapTexId, irradianceTexId, prefilterTexId, brdfMapTexId; + GLuint captureFBO, captureRBO; + GLuint vao; const Program program; + void generatePrefilterMap() const; + void generateBRDFMap() const; }; #endif