X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcolorcurve.cpp;h=8811b065fd3b6f0dddddd86a8e091e08d97bc224;hp=8983df2bb7fb1b943d88decca8305cff95c176f5;hb=bec07999d95b76f4b47cffcc564d0cd0afc0435e;hpb=78840e775c62c1b6e3f550bf8be1f0b828df91aa diff --git a/source/colorcurve.cpp b/source/colorcurve.cpp index 8983df2b..8811b065 100644 --- a/source/colorcurve.cpp +++ b/source/colorcurve.cpp @@ -13,16 +13,15 @@ namespace GL { ColorCurve::ColorCurve(): shprog("colorcurve.glsl"), - quad(get_fullscreen_quad()) + quad(get_fullscreen_quad()), + linear_sampler(get_linear_sampler()), + nearest_sampler(get_nearest_sampler()) { shdata.uniform("source", 0); shdata.uniform("curve", 1); - curve.storage(LUMINANCE, 256, 1); - Sampler &sampler = curve.get_default_sampler(); - sampler.set_min_filter(LINEAR); - sampler.set_wrap(CLAMP_TO_EDGE); - texturing.attach(1, curve); + curve.storage(LUMINANCE8, 256, 1); + texturing.attach(1, curve, linear_sampler.get()); set_exposure_adjust(0.0f); set_brightness_response(0.4f); @@ -50,7 +49,7 @@ void ColorCurve::set_gamma(float g) unsigned char curve_data[256]; for(unsigned i=0; i<256; ++i) curve_data[i] = pow(i/255.0f, 1/g)*255+0.5f; - curve.image(0, LUMINANCE, UNSIGNED_BYTE, curve_data); + curve.image(0, curve_data); } void ColorCurve::set_srgb() @@ -59,7 +58,7 @@ void ColorCurve::set_srgb() curve_data[0] = 0; for(unsigned i=1; i<256; ++i) curve_data[i] = to_srgb(i/255.0f)*255+0.5f; - curve.image(0, LUMINANCE, UNSIGNED_BYTE, curve_data); + curve.image(0, curve_data); } void ColorCurve::set_linear() @@ -67,17 +66,17 @@ void ColorCurve::set_linear() unsigned char curve_data[256]; for(unsigned i=0; i<256; ++i) curve_data[i] = i; - curve.image(0, LUMINANCE, UNSIGNED_BYTE, curve_data); + curve.image(0, curve_data); } void ColorCurve::render(Renderer &renderer, const Texture2D &color_buf, const Texture2D &) { - texturing.attach(0, color_buf); + texturing.attach(0, color_buf, nearest_sampler.get()); Renderer::Push push(renderer); renderer.set_shader_program(&shprog, &shdata); renderer.set_texturing(&texturing); - quad.draw(renderer); + quad->draw(renderer); }