]> gitweb.ps.run Git - subsurface_scattering/commitdiff
Merge branch 'main' of https://github.com/patrick-scho/sss into main
authorPatrick Schönberger <patrick.schoenberger@posteo.de>
Wed, 10 Feb 2021 10:56:14 +0000 (11:56 +0100)
committerPatrick Schönberger <patrick.schoenberger@posteo.de>
Wed, 10 Feb 2021 10:56:14 +0000 (11:56 +0100)
20 files changed:
1  2 
.vscode/launch.json
.vscode/settings.json
assimp-vc142-mt.dll
bin/imgui-SFML.obj
bin/imgui.obj
bin/imgui_demo.obj
bin/imgui_draw.obj
bin/imgui_widgets.obj
build.sh
glew32.dll
imgui.ini
main.exe
main.ilk
main.obj
main.pdb
sfml-graphics-2.dll
sfml-system-2.dll
sfml-window-2.dll
src/main.cpp
vc140.pdb

diff --combined .vscode/launch.json
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0abb9ae280c767c1bddcbd8392f1a01a5dbdc844
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,19 @@@
++{\r
++  // Use IntelliSense to learn about possible attributes.\r
++  // Hover to view descriptions of existing attributes.\r
++  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\r
++  "version": "0.2.0",\r
++  "configurations": [\r
++    {\r
++      "name": "(Windows) Starten",\r
++      "type": "cppvsdbg",\r
++      "request": "launch",\r
++      "program": "${workspaceFolder}/main.exe",\r
++      "args": [],\r
++      "stopAtEntry": false,\r
++      "cwd": "${workspaceFolder}",\r
++      "environment": [],\r
++      "externalConsole": false\r
++    }\r
++  ]\r
++}
diff --combined .vscode/settings.json
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1a8d6c8ce24c8fc716a56630529ba97ed13dec88
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++{
++  "C_Cpp.default.includePath": [
++    "C:/prg/cpp/libs/glm",
++    "C:/prg/cpp/libs/glew-2.1.0/include",
++    "C:/prg/cpp/libs/SFML-2.5.1/include",
++    "C:/prg/cpp/libs/imgui",
++    "C:/prg/cpp/libs/imgui-sfml",
++    "C:/prg/cpp/libs/assimp-5.0.1/include",
++    "C:/prg/cpp/libs/assimp-5.0.1/build/include",
++  ],
++  "files.associations": {
++    "*.t": "lua",
++    "cmath": "cpp",
++    "istream": "cpp",
++    "array": "cpp",
++    "initializer_list": "cpp",
++    "type_traits": "cpp",
++    "vector": "cpp",
++    "xstring": "cpp",
++    "xtree": "cpp",
++    "xutility": "cpp",
++    "*.glsl": "c"
++  }
++}
diff --combined assimp-vc142-mt.dll
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5aed1740e9bfbbff1d77a3c5c206582b39db51d4
new file mode 100644 (file)
Binary files differ
diff --combined bin/imgui-SFML.obj
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1d7867b88cf8aa9d012aae2a2ad2ea1d008d3510
new file mode 100644 (file)
Binary files differ
diff --combined bin/imgui.obj
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..de0af0d48b7bcce4ee32f5c6510ddcc0d4e16703
new file mode 100644 (file)
Binary files differ
diff --combined bin/imgui_demo.obj
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e47365d297f53aecdf0152144d7a3e8c61431560
new file mode 100644 (file)
Binary files differ
diff --combined bin/imgui_draw.obj
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f4899f64ba2e04fe0c0e452b7d0092aa5ec83d04
new file mode 100644 (file)
Binary files differ
diff --combined bin/imgui_widgets.obj
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4770f02b9e5ea127be783fae489f17f21e64fd7e
new file mode 100644 (file)
Binary files differ
diff --combined build.sh
index 3c921c8cb87ed967041a7a00d8369085c6625da9,a0654330aa0a9f2b5561b03c1bbd19f89ef5f8c5..a0654330aa0a9f2b5561b03c1bbd19f89ef5f8c5
mode 100644,100755..100644
+++ b/build.sh
@@@ -1,1 -1,2 +1,2 @@@
- g++ src/main.cpp -o main -lsfml-system -lsfml-window -lGLEW -lGL -lassimp
+ # g++ -c ~/cpp/libs/imgui/*.cpp ~/cpp/libs/imgui-sfml/*.cpp -I ~/cpp/libs/imgui -I ~/cpp/libs/imgui-sfml/
+ g++ src/main.cpp ./*.o -o main -I ~/cpp/libs/imgui -I ~/cpp/libs/imgui-sfml -lsfml-system -lsfml-window -lsfml-graphics -lGLEW -lGL -lassimp
diff --combined glew32.dll
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..04f93819e9255d9f3ab0e504a836fb54032b8d5f
new file mode 100644 (file)
Binary files differ
diff --combined imgui.ini
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cf5b5fe486fb0cc2dd9537b475f177d2df162066
new file mode 100644 (file)
--- /dev/null
--- /dev/null
+++ b/imgui.ini
@@@ -1,0 -1,0 +1,15 @@@
++[Window][Debug##Default]\r
++Pos=60,60\r
++Size=400,400\r
++Collapsed=0\r
++\r
++[Window][w]\r
++Pos=60,60\r
++Size=447,349\r
++Collapsed=0\r
++\r
++[Window][Options]\r
++Pos=17,16\r
++Size=452,298\r
++Collapsed=0\r
++\r
diff --combined main.exe
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..feb07873ec06f6414daaf03120100d6ac755bc12
new file mode 100644 (file)
Binary files differ
diff --combined main.ilk
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..61cd5fffdec5c395bea041617b9771421b273446
new file mode 100644 (file)
Binary files differ
diff --combined main.obj
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f2350dd0978d5a6ff8ef7f86790d9b3a00a91231
new file mode 100644 (file)
Binary files differ
diff --combined main.pdb
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5aa106e84ee68ca453ca4c99a2dfa97ff6371b6d
new file mode 100644 (file)
Binary files differ
diff --combined sfml-graphics-2.dll
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e6d3e1ce2e1f8a9f21c492f52f82d0a25e16d652
new file mode 100644 (file)
Binary files differ
diff --combined sfml-system-2.dll
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ef86fea2d72354a69fc762058d61319288936456
new file mode 100644 (file)
Binary files differ
diff --combined sfml-window-2.dll
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..269822c868ffec51469a4cc7064027b5345f2861
new file mode 100644 (file)
Binary files differ
diff --combined src/main.cpp
index ddba48c87381cb203419bd830178a1a36eebe285,b95cc972121437ecb2a77ce573129ff41b72450b..dde29ec662014deda3e1e65e5b605902eeaa91eb
  #include <assimp/postprocess.h>\r
  #include <assimp/scene.h>\r
  \r
 +/*\r
 +\r
 +TODO:\r
 +- ShadowMap to fbo\r
 +- Save Depth to fbo\r
 +\r
 +*/\r
 +\r
 +float samplePositions[] = {\r
 +  0.000000f,  0.000000f,\r
 +  1.633992f,  0.036795f,\r
 +  0.177801f,  1.717593f,\r
 +  -0.194906f,  0.091094f,\r
 +  -0.239737f, -0.220217f,\r
 +  -0.003530f, -0.118219f,\r
 +  1.320107f, -0.181542f,\r
 +  5.970690f,  0.253378f,\r
 +  -1.089250f,  4.958349f,\r
 +  -4.015465f,  4.156699f,\r
 +  -4.063099f, -4.110150f,\r
 +  -0.638605f, -6.297663f,\r
 +  2.542348f, -3.245901f\r
 +};\r
 +\r
 +float sampleWeights[] = {\r
 +  0.220441f,  0.487000f, 0.635000f,\r
 +  0.076356f,  0.064487f, 0.039097f,\r
 +  0.116515f,  0.103222f, 0.064912f,\r
 +  0.064844f,  0.086388f, 0.062272f,\r
 +  0.131798f,  0.151695f, 0.103676f,\r
 +  0.025690f,  0.042728f, 0.033003f,\r
 +  0.048593f,  0.064740f, 0.046131f,\r
 +  0.048092f,  0.003042f, 0.000400f,\r
 +  0.048845f,  0.005406f, 0.001222f,\r
 +  0.051322f,  0.006034f, 0.001420f,\r
 +  0.061428f,  0.009152f, 0.002511f,\r
 +  0.030936f,  0.002868f, 0.000652f,\r
 +  0.073580f,  0.023239f, 0.009703f\r
 +};\r
 +\r
  struct model {\r
    std::vector<float> vertices;\r
    std::vector<GLuint> indices;\r
@@@ -91,10 -51,10 +91,10 @@@ private
      glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint) * indices.size(),\r
                  indices.data(), GL_STATIC_DRAW);\r
  \r
 -    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 6, (void*)(0));\r
      glEnableVertexAttribArray(0);\r
 -    glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 6, (void*)(sizeof(float) * 3));\r
 +    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 6, (void*)(0));\r
      glEnableVertexAttribArray(1);\r
 +    glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 6, (void*)(sizeof(float) * 3));\r
  \r
      glBindVertexArray(0);\r
    }\r
