X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpbrmaterial.cpp;fp=source%2Fpbrmaterial.cpp;h=0000000000000000000000000000000000000000;hb=7aaec9a70b8d7733429bec043f8e33e02956f266;hp=bc7104cc652d485350614b5737b32e6a42771f80;hpb=bec07999d95b76f4b47cffcc564d0cd0afc0435e;p=libs%2Fgl.git diff --git a/source/pbrmaterial.cpp b/source/pbrmaterial.cpp deleted file mode 100644 index bc7104cc..00000000 --- a/source/pbrmaterial.cpp +++ /dev/null @@ -1,138 +0,0 @@ -#include "pbrmaterial.h" - -using namespace std; - -namespace Msp { -namespace GL { - -PbrMaterial::PbrMaterial(): - receive_shadows(false) -{ - set_base_color(0.8f); - set_metalness(0.0f); - set_roughness(0.5f); - set_emission(0.0f); -} - -string PbrMaterial::create_program_source() const -{ - string source = "import cooktorrance;\n"; - if(base_color.texture) - source += "const bool use_base_color_map = true;\n"; - if(normal.texture) - source += "const bool use_normal_map = true;\n"; - if(metalness.texture) - source += "const bool use_metalness_map = true;\n"; - if(roughness.texture) - source += "const bool use_roughness_map = true;\n"; - if(occlusion.texture) - source += "const bool use_occlusion_map = true;\n"; - if(emission.texture || emission.value.r || emission.value.g || emission.value.b) - { - source += "const bool use_emission = true;\n"; - if(emission.texture) - source += "const bool use_emission_map = true;\n"; - } - if(receive_shadows) - source += "const bool use_shadow_map = true;\n"; - return source; -} - -void PbrMaterial::attach_textures_to(Texturing &texturing, ProgramData &tex_shdata) const -{ - attach_texture_to(base_color.texture, texturing, tex_shdata, "base_color_map"); - attach_texture_to(metalness.texture, texturing, tex_shdata, "metalness_map"); - attach_texture_to(roughness.texture, texturing, tex_shdata, "roughness_map"); - attach_texture_to(normal.texture, texturing, tex_shdata, "normal_map"); - attach_texture_to(occlusion.texture, texturing, tex_shdata, "occlusion_map"); - attach_texture_to(emission.texture, texturing, tex_shdata, "emission_map"); -} - -void PbrMaterial::set_base_color(const Color &color) -{ - base_color.value = color; - shdata.uniform("pbr_material.base_color", color); -} - -void PbrMaterial::set_base_color_map(const Texture *tex) -{ - base_color.texture = tex; -} - -void PbrMaterial::set_normal_map(const Texture *tex) -{ - normal.texture = tex; -} - -void PbrMaterial::set_metalness(float value) -{ - metalness.value = value; - shdata.uniform("pbr_material.metalness", value); -} - -void PbrMaterial::set_metalness_map(const Texture *tex) -{ - metalness.texture = tex; -} - -void PbrMaterial::set_roughness(float value) -{ - roughness.value = value; - shdata.uniform("pbr_material.roughness", value); -} - -void PbrMaterial::set_roughness_map(const Texture *tex) -{ - roughness.texture = tex; -} - -void PbrMaterial::set_occlusion_map(const Texture *tex) -{ - occlusion.texture = tex; -} - -void PbrMaterial::set_emission(const Color &color) -{ - emission.value = color; - shdata.uniform("pbr_material.emission", color); -} - -void PbrMaterial::set_emission_map(const Texture *tex) -{ - emission.texture = tex; -} - -void PbrMaterial::set_receive_shadows(bool s) -{ - receive_shadows = s; -} - - -DataFile::Loader::ActionMap PbrMaterial::Loader::shared_actions; - -PbrMaterial::Loader::Loader(PbrMaterial &m): - DerivedObjectLoader >(m) -{ - set_actions(shared_actions); -} - -PbrMaterial::Loader::Loader(PbrMaterial &m, Collection &c): - DerivedObjectLoader >(m, c) -{ - set_actions(shared_actions); -} - -void PbrMaterial::Loader::init_actions() -{ - Material::PropertyLoader::init_actions(); - add_property("base_color", &PbrMaterial::set_base_color, &PbrMaterial::set_base_color_map, true); - add_property("normal", &PbrMaterial::set_normal_map); - add_property("metalness", &PbrMaterial::set_metalness, &PbrMaterial::set_metalness_map); - add_property("roughness", &PbrMaterial::set_roughness, &PbrMaterial::set_roughness_map); - add_property("occlusion", &PbrMaterial::set_occlusion_map); - add_property("emission", &PbrMaterial::set_emission, &PbrMaterial::set_emission_map, false); - add("receive_shadows", &PbrMaterial::receive_shadows); -} - -} // namespace GL -} // namespace Msp