Should ideal specular multiply light colour with material colour? Ideal specular reflection is like a perfect mirror. I'm looking at the code to SmallPt and see that one of the spheres has an ideal specular material:

Sphere spheres[] = {//Scene: radius, position, emission, color, material 
   / ...
   Sphere(16.5,Vec(27,16.5,47),       Vec(),Vec(1,1,1)*.999, SPEC),//Mirr
   / ...
 };


In the radiance calculation, this happens:

  } else if (obj.refl == SPEC)            // Ideal SPECULAR reflection 
     return obj.e + f.mult(radiance(Ray(x,r.d-n*2*n.dot(r.d)),depth,Xi)); 


where f is the object colour of Vec(.999,.999,.999).

I was surprised to see colour multiplication here. Doesn't an ideal mirror have no colour? I guess as f is Vec(.999,.999,.999), effectively it's passing through the colour almost unchanged? Any thoughts on why .999 was used and not 1? I'm guessing this is something to do modelling a miniscule energy loss?
What "ideal" means in this context is that there is no divergence in the direction of light reflection vectors (i.e. no roughness) but that they are all considered to be perfect reflections from an optical flat surface. However, even for optical flat surfaces Fresnel equation is still applied in BRDF evaluation that changes specular reflection and is potentially wavelength dependent, which is a common characteristic with metals.



However, in smallPt there's no Fresnel approximation (e.g. Schlick's approximation) but the surface reflectance is simply multiplied with constant term which is wrong. Also 0.999 specular albedo is very high for any real material. Below is a table of specular reflectange of various metals &amp; dielectrics at normal incidence for reference: