|
|
|
@ -249,7 +249,7 @@ class SDLGLGLWindow {
@@ -249,7 +249,7 @@ class SDLGLGLWindow {
|
|
|
|
|
//Success flag
|
|
|
|
|
bool success = true; |
|
|
|
|
//Generate program
|
|
|
|
|
shader = new Shader("src/shaders/test.vert", "src/shaders/test.frag"); |
|
|
|
|
shader = new Shader("src/shaders/instanced.vert", "src/shaders/test.frag"); |
|
|
|
|
texShader = new Shader("src/shaders/screentexture.vert", "src/shaders/screentexture.frag"); |
|
|
|
|
skyboxShader = new Shader("src/shaders/sky.vert", "src/shaders/sky.frag"); |
|
|
|
|
glCheckError(); |
|
|
|
@ -291,6 +291,30 @@ class SDLGLGLWindow {
@@ -291,6 +291,30 @@ class SDLGLGLWindow {
|
|
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, 0); // unbind
|
|
|
|
|
glCheckError(); |
|
|
|
|
|
|
|
|
|
glm::vec3 *translations = new glm::vec3[100]; |
|
|
|
|
|
|
|
|
|
int index = 0; |
|
|
|
|
float offset = 0.1f; |
|
|
|
|
for (int y = -10; y < 10; y += 2) { |
|
|
|
|
for (int x = -10; x < 10; x += 4) { |
|
|
|
|
for (int z = -10; z < 10; z += 4) { |
|
|
|
|
if (index >= 100) { |
|
|
|
|
goto yeetbreak; |
|
|
|
|
} |
|
|
|
|
translations[index++] = glm::vec3(x,y,z); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
yeetbreak: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
shader->use(); |
|
|
|
|
|
|
|
|
|
for (unsigned int i = 0; i < 100; i++) { |
|
|
|
|
shader->setVec3("offsets[" + std::to_string(i) + "]", translations[i]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
delete[] translations; |
|
|
|
|
|
|
|
|
|
/* textures */ |
|
|
|
|
|
|
|
|
@ -529,29 +553,29 @@ class SDLGLGLWindow {
@@ -529,29 +553,29 @@ class SDLGLGLWindow {
|
|
|
|
|
shader->setFloat("lights[0].angle_cutoff", glm::cos(glm::radians(12.5f))); |
|
|
|
|
shader->setFloat("lights[0].outer_angle_cutoff", glm::cos(glm::radians(17.5f))); |
|
|
|
|
|
|
|
|
|
shader->setVec3("lights[0].direction", glm::vec3(0,1,0)); |
|
|
|
|
shader->setVec3("lights[0].direction", glm::vec3(0,-1,0)); |
|
|
|
|
shader->setVec3("lights[0].position", camera_pos); |
|
|
|
|
|
|
|
|
|
shader->setVec3("lights[0].ambient", glm::vec3(0.3)); |
|
|
|
|
shader->setVec3("lights[0].diffuse", glm::vec3(0.8)); |
|
|
|
|
shader->setVec3("lights[0].diffuse", glm::vec3(0.8,0.7,1.0)); |
|
|
|
|
shader->setVec3("lights[0].specular", glm::vec3(1.0)); |
|
|
|
|
shader->setBool("lights[0].attenuate", true); |
|
|
|
|
shader->setVec3("lights[0].attenuation", glm::vec3(1.0, 0.09, 0.032)); |
|
|
|
|
shader->setBool("lights[0].attenuate", false); |
|
|
|
|
// shader->setVec3("lights[0].attenuation", glm::vec3(1.0, 0.09, 0.032));
|
|
|
|
|
shader->setInt("num_lights", 3); |
|
|
|
|
shader->setInt("lights[1].type", 1); |
|
|
|
|
shader->setVec3("lights[1].position", lightPositions[0]); |
|
|
|
|
|
|
|
|
|
shader->setVec3("lights[1].ambient", glm::vec3(0.3)); |
|
|
|
|
shader->setVec3("lights[1].diffuse", glm::vec3(0.8, 0.9, 0.4)); |
|
|
|
|
shader->setVec3("lights[1].diffuse", glm::vec3(0.9, 0.7, 0.7)); |
|
|
|
|
shader->setVec3("lights[1].specular", glm::vec3(1.0)); |
|
|
|
|
shader->setBool("lights[1].attenuate", false); |
|
|
|
|
shader->setVec3("lights[1].attenuation", glm::vec3(1.0, 0.09, 0.032)); |
|
|
|
|
|
|
|
|
|
shader->setInt("lights[2].type", 1); |
|
|
|
|
shader->setInt("lights[2].type", 0); |
|
|
|
|
shader->setVec3("lights[2].position", lightPositions[1]); |
|
|
|
|
|
|
|
|
|
shader->setVec3("lights[2].ambient", glm::vec3(0.3)); |
|
|
|
|
shader->setVec3("lights[2].diffuse", glm::vec3(0.4, 0.92, 0.4)); |
|
|
|
|
shader->setVec3("lights[2].ambient", glm::vec3(0.1)); |
|
|
|
|
shader->setVec3("lights[2].diffuse", glm::vec3(0.3, 0.4, 0.6)); |
|
|
|
|
shader->setVec3("lights[2].specular", glm::vec3(0.3, 1.0, 0.5)); |
|
|
|
|
shader->setBool("lights[2].attenuate", false); |
|
|
|
|
shader->setVec3("lights[2].attenuation", glm::vec3(1.0, 0.09, 0.032)); |
|
|
|
@ -628,7 +652,10 @@ class SDLGLGLWindow {
@@ -628,7 +652,10 @@ class SDLGLGLWindow {
|
|
|
|
|
glBindVertexArray(gVAO); |
|
|
|
|
glBindTexture(GL_TEXTURE_2D, texture[0]); |
|
|
|
|
glCheckError(); |
|
|
|
|
glDrawArraysInstanced(GL_TRIANGLES, 0,36,100); |
|
|
|
|
glCheckError(); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
std::map<float, glm::vec3> sorted; |
|
|
|
|
|
|
|
|
|
glCheckError(); |
|
|
|
@ -661,6 +688,7 @@ class SDLGLGLWindow {
@@ -661,6 +688,7 @@ class SDLGLGLWindow {
|
|
|
|
|
glDrawArrays(GL_TRIANGLES, 0, 36); |
|
|
|
|
glCheckError(); |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
glBindVertexArray(lightVAO); |
|
|
|
|