#include "Camera.hpp"
#include "Canvas.hpp"
+#include "SkyBox.hpp"
#include "Viewport.hpp"
#include "../app/init.hpp"
}
+SkyBox::SkyBox(CubeMap &&tex)
+: texture(std::move(tex))
+, model() {
+ model.LoadUnitBox();
+}
+
+void SkyBox::Render(Viewport &viewport) noexcept {
+ SkyBoxShader &prog = viewport.SkyBoxProgram();
+ prog.SetTexture(texture);
+ model.Draw();
+}
+
+
Viewport::Viewport()
: cam()
, canv()
cam.Aspect(fw, fh);
canv.Resize(fw, fh);
- chunk_prog.SetProjection(Perspective());
- if (active_prog == HUD) {
- entity_prog.SetProjection(Ortho());
- } else {
- entity_prog.SetProjection(Perspective());
- }
- sprite_prog.SetProjection(Ortho());
+ ChunkProgram().SetProjection(Perspective());
+ SkyBoxProgram().SetProjection(Perspective());
+ SpriteProgram().SetProjection(Ortho());
}
void Viewport::Clear() noexcept {
if (active_prog != SKY_BOX) {
sky_prog.Activate();
DisableBlending();
+ DisableBackfaceCulling();
EqualDepthTest();
active_prog = SKY_BOX;
}
void Viewport::WorldPosition(const glm::mat4 &t) noexcept {
cam.View(glm::inverse(t));
- chunk_prog.SetView(cam.View());
+ ChunkProgram().SetView(cam.View());
+ sky_prog.Activate();
+ SkyBoxProgram().SetView(cam.View());
}
}