Bugs
====
* (none known)
Future Plans
============
* changing main ray tracing algoritm to more flexible architecture with a Sampler object:
- enhance Sampler to support subsampling
* namespace
* kd-tree:
- optimize structures
- optimize construction: use box-shape intersection instead of bounding boxes of shapes
- optimize traversal -- no std::vector, no dynamic memory allocation
- save/load
* textures (3D procedural, pixmaps)
* update Python binding: Camera, other new classes
* stochastic oversampling
* absorbtion of refracted rays in dense materials (can be computed using shape distance and some 'absorbance' constant)
* implement efficient AABB-ray intersection using Plucker coordinates
* generalization: Camera "shader" (ray generator), surface shader and maybe light & background shaders
* unify capitalization of method names in C++ and Python
New Classes?
============
shapes.h -- Triangle, Sphere
scene.h -- Ray, Light, Camera, Scene
material.h -- Material, Texture
reader.h -- Reader, WavefrontReader
wf = new WavefrontReader()
wf.setContainer(top)
wf.setTransform(monkey_pos_matrix)
wf.read("monkey.obj")
// more transform&reads
destroy wf
Scene scene -- container with shapes, a camera and lights
scene = new Scene()
scene.setCamera(new Camera(eye, u, v, p))
scene.addLight(new PointLight(pos, color))
rt.setScene(scene)
rt.render(w,h)
constructors have zero or one parameter by default -- the object to copy data from
more parameters -- the data (ray origin and direction)