]> gitweb.ps.run Git - subsurface_scattering/blobdiff - src/main2.cpp
add PDF and exes
[subsurface_scattering] / src / main2.cpp
index 206466d1dee3ee75253982c9b2931b58e7a5566b..e57639af671411f3ddada9cd13f9b39e3df4520b 100644 (file)
 #include <assimp/postprocess.h>\r
 #include <assimp/scene.h>\r
 \r
 #include <assimp/postprocess.h>\r
 #include <assimp/scene.h>\r
 \r
+\r
+// sample positions and weights for a Gaussian kernel from \r
+// Hable, John ; Borshukov, George ; Hejl, Jim: Fast Skin Shading. In: ShaderX7, ShaderX : Charles River Media, 2009, S. 161–173\r
+\r
 float samplePositions[] = {\r
   0.000000f,  0.000000f,\r
   1.633992f,  0.036795f,\r
 float samplePositions[] = {\r
   0.000000f,  0.000000f,\r
   1.633992f,  0.036795f,\r
@@ -383,7 +387,6 @@ int main() {
   GLuint shaderProgramIrradiance = compileShaders("shaders/ts_vert_irradiance.glsl", "shaders/ts_frag_irradiance.glsl");\r
   GLuint shaderProgramCombine = compileShaders("shaders/ts_vert.glsl", "shaders/ts_frag.glsl");\r
 \r
   GLuint shaderProgramIrradiance = compileShaders("shaders/ts_vert_irradiance.glsl", "shaders/ts_frag_irradiance.glsl");\r
   GLuint shaderProgramCombine = compileShaders("shaders/ts_vert.glsl", "shaders/ts_frag.glsl");\r
 \r
-  //model m = loadModel("models/Isotrop-upperjaw.ply");\r
   model m = loadModel("models/african_head/african_head.obj");\r
 \r
   arccam arcCam;\r
   model m = loadModel("models/african_head/african_head.obj");\r
 \r
   arccam arcCam;\r
@@ -409,10 +412,10 @@ int main() {
     bool freecam = false;\r
     int renderState = 1;\r
     float color[3] = { 0.7f, 0.4f, 0.4f };\r
     bool freecam = false;\r
     int renderState = 1;\r
     float color[3] = { 0.7f, 0.4f, 0.4f };\r
-    glm::vec3 lightPos = glm::vec3(0.0f, 0.0f, 0.25f);\r
+    glm::vec3 lightPos = glm::vec3(0.0f, 0.0f, 2.5f);\r
     float transmittanceScale = 0.005f;\r
     float transmittanceScale = 0.005f;\r
-    float powBase = 2.718;\r
-    float powFactor = 1;\r
+    float powBase = 2;\r
+    float powFactor = 1.5;\r
   } DefaultOptions;\r
 \r
   auto options = DefaultOptions;\r
   } DefaultOptions;\r
 \r
   auto options = DefaultOptions;\r
@@ -470,7 +473,7 @@ int main() {
 \r
     prevMouse = sf::Mouse::isButtonPressed(sf::Mouse::Right);\r
 \r
 \r
     prevMouse = sf::Mouse::isButtonPressed(sf::Mouse::Right);\r
 \r
-    // Render Shadowmap\r
+    // Render Shadowmap to fbo\r
 \r
     glBindFramebuffer(GL_FRAMEBUFFER, fb_irradiance.fbo);\r
     glClearColor(0.0f, 0.0f, 0.0f, 1.0f);\r
 \r
     glBindFramebuffer(GL_FRAMEBUFFER, fb_irradiance.fbo);\r
     glClearColor(0.0f, 0.0f, 0.0f, 1.0f);\r
@@ -514,9 +517,7 @@ int main() {
 \r
     m.draw();\r
 \r
 \r
     m.draw();\r
 \r
-    \r
-\r
-    // Render fbo to screen\r
+    // Render model and calculate light spread and translucency in shader\r
 \r
     glBindFramebuffer(GL_FRAMEBUFFER, 0);\r
     glClearColor(0.0f, 0.0f, 0.0f, 1.0f);\r
 \r
     glBindFramebuffer(GL_FRAMEBUFFER, 0);\r
     glClearColor(0.0f, 0.0f, 0.0f, 1.0f);\r
@@ -569,27 +570,17 @@ int main() {
     glActiveTexture(GL_TEXTURE0 + 0);\r
     glBindTexture(GL_TEXTURE_2D, fb_irradiance.renderTexture);\r
 \r
     glActiveTexture(GL_TEXTURE0 + 0);\r
     glBindTexture(GL_TEXTURE_2D, fb_irradiance.renderTexture);\r
 \r
-    // glBindVertexArray(fb_irradiance.screenVAO);\r
-    // glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "shadowmapTexture"), 0);\r
-    // glActiveTexture(GL_TEXTURE0 + 0);\r
-    // glBindTexture(GL_TEXTURE_2D, fb_irradiance.renderTexture);\r
-    // glDrawArrays(GL_TRIANGLES, 0, 6);\r
-    // glBindVertexArray(0);\r
-\r
     m.draw();\r
 \r
     m.draw();\r
 \r
-\r
+    // menu\r
 \r
     ImGui::SFML::Update(window, deltaClock.restart());\r
 \r
     ImGui::Begin("Options");\r
     ImGui::Checkbox("Wireframe", &options.wireframe);\r
     ImGui::Checkbox("Free Cam", &options.freecam);\r
 \r
     ImGui::SFML::Update(window, deltaClock.restart());\r
 \r
     ImGui::Begin("Options");\r
     ImGui::Checkbox("Wireframe", &options.wireframe);\r
     ImGui::Checkbox("Free Cam", &options.freecam);\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::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
     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