Even though the speed of software ray tracing has recently been increased to interactive performance even on standard PCs, these systems usually only supported triangles as geometric primitives. Directly handling free-form surfaces such as spline or subdivision surfaces instead of first tessellating them offers many advantages such as higher precision results, reduced memory requirements, and faster preprocessing due to less primitives. However, existing algorithms for ray tracing free-form surfaces are much too slow for interactive use. In this paper we present a simple and generic approach for ray tracing free-form surfaces together with specific implementations for cubic Bézier and Loop subdivision surfaces. We show that our approach allows to increase the performance by more than an order of magnitude, requires only constant memory, and is largely independent on the total number of free-form primitives in a scene. Examples demonstrate that even scene with over one hundred thous...