X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Feffects%2Fcolorcurve.cpp;h=697a0583de0c43df6fc37f7408823c4ec74f3388;hp=130fa8df2a45f6b7be2fe711186273a8da26a5b1;hb=1863f17c5c5563be8492d7f01e5c613a740ea1e9;hpb=6f39983060a27634c012f66c82fea0d09fea9774 diff --git a/source/effects/colorcurve.cpp b/source/effects/colorcurve.cpp index 130fa8df..697a0583 100644 --- a/source/effects/colorcurve.cpp +++ b/source/effects/colorcurve.cpp @@ -12,11 +12,11 @@ using namespace std; namespace Msp { namespace GL { -ColorCurve::ColorCurve(Resources &resources): - shprog(resources.get("_colorcurve.glsl.shader")), - quad(resources.get("_fullscreen_quad.mesh")), - linear_sampler(resources.get("_linear_clamp.samp")), - nearest_sampler(resources.get("_nearest_clamp.samp")) +ColorCurve::ColorCurve(): + shprog(Resources::get_global().get("_colorcurve.glsl.shader")), + quad(Resources::get_global().get("_fullscreen_quad.mesh")), + linear_sampler(Resources::get_global().get("_linear_clamp.samp")), + nearest_sampler(Resources::get_global().get("_nearest_clamp.samp")) { curve.storage(LUMINANCE8, 256, 1); @@ -34,6 +34,7 @@ void ColorCurve::set_brightness_response(float b) { if(b<=0 || b>1) throw invalid_argument("ColorCurve::set_brightness_response"); + // Calculate an offset value to obtain a derivative of 1 at zero intensity. float t = (b<1 ? pow(b, 1/(1-b)) : 0.0f); shdata.uniform("brightness_response", b, t, pow(t, b)); } @@ -75,6 +76,16 @@ void ColorCurve::render(Renderer &renderer, const Texture2D &color_buf, const Te quad.draw(renderer); } +void ColorCurve::set_debug_name(const string &name) +{ +#ifdef DEBUG + shdata.set_debug_name(name+" [UBO]"); + curve.set_debug_name(name+"/curve.tex1d"); +#else + (void)name; +#endif +} + ColorCurve::Template::Template(): exposure_adjust(0.0f), @@ -83,9 +94,9 @@ ColorCurve::Template::Template(): srgb(false) { } -ColorCurve *ColorCurve::Template::create(Resources &res, unsigned, unsigned) const +ColorCurve *ColorCurve::Template::create(unsigned, unsigned) const { - RefPtr colorcurve = new ColorCurve(res); + RefPtr colorcurve = new ColorCurve(); colorcurve->set_exposure_adjust(exposure_adjust); colorcurve->set_brightness_response(brightness_response); if(srgb)