public bool Hit(Ray r, double tMin, double tMax, out HitRecord hr) { if (!Box.Hit(r, tMin, tMax)) { hr = default(HitRecord); return(false); } var hitLeft = Left.Hit(r, tMin, tMax, out var hrl); var hitRight = Right.Hit(r, tMin, hitLeft ? hrl.T : tMax, out var hrr); if (hitRight) { hr = hrr; if (hr.Material == null) { Console.WriteLine("Returning HRR with null material"); } return(true); } if (hitLeft) { hr = hrl; if (hr.Material == null) { Console.WriteLine("Returning HRL with null material"); } return(true); } hr = default(HitRecord); return(false); }
public bool Hit(Ray ray, float tMin, float tMax) { if (box == null) { return(false); } return(box.Hit(ray, tMin, tMax)); }