#ifndef ENGINE_H #define ENGINE_H #include "client/Game.h" #include "client/rendering/Framebuffers.h" #include "client/rendering/Mesh.h" #include "client/rendering/NoiseTexture.h" #include "client/rendering/RenderSettings.h" #include "client/rendering/Renderer.h" #include "client/rendering/Shaders.h" #include "math/Frustum.h" class Engine final { Shaders& shaders; Framebuffers& framebuffers; Size lastSize; const Size& size; RenderSettings& renderSettings; Game& game; Frustum frustum; MatrixStack<16> model; Renderer renderer; NoiseTexture ssaoNoise; Mesh rectangle; Matrix worldProj; Matrix worldView; Matrix worldShadowProj; Matrix worldShadowView; Matrix worldShadowProjView; public: Engine(Shaders& shaders, Framebuffers& fb, const Size& size, RenderSettings& renderSettings, Game& game); void render(float lag); void tick(); bool isRunning() const; private: void renderShadow(float lag); void renderWorld(float lag); void renderSSAO(); void renderPostWorld(); void renderOverlay(float lag); void updateWorldProjection(); void updateWorldView(); }; #endif