-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;
+struct BasicMaterialParameters
+{
+ vec4 diffuse;
+ vec4 specular;
+ vec4 emission;
+ float shininess;
+ float reflectivity;
+};
+
+uniform BasicMaterial
+{
+ BasicMaterialParameters basic_material;
+};
+
+uniform sampler2D diffuse_map;
+uniform sampler2D specular_map;
+uniform sampler2D shininess_map;
+uniform sampler2D emission_map;
+uniform sampler2D reflectivity_map;
+
+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;