TODO
author Radek Brich <radek.brich@devl.cz>
Tue, 18 Dec 2007 12:36:01 +0100
branchpyrit
changeset 41 c1080cb5bd6d
parent 40 929aad02c5f2
child 44 3763b26244f0
permissions -rw-r--r--
fix possible division by zero in ccdemos/common_ply.h don't use DEFS variable in makefiles, just add it to CCFLAGS compile float version of libs with -fsingle-precision-constant

Bugs
====
 * concurrent read? (concurrent write should not occur)

Future Plans
============
 * kd-tree:
   - optimize structures
   - optimize construction: do not use bounding boxes of shapes, instead implement box-shape intersection
   - optimize traversal -- no std::vector
   - save/load
 * textures (3D procedural, pixmaps later)
 * update Python binding: Camera, new classes
 * namespace
 * stochastic oversampling
 * absorbtion of refracted rays in dense materials (can be computed using shape distance and some 'absorbance' constant)

New Classes?
============

container.h  -- Container
kdtree.h  -- KdTree
shapes.h  -- Triangle, Sphere
scene.h   -- Ray, Light, Camera, Scene
material.h -- Material, Texture
matrix.h  -- Matrix
vector.h  -- Vector3
reader.h  -- Reader, WavefrontReader

KdTree top
wf = new WavefrontReader()
wf.setContainer(top)
wf.setTransform(monkey_pos_matrix)
wf.read("monkey.obj")
// more transform&reads
destroy wf

top.optimize()  -- i.e. build tree

Scene scene -- container with shapes, a camera and lights
scene = new Scene()
scene.setTop(top) -- top object in hierarchy
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)