Subversion Repositories gelsvn

Rev

Blame | Last modification | View Log | RSS feed

#ifndef __PATHTRACER_SCENE__HPP__
#define __PATHTRACER_SCENE__HPP__

#include "core.hpp"
#include "luminaire.hpp"
#include "camera.hpp"

namespace Geometry { class BSPTree; }

class scene
{
public:
        scene(void);
        ~scene(void);

        //insert object into scene (all objects are potential luminaires)
        size_t luminaires(void) const;
        void insert(const luminaire*);
        const luminaire* get_luminaire(size_t) const;

        //set the one and only camera
        const camera* get_camera(void) const;
        void set_camera(const camera*);

        //initialize acceleration structure
        void initialize(int max_objs=1<<20, int max_depth=20);

        //intersection testing
        bool intersect(const ray&);
        bool intersect(const ray&, hit_info&);

private:
        const camera* cam_;
        std::vector<const luminaire*> objs_;
        Geometry::BSPTree* accel_;
};

#endif


//02566 framework, Anders Wang Kristensen, awk@imm.dtu.dk, 2007

Generated by GNU Enscript 1.6.6.