]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/environmentmap.cpp
Check the flat qualifier from the correct member
[libs/gl.git] / source / effects / environmentmap.cpp
index 2caecb56982a519ff65c12ca1ffdb6c96498316e..a59c14315faf20a6b7ac0ac107835ed59176e9cc 100644 (file)
@@ -52,10 +52,10 @@ EnvironmentMap::EnvironmentMap(unsigned s, PixelFormat f, unsigned l, Renderable
        if(l>1)
        {
                specular_fbos.resize(l-1);
-               for(unsigned i=1; i<l; ++i)
+               for(unsigned i=0; i+1<l; ++i)
                {
-                       specular_fbos[i-1].set_format((COLOR_ATTACHMENT,f));
-                       specular_fbos[i-1].attach_layered(COLOR_ATTACHMENT, env_tex, i);
+                       specular_fbos[i].set_format((COLOR_ATTACHMENT,f));
+                       specular_fbos[i].attach_layered(COLOR_ATTACHMENT, env_tex, i+1);
                }
 
                LinAl::Matrix<float, 3, 3> face_matrices[6];
@@ -74,7 +74,7 @@ EnvironmentMap::EnvironmentMap(unsigned s, PixelFormat f, unsigned l, Renderable
                prefilter_shdata.uniform("roughness", 1.0f);
        }
 
-       shdata.uniform("env_world_matrix", LinAl::SquareMatrix<float, 3>::identity());
+       shdata.uniform("env_world_matrix", LinAl::Matrix<float, 3, 3>::identity());
 }
 
 void EnvironmentMap::set_fixed_position(const Vector3 &p)
@@ -141,6 +141,7 @@ void EnvironmentMap::setup_frame(Renderer &renderer)
                environment.render(renderer);
        }
 
+       renderer.set_pipeline_key(this);
        renderer.set_framebuffer(&irradiance_fbo);
        renderer.set_shader_program(&irradiance_shprog, &prefilter_shdata);
        renderer.set_texture("environment_map", &env_tex, 0, &sampler);
@@ -150,6 +151,7 @@ void EnvironmentMap::setup_frame(Renderer &renderer)
        for(unsigned i=0; i<specular_fbos.size(); ++i)
        {
                prefilter_shdata.uniform("roughness", 1.0f-sqrt(1.0f-static_cast<float>(i+1)/specular_fbos.size()));
+               renderer.set_pipeline_key(this, 1+i);
                renderer.set_framebuffer(&specular_fbos[i]);
                fullscreen_mesh.draw(renderer);
        }
@@ -216,6 +218,8 @@ EnvironmentMap *EnvironmentMap::Template::create(const map<string, Renderable *>
                env_map->set_fixed_position(fixed_position);
        env_map->set_depth_clip(near_clip, far_clip);
 
+       create_base(*env_map);
+
        return env_map.release();
 }