+ struct Phase;
+
+ // A node in the graph; basically an effect and some associated information.
+ struct Node {
+ Effect *effect;
+
+ // Identifier used to create unique variables in GLSL.
+ std::string effect_id;
+
+ // Edges in the graph (forward and backward).
+ std::vector<Node *> outgoing_links;
+ std::vector<Node *> incoming_links;
+
+ // If output goes to RTT (otherwise, none of these are set).
+ // The Phsae pointer is a but ugly; we should probably fix so
+ // that Phase takes other phases as inputs, instead of Node.
+ GLuint output_texture;
+ unsigned output_texture_width, output_texture_height;
+ Phase *phase;
+
+ // Used during the building of the effect chain.
+ ColorSpace output_color_space;
+ GammaCurve output_gamma_curve;
+ };
+
+ // A rendering phase; a single GLSL program rendering a single quad.