]> git.localhorst.tv Git - blobs.git/blobdiff - src/app/states.cpp
varying material and schlick/fresnel
[blobs.git] / src / app / states.cpp
index 8647ff63d49ce4375645395b9df14fa353ba63ec..f670f26e52ba33243ba614b559f7054898a494e2 100644 (file)
@@ -25,7 +25,7 @@ MasterState::MasterState(Assets &assets, world::Simulation &sim) noexcept
 : State()
 , assets(assets)
 , sim(sim)
-, cam(sim.Root())
+, cam(**sim.Suns().begin())
 , cam_pos(0.0, 0.0, 1.0)
 , cam_tgt_pos(0.0, 0.0, 1.0)
 , cam_focus(0.0)
@@ -89,6 +89,8 @@ void MasterState::OnResize(int w, int h) {
        assets.shaders.sun_surface.SetVP(cam.View(), cam.Projection());
        assets.shaders.creature_skin.Activate();
        assets.shaders.creature_skin.SetVP(cam.View(), cam.Projection());
+       assets.shaders.sky_box.Activate();
+       assets.shaders.sky_box.SetVP(cam.View() * cam.Universe(), cam.Projection());
 }
 
 void MasterState::OnUpdate(int dt) {
@@ -244,10 +246,14 @@ void MasterState::OnRender(graphics::Viewport &viewport) {
        cam.LookAt(glm::vec3(cam_pos), glm::vec3(cam_focus), glm::vec3(cam_up));
        assets.shaders.planet_surface.Activate();
        assets.shaders.planet_surface.SetV(cam.View());
+       assets.shaders.planet_surface.SetAmbient(glm::vec3(0.04, 0.05, 0.06));
+       assets.shaders.sky_box.Activate();
+       assets.shaders.sky_box.SetV(cam.View() * cam.Universe());
        assets.shaders.sun_surface.Activate();
        assets.shaders.sun_surface.SetV(cam.View());
        assets.shaders.creature_skin.Activate();
        assets.shaders.creature_skin.SetV(cam.View());
+       assets.shaders.creature_skin.SetAmbient(glm::vec3(0.04, 0.05, 0.06));
 
        int num_lights = 0;
        for (auto sun : sim.Suns()) {
@@ -306,6 +312,10 @@ void MasterState::OnRender(graphics::Viewport &viewport) {
                c->Draw(viewport);
        }
 
+       assets.shaders.sky_box.Activate();
+       assets.shaders.sky_box.SetTexture(assets.textures.sky);
+       assets.shaders.sky_box.Draw();
+
        viewport.ClearDepth();
        bp.Draw(viewport);
        cp.Draw(viewport);