0.073580f, 0.023239f, 0.009703f\r
};\r
\r
-float translucencySampleVariances[] = {\r
- 0.0064,\r
- 0.0484,\r
- 0.187,\r
- 0.567,\r
- 1.99,\r
- 7.41,\r
-};\r
-\r
-float translucencySampleWeights[] = {\r
- 0.233, 0.455, 0.649,\r
- 0.100, 0.336, 0.344,\r
- 0.118, 0.198, 0,\r
- 0.113, 0.007, 0.007,\r
- 0.358, 0.004, 0,\r
- 0.078, 0, 0,\r
-};\r
-\r
struct model {\r
std::vector<float> vertices;\r
std::vector<GLuint> indices;\r
for (int i = 0; i < scene->mMeshes[0]->mNumVertices; i++) {\r
aiVector3D v = scene->mMeshes[0]->mVertices[i];\r
aiVector3D n = scene->mMeshes[0]->mNormals[i];\r
- result.vertices.push_back(v.x*100);\r
- result.vertices.push_back(v.y*100);\r
- result.vertices.push_back(v.z*100);\r
+ result.vertices.push_back(v.x);\r
+ result.vertices.push_back(v.y);\r
+ result.vertices.push_back(v.z);\r
result.vertices.push_back(n.x);\r
result.vertices.push_back(n.y);\r
result.vertices.push_back(n.z);\r
GLuint shaderProgramShadowmap = compileShaders("shaders/vert_shadowmap.glsl", "shaders/frag_shadowmap.glsl");\r
GLuint shaderProgramIrradiance = compileShaders("shaders/vert_irradiance.glsl", "shaders/frag_irradiance.glsl");\r
\r
- //model m = loadModel("models/Isotrop-upperjaw.ply");\r
- model m = loadModel("models/african_head/african_head.obj");\r
-\r
+ model m = loadModel("models/Isotrop-upperjaw.ply");\r
+ \r
arccam arcCam;\r
freecam freeCam;\r
\r
glm::mat4 lightProj = glm::perspective(glm::radians(90.0f), (float)window.getSize().x / window.getSize().y, 0.001f, 1000.0f);\r
\r
// Framebuffer\r
+\r
framebuffer fb_shadowmap("shaders/fbo_vert.glsl", "shaders/fbo_frag.glsl", width, height);\r
framebuffer fb_irradiance("shaders/fbo_vert.glsl", "shaders/fbo_frag.glsl", width, height);\r
\r
int renderState = 2;\r
float color[3] = { 0.7f, 0.4f, 0.4f };\r
glm::vec3 lightPos = glm::vec3(0.0f, 0.0f, 0.03f);\r
- float transmittanceScale = 0.005f;\r
- float powBase = 2.718;\r
- float powFactor = 1;\r
+ float transmittanceScale = 0.025f;\r
+ float powBase = 2;\r
+ float powFactor = 1.5;\r
} DefaultOptions;\r
\r
auto options = DefaultOptions;\r
}\r
}\r
\r
- // Update\r
+ // Update Camera\r
\r
if (sf::Mouse::isButtonPressed(sf::Mouse::Right)) {\r
window.setMouseCursorVisible(false);\r
\r
prevMouse = sf::Mouse::isButtonPressed(sf::Mouse::Right);\r
\r
- // Render Shadowmap\r
+ // Render Shadowmap to fbo\r
\r
glClampColor(GL_CLAMP_READ_COLOR, GL_FALSE);\r
glClampColor(GL_CLAMP_VERTEX_COLOR, GL_FALSE);\r
\r
m.draw();\r
\r
- // Render irradiance\r
+ // Render irradiance map to fbo\r
\r
glBindFramebuffer(GL_FRAMEBUFFER, fb_irradiance.fbo);\r
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);\r
glUniform1i(glGetUniformLocation(shaderProgramIrradiance, "screenHeight"), window.getSize().y);\r
glUniform1fv(glGetUniformLocation(shaderProgramIrradiance, "samplePositions"), 13, samplePositions);\r
glUniform3fv(glGetUniformLocation(shaderProgramIrradiance, "sampleWeights"), 13, sampleWeights);\r
- glUniform2fv(glGetUniformLocation(shaderProgramIrradiance, "translucencySampleVariances"), 6, translucencySampleVariances);\r
- glUniform3fv(glGetUniformLocation(shaderProgramIrradiance, "translucencySampleWeights"), 6, translucencySampleWeights);\r
\r
glUniform1f(\r
glGetUniformLocation(shaderProgramIrradiance, "transmittanceScale"),\r
\r
m.draw();\r
\r
- // Render fbo to screen\r
+ // Render fbos to screen and calculate light spread/translucency in shader\r
\r
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);\r
\r
glDrawArrays(GL_TRIANGLES, 0, 6);\r
glBindVertexArray(0);\r
\r
+ // menu\r
+\r
ImGui::SFML::Update(window, deltaClock.restart());\r
\r
ImGui::Begin("Options");\r
ImGui::InputInt("Render State", &options.renderState);\r
ImGui::DragFloat3("Color", options.color, 0.01, 0, 1);\r
ImGui::DragFloat("Transmittance Scale", &options.transmittanceScale, 0.0001f, 0, 0.3);\r
- ImGui::DragFloat("Pow Base", &options.powBase, 0.01f, 0, 4);\r
- ImGui::DragFloat("Pow Factor", &options.powFactor, 0.01f, 0, 3);\r
ImGui::DragFloat3("Light Pos", glm::value_ptr(options.lightPos), 0.01, -5, 5);\r
if (options.freecam) {\r
ImGui::LabelText("Position", "%f %f %f", freeCam.pos.x, freeCam.pos.y, freeCam.pos.z);\r