Path Tracer
DiffuseMaterial.h
Go to the documentation of this file.
1 #ifndef DEF_DIFFUSEMATERIAL
2 #define DEF_DIFFUSEMATERIAL
3 
4 #include "Material.h"
5 
75 class DiffuseMaterial : public Material {
76 private:
77  DoubleVec3D albedo;
78 
79 public:
80  DiffuseMaterial(const DoubleVec3D& albedo = DoubleVec3D(0.0), DoubleVec3D emittance = 0);
81  DiffuseMaterial(const DiffuseMaterial& material);
82 
83  DoubleVec3D getAlbedo() const;
84  void setAlbedo(const DoubleVec3D& albedo);
85 
86  Material* deepCopy() const;
87 
88  DoubleUnitVec3D getNewDirection(const Ray& previousRay, const DoubleUnitVec3D& normal) const;
89  DoubleVec3D computeCurrentRadiance(const DoubleVec3D& recursiveRadiance, double cosAngleNewDirectionNormal, bool nextEventEstimation = false) const;
90  bool worksWithNextEventEstimation() const;
91 
92  std::ostream& getDescription(std::ostream& stream) const;
93  std::string getType() const;
95  void setSpecificParametersJson(const json& j);
96 };
97 
98 
99 #endif
nlohmann::json json
Definition: InterfaceGestion.h:14
Defines the Material class and some functions around it.
Models a diffuse material.
Definition: DiffuseMaterial.h:75
DoubleVec3D getAlbedo() const
Getter for the albedo attribute.
Definition: DiffuseMaterial.cpp:12
void setSpecificParametersJson(const json &j)
Sets this material's specific parameters according to json.
Definition: DiffuseMaterial.cpp:54
void setAlbedo(const DoubleVec3D &albedo)
Getter for the albedo attribute.
Definition: DiffuseMaterial.cpp:13
DoubleUnitVec3D getNewDirection(const Ray &previousRay, const DoubleUnitVec3D &normal) const
Computes the new ray direction.
Definition: DiffuseMaterial.cpp:21
std::string getType() const
Returns "Diffuse".
Definition: DiffuseMaterial.cpp:52
std::ostream & getDescription(std::ostream &stream) const
Returns this material's description.
Definition: DiffuseMaterial.cpp:45
DoubleVec3D computeCurrentRadiance(const DoubleVec3D &recursiveRadiance, double cosAngleNewDirectionNormal, bool nextEventEstimation=false) const
Computes the new radiance.
Definition: DiffuseMaterial.cpp:28
DiffuseMaterial(const DoubleVec3D &albedo=DoubleVec3D(0.0), DoubleVec3D emittance=0)
Default and main constructor.
Definition: DiffuseMaterial.cpp:4
Material * deepCopy() const
Makes a deep copy of this material.
Definition: DiffuseMaterial.cpp:17
json getSpecificParametersJson() const
Converts this material's specific parameters to json.
Definition: DiffuseMaterial.cpp:53
bool worksWithNextEventEstimation() const
Returns whether this material works with next event estimation.
Definition: DiffuseMaterial.cpp:41
A three-dimensional unit vector using doubles.
Definition: DoubleUnitVec3D.h:61
A three-dimensional vector using double values.
Definition: DoubleVec3D.h:190
Abstrat class that models a material.
Definition: Material.h:77
Combination of an origin and a direction.
Definition: Ray.h:44