Basic Lighting
Added lighting in to the shader Lighting model: Phong
This commit is contained in:
		
							
								
								
									
										97
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										97
									
								
								src/main.cpp
									
									
									
									
									
								
							@ -91,51 +91,50 @@ int main() {
 | 
			
		||||
   Shader lightshader("lightsource.vs", "lightsource.fs");
 | 
			
		||||
   Shader shader ("shader.vs", "shader.fs");
 | 
			
		||||
 | 
			
		||||
  float vertices[] = {
 | 
			
		||||
        -0.5f, -0.5f, -0.5f, 
 | 
			
		||||
         0.5f, -0.5f, -0.5f,  
 | 
			
		||||
         0.5f,  0.5f, -0.5f,  
 | 
			
		||||
         0.5f,  0.5f, -0.5f,  
 | 
			
		||||
        -0.5f,  0.5f, -0.5f, 
 | 
			
		||||
        -0.5f, -0.5f, -0.5f, 
 | 
			
		||||
float vertices[] = {
 | 
			
		||||
    -0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f,
 | 
			
		||||
     0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f, 
 | 
			
		||||
     0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f, 
 | 
			
		||||
     0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f, 
 | 
			
		||||
    -0.5f,  0.5f, -0.5f,  0.0f,  0.0f, -1.0f, 
 | 
			
		||||
    -0.5f, -0.5f, -0.5f,  0.0f,  0.0f, -1.0f, 
 | 
			
		||||
 | 
			
		||||
        -0.5f, -0.5f,  0.5f, 
 | 
			
		||||
         0.5f, -0.5f,  0.5f,  
 | 
			
		||||
         0.5f,  0.5f,  0.5f,  
 | 
			
		||||
         0.5f,  0.5f,  0.5f,  
 | 
			
		||||
        -0.5f,  0.5f,  0.5f, 
 | 
			
		||||
        -0.5f, -0.5f,  0.5f, 
 | 
			
		||||
    -0.5f, -0.5f,  0.5f,  0.0f,  0.0f, 1.0f,
 | 
			
		||||
     0.5f, -0.5f,  0.5f,  0.0f,  0.0f, 1.0f,
 | 
			
		||||
     0.5f,  0.5f,  0.5f,  0.0f,  0.0f, 1.0f,
 | 
			
		||||
     0.5f,  0.5f,  0.5f,  0.0f,  0.0f, 1.0f,
 | 
			
		||||
    -0.5f,  0.5f,  0.5f,  0.0f,  0.0f, 1.0f,
 | 
			
		||||
    -0.5f, -0.5f,  0.5f,  0.0f,  0.0f, 1.0f,
 | 
			
		||||
 | 
			
		||||
        -0.5f,  0.5f,  0.5f, 
 | 
			
		||||
        -0.5f,  0.5f, -0.5f, 
 | 
			
		||||
        -0.5f, -0.5f, -0.5f, 
 | 
			
		||||
        -0.5f, -0.5f, -0.5f, 
 | 
			
		||||
        -0.5f, -0.5f,  0.5f, 
 | 
			
		||||
        -0.5f,  0.5f,  0.5f, 
 | 
			
		||||
    -0.5f,  0.5f,  0.5f, -1.0f,  0.0f,  0.0f,
 | 
			
		||||
    -0.5f,  0.5f, -0.5f, -1.0f,  0.0f,  0.0f,
 | 
			
		||||
    -0.5f, -0.5f, -0.5f, -1.0f,  0.0f,  0.0f,
 | 
			
		||||
    -0.5f, -0.5f, -0.5f, -1.0f,  0.0f,  0.0f,
 | 
			
		||||
    -0.5f, -0.5f,  0.5f, -1.0f,  0.0f,  0.0f,
 | 
			
		||||
    -0.5f,  0.5f,  0.5f, -1.0f,  0.0f,  0.0f,
 | 
			
		||||
 | 
			
		||||
         0.5f,  0.5f,  0.5f,  
 | 
			
		||||
         0.5f,  0.5f, -0.5f,  
 | 
			
		||||
         0.5f, -0.5f, -0.5f,  
 | 
			
		||||
         0.5f, -0.5f, -0.5f,  
 | 
			
		||||
         0.5f, -0.5f,  0.5f,  
 | 
			
		||||
         0.5f,  0.5f,  0.5f,  
 | 
			
		||||
     0.5f,  0.5f,  0.5f,  1.0f,  0.0f,  0.0f,
 | 
			
		||||
     0.5f,  0.5f, -0.5f,  1.0f,  0.0f,  0.0f,
 | 
			
		||||
     0.5f, -0.5f, -0.5f,  1.0f,  0.0f,  0.0f,
 | 
			
		||||
     0.5f, -0.5f, -0.5f,  1.0f,  0.0f,  0.0f,
 | 
			
		||||
     0.5f, -0.5f,  0.5f,  1.0f,  0.0f,  0.0f,
 | 
			
		||||
     0.5f,  0.5f,  0.5f,  1.0f,  0.0f,  0.0f,
 | 
			
		||||
 | 
			
		||||
        -0.5f, -0.5f, -0.5f, 
 | 
			
		||||
         0.5f, -0.5f, -0.5f,  
 | 
			
		||||
         0.5f, -0.5f,  0.5f,  
 | 
			
		||||
         0.5f, -0.5f,  0.5f,  
 | 
			
		||||
        -0.5f, -0.5f,  0.5f, 
 | 
			
		||||
        -0.5f, -0.5f, -0.5f, 
 | 
			
		||||
    -0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,
 | 
			
		||||
     0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,
 | 
			
		||||
     0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,
 | 
			
		||||
     0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,
 | 
			
		||||
    -0.5f, -0.5f,  0.5f,  0.0f, -1.0f,  0.0f,
 | 
			
		||||
    -0.5f, -0.5f, -0.5f,  0.0f, -1.0f,  0.0f,
 | 
			
		||||
 | 
			
		||||
        -0.5f,  0.5f, -0.5f, 
 | 
			
		||||
         0.5f,  0.5f, -0.5f,  
 | 
			
		||||
         0.5f,  0.5f,  0.5f,  
 | 
			
		||||
         0.5f,  0.5f,  0.5f,  
 | 
			
		||||
        -0.5f,  0.5f,  0.5f, 
 | 
			
		||||
        -0.5f,  0.5f, -0.5f, 
 | 
			
		||||
    };
 | 
			
		||||
    -0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,
 | 
			
		||||
     0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,
 | 
			
		||||
     0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,
 | 
			
		||||
     0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,
 | 
			
		||||
    -0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,
 | 
			
		||||
    -0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#pragma region Objects
 | 
			
		||||
   unsigned int VBO, VAO;
 | 
			
		||||
   glGenVertexArrays(1, &VAO);
 | 
			
		||||
   glGenBuffers(1, &VBO);
 | 
			
		||||
@ -146,22 +145,21 @@ int main() {
 | 
			
		||||
   glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
 | 
			
		||||
 | 
			
		||||
    // position attribute
 | 
			
		||||
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
 | 
			
		||||
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);
 | 
			
		||||
    glEnableVertexAttribArray(0);
 | 
			
		||||
 | 
			
		||||
   glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*) (3*sizeof(float)));
 | 
			
		||||
   glEnableVertexAttribArray(1);
 | 
			
		||||
 | 
			
		||||
   unsigned int lightVAO;
 | 
			
		||||
   glGenVertexArrays(1, &lightVAO);
 | 
			
		||||
   glBindVertexArray(lightVAO);
 | 
			
		||||
 | 
			
		||||
   glBindBuffer(GL_ARRAY_BUFFER, VBO);
 | 
			
		||||
 | 
			
		||||
   glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE, 3* sizeof(float), (void*) 0);
 | 
			
		||||
   glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE, 6* sizeof(float), (void*) 0);
 | 
			
		||||
   glEnableVertexAttribArray(0);
 | 
			
		||||
 | 
			
		||||
