TODO
branchpyrit
changeset 44 3763b26244f0
parent 40 929aad02c5f2
child 46 6493fb65f0b1
equal deleted inserted replaced
43:0b8b968b42d1 44:3763b26244f0
     1 Bugs
     1 Bugs
     2 ====
     2 ====
     3  * concurrent read? (concurrent write should not occur)
     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.
     4 
     7 
     5 Future Plans
     8 Future Plans
     6 ============
     9 ============
       
    10  * namespace
     7  * kd-tree:
    11  * kd-tree:
     8    - optimize structures
    12    - optimize structures
     9    - optimize construction: do not use bounding boxes of shapes, instead implement box-shape intersection
    13    - optimize construction: use box-shape intersection instead of bounding boxes of shapes
    10    - optimize traversal -- no std::vector
    14    - optimize traversal -- no std::vector
    11    - save/load
    15    - save/load
    12  * textures (3D procedural, pixmaps later)
    16  * textures (3D procedural, pixmaps)
    13  * update Python binding: Camera, new classes
    17  * update Python binding: Camera, other new classes
    14  * namespace
       
    15  * stochastic oversampling
    18  * stochastic oversampling
    16  * absorbtion of refracted rays in dense materials (can be computed using shape distance and some 'absorbance' constant)
    19  * absorbtion of refracted rays in dense materials (can be computed using shape distance and some 'absorbance' constant)
       
    20  * implement efficient AABB-ray intersection using Plucker coordinates
       
    21  * generalization: Camera "shader" (ray generator), surface shader and maybe light & background shaders
    17 
    22 
    18 New Classes?
    23 New Classes?
    19 ============
    24 ============
    20 
    25 
    21 container.h  -- Container
       
    22 kdtree.h  -- KdTree
       
    23 shapes.h  -- Triangle, Sphere
    26 shapes.h  -- Triangle, Sphere
    24 scene.h   -- Ray, Light, Camera, Scene
    27 scene.h   -- Ray, Light, Camera, Scene
    25 material.h -- Material, Texture
    28 material.h -- Material, Texture
    26 matrix.h  -- Matrix
       
    27 vector.h  -- Vector3
       
    28 reader.h  -- Reader, WavefrontReader
    29 reader.h  -- Reader, WavefrontReader
    29 
    30 
    30 KdTree top
       
    31 wf = new WavefrontReader()
    31 wf = new WavefrontReader()
    32 wf.setContainer(top)
    32 wf.setContainer(top)
    33 wf.setTransform(monkey_pos_matrix)
    33 wf.setTransform(monkey_pos_matrix)
    34 wf.read("monkey.obj")
    34 wf.read("monkey.obj")
    35 // more transform&reads
    35 // more transform&reads
    36 destroy wf
    36 destroy wf
    37 
    37 
    38 top.optimize()  -- i.e. build tree
       
    39 
       
    40 Scene scene -- container with shapes, a camera and lights
    38 Scene scene -- container with shapes, a camera and lights
    41 scene = new Scene()
    39 scene = new Scene()
    42 scene.setTop(top) -- top object in hierarchy
       
    43 scene.setCamera(new Camera(eye, u, v, p))
    40 scene.setCamera(new Camera(eye, u, v, p))
    44 scene.addLight(new PointLight(pos, color))
    41 scene.addLight(new PointLight(pos, color))
    45 rt.setScene(scene)
    42 rt.setScene(scene)
    46 rt.render(w,h)
    43 rt.render(w,h)
    47 
    44