test: try uniform buffers
This commit is contained in:
@ -8,6 +8,8 @@
|
|||||||
#include "engine/export.h"
|
#include "engine/export.h"
|
||||||
#include "engine/components/light.h"
|
#include "engine/components/light.h"
|
||||||
|
|
||||||
|
#include "engine/opengl/buffers.h"
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
// TODO: make static or singleton
|
// TODO: make static or singleton
|
||||||
@ -26,6 +28,8 @@ private:
|
|||||||
void GenerateShadowMaps();
|
void GenerateShadowMaps();
|
||||||
void EnsureShadowResources(light& l);
|
void EnsureShadowResources(light& l);
|
||||||
private:
|
private:
|
||||||
|
OpenGL::UniformBuffer m_uniform_matrices;
|
||||||
|
|
||||||
Shader m_shader;
|
Shader m_shader;
|
||||||
Shader m_depthShader;
|
Shader m_depthShader;
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,7 @@
|
|||||||
#include <glm/gtx/euler_angles.hpp>
|
#include <glm/gtx/euler_angles.hpp>
|
||||||
|
|
||||||
#include <glm/gtx/string_cast.hpp>
|
#include <glm/gtx/string_cast.hpp>
|
||||||
|
#include <glm/gtc/type_ptr.hpp>
|
||||||
|
|
||||||
#include "engine/renderer/renderer.h"
|
#include "engine/renderer/renderer.h"
|
||||||
#include "engine/window/window.h"
|
#include "engine/window/window.h"
|
||||||
@ -22,15 +23,9 @@
|
|||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
Renderer::Renderer(std::shared_ptr<Scene> scene) : m_scene(scene)
|
Renderer::Renderer(std::shared_ptr<Scene> scene)
|
||||||
|
: m_scene(scene), m_uniform_matrices(2 * sizeof(glm::mat4), 1)
|
||||||
{
|
{
|
||||||
m_proj = glm::perspective(
|
|
||||||
static_cast<float>(M_PI_2),
|
|
||||||
static_cast<float>(Window::GetWidth()) / static_cast<float>(Window::GetHeight()),
|
|
||||||
0.01f,
|
|
||||||
100.0f
|
|
||||||
);
|
|
||||||
|
|
||||||
m_shader.init(
|
m_shader.init(
|
||||||
FileManager::read("./engine/src/shaders/main.vs"),
|
FileManager::read("./engine/src/shaders/main.vs"),
|
||||||
FileManager::read("./engine/src/shaders/pbr.fs")
|
FileManager::read("./engine/src/shaders/pbr.fs")
|
||||||
@ -41,6 +36,18 @@ Renderer::Renderer(std::shared_ptr<Scene> scene) : m_scene(scene)
|
|||||||
FileManager::read("./engine/src/shaders/depth.fs")
|
FileManager::read("./engine/src/shaders/depth.fs")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
glUniformBlockBinding(m_shader.m_id, glGetUniformBlockIndex(m_shader.m_id, "Matrices"), 1);
|
||||||
|
// glUniformBlockBinding(m_depthShader.m_id, glGetUniformBlockIndex(m_depthShader.m_id, "Matrices"), 1);
|
||||||
|
|
||||||
|
m_proj = glm::perspective(
|
||||||
|
static_cast<float>(M_PI_2),
|
||||||
|
static_cast<float>(Window::GetWidth()) / static_cast<float>(Window::GetHeight()),
|
||||||
|
0.01f,
|
||||||
|
100.0f
|
||||||
|
);
|
||||||
|
|
||||||
|
m_uniform_matrices.SubData(glm::value_ptr(m_proj), sizeof(glm::mat4), 0);
|
||||||
|
|
||||||
m_model = glm::mat4(1.f);
|
m_model = glm::mat4(1.f);
|
||||||
|
|
||||||
m_shader.use();
|
m_shader.use();
|
||||||
@ -58,6 +65,7 @@ void Renderer::OnWindowResized(int w, int h) {
|
|||||||
0.01f,
|
0.01f,
|
||||||
100.0f
|
100.0f
|
||||||
);
|
);
|
||||||
|
m_uniform_matrices.SubData(glm::value_ptr(m_proj), sizeof(glm::mat4), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::ApplyLights(Shader &shader) {
|
void Renderer::ApplyLights(Shader &shader) {
|
||||||
@ -120,6 +128,8 @@ void Renderer::UpdateView() {
|
|||||||
glm::vec3(0.f, 1.f, 0.f)
|
glm::vec3(0.f, 1.f, 0.f)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
m_uniform_matrices.SubData(glm::value_ptr(m_view), sizeof(glm::mat4), sizeof(glm::mat4));
|
||||||
|
|
||||||
m_shader.setVec3("viewPos", camTransform.position);
|
m_shader.setVec3("viewPos", camTransform.position);
|
||||||
|
|
||||||
m_shader.setMat4("u_view", m_view);
|
m_shader.setMat4("u_view", m_view);
|
||||||
|
|||||||
Reference in New Issue
Block a user