Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authorEvan Goers <mega@osirion.org>2014-09-21 03:30:48 +0000
committerEvan Goers <mega@osirion.org>2014-09-21 03:30:48 +0000
commit7550a2e19516d7924bcd89356f3f1b0402180e2f (patch)
tree9554b0e74737d431640521c47aba68c2e26c98a6 /src/model
parent62a0cbd0f2f9b59d078d3feecf1296c7066163a8 (diff)
Added shininess setting for shaders.
Diffstat (limited to 'src/model')
-rw-r--r--src/model/layer.cc6
-rw-r--r--src/model/layer.h18
-rw-r--r--src/model/material.cc6
3 files changed, 28 insertions, 2 deletions
diff --git a/src/model/layer.cc b/src/model/layer.cc
index 4ef7fbf..014795c 100644
--- a/src/model/layer.cc
+++ b/src/model/layer.cc
@@ -14,6 +14,7 @@ Layer::Layer() :
layer_rgbgen(RGBGenIdentity),
layer_color(1.0f),
layer_color_specular(1.0f),
+ layer_shininess(32),
layer_texmap(TexMapNone),
layer_texture_name(),
layer_texture_id(0),
@@ -47,6 +48,11 @@ void Layer::set_specular(const math::Color & specular)
layer_color_specular.assign(specular);
}
+void Layer::set_shininess(const math::Color & shininess)
+{
+ layer_shininess.assign(shininess);
+}
+
void Layer::set_texmap(const TexMap texmap)
{
layer_texmap = texmap;
diff --git a/src/model/layer.h b/src/model/layer.h
index d6af529..6bf75ca 100644
--- a/src/model/layer.h
+++ b/src/model/layer.h
@@ -104,6 +104,15 @@ public:
}
/**
+ * @brief layer shininess
+ * The shininess value is used to control the GL_SHININESS of the layer.
+ * */
+ inline const math::Color & shininess() const
+ {
+ return layer_shininess;
+ }
+
+ /**
* @brief layer texture map
*/
const TexMap texmap() const
@@ -169,6 +178,12 @@ public:
* This value is used in lighting calculations
* */
void set_specular(const math::Color & specular);
+
+ /**
+ * @brief set layer specular color
+ * This value is used in lighting calculations
+ * */
+ void set_shininess(const math::Color & shininess);
/**
* @brief set the texture map type
@@ -210,7 +225,8 @@ private:
math::Vector2f layer_size;
RGBGen layer_rgbgen;
math::Color layer_color;
- math::Color layer_color_specular;
+ math::Color layer_color_specular;
+ math::Color layer_shininess;
TexMap layer_texmap;
std::string layer_texture_name;
size_t layer_texture_id;
diff --git a/src/model/material.cc b/src/model/material.cc
index d4accc8..3d67cad 100644
--- a/src/model/material.cc
+++ b/src/model/material.cc
@@ -184,7 +184,7 @@ void Material::load_shaderfile(const std::string &shadername)
unsigned int linenumber = 0;
char line[1024];
unsigned int count = 0;
- float r, g, b, a;
+ float r, g, b, a, shine;
Material *material = 0;
Layer *layer = 0;
@@ -309,6 +309,10 @@ void Material::load_shaderfile(const std::string &shadername)
}
layer->set_specular(math::Color(r, g, b, a));
}
+ } else if (firstword.compare("shininess") == 0) {
+ if (linestream >> shine) {
+ layer->set_shininess(shine);
+ }
} else if (firstword.compare("engine") == 0) {
layer->set_rgbgen(Layer::RGBGenEngine);
} else if (firstword.compare("entity") == 0) {