X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fambientocclusion.cpp;h=ed7d1636d711d34ee6539fd4ddb11adbb4677f44;hp=1b078cdc116a187a718e9d92b8ef97b3fd84f5ec;hb=HEAD;hpb=a525c632144d3dcefe373916bdde789727d2230d diff --git a/source/ambientocclusion.cpp b/source/ambientocclusion.cpp deleted file mode 100644 index 1b078cdc..00000000 --- a/source/ambientocclusion.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#define _USE_MATH_DEFINES -#include -#include "ambientocclusion.h" -#include "blend.h" -#include "renderer.h" -#include "shader.h" -#include "tests.h" - -namespace Msp { -namespace GL { - -AmbientOcclusion::AmbientOcclusion(unsigned w, unsigned h, float depth_ratio): - occlude_target(w, h, (RENDER_COLOR,RGB)), - occlude_shader("ambientocclusion_occlude.glsl"), - combine_shader("ambientocclusion_combine.glsl"), - quad(get_fullscreen_quad()) -{ - texturing.attach(2, occlude_target.get_target_texture(RENDER_COLOR)); - - rotate_lookup.storage(RGBA, 4, 4); - rotate_lookup.set_min_filter(NEAREST); - rotate_lookup.set_mag_filter(NEAREST); - unsigned char data[64]; - for(unsigned i=0; i<16; ++i) - { - float a = ((i*541)%16)*M_PI/32; - float c = cos(a); - float s = sin(a); - data[i*3 ] = static_cast(127+c*127); - data[i*3+1] = static_cast(127+s*127); - data[i*3+2] = static_cast(127-s*127); - data[i*3+4] = static_cast(127+c*127); - } - rotate_lookup.image(0, RGBA, UNSIGNED_BYTE, data); - - texturing.attach(3, rotate_lookup); - - shdata.uniform("source", 0); - shdata.uniform("depth", 1); - shdata.uniform("occlusion", 2); - shdata.uniform("rotate", 3); - shdata.uniform("screen_size", static_cast(w), static_cast(h)); - - set_depth_ratio(depth_ratio); - set_darkness(1.5); -} - -void AmbientOcclusion::set_depth_ratio(float depth_ratio) -{ - depth_ratio = 1/depth_ratio; - - shdata.uniform("depth_ratio", depth_ratio, 1+depth_ratio); -} - -void AmbientOcclusion::set_darkness(float darkness) -{ - shdata.uniform("darkness", darkness); -} - -void AmbientOcclusion::render(Renderer &renderer, const Texture2D &color, const Texture2D &depth) -{ - texturing.attach(0, color); - texturing.attach(1, depth); - - Renderer::Push push(renderer); - renderer.set_texturing(&texturing); - renderer.set_shader_program(&occlude_shader, &shdata); - - { - BindRestore bind_fbo(occlude_target.get_framebuffer()); - quad.draw(renderer); - } - - renderer.set_shader_program(&combine_shader); - quad.draw(renderer); -} - -} // namespace GL -} // namespace Msp