コード例 #1
0
ファイル: Lambertain.cs プロジェクト: Veraatversus/Raytracing
        public (Vec3 color, Ray ray) Scatter(Ray rIn, HitRecord hitRec)
        {
            var scatteredDirection = hitRec.N + MathR.RandomUnitVector();
            var scatterRay         = new Ray(hitRec.P, scatteredDirection);

            return(Color, scatterRay);
        }
コード例 #2
0
ファイル: Metal.cs プロジェクト: Veraatversus/Raytracing
        public (Vec3 color, Ray ray) Scatter(Ray rIn, HitRecord hitRec)
        {
            var reflect            = rIn.Direction.Reflect(hitRec.N);
            var scatteredDirection = reflect + (MathR.RandomUnitVector() * Fuzz);

            if (scatteredDirection.Dot(hitRec.N) > 0)
            {
                var scatterRay = new Ray(hitRec.P, scatteredDirection);
                return(Color, scatterRay);
            }
            return(default);