#include <cmath>
#include "environmentmap.h"
#include "renderer.h"
+#include "resources.h"
#include "texunit.h"
using namespace std;
namespace Msp {
namespace GL {
-EnvironmentMap::EnvironmentMap(unsigned s, Renderable &r, Renderable &e):
+EnvironmentMap::EnvironmentMap(Resources &resources, unsigned s, Renderable &r, Renderable &e):
Effect(r),
size(s),
environment(e),
- sampler(get_linear_sampler()),
+ sampler(resources.get<Sampler>("_linear_clamp.samp")),
rendered(false),
update_interval(1),
update_delay(0)
}
}
-void EnvironmentMap::render(Renderer &renderer, const Tag &tag) const
+void EnvironmentMap::render(Renderer &renderer, 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<int>(unit));
- Bind _bind_sampler(*sampler, unit);
- Bind _bind_env(env_tex, unit);
-
const Matrix &camera_matrix = renderer.get_camera()->get_object_matrix();
shdata.uniform("env_eye_matrix", camera_matrix.block<3, 3>(0, 0));
+ renderer.set_texture("environment_map", &env_tex, &sampler);
renderer.add_shader_data(shdata);
renderer.render(renderable, tag);
}