]> gitweb.ps.run Git - subsurface_scattering/blobdiff - src/main.cpp
pre cleanup
[subsurface_scattering] / src / main.cpp
index 24a39cc85510f5b5896a50e236028e4e21cdac90..b836ccbb8abc0b6684ea1c132721ea6c7bac6200 100644 (file)
@@ -65,6 +65,24 @@ float sampleWeights[] = {
   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
@@ -234,12 +252,12 @@ model loadModel(const std::string &filename) {
   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(n.x * 100);\r
-    result.vertices.push_back(n.y * 100);\r
-    result.vertices.push_back(n.z * 100);\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(n.x);\r
+    result.vertices.push_back(n.y);\r
+    result.vertices.push_back(n.z);\r
   }\r
 \r
   for (int i = 0; i < scene->mMeshes[0]->mNumFaces; i++) {\r
@@ -420,7 +438,7 @@ int main() {
     bool freecam = false;\r
     int renderState = 2;\r
     float color[3] = { 0.7f, 0.4f, 0.4f };\r
-    glm::vec3 lightPos = glm::vec3(0.0f, 0.04f, -0.08f);\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
@@ -556,8 +574,10 @@ int main() {
       1, GL_FALSE, glm::value_ptr(lightProj));\r
     glUniform1i(glGetUniformLocation(shaderProgramIrradiance, "screenWidth"), window.getSize().x);\r
     glUniform1i(glGetUniformLocation(shaderProgramIrradiance, "screenHeight"), window.getSize().y);\r
-    glUniform2fv(glGetUniformLocation(shaderProgramIrradiance, "samplePositions"), 13, samplePositions);\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
@@ -585,6 +605,7 @@ int main() {
       glGetUniformLocation(shaderProgramIrradiance, "viewPos"),\r
       1, glm::value_ptr(options.freecam ? freeCam.pos : arcCam.getPos()));\r
       \r
+      \r
     glUniform1i(glGetUniformLocation(shaderProgramIrradiance, "shadowmapTexture"), 0);\r
     glActiveTexture(GL_TEXTURE0 + 0);\r
     glBindTexture(GL_TEXTURE_2D, fb_shadowmap.renderTexture);\r