#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 "gaming-core/math/Frustum.h" class Engine final { public: Engine(Shaders& shaders, Framebuffers& fb, const Size& size, RenderSettings& renderSettings); void renderTick(float lag, Game& game); private: void renderShadow(float lag, Game& game); void renderWorld(float lag, Game& game); void renderSSAO(); void renderPostWorld(); void renderOverlay(float lag, Game& game); void updateWorldProjection(); void updateWorldView(); Shaders& shaders; Framebuffers& framebuffers; const Size& size; RenderSettings& renderSettings; Frustum frustum; MatrixStack<16> model; Renderer renderer; NoiseTexture ssaoNoise; Mesh rectangle; Matrix worldProj; Matrix worldView; Matrix worldShadowProj; Matrix worldShadowView; Matrix worldShadowProjView; }; #endif