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); }