#ifndef __FG_RENDERINGPIPELINE_HXX #define __FG_RENDERINGPIPELINE_HXX 1 #include #include #include namespace simgear { class SGReaderWriterOptions; } namespace flightgear { struct CameraInfo; class CameraGroup; } class FGRenderingPipeline; namespace flightgear { FGRenderingPipeline* makeRenderingPipeline(const std::string& name, const simgear::SGReaderWriterOptions* options); } class FGRenderingPipeline : public osg::Referenced { public: struct Buffer : public osg::Referenced { Buffer(SGPropertyNode* prop); std::string name; GLint internalFormat; GLenum sourceFormat; GLenum sourceType; int width; int height; float scaleFactor; GLenum wrapMode; bool shadowComparison; //GLenum shadowTextureMode; //osg::Vec4 borderColor; }; struct Pass : public osg::Referenced { Pass(SGPropertyNode* prop); std::string name; std::string type; }; struct Attachment : public osg::Referenced { Attachment(SGPropertyNode* prop); Attachment(osg::Camera::BufferComponent c, const std::string& b ) : component(c), buffer(b) {} osg::Camera::BufferComponent component; std::string buffer; }; struct Stage : public osg::Referenced { Stage(SGPropertyNode* prop); std::string name; std::string type; std::vector > passes; std::vector > attachments; }; FGRenderingPipeline(); std::vector > buffers; std::vector > stages; friend FGRenderingPipeline* flightgear::makeRenderingPipeline(const std::string& name, const simgear::SGReaderWriterOptions* options); }; #endif