Browse Source

fixed shadow error on cpu

Kajetan Johannes Hammerle 3 years ago
parent
commit
5b1dacf1f9
3 changed files with 18 additions and 4 deletions
  1. 13 3
      client/Game.cpp
  2. 4 0
      client/Main.cpp
  3. 1 1
      client/rendering/Engine.cpp

+ 13 - 3
client/Game.cpp

@@ -28,11 +28,11 @@ pointIndex(0), moveSpeed(0.125f), movedLength(0.0f), mode(Mode::AUTO) {
         v.setAngles(i * 360.0f / cameraPoints.getCapacity(), 0.0f).mul(mid * 0.5f).add(offset);
 
         q.mul(Quaternion(Vector(r.nextFloat() * 360.0f, r.nextFloat() * -90.0f), -5.0f));
-        cameraPoints.add({v, q, 0.0f});
+        cameraPoints.add( {v, q, 0.0f});
     }
     for(uint i = 0; i < cameraPoints.getLength(); i++) {
         cameraPoints[i].distance = distance(i, 10000);
-    }   
+    }
 }
 
 void Game::tick() {
@@ -83,6 +83,16 @@ void Game::tick() {
         }
     } else if(mode == Mode::AUTO) {
         movedLength += moveSpeed;
+
+        if(control.keys.camUp.isDown()) {
+            moveSpeed += 0.0125f;
+        }
+        if(control.keys.camDown.isDown()) {
+            moveSpeed -= 0.0125f;
+            if(moveSpeed < 0.0f) {
+                moveSpeed = 0.0f;
+            }
+        }
     }
 
     if(control.keys.test.isDown()) {
@@ -109,7 +119,7 @@ void Game::renderWorld(float lag, Renderer& renderer) const {
             index = (index + 1) % cameraPoints.getLength();
         }
         float t = leftLength / cameraPoints[index].distance;
-        Vector interpolatedPos = pointUntilDistance(leftLength, index, 10000);
+        Vector interpolatedPos = pointUntilDistance(leftLength, index, 4000);
         renderer.update(interpolatedPos, cameraPoints[index].q.slerp(t, cameraPoints[(index + 1) % cameraPoints.getLength()].q));
         pos = interpolatedPos;
     } else if(mode == Mode::PLAYER) {

+ 4 - 0
client/Main.cpp

@@ -9,6 +9,7 @@
 #include "client/rendering/Engine.h"
 #include "client/utils/Clock.h"
 #include "client/rendering/RenderSettings.h"
+#include "rendering/wrapper/GLWrapper.h"
 
 bool initGLEW() {
     GLenum err = glewInit();
@@ -80,10 +81,13 @@ int main() {
 
     initCallbacks(window, size, framebuffers, control);
     window.show();
+    
+    GLWrapper::checkAndPrintError("setup error");
 
     const u64 nanosPerTick = 50000000;
     u64 lag = 0;
     while(!window.shouldClose() && game.isRunning()) {
+        GLWrapper::checkAndPrintError("loop error");
         engine.renderTick(static_cast<float> (lag) / nanosPerTick, game);
         window.swapBuffers();
         lag += fps.update();

+ 1 - 1
client/rendering/Engine.cpp

@@ -40,7 +40,7 @@ void Engine::renderShadow(float lag, const Game& game) {
     worldShadowProjView.set(worldShadowProj).mul(worldShadowView);
     shaders.shadow.setMatrix("projView", worldShadowProjView.getValues());
     model.clear();
-    shaders.world.setMatrix("model", model.get().getValues());
+    shaders.shadow.setMatrix("model", model.get().getValues());
     Renderer renderer(shaders.shadow, model, worldView);
     game.renderWorld(lag, renderer);
 }