X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain.h;h=918769b3872451576f329a5252568fc214889a03;hp=071f9ebe51b33b511facbba7d7c2a68d8c542863;hb=f216b7bef5a968c89f6fc78e83cc26a91e504a8a;hpb=2d3b64d51be3e8f38a8c224f558de4ceb222e799 diff --git a/effect_chain.h b/effect_chain.h index 071f9eb..918769b 100644 --- a/effect_chain.h +++ b/effect_chain.h @@ -303,12 +303,12 @@ public: // while retaining reasonable precision for typical image data. It will, // however, cause some gamut clipping if your colorspace is far from sRGB, // as it cannot represent values outside [0,1]. NOTE: If you construct - // a chain where you end up bouncing pixels in non-linear light this - // will not do the wrong thing. However, it's hard to see how this - // could happen in a non-contrived chain; few effects ever need texture - // bounce or resizing without also combining multiple pixels, which - // really needs linear light and thus triggers a conversion before the - // bounce. + // a chain where you end up bouncing pixels in non-linear light + // (gamma different from GAMMA_LINEAR), this will be the wrong thing. + // However, it's hard to see how this could happen in a non-contrived + // chain; few effects ever need texture bounce or resizing without also + // combining multiple pixels, which really needs linear light and thus + // triggers a conversion before the bounce. // // If you don't need alpha (or can do with very little of it), GL_RGB10_A2 // is even better, as it has two more bits for each color component. There @@ -318,7 +318,10 @@ public: // the sRGB curve, and reduces maximum error (in sRGB distance) by almost an // order of magnitude, well below what you can get from 8-bit true sRGB. // (Note that this strategy avoids the problem with bounced non-linear data - // above, since the square root is turned off in that case.) + // above, since the square root is turned off in that case.) However, texture + // filtering will happen on the transformed values, so if you have heavy + // downscaling or the likes (e.g. mipmaps), you could get subtly bad results. + // You'll need to see which of the two that works the best for you in practice. void set_intermediate_format( GLenum intermediate_format, FramebufferTransformation transformation = NO_FRAMEBUFFER_TRANSFORMATION) @@ -338,7 +341,6 @@ public: void reset_phase_timing(); void print_phase_timing(); - //void render(unsigned char *src, unsigned char *dst); void render_to_screen() { render_to_fbo(0, 0, 0);