- glUniform3fv(glGetUniformLocation(pbrProg->progId, "lightPositions"), 4, glm::value_ptr(lightPositions[0]));
- glUniform3fv(glGetUniformLocation(pbrProg->progId, "lightColors"), 4, glm::value_ptr(lightColors[0]));
-
- glUniform1i(glGetUniformLocation(pbrProg->progId, "albedoMap"), 0);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, albedoMap);
-
- glUniform1i(glGetUniformLocation(pbrProg->progId, "normalMap"), 1);
- glActiveTexture(GL_TEXTURE1);
- glBindTexture(GL_TEXTURE_2D, normalMap);
-
- glUniform1i(glGetUniformLocation(pbrProg->progId, "metallicMap"), 2);
- glActiveTexture(GL_TEXTURE2);
- glBindTexture(GL_TEXTURE_2D, metallicMap);
-
- glUniform1i(glGetUniformLocation(pbrProg->progId, "roughnessMap"), 3);
- glActiveTexture(GL_TEXTURE3);
- glBindTexture(GL_TEXTURE_2D, roughnessMap);
-
- glUniform1i(glGetUniformLocation(pbrProg->progId, "aoMap"), 4);
- glActiveTexture(GL_TEXTURE4);
- glBindTexture(GL_TEXTURE_2D, aoMap);
+ for (int i = 3; i < 6; i++) {
+ if (discoLights) {
+ auto m = glm::translate(glm::mat4(1.f), glm::vec3(-2.5, 0, 0));
+ m = glm::rotate(m, glm::radians(d * 100 + i * 30), glm::vec3(1, 0, 0));
+ m = glm::rotate(m, glm::radians(d * 100 + i * 30), glm::vec3(0, 1, 0));
+ m = glm::rotate(m, glm::radians(d * 100 + i * 30), glm::vec3(0, 0, 1));
+ lightPositions[i] = glm::vec3(m * glm::vec4(5, 0, 0, 1));
+ lightColors[i] = glm::vec3(0.2);
+ if (i == 3) lightColors[i].x = sin(d);
+ if (i == 4) lightColors[i].y = cos(d * 3);
+ if (i == 5) lightColors[i].z = cos(d);
+ } else {
+ lightPositions[i] = glm::vec3(0);
+ lightColors[i] = glm::vec3(0);
+ }
+ }