X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbloom.cpp;h=36cdb8ddfeec2eeb67e940f95521667e549dc78d;hb=777f5f37f2d89ef2a787a77d74372b643968740e;hp=0c2dccec04d3a04bb7fc3aec1adc400213358e41;hpb=5172d32d67595ea0b70184fadcfcb8e023cccbc8;p=libs%2Fgl.git diff --git a/source/bloom.cpp b/source/bloom.cpp index 0c2dccec..36cdb8dd 100644 --- a/source/bloom.cpp +++ b/source/bloom.cpp @@ -1,12 +1,5 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2009-2011 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include -#include +#include #include "blend.h" #include "bloom.h" #include "meshbuilder.h" @@ -64,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) @@ -102,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); @@ -120,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); } @@ -137,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(); } }