/// <summary> /// /// </summary> /// <param name="s"></param> /// <param name="f"></param> /// <returns></returns> public static Spectrum operator /(Spectrum s, double f) { var result = new Spectrum (); for (var i = 0; i < s.nSamples; ++i) result.c[i] = s.c[i] / f; return s; }
/// <summary> /// /// </summary> /// <param name="s1"></param> /// <param name="s2"></param> /// <returns></returns> public static Spectrum operator +(Spectrum s1, Spectrum s2) { var ret = new Spectrum (); for (var i = 0; i < s1.nSamples; ++i) ret.c[i] = s1.c[i] + s2.c[i]; return ret; }
/// <summary> /// /// </summary> /// <param name="p"></param> /// <param name="pEpsilon"></param> /// <param name="lmax"></param> /// <param name="scene"></param> /// <param name="computeLightVisibility"></param> /// <param name="time"></param> /// <param name="coeffs"></param> public virtual void SHProject(Point p, double pEpsilon, int lmax, Scene scene, bool computeLightVisibility, double time, Spectrum[] coeffs) { for (var i = 0; i < Sh.SHTerms (lmax); ++i) coeffs[i] = new Spectrum (); var ns = Util.RoundUpPow2 (this.NumberOfSamples); var scramble1D = Api.Random.Next (); var scramble2D = new int[] { Api.Random.Next (), Api.Random.Next () }; var Ylm = new double[Sh.SHTerms (lmax)]; for (var i = 0; i < ns; ++i) { var u = new double[2]; var pdf = 0.0; var lightSample = new LightSample (u[0], u[1], MonteCarlo.VanDerCorput (i, scramble1D)); } }
/// <summary> /// /// </summary> /// <param name="sa"></param> /// <param name="sps"></param> /// <param name="et"></param> public BSSRDF(Spectrum sa, Spectrum sps, double et) { this.e = et; this.sigA = sa; this.sigpS = sps; }