added the readme
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
#ifndef RENDER_SYSTEM
|
||||
#define RENDER_SYSTEM
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
const float skyboxVertices[] = {
|
||||
-1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f, -1.0f,
|
||||
1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, 1.0f, -1.0f,
|
||||
-1.0f, -1.0f, 1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, -1.0f,
|
||||
-1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f, 1.0f,
|
||||
1.0f, -1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
|
||||
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f,
|
||||
-1.0f, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
|
||||
1.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f,
|
||||
-1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 1.0f,
|
||||
1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f, -1.0f,
|
||||
-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, -1.0f,
|
||||
1.0f, -1.0f, -1.0f, -1.0f, -1.0f, 1.0f, 1.0f, -1.0f, 1.0f
|
||||
};
|
||||
class Camera;
|
||||
class Shader;
|
||||
class FBO;
|
||||
class VBO;
|
||||
class VAO;
|
||||
class Cubemap;
|
||||
class Lighting;
|
||||
class Renderable {
|
||||
public:
|
||||
enum ShaderType {
|
||||
RigShader,
|
||||
MeshShader,
|
||||
ImageBoxShader,
|
||||
BoxShader,
|
||||
TextShader,
|
||||
ParticleShader
|
||||
};
|
||||
ShaderType shadertype = ShaderType::MeshShader;
|
||||
bool opaque = true;
|
||||
bool castshadow = false;
|
||||
Renderable();
|
||||
~Renderable();
|
||||
void BindToRenderSystem();
|
||||
virtual void Render(Shader& ShaderProgram) {}
|
||||
virtual glm::vec3 GetWorldPosition() const { return glm::vec3(0.0f); }
|
||||
};
|
||||
class RenderSystem {
|
||||
public:
|
||||
Lighting* lighting = nullptr;
|
||||
FBO* screenfbo = nullptr;
|
||||
FBO* shadowdepthmapfbo = nullptr;
|
||||
unsigned int depthMaptexture = 0;
|
||||
unsigned int textureColorbuffer = 0;
|
||||
unsigned int rbo = 0;
|
||||
unsigned int SHADOW_RESOLUTION = 0;
|
||||
VAO* quadVAO = nullptr; VBO* quadVBO = nullptr;
|
||||
VAO* skyboxVAO = nullptr; VBO* skyboxVBO = nullptr;
|
||||
Shader* MeshShadowShader = nullptr;
|
||||
Shader* RigShadowShader = nullptr;
|
||||
Shader* SkyboxShader = nullptr;
|
||||
Shader* ScreenShader = nullptr;
|
||||
Shader* RigShader = nullptr;
|
||||
Shader* MeshShader = nullptr;
|
||||
Shader* ImageBoxShader = nullptr;
|
||||
Shader* BoxShader = nullptr;
|
||||
Shader* Text2DShader = nullptr;
|
||||
Shader* ParticleShader = nullptr;
|
||||
Cubemap* skybox = nullptr;
|
||||
RenderSystem() {}
|
||||
void Initialize();
|
||||
void Render(Camera& camera);
|
||||
void AddRenderable(Renderable* r) { renderables.push_back(r); }
|
||||
void RemoveRenderable(Renderable* r) {
|
||||
for (int i = 0; i < (int)renderables.size(); i++) {
|
||||
if (renderables[i] == r) { renderables.erase(renderables.begin() + i); return; }
|
||||
}
|
||||
std::cout << "didn't find renderable to remove\n";
|
||||
}
|
||||
void RenderRenderable(Renderable* renderable, Camera& camera);
|
||||
std::vector<Renderable*> renderables;
|
||||
private:
|
||||
void PrepareRigShader(Camera& camera);
|
||||
void PrepareMeshShader(Camera& camera);
|
||||
void PrepareParticleShader(Camera& camera);
|
||||
void PrepareBoxShader(Camera& camera);
|
||||
void PrepareImageBoxShader(Camera& camera);
|
||||
void PrepareTextShader(Camera& camera);
|
||||
void RenderTranslucent(Camera& camera, const glm::mat4& lightSpaceMatrix, const glm::vec3& camPos);
|
||||
};
|
||||
#endif
|
||||
Reference in New Issue
Block a user