Planning

Delta Ray as planned will be an experimental ray tracing engine that can be easily dropped into other applications.  The goal will be to create an engine that can render in real-time for interactive simulations.  Delta Ray is planned in three stages, the second two to be worked on concurrently:
Stage 1: Get it working
This phase will involve the initial planning and creation of the project.  A testing framework will be created, and the structure will be fleshed out.  By the end of this phase, the engine will be able to render shaded spheres and planes with proper (though sharp) shadows.
Stage 2: Optimization
The second stage will involve research into optimization techniques to get the code running faster.  Current avenues for exploration include multithreading, HLSL, tree structures, and assembly code.
Stage 3: Beautification
This stage will see the implementation of other primitive shapes, reflection/refraction rays, and other techniques intended to improve the quality of the image.
The initial test application will render a static scene onscreen.  I would also like to create a test game application once the engine is at an acceptable framerate.

Task List

Stage 1
C++ WinAPI / DirectX Review            4 hours
Framework Creation                2 hours
Set Up Classes and Dependencies            2 hours
Implement and Test Main Loop            2 hours
1st testing shakedown                1 hour
Implement Sphere Intersection Tests        2 hours
Implement Plane Intersection Tests        1 hour
Implement Shadow Rays                2 hours
Much Debugging Here                8 hours
Baseline Testing (1st Milestone)        4 hours

Stage 2
Optimization Research                9 hours
    Threading                2 hours
    HLSL                    1 hour
    Trees                    4 hours
    Assembly code                2 hours

Stage 3
Reflection / Refraction rays            3 hours
Texturing                    2 hours
Complex Objects                    4 hours

Critical Path
Stage 1 must be done in order.  Once that section is complete, stages 2 and 3 can be worked on in any fashion, as they comprise individual additions to the framework.

Components / Classes
Bitmap: this will be a standardized interface to whatever graphic subsystem is used (initially directX only).  It will contain a SetPixel method called by the main Tracer object.

Tracer: the guts of the engine.  It contains the functions that make it do stuff.  The main guts of this is the draw function which takes a list of drawables and a list of lightsources, then does magic.

Camera: contains the data required to save a camera state, including position, direction, and field of view.

Drawable: abstract object with methods to check for intersection – all primitives will inherit from this.

Lightsource: holds light data, including light, color, and power

Ray: Just a location and a direction

Platform
I would like to make this platform independent; however initial versions will use DirectX on Windows Vista to run.  Unless I somehow use Vertex Shaders, I won’t need DX10, so it should also run on Win XP.