]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/environmentmap.h
Remove RenderBuffer and always use textures as framebuffer attachments
[libs/gl.git] / source / effects / environmentmap.h
index 36c72987b84e7327a0b35c5f5e5d92ac7f26bdb1..e02687b71184c37b3b11c0a30c8f1b75862e3774 100644 (file)
@@ -6,14 +6,14 @@
 #include "framebuffer.h"
 #include "matrix.h"
 #include "programdata.h"
-#include "renderbuffer.h"
+#include "texture2d.h"
 #include "texturecube.h"
 #include "vector.h"
 
 namespace Msp {
 namespace GL {
 
-class Resources;
+class Mesh;
 
 /**
 Creates a cube map texture of the surroundings of the renderable.  This texture
@@ -36,19 +36,30 @@ private:
        unsigned size;
        Renderable &environment;
        TextureCube env_tex;
-       Renderbuffer depth_buf;
+       Texture2D depth_buf;
        Face faces[6];
+
+       TextureCube irradiance;
+       const Program &irradiance_shprog;
+       Framebuffer irradiance_fbo;
+       const Program &specular_shprog;
+       std::vector<Framebuffer> specular_fbos;
+       ProgramData prefilter_shdata;
+       const Mesh &fullscreen_mesh;
+
        const Sampler &sampler;
+       const Sampler &mip_sampler;
        ProgramData shdata;
        bool rendered;
        unsigned update_interval;
        unsigned update_delay;
 
 public:
-       EnvironmentMap(Resources &, unsigned size, Renderable &rend, Renderable &env);
-       EnvironmentMap(Resources &, unsigned size, PixelFormat, Renderable &rend, Renderable &env);
+       EnvironmentMap(unsigned size, Renderable &rend, Renderable &env);
+       EnvironmentMap(unsigned size, PixelFormat, Renderable &rend, Renderable &env);
+       EnvironmentMap(unsigned size, PixelFormat, unsigned, Renderable &rend, Renderable &env);
 private:
-       void init(unsigned, PixelFormat);
+       void init(unsigned, PixelFormat, unsigned);
 
 public:
        void set_depth_clip(float, float);
@@ -64,6 +75,8 @@ public:
        virtual void finish_frame();
 
        virtual void render(Renderer &, Tag = Tag()) const;
+
+       virtual void set_debug_name(const std::string &);
 };
 
 } // namespace GL