-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSimpleIlluminationModelShaderProgram.h
30 lines (25 loc) · 1.11 KB
/
SimpleIlluminationModelShaderProgram.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
#pragma once
#include "ShaderProgram.h"
#include "Vector.h"
class SimpleIlluminationModelShaderProgram : public ShaderProgram {
private:
GLfloat ambientRatio = 0.4f, diffusionRatio = 0.4f, specularRatio = 0.2f, shiness = 128;
Vector3f lightVector;
bool enabledLightVectorAsPosition = false;
protected:
SimpleIlluminationModelShaderProgram(Recipe & recipe);
public:
static SimpleIlluminationModelShaderProgram createPhong();
static SimpleIlluminationModelShaderProgram createGouraud();
SimpleIlluminationModelShaderProgram & setAmbientRatio(GLfloat ratio);
GLfloat getAmbientRatio() const;
SimpleIlluminationModelShaderProgram & setDiffusionRatio(GLfloat ratio);
GLfloat getDiffusionRatio() const;
SimpleIlluminationModelShaderProgram & setSpecularRatio(GLfloat ratio);
GLfloat getSpecularRatio() const;
SimpleIlluminationModelShaderProgram & setShiness(GLfloat shiness);
GLfloat getShiness() const;
SimpleIlluminationModelShaderProgram & setLightVector(const Vector3f & vector);
SimpleIlluminationModelShaderProgram & enableLightVectorAsPosition(bool enabled);
virtual void onPreDraw(const Model & model) const;
};