X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbasicmaterial.cpp;fp=source%2Fbasicmaterial.cpp;h=858c65daf56e8a31e5cdb9c22f1ab0da3f43ae57;hp=7ba8380c1b47b62db0dad9746d19db1a1ec5413b;hb=fd62e55d37716787fe909883a1b18e5b8128ec80;hpb=4af69ec90120a0be828a1ae475a38674087110b5 diff --git a/source/basicmaterial.cpp b/source/basicmaterial.cpp index 7ba8380c..858c65da 100644 --- a/source/basicmaterial.cpp +++ b/source/basicmaterial.cpp @@ -14,6 +14,36 @@ BasicMaterial::BasicMaterial() set_reflectivity(0.0f); } +string BasicMaterial::create_program_source() const +{ + string source = "import phong;\n"; + if(diffuse.texture) + source += "const bool use_diffuse_map = true;\n"; + if(specular.texture || specular.value.r || specular.value.g || specular.value.b) + { + source += "const bool use_specular = true;\n"; + if(specular.texture) + source += "const bool use_specular_map = true;\n"; + if(shininess.texture) + source += "const bool use_shininess_map = true;\n"; + } + if(normal.texture) + source += "const bool use_normal_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(reflectivity.value || reflectivity.texture) + { + source += "const bool use_reflectivity = true;\n"; + if (reflectivity.texture) + source += "const bool use_reflectivity_map = true;\n"; + } + return source; +} + void BasicMaterial::attach_textures_to(Texturing &texturing, ProgramData &tex_shdata) const { attach_texture_to(diffuse.texture, texturing, tex_shdata, "diffuse_map");