Raytracer
Loading...
Searching...
No Matches
IMaterial.hpp
1#include "core/Ray.hpp"
2#include "utils/VecN.hpp"
3
4#ifndef __IMATERIAL_HPP__
5 #define __IMATERIAL_HPP__
6
7namespace Raytracer::Core
8{
9 class Payload;
10} // namespace Raytracer::Core
11
12namespace Raytracer::Interfaces
13{
14 class IMaterial {
15 public:
16 virtual ~IMaterial() = default;
17 virtual Utils::Color emitted(
18 double u, double v, const Utils::Point3 &point) const = 0;
19 virtual bool scatter(const Core::Ray &ray,
20 const Core::Payload &payload, Utils::Color &attenuation,
21 Core::Ray &scattered) const = 0;
22 };
23} // namespace Raytracer::Interfaces
24
25#endif /* __IMATERIAL_HPP__ */
Definition Payload.hpp:11
Definition Ray.hpp:9
Definition IMaterial.hpp:14
Definition VecN.hpp:40