]> gitweb.ps.run Git - subsurface_scattering/blobdiff - src/main.cpp
Screen Space SSS
[subsurface_scattering] / src / main.cpp
index 41d5e76ea9db2cf5da6797c057d77c3c10662a45..4168c502ca31dcd98fc99c4209fdba4012743e4f 100644 (file)
@@ -304,6 +304,8 @@ int main() {
   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);\r
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\r
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\r
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);\r
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);\r
   //glBindTexture(GL_TEXTURE_2D, 0);\r
   glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, renderTexture, 0);\r
 \r
@@ -359,6 +361,8 @@ int main() {
   struct {\r
     bool wireframe = false;\r
     bool freecam = false;\r
+    bool sssss = false;\r
+    int N = 2;\r
   } options;\r
 \r
   sf::Clock deltaClock;\r
@@ -468,6 +472,9 @@ int main() {
     glClear(GL_COLOR_BUFFER_BIT);\r
     glUseProgram(screenShaderProgram);\r
 \r
+    glUniform1i(glGetUniformLocation(screenShaderProgram, "applySSSSS"), options.sssss);\r
+    glUniform1i(glGetUniformLocation(screenShaderProgram, "N"), options.N);\r
+\r
     glBindVertexArray(screenVAO);\r
     glBindTexture(GL_TEXTURE_2D, renderTexture);\r
     glDrawArrays(GL_TRIANGLES, 0, 6);\r
@@ -478,6 +485,10 @@ int main() {
     ImGui::Begin("Options");\r
     ImGui::Checkbox("Wireframe", &options.wireframe);\r
     ImGui::Checkbox("Free Cam", &options.freecam);\r
+    ImGui::Checkbox("SSSSS", &options.sssss);\r
+    if (options.sssss) {\r
+      ImGui::DragInt("N", &options.N, 0.05f, 1, 16);\r
+    }\r
     if (options.freecam) {\r
       ImGui::LabelText("Position", "%f %f %f", freeCam.pos.x, freeCam.pos.y, freeCam.pos.z);\r
       ImGui::LabelText("Rotation", "%f %f", freeCam.rot.x, freeCam.rot.y);\r