skybox projection improvement

This commit is contained in:
MihailRis
2024-01-26 14:52:41 +03:00
parent d4999901c2
commit 1409df4b86
4 changed files with 9 additions and 9 deletions
+5 -5
View File
@@ -74,7 +74,7 @@ void Skybox::drawBackground(Camera* camera, Assets* assets, int width, int heigh
unbind(); unbind();
} }
void Skybox::drawStars(Camera* camera, float angle, float opacity) { void Skybox::drawStars(float angle, float opacity) {
batch3d->texture(nullptr); batch3d->texture(nullptr);
random.setSeed(STARS_SEED); random.setSeed(STARS_SEED);
for (int i = 0; i < STARS_COUNT; i++) { 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; sopacity *= (0.2f+sqrt(cos(angle))*0.5) - 0.05;
glm::vec4 tint (1,1,1, sopacity * opacity); 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(); batch3d->flushPoints();
} }
@@ -113,7 +113,7 @@ void Skybox::draw(
Shader* shader = assets->getShader("ui3d"); Shader* shader = assets->getShader("ui3d");
shader->use(); shader->use();
shader->uniformMatrix("u_projview", camera->getProjView()); shader->uniformMatrix("u_projview", camera->getProjView(false));
shader->uniformMatrix("u_apply", glm::mat4(1.0f)); shader->uniformMatrix("u_apply", glm::mat4(1.0f));
batch3d->begin(); batch3d->begin();
@@ -132,11 +132,11 @@ void Skybox::draw(
if (!sprite.emissive) { if (!sprite.emissive) {
tint *= 0.6f+cos(angle)*0.4; 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); up, 1, 1, UVRegion(), tint);
} }
drawStars(camera, angle, opacity); drawStars(angle, opacity);
} }
void Skybox::refresh(const GfxContext& pctx, float t, float mie, uint quality) { void Skybox::refresh(const GfxContext& pctx, float t, float mie, uint quality) {
+1 -1
View File
@@ -33,7 +33,7 @@ class Skybox {
std::unique_ptr<Batch3D> batch3d; std::unique_ptr<Batch3D> batch3d;
std::vector<skysprite> sprites; std::vector<skysprite> 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); void drawBackground(Camera* camera, Assets* assets, int width, int height);
public: public:
Skybox(uint size, Shader* shader); Skybox(uint size, Shader* shader);
+2 -2
View File
@@ -58,8 +58,8 @@ mat4 Camera::getView(bool pos){
} }
} }
mat4 Camera::getProjView(){ mat4 Camera::getProjView(bool pos){
return getProjection()*getView(); return getProjection()*getView(pos);
} }
void Camera::setFov(float fov) { void Camera::setFov(float fov) {
+1 -1
View File
@@ -25,7 +25,7 @@ public:
glm::mat4 getProjection(); glm::mat4 getProjection();
glm::mat4 getView(bool position=true); glm::mat4 getView(bool position=true);
glm::mat4 getProjView(); glm::mat4 getProjView(bool position=true);
void setFov(float fov); void setFov(float fov);
float getFov() const; float getFov() const;