Files
fall-fever/src/Light.cpp
2020-09-17 13:55:29 +02:00

65 lines
2.0 KiB
C++

#include "Light.h"
#include <string>
// PointLight
PointLight::PointLight(ShaderProgram *shaderProgram)
: Light(shaderProgram) {
}
void PointLight::update() {
// Only temp
glm::vec3 diffuseColor = lightColor * glm::vec3(1.0f);
glm::vec3 ambientColor = diffuseColor * glm::vec3(0.1f);
glm::vec3 specularColor = lightColor * glm::vec3(1.0f);
shaderProgram->bind();
shaderProgram->setUniform((_getStructMemberName() + "isActive").c_str(), isActive);
shaderProgram->setUniform((_getStructMemberName() + "position").c_str(), position);
shaderProgram->setUniform((_getStructMemberName() + "ambient").c_str(), ambientColor);
shaderProgram->setUniform((_getStructMemberName() + "diffuse").c_str(), diffuseColor);
shaderProgram->setUniform((_getStructMemberName() + "specular").c_str(), specularColor);
shaderProgram->setUniform((_getStructMemberName() + "K_c").c_str(), K_c);
shaderProgram->setUniform((_getStructMemberName() + "K_l").c_str(), K_l);
shaderProgram->setUniform((_getStructMemberName() + "K_q").c_str(), K_q);
shaderProgram->unbind();
}
std::string PointLight::_getStructMemberName() {
std::string temp = "u_pointLight[" + std::to_string(lightId) + "].";
return temp;
}
// DirectionalLight
DirectionalLight::DirectionalLight(ShaderProgram *shaderProgram)
: Light(shaderProgram) {
}
void DirectionalLight::update() {
// Only temp
glm::vec3 diffuseColor = lightColor * glm::vec3(1.0f);
glm::vec3 ambientColor = diffuseColor * glm::vec3(0.1f);
glm::vec3 specularColor = lightColor * glm::vec3(1.0f);
shaderProgram->bind();
shaderProgram->setUniform("u_directionalLight.isActive", isActive);
shaderProgram->setUniform("u_directionalLight.direction", direction);
shaderProgram->setUniform("u_directionalLight.ambient", ambientColor * 0.25f);
shaderProgram->setUniform("u_directionalLight.diffuse", diffuseColor * 0.25f);
shaderProgram->setUniform("u_directionalLight.specular", specularColor * 0.25f);
shaderProgram->unbind();
}