2018-12-17 14:24:58 -08:00
|
|
|
//
|
|
|
|
// Created by aurailus on 17/12/18.
|
|
|
|
//
|
|
|
|
|
2019-08-24 17:39:35 -07:00
|
|
|
#pragma once
|
2018-12-17 14:24:58 -08:00
|
|
|
|
2019-09-25 23:30:42 -07:00
|
|
|
#include "Camera.h"
|
2020-08-13 00:55:18 -07:00
|
|
|
#include "client/Window.h"
|
2020-02-20 11:23:12 -08:00
|
|
|
|
|
|
|
// Shaders
|
2019-09-24 16:48:08 -07:00
|
|
|
#include "shader/Shader.h"
|
2019-09-24 23:39:12 -07:00
|
|
|
#include "shader/SSAOShader.h"
|
|
|
|
#include "shader/BlurShader.h"
|
2019-09-25 23:30:42 -07:00
|
|
|
#include "shader/LightingShader.h"
|
|
|
|
#include "shader/WorldGeometryShader.h"
|
|
|
|
#include "shader/EntityGeometryShader.h"
|
2019-10-01 16:36:42 -07:00
|
|
|
#include "shader/GuiUniforms.h"
|
2018-12-17 14:24:58 -08:00
|
|
|
|
|
|
|
class Renderer {
|
2020-11-28 15:13:49 -08:00
|
|
|
public:
|
2020-11-08 22:57:34 -08:00
|
|
|
Renderer();
|
|
|
|
|
|
|
|
Renderer(glm::ivec2 win);
|
|
|
|
|
|
|
|
void update(double delta);
|
|
|
|
|
|
|
|
void beginChunkDeferredCalls();
|
|
|
|
|
|
|
|
void beginEntityDeferredCalls();
|
|
|
|
|
|
|
|
void endDeferredCalls();
|
|
|
|
|
|
|
|
void beginGUIDrawCalls();
|
|
|
|
|
|
|
|
void swapBuffers();
|
|
|
|
|
|
|
|
void setShader(Shader& s);
|
|
|
|
|
|
|
|
void setClearColor(unsigned char r, unsigned char g, unsigned char b);
|
|
|
|
|
|
|
|
static void toggleDepthTest(bool enable);
|
|
|
|
|
|
|
|
static void clearDepthBuffer();
|
|
|
|
|
|
|
|
void setModelMatrix(const glm::mat4& modelMatrix);
|
|
|
|
|
|
|
|
void setBones(std::vector<glm::mat4>& transforms);
|
|
|
|
|
|
|
|
void setClipBounds(glm::vec4 bounds);
|
|
|
|
|
2021-09-30 15:50:45 -07:00
|
|
|
void enableTexture(const Texture& texture);
|
2020-11-08 22:57:34 -08:00
|
|
|
|
|
|
|
Window window;
|
|
|
|
Camera camera;
|
2020-11-28 15:13:49 -08:00
|
|
|
|
|
|
|
private:
|
2020-11-08 22:57:34 -08:00
|
|
|
void renderQuad();
|
|
|
|
|
|
|
|
unsigned int quadVAO = 0;
|
|
|
|
unsigned int quadVBO = 0;
|
|
|
|
|
|
|
|
glm::vec4 clearColor{ 0, 0, 0, 1 };
|
2021-09-30 15:50:45 -07:00
|
|
|
// Texture* activeTexture;
|
2020-11-08 22:57:34 -08:00
|
|
|
|
|
|
|
WorldGeometryShader world;
|
|
|
|
EntityGeometryShader entity;
|
|
|
|
SSAOShader ssao;
|
|
|
|
BlurShader blur;
|
|
|
|
LightingShader light;
|
|
|
|
|
|
|
|
Shader guiShader;
|
|
|
|
GuiUniforms gu;
|
|
|
|
|
|
|
|
Shader* currentShader;
|
|
|
|
|
|
|
|
GLint currentModelUniform;
|
|
|
|
double elapsedTime = 0;
|
2021-08-04 22:17:40 -07:00
|
|
|
|
2021-10-11 12:46:57 -07:00
|
|
|
vec<ListenerRef> callbacks {};
|
2018-12-17 14:24:58 -08:00
|
|
|
};
|
|
|
|
|