#pragma endregion
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); 
 | 
			
		||||
glfwSetCursorPosCallback(window, mouse_callback); 
 | 
			
		||||
@ -189,10 +187,19 @@ while(!glfwWindowShouldClose(window))
 | 
			
		||||
   
 | 
			
		||||
   projection = glm::perspective(glm::radians(camera.Zoom), (float)800 / (float)600, 0.1f, 100.0f);
 | 
			
		||||
   
 | 
			
		||||
   float orbital_speed = .4 ; 
 | 
			
		||||
 | 
			
		||||
   // move light around 
 | 
			
		||||
   lightpos.x = 1.0 + sin(glfwGetTime()) * 2.0f;
 | 
			
		||||
   lightpos.y = sin(glfwGetTime() / 2.0f) * 1.0f;
 | 
			
		||||
 | 
			
		||||
   
 | 
			
		||||
   // draw cubes
 | 
			
		||||
   shader.use();
 | 
			
		||||
   shader.setVec3("objectColor", glm::vec3( 1.0f, 0.5, 0.31f));
 | 
			
		||||
   shader.setVec3("lightColor",glm::vec3( 1.0f, 1.0f, 1.0f));
 | 
			
		||||
   shader.setVec3("lightPos", lightpos);
 | 
			
		||||
   shader.setVec3("viewPos", camera.Position);
 | 
			
		||||
 | 
			
		||||
   shader.setMat4("view", view);
 | 
			
		||||
   shader.setMat4("projection", projection);
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user