| author | Radek Brich <radek.brich@devl.cz> | 
| Fri, 28 Mar 2008 17:13:21 +0100 | |
| branch | pyrit | 
| changeset 50 | 14a727b70d07 | 
| parent 49 | 558fde7da82a | 
| child 57 | 1e92c21b9a61 | 
| permissions | -rw-r--r-- | 
| 31 | 1 | Bugs | 
| 2 | ==== | |
| 44 | 3 | * bad sphere/box transmisivity | 
| 4 | Inside-out transition is ignored as every second intersection is ignored to avoid duplicit | |
| 5 | intersect points. This solution should be replaced by moving ray origin a little forward, which | |
| 6 | should work as well and without side-effects. | |
| 31 | 7 | |
| 8 | Future Plans | |
| 9 | ============ | |
| 46 | 10 | * changing main ray tracing algoritm to more flexible architecture with a Sampler object: | 
| 49 
558fde7da82a
workaround for divide by zero bug in octree
 Radek Brich <radek.brich@devl.cz> parents: 
46diff
changeset | 11 | - enhance Sampler to support subsampling | 
| 46 | 12 | - rewrite pthreads | 
| 44 | 13 | * namespace | 
| 11 
4d192e13ee84
move nearest_intersection() to Container, add dummy KdTree.load(), plus small fixes
 Radek Brich <radek.brich@devl.cz> parents: 
7diff
changeset | 14 | * kd-tree: | 
| 
4d192e13ee84
move nearest_intersection() to Container, add dummy KdTree.load(), plus small fixes
 Radek Brich <radek.brich@devl.cz> parents: 
7diff
changeset | 15 | - optimize structures | 
| 44 | 16 | - optimize construction: use box-shape intersection instead of bounding boxes of shapes | 
| 40 
929aad02c5f2
Makefile: added help and distclean target, plus small fixes
 Radek Brich <radek.brich@devl.cz> parents: 
34diff
changeset | 17 | - optimize traversal -- no std::vector | 
| 19 
4e0955fca797
added Camera, currently w/o Python binding
 Radek Brich <radek.brich@devl.cz> parents: 
15diff
changeset | 18 | - save/load | 
| 44 | 19 | * textures (3D procedural, pixmaps) | 
| 20 | * update Python binding: Camera, other new classes | |
| 32 
8af5c17d368b
new Raytracer option: oversampling
 Radek Brich <radek.brich@devl.cz> parents: 
31diff
changeset | 21 | * stochastic oversampling | 
| 34 
28f6e8b9d5d1
quaternion moved to extra header file
 Radek Brich <radek.brich@devl.cz> parents: 
32diff
changeset | 22 | * absorbtion of refracted rays in dense materials (can be computed using shape distance and some 'absorbance' constant) | 
| 44 | 23 | * implement efficient AABB-ray intersection using Plucker coordinates | 
| 24 | * generalization: Camera "shader" (ray generator), surface shader and maybe light & background shaders | |
| 14 
fc18ac4833f2
replace Plane with axis-aligned Box (because infinite Plane is not usable with kd-tree)
 Radek Brich <radek.brich@devl.cz> parents: 
13diff
changeset | 25 | |
| 49 
558fde7da82a
workaround for divide by zero bug in octree
 Radek Brich <radek.brich@devl.cz> parents: 
46diff
changeset | 26 | Performance Weak Points | 
| 
558fde7da82a
workaround for divide by zero bug in octree
 Radek Brich <radek.brich@devl.cz> parents: 
46diff
changeset | 27 | ======================= | 
| 
558fde7da82a
workaround for divide by zero bug in octree
 Radek Brich <radek.brich@devl.cz> parents: 
46diff
changeset | 28 | * Raytracer::render -- allocating and deallocating every sample | 
| 
558fde7da82a
workaround for divide by zero bug in octree
 Radek Brich <radek.brich@devl.cz> parents: 
46diff
changeset | 29 | |
| 
558fde7da82a
workaround for divide by zero bug in octree
 Radek Brich <radek.brich@devl.cz> parents: 
46diff
changeset | 30 | |
| 7 
bf17f9f84c91
kd-tree: build algorithm - searching for all posible splits
 Radek Brich <radek.brich@devl.cz> parents: 
6diff
changeset | 31 | New Classes? | 
| 
bf17f9f84c91
kd-tree: build algorithm - searching for all posible splits
 Radek Brich <radek.brich@devl.cz> parents: 
6diff
changeset | 32 | ============ | 
| 3 | 33 | |
| 34 | shapes.h -- Triangle, Sphere | |
| 35 | scene.h -- Ray, Light, Camera, Scene | |
| 36 | material.h -- Material, Texture | |
| 37 | reader.h -- Reader, WavefrontReader | |
| 38 | ||
| 39 | wf = new WavefrontReader() | |
| 7 
bf17f9f84c91
kd-tree: build algorithm - searching for all posible splits
 Radek Brich <radek.brich@devl.cz> parents: 
6diff
changeset | 40 | wf.setContainer(top) | 
| 
bf17f9f84c91
kd-tree: build algorithm - searching for all posible splits
 Radek Brich <radek.brich@devl.cz> parents: 
6diff
changeset | 41 | wf.setTransform(monkey_pos_matrix) | 
| 3 | 42 | wf.read("monkey.obj")
 | 
| 7 
bf17f9f84c91
kd-tree: build algorithm - searching for all posible splits
 Radek Brich <radek.brich@devl.cz> parents: 
6diff
changeset | 43 | // more transform&reads | 
| 3 | 44 | destroy wf | 
| 45 | ||
| 46 | Scene scene -- container with shapes, a camera and lights | |
| 47 | scene = new Scene() | |
| 20 
f22952603f29
new C++ demo: realtime.cc (real-time scene viewer using SDL)
 Radek Brich <radek.brich@devl.cz> parents: 
19diff
changeset | 48 | scene.setCamera(new Camera(eye, u, v, p)) | 
| 3 | 49 | scene.addLight(new PointLight(pos, color)) | 
| 50 | rt.setScene(scene) | |
| 51 | rt.render(w,h) | |
| 52 | ||
| 53 | ||
| 54 | constructors have zero or one parameter by default -- the object to copy data from | |
| 55 | more parameters -- the data (ray origin and direction) |