X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbloom.cpp;h=36cdb8ddfeec2eeb67e940f95521667e549dc78d;hb=f48b68626a98c4a0b8991764d174eb57895e805f;hp=0ff0c5da34210c2b155150934603dc0fbec2ef5c;hpb=f14435e58bfa0fa697a06ba9a454bb30cd37d9d8;p=libs%2Fgl.git diff --git a/source/bloom.cpp b/source/bloom.cpp index 0ff0c5da..36cdb8dd 100644 --- a/source/bloom.cpp +++ b/source/bloom.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include "blend.h" #include "bloom.h" #include "meshbuilder.h" @@ -57,16 +57,11 @@ namespace GL { Bloom::Bloom(unsigned w, unsigned h): blur_shader(blur_vs, blur_fs), - blur_shdata_common(blur_shader), - blur_shdata_x(blur_shader), - blur_shdata_y(blur_shader), combine_shader(combine_vs, combine_fs), - combine_shdata(combine_shader), quad(VERTEX2) { - int loc = blur_shader.get_uniform_location("delta"); - blur_shdata_x.uniform(loc, 1.0f/w, 0.0f); - blur_shdata_y.uniform(loc, 0.0f, 1.0f/h); + blur_shdata[0].uniform("delta", 1.0f/w, 0.0f); + blur_shdata[1].uniform("delta", 0.0f, 1.0f/h); blur_shdata_common.uniform("source", 0); for(unsigned i=0; i<2; ++i) @@ -95,7 +90,7 @@ Bloom::Bloom(unsigned w, unsigned h): void Bloom::set_radius(float r) { if(r<=0.0f) - throw InvalidParameterValue("Radius must be positive"); + throw out_of_range("Bloom::set_radius"); int size = min(static_cast(r*3.0f), 9); blur_shdata_common.uniform("size", size); @@ -113,7 +108,7 @@ void Bloom::set_radius(float r) void Bloom::set_strength(float s) { if(s<0.0f || s>1.0f) - throw InvalidParameterValue("Strength must be in the range [0.0, 1.0]"); + throw out_of_range("Bloom::set_strength"); combine_shdata.uniform("strength", s); } @@ -130,7 +125,7 @@ void Bloom::render(const Texture2D &src, const Texture2D &) { Bind bind_tex(i ? tex[0] : src); fbo.attach(COLOR_ATTACHMENT0, tex[i], 0); - (i ? blur_shdata_y : blur_shdata_x).apply(); + blur_shdata[i].apply(); quad.draw(); } }