Exemplo n.º 1
0
 public override Spectrum SampleL(Scene scene, LightSample ls, float u1, float u2, float time, out Ray ray, out Normal ns, out float pdf)
 {
     ray = new Ray(_lightPosition,
                   MonteCarloUtilities.UniformSampleSphere(ls.UPos0, ls.UPos1),
                   0.0f, float.PositiveInfinity, time);
     ns  = (Normal)ray.Direction;
     pdf = MonteCarloUtilities.UniformSpherePdf();
     return(_intensity);
 }
Exemplo n.º 2
0
        public override Point Sample(float u1, float u2, out Normal ns)
        {
            Point p = new Point(0, 0, 0) + _radius * MonteCarloUtilities.UniformSampleSphere(u1, u2);

            ns = Normal.Normalize(ObjectToWorld.TransformNormal(new Normal(p.X, p.Y, p.Z)));
            if (ReverseOrientation)
            {
                ns *= -1.0f;
            }
            return(ObjectToWorld.TransformPoint(ref p));
        }