Hyperion.Core.Interfaces.ICamera.GenerateRayDifferential C# (CSharp) Method

GenerateRayDifferential() public method

public GenerateRayDifferential ( CameraSample sample, RayDifferential &rd ) : double
sample CameraSample
rd Hyperion.Core.Geometry.RayDifferential
return double
        public virtual double GenerateRayDifferential(CameraSample sample, ref RayDifferential rd)
        {
            Ray r = new Ray (rd.Origin, rd.Direction, rd.MinT, rd.MaxT, rd.Time);
            double wt = GenerateRay (sample, ref r);
            rd.Origin = r.Origin;
            rd.Direction = r.Direction;
            rd.MinT = r.MinT;
            rd.MaxT = r.MaxT;
            rd.Time = r.Time;

            CameraSample sshift = sample;
            ++sshift.ImageX;

            Ray rx = new Ray ();
            double wtx = GenerateRay (sshift, ref rx);
            rd.RxOrigin = rx.Origin;
            rd.RxDirection = rx.Direction;

            --sshift.ImageX;
            ++sshift.ImageY;

            Ray ry = new Ray ();
            double wty = GenerateRay (sshift, ref ry);
            rd.RyOrigin = ry.Origin;
            rd.RyDirection = ry.Direction;

            if (wtx == 0.0 || wty == 0.0)
                return 0.0;

            rd.HasDifferentials = true;

            return wt;
        }