- "vec3 view_dir = vec3(0.0, 0.0, 1.0);\n"
- "vec3 specular = vec3(0.0, 0.0, 0.0);\n"
- "if (dot(normal, light_dir) >= 0.0) {\n"
- "attenuation * light[i].color * pow(max(0.0, dot(reflect(-light_dir, normal), view_dir)), 25.0);\n"
- "}\n"
+ "vec3 specular = attenuation * light[i].color"
+ " * mix(spec_color, vec3(1.0), pow(1.0 - max(0.0, dot(normalize(light_dir + view_dir), view_dir)), 5.0))"
+ " * pow(max(0.0, dot(reflect(-light_dir, normal), view_dir)), frag_shiny);\n"