[Blender] shadow mapping

Nikolaus Leopold nikolaus.leopold at gmail.com
Thu Jun 18 11:54:08 CEST 2015


vlt ist da was hilfreicehes dabei aber ich weiß nicht

         //// depths from light position for shading mapping

         // set viewport and bind framebuffer
         glViewport(0, 0, SM_WIDTH, SM_HEIGHT);
         glBindFramebuffer(GL_FRAMEBUFFER, depthMapFBO);
         glClear(GL_DEPTH_BUFFER_BIT);

         // calculate lights projection and view Matrix
         GLfloat nearPlane = 50.f, farPlane = 400.f;
         glm::mat4 lightProjection = glm::ortho(-100.0f, 100.0f, 
-100.0f, 100.0f, nearPlane, farPlane);
         //glm::mat4 lightProjection = glm::perspective(100.f, (GLfloat) 
SM_WIDTH / (GLfloat) SM_HEIGHT, nearPlane, farPlane);
         glm::mat4 lightView = glm::lookAt(sun->getLocation(), 
glm::vec3(0.f), glm::vec3(0, 1, 0));
         glm::mat4 lightVP = lightProjection * lightView;

         // prepare shader
         Shader *lastShader = activeShader;
         setActiveShader(depthMapShader);
         GLint lightVPLocation = 
glGetUniformLocation(activeShader->programHandle, "lightVP");
         glUniformMatrix4fv(lightVPLocation, 1, GL_FALSE, 
glm::value_ptr(lightVP));

         // render

         drawScene();

         // bind default FB and reset viewport
         glBindFramebuffer(GL_FRAMEBUFFER, 0);
         glViewport(0, 0, windowWidth, windowHeigth);

         setActiveShader(textureShader);

  glUniformMatrix4fv(glGetUniformLocation(activeShader->programHandle, 
"viewMat"), 1, GL_FALSE, glm::value_ptr(player->getViewMat()));
  glUniformMatrix4fv(glGetUniformLocation(activeShader->programHandle, 
"lightVP"), 1, GL_FALSE, glm::value_ptr(lightVP));

         GLint shadowMapLocation = 
glGetUniformLocation(activeShader->programHandle, "shadowMap");
         glUniform1i(shadowMapLocation, 1);
         glActiveTexture(GL_TEXTURE0 + 1);
         glBindTexture(GL_TEXTURE_2D, depthMap);



More information about the Blender mailing list