]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/ambientocclusion.cpp
Overhaul texture management in rendering classes
[libs/gl.git] / source / effects / ambientocclusion.cpp
index bae5e780d1b08c64ea538aa3cd991310044b4277..d47d18aaa8a6f6992ffb800f29463ee70b87aea2 100644 (file)
@@ -20,8 +20,6 @@ AmbientOcclusion::AmbientOcclusion(Resources &resources, unsigned w, unsigned h,
        linear_sampler(resources.get<Sampler>("_linear_clamp.samp")),
        nearest_sampler(resources.get<Sampler>("_nearest_clamp.samp"))
 {
-       texturing.attach(2, occlude_target.get_target_texture(RENDER_COLOR), &linear_sampler);
-
        unsigned seed = 1;
        rotate_lookup.storage(RGBA8, 4, 4, 1);
        unsigned char data[64];
@@ -37,12 +35,6 @@ AmbientOcclusion::AmbientOcclusion(Resources &resources, unsigned w, unsigned h,
        }
        rotate_lookup.image(0, data);
 
-       texturing.attach(3, rotate_lookup, &nearest_sampler);
-
-       shdata.uniform("source", 0);
-       shdata.uniform("depth", 1);
-       shdata.uniform("occlusion", 2);
-       shdata.uniform("rotate", 3);
        shdata.uniform("inverse_projection", Matrix());
 
        set_n_samples(16);
@@ -92,14 +84,14 @@ void AmbientOcclusion::set_edge_depth_threshold(float edt)
 
 void AmbientOcclusion::render(Renderer &renderer, const Texture2D &color, const Texture2D &depth)
 {
-       texturing.attach(0, color, &nearest_sampler);
-       texturing.attach(1, depth, &nearest_sampler);
-
        if(renderer.get_camera())
                shdata.uniform("inverse_projection", invert(renderer.get_camera()->get_projection_matrix()));
 
        Renderer::Push push(renderer);
-       renderer.set_texturing(&texturing);
+       renderer.set_texture("source", &color, &nearest_sampler);
+       renderer.set_texture("depth", &depth, &nearest_sampler);
+       renderer.set_texture("occlusion", &occlude_target.get_target_texture(RENDER_COLOR), &linear_sampler);
+       renderer.set_texture("rotate", &rotate_lookup, &nearest_sampler);
        renderer.set_shader_program(&occlude_shader, &shdata);
 
        {