Program Listing for File LightingPass.hpp

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

#pragma once

#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <memory>

#include "LightingPassShaderProgram.hpp"
#include "renderer/deferred/GBuffer.hpp"
#include "scene/texture/Texture.hpp"
// #include "Noise.hpp"

#include "renderer/deferred/RenderPass.hpp"
#include "scene/Quad.hpp"
// #include "util/RandomNumbers.hpp"
#include "scene/Scene.hpp"

class LightingPass : public RenderPass
{
  public:
    LightingPass();

    void execute(glm::mat4 projection_matrix,
      std::shared_ptr<Camera>,
      std::shared_ptr<Scene> scene,
      std::shared_ptr<GBuffer> gbuffer,
      float delta_time);

    void create_shader_program();

    ~LightingPass();

  private:
    glm::vec3 current_offset;

    void set_uniforms(glm::mat4 projection_matrix,
      std::shared_ptr<Camera> main_camera,
      std::shared_ptr<Scene> scene,
      std::shared_ptr<GBuffer> gbuffer,
      float delta_time);

    std::shared_ptr<LightingPassShaderProgram> shader_program;

    Quad quad;
};