different specular models implemented