From c99ecda7bed596922125f6b1ef1ef2ae8f27703e Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 26 Mar 2021 19:36:35 +0100 Subject: [PATCH] SSSSS comments --- shaders/fbo_frag.glsl | 36 +++----------------------- shaders/fbo_vert.glsl | 1 + shaders/frag_irradiance.glsl | 30 +++++++--------------- shaders/frag_shadowmap.glsl | 2 +- shaders/vert_irradiance.glsl | 44 ++++++++++--------------------- shaders/vert_shadowmap.glsl | 1 + src/main.cpp | 50 +++++++++++------------------------- src/main2.cpp | 13 ---------- 8 files changed, 44 insertions(+), 133 deletions(-) diff --git a/shaders/fbo_frag.glsl b/shaders/fbo_frag.glsl index 1102992..f92483e 100644 --- a/shaders/fbo_frag.glsl +++ b/shaders/fbo_frag.glsl @@ -11,45 +11,17 @@ uniform int renderState; uniform vec2 samplePositions[13]; uniform vec3 sampleWeights[13]; -vec4 blur(sampler2D tex, vec2 uv, vec2 res) { - float Pi = 6.28318530718; // Pi*2 - - // GAUSSIAN BLUR SETTINGS {{{ - float Directions = 16.0; // BLUR DIRECTIONS (Default 16.0 - More is better but slower) - float Quality = 4.0; // BLUR QUALITY (Default 4.0 - More is better but slower) - float Size = 8.0; // BLUR SIZE (Radius) - // GAUSSIAN BLUR SETTINGS }}} - - vec2 Radius = Size/res; - - // Pixel colour - vec4 Color = texture(tex, uv); - - // Blur calculations - for( float d=0.0; d vertices; std::vector indices; @@ -252,9 +234,9 @@ model loadModel(const std::string &filename) { for (int i = 0; i < scene->mMeshes[0]->mNumVertices; i++) { aiVector3D v = scene->mMeshes[0]->mVertices[i]; aiVector3D n = scene->mMeshes[0]->mNormals[i]; - result.vertices.push_back(v.x*100); - result.vertices.push_back(v.y*100); - result.vertices.push_back(v.z*100); + result.vertices.push_back(v.x); + result.vertices.push_back(v.y); + result.vertices.push_back(v.z); result.vertices.push_back(n.x); result.vertices.push_back(n.y); result.vertices.push_back(n.z); @@ -412,9 +394,8 @@ int main() { GLuint shaderProgramShadowmap = compileShaders("shaders/vert_shadowmap.glsl", "shaders/frag_shadowmap.glsl"); GLuint shaderProgramIrradiance = compileShaders("shaders/vert_irradiance.glsl", "shaders/frag_irradiance.glsl"); - //model m = loadModel("models/Isotrop-upperjaw.ply"); - model m = loadModel("models/african_head/african_head.obj"); - + model m = loadModel("models/Isotrop-upperjaw.ply"); + arccam arcCam; freecam freeCam; @@ -428,6 +409,7 @@ int main() { glm::mat4 lightProj = glm::perspective(glm::radians(90.0f), (float)window.getSize().x / window.getSize().y, 0.001f, 1000.0f); // Framebuffer + framebuffer fb_shadowmap("shaders/fbo_vert.glsl", "shaders/fbo_frag.glsl", width, height); framebuffer fb_irradiance("shaders/fbo_vert.glsl", "shaders/fbo_frag.glsl", width, height); @@ -439,9 +421,9 @@ int main() { int renderState = 2; float color[3] = { 0.7f, 0.4f, 0.4f }; glm::vec3 lightPos = glm::vec3(0.0f, 0.0f, 0.03f); - float transmittanceScale = 0.005f; - float powBase = 2.718; - float powFactor = 1; + float transmittanceScale = 0.025f; + float powBase = 2; + float powFactor = 1.5; } DefaultOptions; auto options = DefaultOptions; @@ -476,7 +458,7 @@ int main() { } } - // Update + // Update Camera if (sf::Mouse::isButtonPressed(sf::Mouse::Right)) { window.setMouseCursorVisible(false); @@ -499,7 +481,7 @@ int main() { prevMouse = sf::Mouse::isButtonPressed(sf::Mouse::Right); - // Render Shadowmap + // Render Shadowmap to fbo glClampColor(GL_CLAMP_READ_COLOR, GL_FALSE); glClampColor(GL_CLAMP_VERTEX_COLOR, GL_FALSE); @@ -540,7 +522,7 @@ int main() { m.draw(); - // Render irradiance + // Render irradiance map to fbo glBindFramebuffer(GL_FRAMEBUFFER, fb_irradiance.fbo); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); @@ -576,8 +558,6 @@ int main() { glUniform1i(glGetUniformLocation(shaderProgramIrradiance, "screenHeight"), window.getSize().y); glUniform1fv(glGetUniformLocation(shaderProgramIrradiance, "samplePositions"), 13, samplePositions); glUniform3fv(glGetUniformLocation(shaderProgramIrradiance, "sampleWeights"), 13, sampleWeights); - glUniform2fv(glGetUniformLocation(shaderProgramIrradiance, "translucencySampleVariances"), 6, translucencySampleVariances); - glUniform3fv(glGetUniformLocation(shaderProgramIrradiance, "translucencySampleWeights"), 6, translucencySampleWeights); glUniform1f( glGetUniformLocation(shaderProgramIrradiance, "transmittanceScale"), @@ -612,7 +592,7 @@ int main() { m.draw(); - // Render fbo to screen + // Render fbos to screen and calculate light spread/translucency in shader glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); @@ -638,6 +618,8 @@ int main() { glDrawArrays(GL_TRIANGLES, 0, 6); glBindVertexArray(0); + // menu + ImGui::SFML::Update(window, deltaClock.restart()); ImGui::Begin("Options"); @@ -646,8 +628,6 @@ int main() { ImGui::InputInt("Render State", &options.renderState); ImGui::DragFloat3("Color", options.color, 0.01, 0, 1); ImGui::DragFloat("Transmittance Scale", &options.transmittanceScale, 0.0001f, 0, 0.3); - ImGui::DragFloat("Pow Base", &options.powBase, 0.01f, 0, 4); - ImGui::DragFloat("Pow Factor", &options.powFactor, 0.01f, 0, 3); ImGui::DragFloat3("Light Pos", glm::value_ptr(options.lightPos), 0.01, -5, 5); if (options.freecam) { ImGui::LabelText("Position", "%f %f %f", freeCam.pos.x, freeCam.pos.y, freeCam.pos.z); diff --git a/src/main2.cpp b/src/main2.cpp index 38ca5f2..206466d 100644 --- a/src/main2.cpp +++ b/src/main2.cpp @@ -20,19 +20,6 @@ #include #include -/* - -TODO: -- Save Depth to fbo -- Stencil Buffer -- LightDist > 1 - - 1 - distanceToBackside in frag_irradiance -- ShadowMap Perspective (no projection?) -- (Implement Gaussian Blur) -- LightDir nicht immer zu 0 0 0 - -*/ - float samplePositions[] = { 0.000000f, 0.000000f, 1.633992f, 0.036795f, -- 2.50.1