X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Feffects%2Fshadowmap.cpp;h=c2e1f2957a63f4de2a623d2db1af26f58529f5bf;hp=eaf6e1373cb126a387d535e9e2b1352199eed2e7;hb=9a63244;hpb=73bef37da97b6da0b99227f63235cb52c4e56c44 diff --git a/source/effects/shadowmap.cpp b/source/effects/shadowmap.cpp index eaf6e137..c2e1f295 100644 --- a/source/effects/shadowmap.cpp +++ b/source/effects/shadowmap.cpp @@ -3,6 +3,7 @@ #include "camera.h" #include "light.h" #include "renderer.h" +#include "resources.h" #include "scene.h" #include "shadowmap.h" #include "tests.h" @@ -12,25 +13,15 @@ using namespace std; namespace Msp { namespace GL { -WeakPtr ShadowMap::shadow_sampler; - -ShadowMap::ShadowMap(unsigned s, Renderable &r, const Light &l): +ShadowMap::ShadowMap(Resources &resources, unsigned s, Renderable &r, const Light &l): Effect(r), size(s), light(l), + sampler(resources.get("_linear_clamp_shadow.samp")), radius(1), depth_bias(4), rendered(false) { - sampler = shadow_sampler; - if(!sampler) - { - sampler = new Sampler; - sampler->set_filter(LINEAR); - sampler->set_compare(LEQUAL); - sampler->set_wrap(CLAMP_TO_EDGE); - shadow_sampler = sampler; - } depth_buf.storage(DEPTH_COMPONENT32F, size, size, 1); fbo.attach(DEPTH_ATTACHMENT, depth_buf, 0); fbo.require_complete(); @@ -108,7 +99,7 @@ void ShadowMap::render(Renderer &renderer, const Tag &tag) const int iunit = unit; shdata.uniform("shadow_map", iunit); - Bind _bind_sampler(*sampler, unit); + Bind _bind_sampler(sampler, unit); Bind _bind_depth(depth_buf, unit); if(const Camera *camera = renderer.get_camera())