The current direction for the LxEngine is to support simultaneous ray-tracing and rasterization from the same scene graph data structure. The motivating factor is that I’m interested in both ray-tracing and rasterization, and also that this provides an interesting challenge to create a properly thread-safe (but also efficient) data structure.
Currently, the OpenGL 3.2 rasterizer is a separate project from the ray-tracer. The plan is to build up the data structures into the rasterizer to support everything the ray-tracer could do (see prior blog posts) and then re-incorporate the ray-tracing code into the rasterizer project.
The goal eventually would be to have the two pictures below match as nearly as possible. One rendering in a window rasterized by OpenGL and the other rendering simultaneously using a software raytracer…
- Load the scene from a JSON file
- Support for planes
- Support for object colors
- Support for keyboard camera movement
- Internal JSON-like variant data object for creating pluggable scene graph elements
- Pluggable scene attributes (e.g., color, transform)
- Pluggable scene nodes (e.g. sphere, triangle mesh)