I didn't know about Arauna, that's interesting, but it seems to be a CUDA nVdia only tracer (I have an older ATI (now AMD) card.) The demo youtube videos don't seem anywhere near 30-70 fps (more like 10 or so) and, as far as I can tell from the docs, require multiple nVdia cards (again, at least that's what the demo says) to achieve the fps they have. Not at all trying to tear anybody down, but 30-70 fps would be an incredible achievement. I could easily be wrong, but it seems to be the case from the demos.
I do need to get into parallel-izing with the GPU and OpenCL will be my next step.
Here's the basis of what I'm doing. It's a scene API. It performs best when you pre-load everything you can though you are free to alter anything within the scene between renders. Written all in C, the scenes are a collection of meshes and lights. It handles materials with transparency, bumps, speculars, reflection, and angle of refraction. It's designed to fit the kind of data structures that you'd see in games.
It's multi-threaded and the API itself is asynchronous (it's designed so you can start a render on a scene and then go back and run the game physics, for instance). It currently renders to an OpenGL texture. The API also reflects a C++ binding in naming and parameter passing, and is object based. You can have multiple scenes and render to all simultaneously.
The scene analyzes all the meshes and builds hit lists through a bunch of methods, including any bounce backs to lights, where it gets it's most speed. In a simple scene, it could achieve huge frame rates, but the more complex the scene, the slower the frame rate. That's basically the gist of my ray tracer -- an attempt to minimize the amount of things I have to check for any one ray.
Also, it breaks up the frame into a number of squares and starts a stack that the threads feed from. I do this because some areas can be in darkness and a thread per square means a lot of threads end up finishing before any other one, which isn't efficient. Each square has it's own frustum eliminations of items in the scene.
It does have limits, not in the API, but in this implementation. It won't bounce a ray more than 8 times (this is settable), and right now it doesn't have reflections and refraction when tracing back to lights.
I am super interested in anybody with a playable game in a ray tracer, especially so I can compare with mine. So if you have anything to show, I'd love to see it. If you're achieving much higher fps than me, than it will tell me what direction to head off to next.