X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Feffects%2Fambientocclusion.cpp;h=d8470077f03ca3e453f36510777880fb2c04dbe7;hb=6065f6622cc275dc0b20baaf7c267e71169d18f3;hp=c35e5771de1d76f3a7ea95e8ab9c2125f7156754;hpb=177f7a345c615e5934af16c97abde59127113b4c;p=libs%2Fgl.git diff --git a/source/effects/ambientocclusion.cpp b/source/effects/ambientocclusion.cpp index c35e5771..d8470077 100644 --- a/source/effects/ambientocclusion.cpp +++ b/source/effects/ambientocclusion.cpp @@ -4,8 +4,6 @@ #include "camera.h" #include "renderer.h" #include "resources.h" -#include "shader.h" -#include "tests.h" using namespace std; @@ -14,7 +12,7 @@ namespace GL { AmbientOcclusion::AmbientOcclusion(unsigned w, unsigned h, float): rotate_lookup(get_or_create_rotate_lookup()), - occlude_target(w, h, (RENDER_COLOR,R8)), + occlude_target(w, h, (COLOR_ATTACHMENT,R8)), occlude_shader(Resources::get_global().get("_ambientocclusion_occlude.glsl.shader")), combine_shader(Resources::get_global().get("_ambientocclusion_combine.glsl.shader")), quad(Resources::get_global().get("_fullscreen_quad.mesh")), @@ -100,22 +98,33 @@ void AmbientOcclusion::set_edge_depth_threshold(float edt) void AmbientOcclusion::render(Renderer &renderer, const Texture2D &color, const Texture2D &depth) { + const Framebuffer *out_fbo = renderer.get_framebuffer(); + Renderer::Push push(renderer); renderer.set_texture("source", &color, &nearest_clamp_sampler); renderer.set_texture("depth", &depth, &nearest_clamp_sampler); - renderer.set_texture("occlusion", &occlude_target.get_target_texture(RENDER_COLOR), &linear_sampler); + renderer.set_texture("occlusion", &occlude_target.get_target_texture(COLOR_ATTACHMENT), &linear_sampler); renderer.set_texture("rotate", &rotate_lookup, &nearest_sampler); renderer.set_shader_program(&occlude_shader, &shdata); - { - BindRestore bind_fbo(occlude_target.get_framebuffer()); - quad.draw(renderer); - } + renderer.set_framebuffer(&occlude_target.get_framebuffer()); + quad.draw(renderer); + renderer.set_framebuffer(out_fbo); renderer.set_shader_program(&combine_shader); quad.draw(renderer); } +void AmbientOcclusion::set_debug_name(const string &name) +{ +#ifdef DEBUG + occlude_target.set_debug_name(name+" [RT]"); + shdata.set_debug_name(name+" [UBO]"); +#else + (void)name; +#endif +} + AmbientOcclusion::Template::Template(): n_samples(16),