public override Vector3 Area_Light_Shade(ShadeRec sr) { Vector3 L = (base.Area_Light_Shade(sr)); Vector3 wo = (-sr.Ray.Direction); Vector3 wi = Vector3.Zero(); float pdf = 0; Vector3 fr = (glossy_specular.Sample_F(sr, wo, ref wi, ref pdf)); Ray reflected_ray = new Ray(sr.HitPoint, wi); L += fr * sr.World.Tracer.TraceRay(reflected_ray, sr.Depth + 1) * (Vector3.Dot(sr.Normal, wi)) / pdf; return(L); }