updated specular to work with Vec3