import common;
import shadow;
-const bool use_diffuse_map = false;
-const bool use_specular = false;
-const bool use_specular_map = false;
-const bool use_shininess_map = false;
-const bool use_emission = false;
-const bool use_emission_map = false;
-const bool use_reflectivity = false;
-const bool use_reflectivity_map = false;
-const bool use_sky = false;
-const bool use_fog = false;
+layout(constant_id=auto) const bool use_diffuse_map = false;
+layout(constant_id=auto) const bool use_specular = false;
+layout(constant_id=auto) const bool use_specular_map = false;
+layout(constant_id=auto) const bool use_shininess_map = false;
+layout(constant_id=auto) const bool use_emission = false;
+layout(constant_id=auto) const bool use_emission_map = false;
+layout(constant_id=auto) const bool use_reflectivity = false;
+layout(constant_id=auto) const bool use_reflectivity_map = false;
+layout(constant_id=auto) const bool use_sky = false;
+layout(constant_id=auto) const bool use_fog = false;
#pragma MSP stage(fragment)
-vec4 get_diffuse_color()
+virtual vec4 get_diffuse_color()
{
if(use_diffuse_map)
return texture(diffuse_map, texcoord.xy);
return basic_material.diffuse;
}
-vec3 get_specular_color()
+virtual vec3 get_specular_color()
{
if(use_specular_map)
return texture(specular_map, texcoord.xy).rgb;
return basic_material.specular.rgb;
}
-float get_shininess_value()
+virtual float get_shininess_value()
{
if(use_shininess_map)
return texture(shininess_map, texcoord.xy).r*255.0;
return basic_material.shininess;
}
-vec3 get_emission_color()
+virtual vec3 get_emission_color()
{
if(use_emission_map)
return texture(emission_map, texcoord.xy).rgb;
return basic_material.emission.rgb;
}
-float get_reflectivity_value()
+virtual float get_reflectivity_value()
{
if(use_reflectivity_map)
return texture(reflectivity_map, texcoord.xy).r;