Working on basic rendering #4

* Added a basic material abstraction
* Started implementation of RenderTarget (such as render textures)
This commit is contained in:
2022-06-04 18:26:58 +02:00
parent d9f0f40ad9
commit d019155d10
20 changed files with 633 additions and 452 deletions

View File

@ -1,18 +1,20 @@
#pragma once
#include "glm/glm.hpp"
#include "graphics/Shader.h"
#include "graphics/Window.h"
#include "graphics/Camera.h"
#include "graphics/Renderable.h"
#include "spdlog/spdlog.h"
#include "Input/InputManager.h"
#include "Graphics/Renderer.h"
#include "Graphics/GUI/GUIManager.h"
#include "Scene.h"
#include "PerfCounter.h"
extern void Start();
extern void Update();
extern void ImmediateGraphicsDraw();
extern void Stop();
#pragma once
#include "glm/glm.hpp"
#include "graphics/Shader.h"
#include "graphics/Window.h"
#include "graphics/Camera.h"
#include "graphics/Renderable.h"
#include "Graphics/Material.h"
#include "spdlog/spdlog.h"
#include "Input/InputManager.h"
#include "Graphics/Renderer.h"
#include "Graphics/GUI/GUIManager.h"
#include "Scene.h"
#include "PerfCounter.h"
extern void Start();
extern void Update();
extern void ImmediateGraphicsDraw();
extern void Stop();

View File

@ -0,0 +1,19 @@
#pragma once
#include <glm/glm.hpp>
#include <string>
#include "Shader.h"
class Material {
public:
Material(const Shader& shader);
void Apply();
glm::vec3 Color;
private:
const Shader& shader;
};

View File

@ -0,0 +1,30 @@
#pragma once
#include "BarinkEngine.h"
#include <vector>;
class RenderSurface
{
public:
RenderSurface();
~RenderSurface();
void Draw();
private:
// would normally be a material
// however rendersurface is special and
// thus does not contain a material
Shader* shader;
// Basically a mesh
std::vector<glm::vec3> verts;
std::vector<unsigned int > indices;
Buffer vertexBuffer;
Buffer elementBuffer;
VertexArray VAO;
};

View File

@ -1,21 +1,33 @@
#pragma once
#include <vector>
#include "Mesh.h"
#include "Buffer.h"
#include "VertexArray.h"
#include "Scene.h"
class Renderable : public SceneNode {
public:
Buffer vertexBuffer;
Buffer elementBuffer;
VertexArray VAO;
~Renderable();
static Renderable* Load();
void Draw();
private:
std::vector<BarinkEngine::Mesh> meshes;
Renderable();
#pragma once
#include <vector>
#include "Mesh.h"
#include "Buffer.h"
#include "Material.h"
#include "VertexArray.h"
#include "Scene.h"
class Renderable : public SceneNode {
public:
/*
* NOTE: Should combine into a Mesh!!
*/
Buffer vertexBuffer;
Buffer elementBuffer;
VertexArray VAO;
Material* material;
Shader* shader;
~Renderable();
static Renderable* Load();
void Draw();
private:
std::vector<BarinkEngine::Mesh> meshes;
Renderable();
};

View File

@ -15,12 +15,12 @@ class Shader {
public:
Shader(const std::string vertexShaderPath, const std::string fragmentShaderPath);
void Use();
void setUniformMat4(std::string uniformName, glm::mat4 matrix4);
void setUniformVec4(std::string uniformName, glm::vec4 vector4);
void setUniformVec3(std::string uniformName, glm::vec3 vector3);
void setUniformVec2(std::string uniformName, glm::vec2 vector2);
void setUniformFloat(std::string uniformName, float value);
void setUniformInt(std::string uniformName, int value);
void setUniformMat4(std::string uniformName, glm::mat4 matrix4)const;
void setUniformVec4(std::string uniformName, glm::vec4 vector4)const;
void setUniformVec3(std::string uniformName, glm::vec3 vector3)const;
void setUniformVec2(std::string uniformName, glm::vec2 vector2)const;
void setUniformFloat(std::string uniformName, float value)const;
void setUniformInt(std::string uniformName, int value) const ;
};