File Renderer.h
File List > render > Renderer.h
Go to the documentation of this file
#pragma once
#include "buffers/FrameBuffer.h"
#include "ShadowSystem.h"
#include "RenderConfigs.h"
#include "Context.h"
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <vector>
#include <unordered_map>
class Window;
class Renderer
{
private:
enum _BuildinPPS
{
_PBR_COMP_PPS,
_EDIT_VISUAL_PPS
};
enum _BuildinBuffLoc
{
_RASTER,
_AO_ELS
};
public:
static GLint max_resolution_w;
static GLint max_resolution_h;
public:
// TODO: remove for stateless renderer
GLuint r_frame_width{};
GLuint r_frame_height{};
private:
int r_sample_step{ 1 };
private:
// TODO: remove for stateless renderer
std::shared_ptr<FrameBuffer> r_render_result;
void FrameResize(GLuint _w, GLuint _h);
void FrameBufferResize(const glm::vec2& size);
public:
// TODO: remove for stateless renderer
std::vector<FrameBuffer> r_buffer_list;
void InitFrameBuffer();
void BindFrameBuffer(int slot);
void EndFrameBuffer(int slot);
FrameBuffer* GetFrameBufferPtr() { return r_render_result.get(); }
public:
Renderer(EventPool& evt, Window& w);
~Renderer();
Renderer(const Renderer&) = delete;
Renderer& operator=(const Renderer&) = delete;
public:
// TODO: move to editor layer / RenderContext
bool r_render_icons = true;
bool r_is_preview = true;
public:
// TODO: remove for stateless renderer
ShadowSystem r_shadow_system;
RenderConfigs r_config;
RenderConfigs* GetConfig() { return &r_config; }
public:
void NewFrame();
void Render(const Context& ctx, bool rend = true, bool buff = true);
public:
void Reset();
void ConstructSDF(const Context& ctx);
public:
void ScreenShot();
};