From 0e8e98026cf0031b59798050e2f5d71e0c890ea3 Mon Sep 17 00:00:00 2001 From: karl Date: Wed, 18 Nov 2020 16:48:30 +0100 Subject: [PATCH] Add normal scale factor + some minor tweaks: higher shadowmap resolution and light rotate speed --- ECS/Systems/RenderSystem.h | 5 +++-- Rendering/Material.h | 2 ++ Shaders/default-fragment.fs | 2 ++ main.cpp | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ECS/Systems/RenderSystem.h b/ECS/Systems/RenderSystem.h index a87e74a..ef0bf0a 100644 --- a/ECS/Systems/RenderSystem.h +++ b/ECS/Systems/RenderSystem.h @@ -78,6 +78,7 @@ public: // TODO: Not always required (not when rendering shadows) - make functions separate? shader.setFloat("diffuseStrength", material.diffuse); shader.setFloat("specularStrength", material.specular); + shader.setFloat("normalScale", material.normal_scale); mesh.render(); } @@ -268,8 +269,8 @@ public: int screen_width = 1280; int screen_height = 720; - int shadow_width = 2048; - int shadow_height = 2048; + int shadow_width = 8192; + int shadow_height = 8192; unsigned int depthMap; unsigned int depthMapFBO; diff --git a/Rendering/Material.h b/Rendering/Material.h index 3f82533..17eb511 100644 --- a/Rendering/Material.h +++ b/Rendering/Material.h @@ -13,6 +13,8 @@ struct Material { float diffuse = 0.8; float specular = 0.2; + + float normal_scale = 3.0; }; #endif //ECSGAME_MATERIAL_H diff --git a/Shaders/default-fragment.fs b/Shaders/default-fragment.fs index 3770a4a..a2a003f 100644 --- a/Shaders/default-fragment.fs +++ b/Shaders/default-fragment.fs @@ -16,6 +16,7 @@ uniform mediump vec3 cameraPosition; uniform mediump float diffuseStrength; uniform mediump float specularStrength; +uniform mediump float normalScale; mediump float ShadowCalculation(vec4 fragPosLightSpace) { @@ -47,6 +48,7 @@ void main() // Get normal from normal map in the range [-1,1] mediump vec3 map_normal = normalize(texture(normalmap, TexCoord).rgb * 2.0 - 1.0); + map_normal.xy *= normalScale; mediump vec3 final_normal = normalize(TBN * map_normal); // Alpha Scissors diff --git a/main.cpp b/main.cpp index c220764..82c80d0 100644 --- a/main.cpp +++ b/main.cpp @@ -204,7 +204,7 @@ int main() { renderSystem->render(world, defaultShader, shadowShader, debugShader); ring->get()->rotate(delta * 100.0, glm::vec3(0.0, 1.0, 0.0)); - sun->get()->direction = glm::normalize(glm::vec3(glm::rotate(glm::mat4(1), (float)elapsed_time, glm::vec3(0.0, 1.0, 0.0)) * glm::vec4(1.0, 1.0, 1.0, 0.0))); + sun->get()->direction = glm::normalize(glm::vec3(glm::rotate(glm::mat4(1), (float)elapsed_time * 0.3f, glm::vec3(0.0, 1.0, 0.0)) * glm::vec4(1.0, 1.0, 1.0, 0.0))); /* Swap front and back buffers */ glfwSwapBuffers(window);