From 1409df4b86e3f536de89ccccc46fb0ec4235df86 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Fri, 26 Jan 2024 14:52:41 +0300 Subject: [PATCH] skybox projection improvement --- src/frontend/graphics/Skybox.cpp | 10 +++++----- src/frontend/graphics/Skybox.h | 2 +- src/window/Camera.cpp | 4 ++-- src/window/Camera.h | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/frontend/graphics/Skybox.cpp b/src/frontend/graphics/Skybox.cpp index c8515b47..bd41d1c4 100644 --- a/src/frontend/graphics/Skybox.cpp +++ b/src/frontend/graphics/Skybox.cpp @@ -74,7 +74,7 @@ void Skybox::drawBackground(Camera* camera, Assets* assets, int width, int heigh unbind(); } -void Skybox::drawStars(Camera* camera, float angle, float opacity) { +void Skybox::drawStars(float angle, float opacity) { batch3d->texture(nullptr); random.setSeed(STARS_SEED); for (int i = 0; i < STARS_COUNT; i++) { @@ -90,7 +90,7 @@ void Skybox::drawStars(Camera* camera, float angle, float opacity) { sopacity *= (0.2f+sqrt(cos(angle))*0.5) - 0.05; glm::vec4 tint (1,1,1, sopacity * opacity); - batch3d->point(camera->position + glm::vec3(x, y, z), tint); + batch3d->point(glm::vec3(x, y, z), tint); } batch3d->flushPoints(); } @@ -113,7 +113,7 @@ void Skybox::draw( Shader* shader = assets->getShader("ui3d"); shader->use(); - shader->uniformMatrix("u_projview", camera->getProjView()); + shader->uniformMatrix("u_projview", camera->getProjView(false)); shader->uniformMatrix("u_apply", glm::mat4(1.0f)); batch3d->begin(); @@ -132,11 +132,11 @@ void Skybox::draw( if (!sprite.emissive) { tint *= 0.6f+cos(angle)*0.4; } - batch3d->sprite(camera->position+pos, glm::vec3(0, 0, 1), + batch3d->sprite(pos, glm::vec3(0, 0, 1), up, 1, 1, UVRegion(), tint); } - drawStars(camera, angle, opacity); + drawStars(angle, opacity); } void Skybox::refresh(const GfxContext& pctx, float t, float mie, uint quality) { diff --git a/src/frontend/graphics/Skybox.h b/src/frontend/graphics/Skybox.h index cc949617..163b0b7f 100644 --- a/src/frontend/graphics/Skybox.h +++ b/src/frontend/graphics/Skybox.h @@ -33,7 +33,7 @@ class Skybox { std::unique_ptr batch3d; std::vector sprites; - void drawStars(Camera* camera, float angle, float opacity); + void drawStars(float angle, float opacity); void drawBackground(Camera* camera, Assets* assets, int width, int height); public: Skybox(uint size, Shader* shader); diff --git a/src/window/Camera.cpp b/src/window/Camera.cpp index 93d5a313..3e1d8a86 100644 --- a/src/window/Camera.cpp +++ b/src/window/Camera.cpp @@ -58,8 +58,8 @@ mat4 Camera::getView(bool pos){ } } -mat4 Camera::getProjView(){ - return getProjection()*getView(); +mat4 Camera::getProjView(bool pos){ + return getProjection()*getView(pos); } void Camera::setFov(float fov) { diff --git a/src/window/Camera.h b/src/window/Camera.h index d327c31c..fb9a65ba 100644 --- a/src/window/Camera.h +++ b/src/window/Camera.h @@ -25,7 +25,7 @@ public: glm::mat4 getProjection(); glm::mat4 getView(bool position=true); - glm::mat4 getProjView(); + glm::mat4 getProjView(bool position=true); void setFov(float fov); float getFov() const;