The spica renderer
accelerator.h
1 #ifdef _MSC_VER
2 #pragma once
3 #endif
4 
5 #ifndef _SPICA_ACCELERATOR_H_
6 #define _SPICA_ACCELERATOR_H_
7 
8 #include <vector>
9 #include <map>
10 
11 #include "core/core.hpp"
12 #include "core/common.h"
13 #include "core/uncopyable.h"
14 #include "core/triangle.h"
15 #include "core/bounds3d.h"
16 #include "core/primitive.h"
17 
18 namespace spica {
19 
23 class SPICA_EXPORTS Accelerator : public Aggregate, Uncopyable {
24 public:
25  // Public methods
26  explicit Accelerator(const std::vector<std::shared_ptr<Primitive>>& primitives)
27  : primitives_{ primitives } {}
28 
29  Accelerator(const std::vector<std::shared_ptr<Primitive>> &primitives,
30  RenderParams &params)
31  : Accelerator{ primitives_ } {
32  }
33 
34  virtual ~Accelerator() {}
35  virtual void construct() = 0;
36  virtual Bounds3d worldBound() const override {
37  return worldBound_;
38  }
39 
40  inline const std::vector<std::shared_ptr<Primitive>>& primitives() const {
41  return primitives_;
42  }
43 
44 protected:
45  // Protected internal classes
46  struct IndexedTriangle;
47  struct AxisComparator;
48 
49  // Protected fields
50  std::vector<std::shared_ptr<Primitive>> primitives_;
51  Bounds3d worldBound_;
52 };
53 
54 } // namespace spica
55 
56 #endif // _SPICA_ACCELERATOR_H_
Definition: primitive.h:59
Interface for intersection test accelerators.
Definition: accelerator.h:23
Definition: renderparams.h:27
Interface class which forbids copy and assignment.
Definition: uncopyable.h:15