import common;
import shadow;
+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;
vec3 color = light_color*surface_diffuse*diffuse_intensity;
if(use_specular)
{
- /* The light vector points towards the light, so reflected will point
- towards the surface - but so does the look vector. */
- vec3 reflected = reflect(light, normal);
- float specular_intensity = pow(max(dot(reflected, look), 0.0), shininess);
+ vec3 reflected = reflect(look, normal);
+ float specular_intensity = pow(max(dot(reflected, light), 0.0), shininess);
color += light_color*surface_specular*specular_intensity;
}
return color;