1 #ifndef SCHLICKMATERIALFACTORY_HXX
2 #define SCHLICKMATERIALFACTORY_HXX
3
4 #include "MaterialFactory.hxx"
5 #include "SchlickShader.hxx"
6 #include "SchlickPhotonDistributor.hxx"
7
8 // This class creates a Schlick-tuple based on a given material
9 class SchlickMaterialFactory
10 : public MaterialFactory
11 {
12 public:
13 // Use a standard white default material if nothing is specified
14 SchlickMaterialFactory(Scene *scene)
15 :MaterialFactory(scene)
16 {
17 Material *mat = new Material(Vec3f(0.9f));
18 mat->SetSchlickParams(0.3f, 0.9f, 0.5f);
19 shaders.push_back(new SchlickShader(scene, mat));
20 photondistris.push_back(new SchlickPhotonDistributor(scene, mat));
21 lookupvector.push_back(0);
22 };
23
24 virtual ~SchlickMaterialFactory(){};
25
26 // Sets the factorie's state to a new material
27 virtual void SetMaterial(std::istream &material, const int face)
28 {
29 Material *mat = sceneDescription->parse(material);
30 shaders.push_back(new SchlickShader(scene, mat));
31 photondistris.push_back(new SchlickPhotonDistributor(scene, mat));
32 lookupvector.push_back(face);
33 };
34 };
35
36 #endif
syntax highlighted by Code2HTML, v. 0.9.1