Program Listing for File Renderer.hpp

Return to documentation for file (Src/GraphicsEngineOpenGL/renderer/Renderer.hpp)

#pragma once

// #include <glad/glad.h>
// #include <GLFW/glfw3.h>

#include "renderer/ShaderIncludes.hpp"
#include "renderer/deferred/GBuffer.hpp"
#include "renderer/deferred/GeometryPass.hpp"
#include "renderer/deferred/LightingPass.hpp"
#include "scene/light/directional_light/DirectionalShadowMapPass.hpp"
#include "scene/light/point_light/OmniShadowMapPass.hpp"

class Renderer
{
  public:
    Renderer(GLuint window_width, GLuint window_height);

    void drawFrame(std::shared_ptr<Camera> main_camera,
      std::shared_ptr<Scene> scene,
      glm::mat4 projection_matrix,
      GLfloat delta_time);

    void update_window_params(GLuint window_width, GLuint window_height);
    void reload_shader_programs();

    ~Renderer();

  private:
    GLuint window_width, window_height;

    std::shared_ptr<GBuffer> gbuffer;

    ShaderIncludes shader_includes;

    // all render passes
    std::vector<std::shared_ptr<RenderPass>> render_passes;

    std::shared_ptr<OmniShadowMapPass> omni_shadow_map_pass;
    std::shared_ptr<DirectionalShadowMapPass> directional_shadow_map_pass;
    std::shared_ptr<GeometryPass> geometry_pass;
    std::shared_ptr<LightingPass> lighting_pass;
};