Subversion Repositories gelsvn

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
349 awk 1
#ifndef __PATHTRACER_SCENE__HPP__
2
#define __PATHTRACER_SCENE__HPP__
3
 
4
#include "core.hpp"
5
#include "luminaire.hpp"
6
#include "camera.hpp"
7
 
8
namespace Geometry { class BSPTree; }
9
 
10
class scene
11
{
12
public:
13
    scene(void);
14
    ~scene(void);
15
 
16
    //insert object into scene (all objects are potential luminaires)
17
    size_t luminaires(void) const;
18
    void insert(const luminaire*);
19
    const luminaire* get_luminaire(size_t) const;
20
 
21
    //set the one and only camera
22
    const camera* get_camera(void) const;
23
    void set_camera(const camera*);
24
 
25
    //initialize acceleration structure
26
    void initialize(int max_objs=1<<20, int max_depth=20);
27
 
28
    //intersection testing
29
    bool intersect(const ray&);
30
    bool intersect(const ray&, hit_info&);
31
 
32
private:
33
    const camera* cam_;
34
    std::vector<const luminaire*> objs_;
35
    Geometry::BSPTree* accel_;
36
};
37
 
38
#endif
39
 
40
//02566 framework, Anders Wang Kristensen, awk@imm.dtu.dk, 2007