Use per-vertex normals for (seemingly) curved surfaces; however, this can leave visible black edges. Extend path if transparent or reflective surface has been hit.