/
GlossyMaterial.h
32 lines (30 loc) · 1001 Bytes
/
GlossyMaterial.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma once
#include "Texture.h"
#include "SceneObject.h"
#include "GlossyBSDF.h"
#include "CosineSphericalSampler.h"
class GlossyMaterial : public Material
{
public:
protected:
GlossyBSDF bsdf;
CosineSphericalSampler cosineSphericalSampler;
public:
Texture colorTex;
Texture coeffTex;
void setColor(const vec3f& color)
{
colorTex.setColor(color);
}
void setCoeff(const float& coeff)
{
coeffTex.setColor(coeff);
}
void setCoeffTex(const string& fileName) { coeffTex.loadFile(fileName); }
void setColorTex(const string& fileName) { colorTex.loadFile(fileName); }
virtual Ray scatter(const SceneObject* object, const Ray& inRay, const bool russian = true) const;
virtual float getDirectionSampleProbDensity(const Ray& inRay, const Ray& outRay) const;
virtual float getContinueProbability(const Ray &inRay, const Ray &outRay) const;
virtual vec3f getBSDF(const Ray& inRay, const Ray& outRay) const;
virtual void loadMaterialFromXML(const ConfigManager* cm, xml_node<>* node);
};