diff --git a/src/material.cc b/src/material.cc index c63cc5d..e039de9 100644 --- a/src/material.cc +++ b/src/material.cc @@ -8,78 +8,82 @@ #include "material.h" +namespace charles { + Material::Material() - : diffuse_level(0.8), - diffuse_color(Color::White), - specular_level(0.5), - specular_color(Color::White) + : mDiffuseModel(DiffuseShaderModel::Lambert), + mDiffuseIntensity(0.8), + mDiffuseColor(Color::White), + mSpecularModel(SpecularShaderModel::Phong), + mSpecularIntensity(0.5), + mSpecularColor(Color::White) { } -float -Material::get_diffuse_level() +Double +Material::GetDiffuseIntensity() const { - return diffuse_level; + return mDiffuseIntensity; } void -Material::set_diffuse_level(const float &kd) +Material::SetDiffuseIntensity(const Double& kd) { - diffuse_level = kd; - _clamp_parameter(diffuse_level); + mDiffuseIntensity = kd; + ClampParameter(mDiffuseIntensity); } -const Color & -Material::get_diffuse_color() +const Color& +Material::GetDiffuseColor() const { - return diffuse_color; + return mDiffuseColor; } void -Material::set_diffuse_color(const Color &c) +Material::SetDiffuseColor(const Color& color) { - diffuse_color = c; + mDiffuseColor = color; } -float -Material::get_specular_level() +Double +Material::GetSpecularIntensity() const { - return specular_level; + return mSpecularIntensity; } void -Material::set_specular_level(const float &ks) +Material::SetSpecularIntensity(const Double& ks) { - specular_level = ks; - _clamp_parameter(specular_level); + mSpecularIntensity = ks; + ClampParameter(mSpecularIntensity); } -const Color & -Material::get_specular_color() +const Color& +Material::GetSpecularColor() const { - return specular_color; + return mSpecularColor; } void -Material::set_specular_color(const Color &c) +Material::SetSpecularColor(const Color& color) { - specular_color = c; + mSpecularColor = color; } void -Material::_clamp_parameter(float ¶m) +Material::ClampParameter(Double& param) { if (param < 0.0) { param = 0.0; @@ -88,3 +92,5 @@ Material::_clamp_parameter(float ¶m) param = 1.0; } } + +} /* namespace charles */ diff --git a/src/material.h b/src/material.h index b982f66..3d52461 100644 --- a/src/material.h +++ b/src/material.h @@ -9,37 +9,49 @@ #define __MATERIAL_H__ #include "basics.h" +#include "types.hh" +namespace charles { -class Material +struct Material { -public: - enum { - DiffuseLightingTypeLambert = 1, - } DiffuseLightingType; + enum class DiffuseShaderModel { + Lambert, + }; + + enum class SpecularShaderModel { + Blinn, + Phong + }; Material(); - float get_diffuse_level() const; - void set_diffuse_level(const float &kd); - const Color &get_diffuse_color() const; - void set_diffuse_color(const Color &c); + Double GetDiffuseIntensity() const; + void SetDiffuseIntensity(const Double& kd); - float get_specular_level() const; - void set_specular_level(const float &kd); - const Color &get_specular_color() const; - void set_specular_color(const Color &c); + const Color& GetDiffuseColor() const; + void SetDiffuseColor(const Color& c); + + Double GetSpecularIntensity() const; + void SetSpecularIntensity(const Double& kd); + + const Color &GetSpecularColor() const; + void SetSpecularColor(const Color& c); private: - void _clamp_parameter(float ¶m); + void ClampParameter(Double& param); // Diffuse parameters. - float diffuse_level; - Color diffuse_color; + DiffuseShaderModel mDiffuseModel; + Double mDiffuseIntensity; + Color mDiffuseColor; // Specular parameters. - float specular_level; - Color specular_color; + SpecularShaderModel mSpecularModel; + Double mSpecularIntensity; + Color mSpecularColor; }; +} /* namespace charles */ + #endif