public override void ComputeScatteringFunctions(SurfaceInteraction inter, bool allowMultipleLobes) { if (Material != null) { Material.ComputeScatteringFunctions(inter, allowMultipleLobes); } }
public BSDF(SurfaceInteraction inter, float eta = 1) { Eta = eta; ng = inter.N; ns = inter.Shading.N; ss = inter.Shading.DpDu.Normalized(); ts = Vector3 <float> .Cross(ns.ToVector3(), ss); }
public override bool Intersect(Ray ray, out SurfaceInteraction inter) { if (!Shape.Intersect(ray, out float tHit, out inter)) { return(false); } ray.Tmax = tHit; inter.Primitive = this; return(true); }
public override bool Intersect(Ray ray, out SurfaceInteraction inter) { var hit = false; float closestT = float.PositiveInfinity; inter = null; foreach (var p in Primitives) { if (/*p.WorldBounds.IntersectP(ray, out float t0, out float t1) && */ p.Intersect(ray, out SurfaceInteraction inter2) && ray.Tmax < closestT) { hit = true; closestT = ray.Tmax; inter = inter2; } } return(hit); }
public abstract bool Intersect(Ray ray, out float t, out SurfaceInteraction inter);
public override bool Intersect(Ray ray, out SurfaceInteraction inter) { throw new NotImplementedException(); }
public override void ComputeScatteringFunctions(SurfaceInteraction inter, bool allowMultipleLobes) { throw new NotImplementedException(); }
public bool Intersect(Ray ray, out SurfaceInteraction inter) { return(Aggregate.Intersect(ray, out inter)); }
public abstract void ComputeScatteringFunctions(SurfaceInteraction inter, bool allowMultipleLobes); // TODo transport mode