And I know what I'm doing now. And it's gonna be good. (and I'm doing this for a class project so I have more time and motivation to do it.)
So I thought I'd give an overview of my plans for the engine. I'm open to tips and suggestions; I know for a fact that there are people who are smarter than I am.
I've got at least two phases in mind for the foreseeable future of this project.
Phase 1: A ray tracer that will fulfill the requirements of the class project but leave tons of room for building a pretty good render engine.
Phase 2: A unidirectional path tracer that simulates bounce lighting or 'Global Illumination' as some call it. I'll try and leave room for a modern shader language as well.
In order to keep myself motivated, I'll post a list of the features I'd like to implement. This will also serve to remind me what I hope to achieve. So here goes. My goals for phase 1 are as follows:
- Recursive ray tracing
- Shapes:
- Sphere
- Plane
- Triangle (and triangle meshes)
- Customizable shader model
- Diffuse
- Specular
- Reflection
- (Maybe) Refraction
- Two anti-aliasing modes using super sampling:
- uniform number of AA samples per pixel
- Variable number of samples: more for edges and fewer for smooth areas
- Two sample patterns:
- Grid pattern
- Jitter pattern
- Box filter to average the samples (with room for other filters)
- Point light (spot and area lights will have to wait until phase 2)
- Camera movement controls
- Render to OpenGL window
The project is due April 12th, so I've got some work to do. I've already created all of the header files for the classes I'll need. I might end up posting a UML diagram of the project. It never hurts to be organized.
Stay tuned!
No comments:
Post a Comment