diff --git a/src/kekengine/cpp/engine.cpp b/src/kekengine/cpp/engine.cpp index 1320d53..7a4e0a3 100644 --- a/src/kekengine/cpp/engine.cpp +++ b/src/kekengine/cpp/engine.cpp @@ -268,6 +268,7 @@ int start() { glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "position").c_str()), 1, glm::value_ptr(l->getPosition())); glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "direction").c_str()), 1, glm::value_ptr(l->direction)); glUniform3fv(glGetUniformLocation(kekData.shader->id, (prefix + "attenuation").c_str()), 1, glm::value_ptr(glm::vec3(l->constant, l->linear, l->quadratic))); + glUniform2fv(glGetUniformLocation(kekData.shader->id, (prefix + "cutoff").c_str()), 1, glm::value_ptr(glm::vec2(glm::cos(l->innerCutoff), glm::cos(l->outerCutoff)))); numSpotLights++; break; } diff --git a/src/kekengine/cpp/light.cpp b/src/kekengine/cpp/light.cpp index 3eb2495..d0514ee 100644 --- a/src/kekengine/cpp/light.cpp +++ b/src/kekengine/cpp/light.cpp @@ -43,11 +43,13 @@ void DirectionalLight::lookAt(glm::vec3 direction){ this->direction = direction; } -SpotLight::SpotLight(glm::vec3 color, glm::vec3 direction, float constant, float linear, float quadratic): Light(color) { +SpotLight::SpotLight(glm::vec3 color, glm::vec3 direction, float constant, float linear, float quadratic, float innerCutoff, float outerCutoff): Light(color) { this->direction = direction; this->constant = constant; this->linear = linear; this->quadratic = quadratic; + this->innerCutoff = innerCutoff; + this->outerCutoff = outerCutoff; } SpotLight::~SpotLight() { diff --git a/src/kekengine/include/light.h b/src/kekengine/include/light.h index b6418a7..3072cc9 100644 --- a/src/kekengine/include/light.h +++ b/src/kekengine/include/light.h @@ -59,8 +59,9 @@ class SpotLight: public Light, public DefaultObject { public: glm::vec3 direction; float constant, linear, quadratic; + float innerCutoff, outerCutoff; - SpotLight(glm::vec3 color, glm::vec3 direction, float constantFalloff, float linearFalloff, float quadraticFalloff); + SpotLight(glm::vec3 color, glm::vec3 direction, float constant, float linear, float quadratic, float innerCutoff, float outerCutoff); ~SpotLight(); diff --git a/src/kekgame/cpp/kekgame.cpp b/src/kekgame/cpp/kekgame.cpp index 4d12b2f..3097dcb 100644 --- a/src/kekgame/cpp/kekgame.cpp +++ b/src/kekgame/cpp/kekgame.cpp @@ -26,11 +26,15 @@ int main(int argc, char **argv) { scene->addObject(test2); } - //PointLight *light = new PointLight(glm::vec3(1), 1, 1, 1); + //PointLight *light = new PointLight(glm::vec3(1), 1, 0, 1); //scene->lights->add(light); - DirectionalLight *l = new DirectionalLight(glm::vec3(1), glm::vec3(1, -1, 1)); - scene->lights->add(l); + //DirectionalLight *l = new DirectionalLight(glm::vec3(1), glm::vec3(1, -1, 1)); + //scene->lights->add(l); + + SpotLight *spot = new SpotLight(glm::vec3(1), glm::vec3(0, 0, -1), 1, 0, 1, glm::radians(8.0f), glm::radians(15.0f)); + spot->moveTo(glm::vec3(0, 0, 5)); + scene->lights->add(spot); Engine::setActiveScene(scene);