surface TEST_gather_mirror (float samples = 1;
                       float samplecone = 0;
                       float noisefreq = 1)
{
color   hitc = 0;
vector  i = normalize(I);
normal  n = normalize(N),
        nf = faceforward(n, i);
point px = P*noisefreq;
Ci = 0;

if(nf.-i > 0)
    {
    vector reflectDirection = reflect(i, nf);
    point nn = point noise(px);
    reflectDirection *= (nn)/2;
    gather("illuminance", P, reflectDirection, 
       samplecone, samples, "surface:Ci", hitc/*, "distribution", "uniform"*/) 
        {
        Ci += hitc; 
        } 
    }
/* Average the samples or the 
   surface will be too bright */
Ci /= samples; 
Oi = 1;
}

