]> git.tdb.fi Git - libs/gl.git/commitdiff
Move the reflectivity parameter to material
authorMikko Rasa <tdb@tdb.fi>
Sat, 27 Sep 2014 15:42:35 +0000 (18:42 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sat, 27 Sep 2014 15:42:35 +0000 (18:42 +0300)
Logically it belongs there, even if OpenGL has no fixed-function support
for it.

source/material.cpp
source/material.h
source/programbuilder.cpp

index 13f2d1d9d9f785ddefa152a22ad3f4dd0fed3a01..feb97bfa14b9d66023d52487803d7b15df2ccd2f 100644 (file)
@@ -12,6 +12,7 @@ Material::Material()
        set_specular(0);
        set_emission(0);
        set_shininess(0);
+       set_reflectivity(0);
 }
 
 void Material::update_parameter(int mask) const
@@ -66,6 +67,12 @@ void Material::set_shininess(float s)
        update_parameter(SHININESS);
 }
 
+void Material::set_reflectivity(float r)
+{
+       reflectivity = r;
+       shdata.uniform("reflectivity", reflectivity);
+}
+
 void Material::bind() const
 {
        if(set_current(this))
@@ -97,6 +104,7 @@ void Material::Loader::init()
        add("specular",  &Loader::specular);
        add("emission",  &Loader::emission);
        add("shininess", &Loader::shininess);
+       add("reflectivity", &Loader::reflectivity);
 }
 
 Color Material::Loader::make_color(float r, float g, float b, float a)
@@ -132,5 +140,10 @@ void Material::Loader::shininess(float s)
        obj.set_shininess(s);
 }
 
+void Material::Loader::reflectivity(float r)
+{
+       obj.set_reflectivity(r);
+}
+
 } // namespace GL
 } // namespace Msp
index a38dddd6a8d5efe097882e44623a3f1f7474a118..a149f6d4131fe0ee928f361aabd6065605948921 100644 (file)
@@ -33,6 +33,7 @@ public:
                void specular(float, float, float, float);
                void emission(float, float, float, float);
                void shininess(float);
+               void reflectivity(float);
        };
 
 private:
@@ -50,6 +51,7 @@ private:
        Color specular;
        Color emission;
        float shininess;
+       float reflectivity;
        ProgramData shdata;
 
 public:
@@ -64,11 +66,13 @@ public:
        void set_specular(const Color &s);
        void set_emission(const Color &e);
        void set_shininess(float s);
+       void set_reflectivity(float);
        const Color &get_ambient() const { return ambient; }
        const Color &get_diffuse() const { return diffuse; }
        const Color &get_specular() const { return specular; }
        const Color &get_emission() const { return emission; }
        float get_shininess() const { return shininess; }
+       float get_reflectivity() const { return reflectivity; }
        const ProgramData &get_shader_data() const { return shdata; }
        void bind() const;
 };
index 6d6a117e29c34569378a5c8aacd13fea9e133d4b..db9809c4f986a29b2fca7bbd6a204fb31df2de57 100644 (file)
@@ -135,7 +135,7 @@ const ProgramBuilder::VariableDefinition ProgramBuilder::standard_variables[] =
        { UNIFORM, "normalmap", "sampler2D", 0, 0 },
        { UNIFORM, "environment", "samplerCube", 0, 0 },
        { UNIFORM, "EnvMap::env_eye_matrix", "mat3", 0, 0 },
-       { UNIFORM, "EnvMap::reflectivity", "float", 0, 0 },
+       { UNIFORM, "Material::reflectivity", "float", 0, 0 },
        { UNIFORM, "eye_obj_matrix", "mat4", "gl_ModelViewMatrix", 0 },
        { UNIFORM, "eye_obj_normal_matrix", "mat3", "gl_NormalMatrix", 0 },
        { UNIFORM, "projection_matrix", "mat4", "gl_ProjectionMatrix", 0 },