Esempio n. 1
0
        public override bool Scatter(Ray rIn, HitRecord rec, out Vec3 attenuation, out Ray scattered)
        {
            Vec3 target = rec.P + rec.Normal + FastRandom.RandomInUnitSphere();

            scattered   = new Ray(rec.P, target - rec.P, rIn.Time());
            attenuation = _albedo.Value(rec.U, rec.V, rec.P);
            return(true);
        }
Esempio n. 2
0
        public override bool Scatter(Ray rIn, HitRecord rec, out Vec3 attenuation, out Ray scattered)
        {
            Vec3 reflected = Vec3.Reflect(Vec3.UnitVector(rIn.Direction()), rec.Normal);

            scattered   = new Ray(rec.P, reflected + _fuzz * FastRandom.RandomInUnitSphere(), rIn.Time());
            attenuation = _albedo;
            return(Vec3.Dot(scattered.Direction(), rec.Normal) > 0);
        }