+ glUseProgram(shaderProgramIrradiance);\r
+ \r
+ if (options.freecam)\r
+ view = freeCam.getViewMatrix();\r
+ else\r
+ view = arcCam.getViewMatrix();\r
+ \r
+ glUniformMatrix4fv(\r
+ glGetUniformLocation(shaderProgramIrradiance, "model"),\r
+ 1, GL_FALSE, glm::value_ptr(model));\r
+ glUniformMatrix4fv(\r
+ glGetUniformLocation(shaderProgramIrradiance, "view"),\r
+ 1, GL_FALSE, glm::value_ptr(view));\r
+ glUniformMatrix4fv(\r
+ glGetUniformLocation(shaderProgramIrradiance, "projection"),\r
+ 1, GL_FALSE, glm::value_ptr(proj));\r
+\r
+ glUniform3fv(\r
+ glGetUniformLocation(shaderProgramIrradiance, "objectColor"),\r
+ 1, options.color);\r
+ glUniform3f(\r
+ glGetUniformLocation(shaderProgramIrradiance, "lightColor"),\r
+ 1.0f, 1.0f, 1.0f);\r
+ glUniform3fv(\r
+ glGetUniformLocation(shaderProgramIrradiance, "lightPos"),\r
+ 1, glm::value_ptr(lightPos));\r
+ glUniform3fv(\r
+ glGetUniformLocation(shaderProgramIrradiance, "viewPos"),\r
+ 1, glm::value_ptr(options.freecam ? freeCam.pos : arcCam.getPos()));\r
+ \r
+ glUniform1i(glGetUniformLocation(shaderProgramIrradiance, "shadowmapTexture"), 0);\r
+ glActiveTexture(GL_TEXTURE0 + 0);\r
+ glBindTexture(GL_TEXTURE_2D, fb_shadowmap.renderTexture);\r
+\r
+ m.draw();\r
+\r
+ // Render fbo to screen\r
+ \r
+ glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);\r
+\r
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);\r
+ glDisable(GL_DEPTH_TEST);\r
+ glClearColor(1.0f, 1.0f, 1.0f, 1.0f);\r
+ glClear(GL_COLOR_BUFFER_BIT);\r
+ glUseProgram(fb_irradiance.screenShaderProgram);\r
+\r
+ glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "screenWidth"), window.getSize().x);\r
+ glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "screenHeight"), window.getSize().y);\r
+ glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "renderState"), options.renderState);\r
+ glUniform2fv(glGetUniformLocation(fb_irradiance.screenShaderProgram, "samplePositions"), 13, samplePositions);\r
+ glUniform3fv(glGetUniformLocation(fb_irradiance.screenShaderProgram, "sampleWeights"), 13, sampleWeights);\r
+\r
+ glBindVertexArray(fb_irradiance.screenVAO);\r
+ glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "shadowmapTexture"), 0);\r
+ glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "irradianceTexture"), 1);\r
+ glActiveTexture(GL_TEXTURE0 + 0);\r
+ glBindTexture(GL_TEXTURE_2D, fb_shadowmap.renderTexture);\r
+ glActiveTexture(GL_TEXTURE0 + 1);\r
+ glBindTexture(GL_TEXTURE_2D, fb_irradiance.renderTexture);\r
+ glDrawArrays(GL_TRIANGLES, 0, 6);\r