]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programbuilder.h
Remember the camera given to Renderer constructor
[libs/gl.git] / source / programbuilder.h
index e61e9942c0a343083f5d876baaa819befac61b44..053eb567487a9a03964235a5d04b3d84c555a68c 100644 (file)
@@ -88,7 +88,7 @@ public:
                bool specular;
 
                /** Use a normal map texture.  Only used if lighting is true. */
-               bool normalmap;
+               bool normal_map;
 
                /** Use a shadow map.  Requires a ShadowMap effect or equivalent in the
                pipeline. */
@@ -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<VariableDefinition> custom_variables;
        std::string feature_flags;
+       unsigned enabled_scopes;
        std::map<std::string, std::string> aliases;
        bool optimize;
 
@@ -218,6 +224,7 @@ private:
        static bool parse_identifier(const char *, unsigned &, unsigned &);
        static std::vector<std::string> extract_identifiers(const char *);
        static std::string replace_identifiers(const char *, const std::map<std::string, std::string> &, bool = false);
+       static VariableScope previous_scope(VariableScope, unsigned);
        std::string create_expression(const ShaderVariable &, const char * = 0) const;
 };