src/raytracer.h
branchpyrit
changeset 10 f9fad94cd0cc
parent 7 bf17f9f84c91
child 11 4d192e13ee84
equal deleted inserted replaced
9:3239f749e394 10:f9fad94cd0cc
    25 };
    25 };
    26 //static void *renderrow(void *data);
    26 //static void *renderrow(void *data);
    27 
    27 
    28 class Raytracer
    28 class Raytracer
    29 {
    29 {
    30 	ShapeList shapes;
    30 	Container *top;
    31 	vector<Light*> lights;
    31 	vector<Light*> lights;
    32 	Colour bg_colour;
    32 	Colour bg_colour;
    33 	int ao_samples;
    33 	int ao_samples;
    34 	float ao_distance, ao_angle;
    34 	float ao_distance, ao_angle;
    35 
    35 
    36 	Vector3 SphereDistribute(int i, int n, float extent, Vector3 &normal);
    36 	Vector3 SphereDistribute(int i, int n, float extent, Vector3 &normal);
    37 	inline Shape *nearest_intersection(const Shape *origin_shape, const Ray &ray,
    37 	inline Shape *nearest_intersection(const Shape *origin_shape, const Ray &ray,
    38 		float &nearest_distance);
    38 		float &nearest_distance);
    39 public:
    39 public:
    40 	Raytracer(): shapes(), lights(), bg_colour(0.0, 0.0, 0.0), ao_samples(0) {};
    40 	Raytracer(): lights(), bg_colour(0.0, 0.0, 0.0), ao_samples(0) { top = new KdTree(); };
    41 	~Raytracer() {};
    41 	~Raytracer() {};
    42 	float *render(int w, int h);
    42 	float *render(int w, int h);
    43 	Colour raytrace(Ray &ray, int depth, Shape *origin_shape);
    43 	Colour raytrace(Ray &ray, int depth, Shape *origin_shape);
    44 	void addshape(Shape *shape);
    44 	void addshape(Shape *shape) { top->addShape(shape); };
    45 	void addlight(Light *light);
    45 	void addlight(Light *light);
    46 
    46 
    47 	void ambientocclusion(int samples, float distance, float angle);
    47 	void ambientocclusion(int samples, float distance, float angle);
    48 };
    48 };
    49 
    49