X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fprogrambuilder.h;h=053eb567487a9a03964235a5d04b3d84c555a68c;hp=f2046e458f7e81c650dcd73de36f2fe4b59fa8a7;hb=4e4a3514961d130045619ea74d0bbab71580838c;hpb=437609f708f2918067ec64f6d02261d113b1cac0 diff --git a/source/programbuilder.h b/source/programbuilder.h index f2046e45..053eb567 100644 --- a/source/programbuilder.h +++ b/source/programbuilder.h @@ -104,6 +104,9 @@ public: /** Number of clipping planes to process. */ unsigned max_clip_planes; + /** Use a geometry shader. */ + bool geometry; + /** Force the use of legacy shaders conforming to GLSL 1.10. Defaults to true if the version of GLSL is less than 1.30, false otherwise. */ bool legacy; @@ -125,7 +128,9 @@ private: UNIFORM, ATTRIBUTE, VERTEX, - FRAGMENT + GEOMETRY, + FRAGMENT, + N_SCOPES }; enum InterfaceFlags @@ -177,8 +182,8 @@ private: InterfaceFlags get_interface_flags(VariableScope) const; std::string create_type_declaration() const; std::string create_declaration(char = 0, bool = false) const; - std::string create_replacement(VariableScope, const char * = 0) const; - std::string create_expression(const char * = 0) const; + std::string create_replacement(VariableScope, unsigned, const char * = 0) const; + std::string create_expression(unsigned, const char * = 0) const; }; enum MatchType @@ -192,6 +197,7 @@ private: StandardFeatures features; std::list custom_variables; std::string feature_flags; + unsigned enabled_scopes; std::map aliases; bool optimize; @@ -218,6 +224,7 @@ private: static bool parse_identifier(const char *, unsigned &, unsigned &); static std::vector extract_identifiers(const char *); static std::string replace_identifiers(const char *, const std::map &, bool = false); + static VariableScope previous_scope(VariableScope, unsigned); std::string create_expression(const ShaderVariable &, const char * = 0) const; };