5 #ifndef _SPICA_PRIMITIVE_H_
6 #define _SPICA_PRIMITIVE_H_
11 #include "core/common.h"
12 #include "core/core.hpp"
13 #include "core/cobject.h"
15 #include "core/render.hpp"
22 virtual Bounds3d worldBound()
const = 0;
24 virtual bool intersect(
Ray& ray)
const = 0;
25 virtual const Light* light()
const = 0;
26 virtual const Material* material()
const = 0;
27 virtual std::vector<Triangle> triangulate()
const = 0;
29 MemoryArena& arena)
const = 0;
36 const std::shared_ptr<Material>& material,
37 const std::shared_ptr<Light>& areaLight =
nullptr,
38 const std::shared_ptr<MediumInterface>& mediumInterface =
nullptr);
40 virtual Bounds3d worldBound()
const override;
42 virtual bool intersect(
Ray& ray)
const override;
44 const Light* light()
const override;
45 const Material* material()
const override;
46 std::vector<Triangle> triangulate()
const override;
48 MemoryArena& arena)
const override;
52 std::shared_ptr<Shape> shape_ =
nullptr;
53 std::shared_ptr<Material> material_ =
nullptr;
54 std::shared_ptr<Light> areaLight_ =
nullptr;
55 std::shared_ptr<MediumInterface> mediumInterface_ =
nullptr;
61 const Light* light()
const override;
62 const Material* material()
const override;
64 MemoryArena& arena)
const override;
69 #endif // _SPICA_PRIMITIVE_H_
Definition: primitive.h:59
Definition: primitive.h:32
Definition: interaction.h:68
Ray class.
Definition: ray.h:24
Definition: primitive.h:19
The base class for the lights.
Definition: light.h:80
Definition: material.h:30