-enum ColorSpace {
- COLORSPACE_sRGB = 0,
- COLORSPACE_REC_709 = 0, // Same as sRGB.
- COLORSPACE_REC_601_525 = 1,
- COLORSPACE_REC_601_625 = 2,
-};
+// A node in the graph; basically an effect and some associated information.
+class Node {
+public:
+ Effect *effect;
+ bool disabled;
+
+ // Edges in the graph (forward and backward).
+ std::vector<Node *> outgoing_links;
+ std::vector<Node *> incoming_links;
+
+private:
+ // Identifier used to create unique variables in GLSL.
+ std::string effect_id;
+
+ // Logical size of the output of this effect, ie. the resolution
+ // you would get if you sampled it as a texture. If it is undefined
+ // (since the inputs differ in resolution), it will be 0x0.
+ // If both this and output_texture_{width,height} are set,
+ // they will be equal.
+ unsigned output_width, output_height;
+
+ // If output goes to RTT (otherwise, none of these are set).
+ // The Phase 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;