public bool hit(Ray r, double tMin, double tMax, ref HitRecord rec) { HitRecord tempRec = new HitRecord(); bool hitAnything = false; double closestSoFar = tMax; for (int i = 0; i < hitArray.Length; i++) { if (hitArray[i].hit(r, tMin, closestSoFar, ref tempRec)) { hitAnything = true; closestSoFar = tempRec.t; rec = tempRec; } } return(hitAnything); //return hitBVH(r, tMin, tMax, ref rec); }
public bool hit(Ray r, double tMin, double tMax, ref HitRecord rec) { if (box.hit(r, tMin, tMax)) { HitRecord leftRec = new HitRecord(); HitRecord rightRec = new HitRecord(); bool hit_left = left.hit(r, tMin, tMax, ref leftRec); bool hit_right = right.hit(r, tMin, tMax, ref rightRec); if (hit_left && hit_right) { if (leftRec.t < rightRec.t) { rec = leftRec; } else { rec = rightRec; } return(true); } else { if (hit_left) { rec = leftRec; return(true); } else if (hit_right) { rec = rightRec; return(true); } } } return(false); }
public bool hit(Ray r, double tMin, double tMax, ref HitRecord rec) { throw new NotImplementedException(); }