コード例 #1
0
ファイル: Reflect.cs プロジェクト: Presageee/ray
        public static ColorChannel calcReflectChannel(Union b, Ray3 ray, int reflectTime)
        {
            InsertsectResult result = b.insertsect(ray);

            if (result.sphere != null)
            {
                float        reflectiveness = result.sphere.material.reflectiveness;
                ColorChannel color          = result.sphere.material.calcColor(ray, result.position, result.normal);
                color = color.mul(1 - reflectiveness);
                if (reflectiveness > 0 && reflectTime > 0)
                {
                    Vector3      tmpDir = result.normal.mul(-2 * result.normal.dot(ray.getDirection)).add(ray.getDirection);
                    Ray3         newRay = new Ray3(result.position, tmpDir);
                    ColorChannel tmp    = calcReflectChannel(b, newRay, reflectTime - 1);
                    color = color.add(tmp.mul(reflectiveness));
                }
                return(color);
            }
            else
            {
                return(Constant.black);
            }
        }
コード例 #2
0
ファイル: ColorChannel.cs プロジェクト: Presageee/ray
 public ColorChannel mud(ColorChannel colorchannel)
 {
     return(new ColorChannel(r * colorchannel.r, g * colorchannel.g, b * colorchannel.b));
 }
コード例 #3
0
ファイル: ColorChannel.cs プロジェクト: Presageee/ray
 public ColorChannel add(ColorChannel colorchannel)
 {
     return(new ColorChannel(r + colorchannel.r, g + colorchannel.g, b + colorchannel.b));
 }