public override BSDF GetBsdf(DifferentialGeometry dgGeom, DifferentialGeometry dgShading) { DifferentialGeometry dgs = new DifferentialGeometry (); if (BumpMap != null) Bump (BumpMap, dgGeom, dgShading, ref dgs); else dgs = new DifferentialGeometry (dgShading); BSDF bsdf = new BSDF (dgs, dgGeom.n); Spectrum r = Kd.Evaluate (dgs).Clamp (); double sig = Util.Clamp (Sigma.Evaluate (dgs), 0.0, 90.0); if (sig == 0.0) bsdf.Add (new Lambertian (r)); else bsdf.Add (new OrenNayar (r, sig)); return bsdf; }
public override BSDF GetBsdf(DifferentialGeometry dgGeom, DifferentialGeometry dgShading) { DifferentialGeometry dgs = new DifferentialGeometry (); if (BumpMap != null) Bump (BumpMap, dgGeom, dgShading, ref dgs); else dgs = new DifferentialGeometry (dgShading); BSDF bsdf = new BSDF (dgs, dgGeom.n); Spectrum R = Kr.Evaluate (dgs).Clamp (); double e = Eta.Evaluate (dgs); if (!R.IsBlack) bsdf.Add (new SpecularReflection (R, new FresnelDielectric (1.0, e))); return bsdf; }