+ // Whether this effects expects its input (and output) to be in
+ // linear gamma, ie. without an applied gamma curve. Most effects
+ // will want this, although the ones that never actually look at
+ // the pixels, e.g. mirror, won't need to care, and can set this
+ // to false. If so, the input gamma will be undefined.
+ //
+ // Also see the note on needs_many_samples(), below.
+ virtual bool needs_linear_light() const { return true; }
+
+ // Whether this effect expects its input to be in the sRGB
+ // color space, ie. use the sRGB/Rec. 709 RGB primaries.
+ // (If not, it would typically come in as some slightly different
+ // set of RGB primaries; you would currently not get YCbCr
+ // or something similar).
+ //
+ // Again, most effects will want this.
+ virtual bool needs_srgb_primaries() const { return true; }
+
+ // Whether this effect expects to be sampling many times from
+ // its input. If this is true, the framework will not chain the
+ // input from other effects, but will store the results of the
+ // chain to a temporary (RGBA fp16) texture and let this effect
+ // sample directly from that.
+ //
+ // Note that if you do _not_ set this, and do not sample on
+ // whole pixels (ie. you request linear filtering), it is undefined
+ // whether that filtering happen in linear gamma or not.
+ // It _could_ be (for instance in the case where the input is sRGB
+ // and your GPU applies gamma expansion before filtering), but you
+ // have no such guarantee. For most uses, however, this will be fine.
+ virtual bool needs_many_samples() const { return false; }