added emission as ambient component of the phong material

This commit is contained in:
Anselme 2015-09-03 01:39:42 +02:00
parent 96619f4f0f
commit f2f1965a2d
4 changed files with 14 additions and 10 deletions

View File

@ -1,6 +1,7 @@
#version 330 core #version 330 core
// material // material
uniform vec3 materialAmbient;
uniform vec3 materialKd; uniform vec3 materialKd;
uniform vec3 materialKs; uniform vec3 materialKs;
uniform float materialNs; uniform float materialNs;
@ -40,6 +41,6 @@ void main(void) {
for(i=1; i<nbPointLights+1; ++i) for(i=1; i<nbPointLights+1; ++i)
light += computeLight(kd, materialKs, materialNs, pointLights[i*2 -1], varNormal, lightDirInView[i], halfVecInView[i]); light += computeLight(kd, materialKs, materialNs, pointLights[i*2 -1], varNormal, lightDirInView[i], halfVecInView[i]);
outColor = vec4(light, 1); outColor = vec4(materialAmbient + light, 1);
} }

View File

@ -12,9 +12,10 @@ void PhongMaterial::updateShader()
void PhongMaterial::bindAttributes() void PhongMaterial::bindAttributes()
{ {
shader->bind(); shader->bind();
shader->bindVec3(shader->getLocation("materialKd"), kd); shader->bindVec3(shader->getLocation("materialAmbient"), emission);
shader->bindVec3(shader->getLocation("materialKs"), ks); shader->bindVec3(shader->getLocation("materialKd"), diffuse);
shader->bindFloat(shader->getLocation("materialNs"), ns); shader->bindVec3(shader->getLocation("materialKs"), specular);
shader->bindFloat(shader->getLocation("materialNs"), shininess);
if(diffuse_texture != NULL) if(diffuse_texture != NULL)
{ {
diffuse_texture->bind(TEX_ID); diffuse_texture->bind(TEX_ID);

View File

@ -9,17 +9,18 @@ class Texture;
class PhongMaterial : public Material class PhongMaterial : public Material
{ {
public: public:
glm::vec3 kd; glm::vec3 emission;
glm::vec3 ks; glm::vec3 diffuse;
float ns; glm::vec3 specular;
float shininess;
Texture* diffuse_texture; Texture* diffuse_texture;
Texture* normal_map; Texture* normal_map;
PhongMaterial() : kd(0.5f), ks(0.5f), ns(10), diffuse_texture(NULL) PhongMaterial() : emission(0), diffuse(0.5f), specular(0.5f), shininess(10), diffuse_texture(NULL)
{ {
updateShader(); updateShader();
} }
PhongMaterial(glm::vec3 myKd, glm::vec3 myKs, float myNs) : kd(myKd), ks(myKs), ns(myNs), diffuse_texture(NULL) PhongMaterial(glm::vec3 myKd, glm::vec3 myKs, float myNs) : emission(0), diffuse(myKd), specular(myKs), shininess(myNs), diffuse_texture(NULL)
{ {
updateShader(); updateShader();
} }

View File

@ -1,6 +1,7 @@
#version 330 core #version 330 core
// material // material
uniform vec3 materialAmbient;
uniform vec3 materialKd; uniform vec3 materialKd;
uniform vec3 materialKs; uniform vec3 materialKs;
uniform float materialNs; uniform float materialNs;
@ -43,6 +44,6 @@ void main(void) {
for(i=1; i<nbPointLights+1; ++i) for(i=1; i<nbPointLights+1; ++i)
light += computeLight(kd, materialKs, materialNs, pointLights[i*2 -1], varNormal, lightDirInView[i], halfVecInView[i]); light += computeLight(kd, materialKs, materialNs, pointLights[i*2 -1], varNormal, lightDirInView[i], halfVecInView[i]);
outColor = vec4(light, 1); outColor = vec4(materialAmbient + light, 1);
} }