// in our own phase, which is exactly what we want.
virtual bool needs_texture_bounce() const { return true; }
virtual bool changes_output_size() const { return true; }
+ virtual bool sets_virtual_output_size() const { return false; }
virtual void inform_input_size(unsigned input_num, unsigned width, unsigned height)
{
*width = *virtual_width = input_width;
*height = *virtual_height = input_height;
}
+
+ virtual void inform_added(EffectChain *chain) { this->chain = chain; }
- enum Direction { HORIZONTAL = 0, VERTICAL = 1 };
+ enum Direction { INVALID = -1, HORIZONTAL = 0, VERTICAL = 1 };
private:
+ void generate_support_texture();
+
+ EffectChain *chain;
int input_width, input_height;
GLuint tex;
+ float uniform_num_repeats;
+ GLint uniform_support_tex;
+
int fft_size;
Direction direction;
int pass_number; // From 1..n.
int inverse; // 0 = forward (FFT), 1 = reverse (IFFT).
+
+ int last_fft_size;
+ Direction last_direction;
+ int last_pass_number;
+ int last_inverse;
+ int last_input_size;
};
} // namespace movit