Photon Engine 2.0.0-beta
A physically based renderer.
Loading...
Searching...
No Matches
SurfaceBehavior.h
Go to the documentation of this file.
1#pragma once
2
3#include "Math/TVector3.h"
6
7#include <Common/primitive_type.h>
8
9#include <memory>
10
11namespace ph
12{
13
14class SurfaceBehavior final
15{
16public:
18
19 void setOptics(std::shared_ptr<SurfaceOptics> optics);
20 void setEmitter(const Emitter* emitter);
21 std::shared_ptr<SurfaceOptics> getOpticsResource() const;
22
23 inline const SurfaceOptics* getOptics() const
24 {
25 return m_optics.get();
26 }
27
28 inline const Emitter* getEmitter() const
29 {
30 return m_emitter;
31 }
32
33private:
34 std::shared_ptr<SurfaceOptics> m_optics;
35
36 // FIXME: store SurfaceEmitter only
37 const Emitter* m_emitter;
38};
39
40}// end namespace ph
An electromagnetic energy emitting source. The emitted energy can be captured by a Receiver.
Definition Emitter.h:68
Definition SurfaceBehavior.h:15
const SurfaceOptics * getOptics() const
Definition SurfaceBehavior.h:23
SurfaceBehavior()
Definition SurfaceBehavior.cpp:10
void setEmitter(const Emitter *emitter)
Definition SurfaceBehavior.cpp:21
void setOptics(std::shared_ptr< SurfaceOptics > optics)
Definition SurfaceBehavior.cpp:14
std::shared_ptr< SurfaceOptics > getOpticsResource() const
Definition SurfaceBehavior.cpp:28
const Emitter * getEmitter() const
Definition SurfaceBehavior.h:28
Describes how light interacts with a surface.
Definition SurfaceOptics.h:17
The root for all renderer implementations.
Definition EEngineProject.h:6