I've stumbled into Optix samples that define their own intersection programs to define how primitives intersect (or don't) with a ray, and others (mostly those only dealing with triangle meshes) that don't.
Maybe I haven't really figured out exactly what is hardware accelerated when we write programs using Optix, but I would've guessed that checking the intersection is the costly (and thus hardware accelerated) part. So why are we allowed to write our own software intersection programs? Maybe I'm not really understanding how the hardware acceleration of raytracing works?