author | Radek Brich <radek.brich@devl.cz> |
Sat, 29 Mar 2008 02:17:22 +0100 | |
branch | pyrit |
changeset 53 | 228cb8bfdd54 |
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:
46
diff
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:
7
diff
changeset
|
14 |
* kd-tree: |
4d192e13ee84
move nearest_intersection() to Container, add dummy KdTree.load(), plus small fixes
Radek Brich <radek.brich@devl.cz>
parents:
7
diff
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:
34
diff
changeset
|
17 |
- optimize traversal -- no std::vector |
19
4e0955fca797
added Camera, currently w/o Python binding
Radek Brich <radek.brich@devl.cz>
parents:
15
diff
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:
31
diff
changeset
|
21 |
* stochastic oversampling |
34
28f6e8b9d5d1
quaternion moved to extra header file
Radek Brich <radek.brich@devl.cz>
parents:
32
diff
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:
13
diff
changeset
|
25 |
|
49
558fde7da82a
workaround for divide by zero bug in octree
Radek Brich <radek.brich@devl.cz>
parents:
46
diff
changeset
|
26 |
Performance Weak Points |
558fde7da82a
workaround for divide by zero bug in octree
Radek Brich <radek.brich@devl.cz>
parents:
46
diff
changeset
|
27 |
======================= |
558fde7da82a
workaround for divide by zero bug in octree
Radek Brich <radek.brich@devl.cz>
parents:
46
diff
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:
46
diff
changeset
|
29 |
|
558fde7da82a
workaround for divide by zero bug in octree
Radek Brich <radek.brich@devl.cz>
parents:
46
diff
changeset
|
30 |
|
7
bf17f9f84c91
kd-tree: build algorithm - searching for all posible splits
Radek Brich <radek.brich@devl.cz>
parents:
6
diff
changeset
|
31 |
New Classes? |
bf17f9f84c91
kd-tree: build algorithm - searching for all posible splits
Radek Brich <radek.brich@devl.cz>
parents:
6
diff
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:
6
diff
changeset
|
40 |
wf.setContainer(top) |
bf17f9f84c91
kd-tree: build algorithm - searching for all posible splits
Radek Brich <radek.brich@devl.cz>
parents:
6
diff
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:
6
diff
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:
19
diff
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) |