X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fenvironmentmap.cpp;h=c789fe48d0f4c449f628778aac0b1c32f4ecac18;hp=be0bf4109f9c64e6f27796ab1c5b865385624fd1;hb=db2fd517dcd215e9d16345287d413f2a64f5ba03;hpb=dbf357bf41561932a8b983bd96ece01ff9fce9f0 diff --git a/source/environmentmap.cpp b/source/environmentmap.cpp index be0bf410..c789fe48 100644 --- a/source/environmentmap.cpp +++ b/source/environmentmap.cpp @@ -28,7 +28,6 @@ EnvironmentMap::EnvironmentMap(unsigned s, Renderable &r, Renderable &e): camera.set_aspect(1); camera.set_depth_clip(0.1, 100); - shdata.uniform("environment", 4); } void EnvironmentMap::setup_frame() const @@ -72,6 +71,12 @@ void EnvironmentMap::render(Renderer &renderer, const Tag &tag) const if(!enabled_passes.count(tag)) return renderer.render(renderable, tag); + Renderer::Push _push_rend(renderer); + + unsigned unit = renderer.allocate_effect_texunit(); + shdata.uniform("environment", static_cast(unit)); + env_tex.bind_to(unit); + const Matrix &view_matrix = renderer.get_camera()->get_matrix(); // XXX The camera should maybe have store its own object matrix float env_mdata[9]; @@ -86,13 +91,10 @@ void EnvironmentMap::render(Renderer &renderer, const Tag &tag) const env_mdata[8] = view_matrix[10]; shdata.uniform_matrix3("env_eye_matrix", env_mdata); - env_tex.bind_to(4); - - Renderer::Push _push_rend(renderer); renderer.add_shader_data(shdata); renderer.render(renderable, tag); - env_tex.unbind_from(4); + env_tex.unbind_from(unit); } } // namespace GL