Raytracer
Loading...
Searching...
No Matches
include
interfaces
IMaterial.hpp
1
#include "core/Ray.hpp"
2
#include "utils/VecN.hpp"
3
4
#ifndef __IMATERIAL_HPP__
5
#define __IMATERIAL_HPP__
6
7
namespace
Raytracer::Core
8
{
9
class
Payload;
10
}
// namespace Raytracer::Core
11
12
namespace
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__ */
Raytracer::Core::Payload
Definition
Payload.hpp:11
Raytracer::Core::Ray
Definition
Ray.hpp:9
Raytracer::Interfaces::IMaterial
Definition
IMaterial.hpp:14
Raytracer::Utils::VecN
Definition
VecN.hpp:40
Generated by
1.10.0