]> gitweb.ps.run Git - subsurface_scattering/blobdiff - src/main2.cpp
change defaults
[subsurface_scattering] / src / main2.cpp
index 38ca5f2d7641c4650350394a9a153fd495d1147c..e57639af671411f3ddada9cd13f9b39e3df4520b 100644 (file)
 #include <assimp/postprocess.h>\r
 #include <assimp/scene.h>\r
 \r
-/*\r
 \r
-TODO:\r
-- Save Depth to fbo\r
-- Stencil Buffer\r
-- LightDist > 1\r
-  - 1 - distanceToBackside in frag_irradiance\r
-- ShadowMap Perspective (no projection?)\r
-- (Implement Gaussian Blur)\r
-- LightDir nicht immer zu 0 0 0\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
@@ -396,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
-  //model m = loadModel("models/Isotrop-upperjaw.ply");\r
   model m = loadModel("models/african_head/african_head.obj");\r
 \r
   arccam arcCam;\r
@@ -422,10 +412,10 @@ int main() {
     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 powBase = 2.718;\r
-    float powFactor = 1;\r
+    float powBase = 2;\r
+    float powFactor = 1.5;\r
   } DefaultOptions;\r
 \r
   auto options = DefaultOptions;\r
@@ -483,7 +473,7 @@ int main() {
 \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
@@ -527,9 +517,7 @@ int main() {
 \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
@@ -582,27 +570,17 @@ int main() {
     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
-\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
-    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