Esempio n. 1
0
 public override void ComputeScatteringFunctions(SurfaceInteraction inter, bool allowMultipleLobes)
 {
     if (Material != null)
     {
         Material.ComputeScatteringFunctions(inter, allowMultipleLobes);
     }
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 public abstract bool Intersect(Ray ray, out float t, out SurfaceInteraction inter);
Esempio n. 6
0
 public override bool Intersect(Ray ray, out SurfaceInteraction inter)
 {
     throw new NotImplementedException();
 }
Esempio n. 7
0
 public override void ComputeScatteringFunctions(SurfaceInteraction inter, bool allowMultipleLobes)
 {
     throw new NotImplementedException();
 }
Esempio n. 8
0
 public bool Intersect(Ray ray, out SurfaceInteraction inter)
 {
     return(Aggregate.Intersect(ray, out inter));
 }
Esempio n. 9
0
 public abstract void ComputeScatteringFunctions(SurfaceInteraction inter, bool allowMultipleLobes); // TODo transport mode