Пример #1
0
    public Vector3 GetColor(Ray ray)
    {
        var attenuation = Vector3.one;

        for (int i = 0; i < maxDepth_; ++i)
        {
            var hit = new HitRecord();
            hitableList_.Hit(ray, hit);
            if (!hit.IsHit())
            {
                attenuation.Scale(GetBGColor(ray));
                break;
            }
            if (!hit.material.Scatter(ray, hit))
            {
                return(Vector3.zero);
            }
            attenuation.Scale(hit.attenuation);
            ray = hit.scatteredRay;
        }
        return(attenuation);
    }