From 1b84b7df5ee1f33d476929331d049cfcd73dd820 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 15 Jun 2025 03:35:40 +0300 Subject: [PATCH] fix sun and shadows position synchronization --- res/content/base/preload.json | 1 + res/textures/misc/moon_flare.png | Bin 0 -> 20106 bytes src/graphics/render/Skybox.cpp | 40 +++++++++++++++++--------- src/graphics/render/Skybox.hpp | 5 ++-- src/graphics/render/WorldRenderer.cpp | 7 +++-- 5 files changed, 35 insertions(+), 18 deletions(-) create mode 100644 res/textures/misc/moon_flare.png diff --git a/res/content/base/preload.json b/res/content/base/preload.json index 760ad2c9..24d54a42 100644 --- a/res/content/base/preload.json +++ b/res/content/base/preload.json @@ -14,6 +14,7 @@ ], "textures": [ "misc/moon", + "misc/moon_flare", "misc/sun", "gui/crosshair" ] diff --git a/res/textures/misc/moon_flare.png b/res/textures/misc/moon_flare.png new file mode 100644 index 0000000000000000000000000000000000000000..57304f3b48a1c4582163e0ac91b6cc3f5440a32c GIT binary patch literal 20106 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 E1Mb(S-~a#s literal 0 HcmV?d00001 diff --git a/src/graphics/render/Skybox.cpp b/src/graphics/render/Skybox.cpp index bf6eedc1..2687dc20 100644 --- a/src/graphics/render/Skybox.cpp +++ b/src/graphics/render/Skybox.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #ifndef M_PI @@ -46,18 +47,28 @@ Skybox::Skybox(uint size, Shader& shader) mesh = std::make_unique>(vertices, 6); - sprites.push_back(skysprite { - "misc/moon", - glm::pi()*0.5f, - 4.0f, - false + sprites.push_back(SkySprite { + "misc/moon_flare", + glm::pi() * 0.5f, + 0.5f, + false, + glm::pi() * 0.25f, }); - sprites.push_back(skysprite { - "misc/sun", - glm::pi()*1.5f, + sprites.push_back(SkySprite { + "misc/moon", + glm::pi() * 0.5f, 4.0f, - true + false, + glm::pi() * 0.25f, + }); + + sprites.push_back(SkySprite { + "misc/sun", + glm::pi() * 1.5f, + 4.0f, + true, + glm::pi() * 0.25f, }); } @@ -124,16 +135,19 @@ void Skybox::draw( for (auto& sprite : sprites) { batch3d->texture(assets.get(sprite.texture)); - float sangle = daytime * glm::pi()*2.0 + sprite.phase; + float sangle = daytime * glm::pi() * 2.0 + sprite.phase; float distance = sprite.distance; - glm::vec3 pos(-std::cos(sangle)*distance, std::sin(sangle)*distance, 0); - glm::vec3 up(-std::sin(-sangle), std::cos(-sangle), 0.0f); + glm::mat4 rotation = glm::rotate(glm::mat4(1.0f), -sangle + glm::pi() * 0.5f, glm::vec3(0, 0, -1)); + rotation = glm::rotate(rotation, sprite.altitude, glm::vec3(1, 0, 0)); + glm::vec3 pos = glm::vec4(0, distance, 0, 1) * rotation; + glm::vec3 up = glm::vec4(1, 0, 0, 1) * rotation; + glm::vec3 right = glm::vec4(0, 0, 1, 1) * rotation; glm::vec4 tint (1,1,1, opacity); if (!sprite.emissive) { tint *= 0.6f+std::cos(angle)*0.4; } - batch3d->sprite(pos, glm::vec3(0, 0, 1), + batch3d->sprite(pos, right, up, 1, 1, UVRegion(), tint); } batch3d->flush(); diff --git a/src/graphics/render/Skybox.hpp b/src/graphics/render/Skybox.hpp index f469b155..c1184a14 100644 --- a/src/graphics/render/Skybox.hpp +++ b/src/graphics/render/Skybox.hpp @@ -25,11 +25,12 @@ struct SkyboxVertex { {{}, 0}}; }; -struct skysprite { +struct SkySprite { std::string texture; float phase; float distance; bool emissive; + float altitude; }; class Skybox { @@ -42,7 +43,7 @@ class Skybox { std::unique_ptr> mesh; std::unique_ptr batch3d; - std::vector sprites; + std::vector sprites; int frameid = 0; float prevMie = -1.0f; diff --git a/src/graphics/render/WorldRenderer.cpp b/src/graphics/render/WorldRenderer.cpp index fe6b0fcc..e2b3dbef 100644 --- a/src/graphics/render/WorldRenderer.cpp +++ b/src/graphics/render/WorldRenderer.cpp @@ -384,10 +384,11 @@ void WorldRenderer::generateShadowsMap( 90.0f - ((static_cast(t / sunCycleStep)) * sunCycleStep + 0.25f) * 360.0f ); + float sunAltitude = glm::pi() * 0.25f; shadowCamera.rotate( - sunAngle, - glm::radians(-45.0f), - glm::radians(-0.0f) + -glm::cos(sunAngle + glm::pi() * 0.5f) * sunAltitude, + sunAngle - glm::pi() * 0.5f, + glm::radians(0.0f) ); shadowCamera.updateVectors();