@@@ -182,16 -142,6 +182,16 @@@ struct arccam 
        rot.y = glm::radians(minY) * angleFactor;\r
    }\r
  \r
 +  glm::vec3 getPos() {\r
 +    float angle = rot.y / angleFactor;\r
 +  \r
 +    float camY = sin(angle) * exp(radius);\r
 +    float camZ = cos(angle) * exp(radius);\r
 +\r
 +    glm::vec3 result(0.0, camY, camZ);\r
 +    return glm::rotate(result, -rot.x / angleFactor, glm::vec3(0, 1, 0));\r
 +  }\r
 +\r
    glm::mat4 getViewMatrix() {\r
      float angle = rot.y / angleFactor;\r
    \r
@@@ -210,10 -160,14 +210,10 @@@ private
  \r
  std::string readFile(std::string filename) {\r
    std::ifstream ifs(filename, std::ios::binary);\r
 -  ifs.seekg(0, ifs.end);\r
 -  long length = ifs.tellg();\r
 -  ifs.seekg(0, ifs.beg);\r
 -  char *buffer = (char*)malloc(length);\r
 -  ifs.read(buffer, length);\r
 -  ifs.close();\r
 -  std::string result(buffer);\r
 -  free(buffer);\r
 +  std::string result, line;\r
 +  while (std::getline(ifs, line))\r
 +    result += line + "\n";\r
 +\r
    return result;\r
  }\r
  \r
@@@ -259,7 -213,7 +259,7 @@@ GLuint compileShaders(const char *vertF
    glGetShaderiv(vertShader, GL_COMPILE_STATUS, &success);\r
    if (!success) {\r
      glGetShaderInfoLog(vertShader, 512, NULL, infoLog);\r
 -    printf("Error compiling vertex shader: %s\n", infoLog);\r
 +    printf("Error compiling vertex shader(%s): %s\n", vertFilename, infoLog);\r
    }\r
  \r
    GLuint fragShader = glCreateShader(GL_FRAGMENT_SHADER);\r
    glGetShaderiv(fragShader, GL_COMPILE_STATUS, &success);\r
    if (!success) {\r
      glGetShaderInfoLog(fragShader, 512, NULL, infoLog);\r
 -    printf("Error compiling fragment shader: %s\n", infoLog);\r
 +    printf("Error compiling fragment shader(%s): %s\n", fragFilename, infoLog);\r
    }\r
  \r
    // Link Shader Program\r
  }\r
  \r
  \r
 +struct framebuffer {\r
 +  framebuffer(const char *vertFilename, const char *fragFilename, int width, int height) {\r
 +    glGenFramebuffers(1, &fbo);\r
 +    glBindFramebuffer(GL_FRAMEBUFFER, fbo);\r
 +    \r
 +    glGenTextures(1, &renderTexture);\r
 +    glBindTexture(GL_TEXTURE_2D, renderTexture);\r
 +    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
 +    glGenRenderbuffers(1, &rbo);\r
 +    glBindRenderbuffer(GL_RENDERBUFFER, rbo);\r
 +    glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width, height);\r
 +    //glBindRenderbuffer(GL_RENDERBUFFER, 0);\r
 +    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rbo);\r
 +\r
 +    if (glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE) {\r
 +      printf("Successfully created framebuffer\n");\r
 +    }\r
 +    glBindFramebuffer(GL_FRAMEBUFFER, 0);\r
 +    \r
 +    screenShaderProgram = compileShaders(vertFilename, fragFilename);\r
 +    glUseProgram(screenShaderProgram);\r
 +    glUniform1i(glGetUniformLocation(screenShaderProgram, "screenTexture"), 0);\r
 +\r
 +    // Screen VAO\r
 +    \r
 +    glGenBuffers(1, &screenVBO);\r
 +\r
 +    glGenVertexArrays(1, &screenVAO);\r
 +\r
 +    glBindVertexArray(screenVAO);\r
 +\r
 +    float screenVerts[] = {\r
 +      -1.0f, +1.0f, +0.0f, +1.0f,\r
 +      -1.0f, -1.0f, +0.0f, +0.0f,\r
 +      +1.0f, -1.0f, +1.0f, +0.0f,\r
 +  \r
 +      -1.0f, +1.0f, +0.0f, +1.0f,\r
 +      +1.0f, -1.0f, +1.0f, +0.0f,\r
 +      +1.0f, +1.0f, +1.0f, +1.0f,\r
 +    };\r
 +\r
 +    glBindBuffer(GL_ARRAY_BUFFER, screenVBO);\r
 +    glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 6 * 4,\r
 +                screenVerts, GL_STATIC_DRAW);\r
 +\r
 +    glEnableVertexAttribArray(0);\r
 +    glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 4, (void*)(0));\r
 +    glEnableVertexAttribArray(1);\r
 +    glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 4, (void*)(sizeof(float) * 2));\r
 +\r
 +    glBindVertexArray(0);\r
 +  }\r
 +  ~framebuffer() {\r
 +    glDeleteFramebuffers(1, &fbo);\r
 +  }\r
 +  \r
 +  GLuint fbo;\r
 +  GLuint renderTexture;\r
 +  GLuint rbo;\r
 +  GLuint screenShaderProgram;\r
 +  GLuint screenVBO;\r
 +  GLuint screenVAO;\r
 +};\r
 +\r
  int main() {\r
    // Window Setup\r
  \r
 +  const int width = 1600, height = 900;\r
 +\r
    sf::ContextSettings settings;\r
    settings.depthBits = 24;\r
    settings.antialiasingLevel = 0;\r
    if (glewInit() != GLEW_OK) {\r
    }\r
  \r
 -  GLuint shaderProgram = compileShaders("shaders/vert.glsl", "shaders/frag.glsl");\r
 +  GLuint shaderProgramShadowmap = compileShaders("shaders/vert.glsl", "shaders/frag_shadowmap.glsl");\r
 +  GLuint shaderProgramIrradiance = compileShaders("shaders/vert.glsl", "shaders/frag_irradiance.glsl");\r
  \r
    model m = loadModel("models/Isotrop-upperjaw.ply");\r
  \r
  \r
    glm::mat4 proj = glm::perspective(glm::radians(45.0f), (float)window.getSize().x / window.getSize().y, 0.001f, 1000.0f);\r
  \r
 +  // Framebuffer\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
 +  // Config\r
 +\r
    struct {\r
      bool wireframe = false;\r
      bool freecam = false;\r
 +    int renderState = 0;\r
 +    float color[3] = { 0.7f, 0.4f, 0.4f };\r
    } options;\r
  \r
    sf::Clock deltaClock;\r
  \r
      prevMouse = sf::Mouse::isButtonPressed(sf::Mouse::Right);\r
  \r
 -    // Render\r
 +    // Render Shadowmap\r
  \r
 +    glBindFramebuffer(GL_FRAMEBUFFER, fb_shadowmap.fbo);\r
 +    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);\r
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\r
 +    glEnable(GL_DEPTH_TEST);\r
 +\r
 +    if (options.wireframe)\r
 +      glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);\r
 +    else\r
 +      glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);\r
 +\r
 +    glUseProgram(shaderProgramShadowmap);\r
 +    \r
 +    if (options.freecam)\r
 +      view = freeCam.getViewMatrix();\r
 +    else\r
 +      view = arcCam.getViewMatrix();\r
 +    \r
 +    glUniformMatrix4fv(\r
 +      glGetUniformLocation(shaderProgramShadowmap, "model"),\r
 +      1, GL_FALSE, glm::value_ptr(model));\r
 +    glUniformMatrix4fv(\r
 +      glGetUniformLocation(shaderProgramShadowmap, "view"),\r
 +      1, GL_FALSE, glm::value_ptr(view));\r
 +    glUniformMatrix4fv(\r
 +      glGetUniformLocation(shaderProgramShadowmap, "projection"),\r
 +      1, GL_FALSE, glm::value_ptr(proj));\r
 +\r
 +    glUniform3fv(\r
 +      glGetUniformLocation(shaderProgramShadowmap, "lightPos"),\r
 +      1, glm::value_ptr(lightPos));\r
 +\r
 +    m.draw();\r
  \r
 +    // Render irradiance\r
 +\r
 +    glBindFramebuffer(GL_FRAMEBUFFER, fb_irradiance.fbo);\r
 +    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);\r
 +    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\r
      glEnable(GL_DEPTH_TEST);\r
  \r
      if (options.wireframe)\r
      else\r
        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);\r
  \r
 -    glUseProgram(shaderProgram);\r
 +    glUseProgram(shaderProgramIrradiance);\r
      \r
      if (options.freecam)\r
        view = freeCam.getViewMatrix();\r
        view = arcCam.getViewMatrix();\r
      \r
      glUniformMatrix4fv(\r
 -      glGetUniformLocation(shaderProgram, "model"),\r
 +      glGetUniformLocation(shaderProgramIrradiance, "model"),\r
        1, GL_FALSE, glm::value_ptr(model));\r
      glUniformMatrix4fv(\r
 -      glGetUniformLocation(shaderProgram, "view"),\r
 +      glGetUniformLocation(shaderProgramIrradiance, "view"),\r
        1, GL_FALSE, glm::value_ptr(view));\r
      glUniformMatrix4fv(\r
 -      glGetUniformLocation(shaderProgram, "projection"),\r
 +      glGetUniformLocation(shaderProgramIrradiance, "projection"),\r
        1, GL_FALSE, glm::value_ptr(proj));\r
  \r
 +    glUniform3fv(\r
 +      glGetUniformLocation(shaderProgramIrradiance, "objectColor"),\r
 +      1, options.color);\r
      glUniform3f(\r
 -      glGetUniformLocation(shaderProgram, "objectColor"),\r
 -      1.0f, 0.5f, 0.31f);\r
 -    glUniform3f(\r
 -      glGetUniformLocation(shaderProgram, "lightColor"),\r
 +      glGetUniformLocation(shaderProgramIrradiance, "lightColor"),\r
        1.0f, 1.0f, 1.0f);\r
      glUniform3fv(\r
 -      glGetUniformLocation(shaderProgram, "lightPos"),\r
 +      glGetUniformLocation(shaderProgramIrradiance, "lightPos"),\r
        1, glm::value_ptr(lightPos));\r
 +    glUniform3fv(\r
 +      glGetUniformLocation(shaderProgramIrradiance, "viewPos"),\r
 +      1, glm::value_ptr(options.freecam ? freeCam.pos : arcCam.getPos()));\r
 +      \r
 +    glUniform1i(glGetUniformLocation(shaderProgramIrradiance, "shadowmapTexture"), 0);\r
 +    glActiveTexture(GL_TEXTURE0 + 0);\r
 +    glBindTexture(GL_TEXTURE_2D, fb_shadowmap.renderTexture);\r
  \r
      m.draw();\r
 +\r
 +    // Render fbo to screen\r
      \r
      glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);\r
  \r
 +    glBindFramebuffer(GL_FRAMEBUFFER, 0);\r
 +    glDisable(GL_DEPTH_TEST);\r
 +    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);\r
 +    glClear(GL_COLOR_BUFFER_BIT);\r
 +    glUseProgram(fb_irradiance.screenShaderProgram);\r
 +\r
 +    glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "screenWidth"), window.getSize().x);\r
 +    glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "screenHeight"), window.getSize().y);\r
 +    glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "renderState"), options.renderState);\r
 +    glUniform2fv(glGetUniformLocation(fb_irradiance.screenShaderProgram, "samplePositions"), 13, samplePositions);\r
 +    glUniform3fv(glGetUniformLocation(fb_irradiance.screenShaderProgram, "sampleWeights"), 13, sampleWeights);\r
 +\r
 +    glBindVertexArray(fb_irradiance.screenVAO);\r
 +    glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "shadowmapTexture"), 0);\r
 +    glUniform1i(glGetUniformLocation(fb_irradiance.screenShaderProgram, "irradianceTexture"), 1);\r
 +    glActiveTexture(GL_TEXTURE0 + 0);\r
 +    glBindTexture(GL_TEXTURE_2D, fb_shadowmap.renderTexture);\r
 +    glActiveTexture(GL_TEXTURE0 + 1);\r
 +    glBindTexture(GL_TEXTURE_2D, fb_irradiance.renderTexture);\r
 +    glDrawArrays(GL_TRIANGLES, 0, 6);\r
 +    glBindVertexArray(0);\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::InputFloat3("Color", options.color, 2);\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
        }\r
      } else {\r
        ImGui::LabelText("Rotation", "%f %f", arcCam.rot.x, arcCam.rot.y);\r
 -      ImGui::InputFloat("Radius", &arcCam.radius);\r
 +      ImGui::DragFloat("Radius", &arcCam.radius, 0.01f, -1.0f, 1.0f);\r
        if (ImGui::Button("Reset")) {\r
          arcCam.rot = glm::vec2(0);\r
          arcCam.radius = 1;\r
    }\r
  \r
    return 0;\r
- }
+ }\r
diff --combined vc140.pdb
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5bcb5e523fedeab72d3aad5fe95f92cc1265a1e8
new file mode 100644 (file)
Binary files differ