skybox projection improvement
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user