|
|
|
|
@ -4,12 +4,8 @@
|
|
|
|
|
|
|
|
|
|
#include "TestLayer.h"
|
|
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
|
|
#include "imgui.h"
|
|
|
|
|
#include "glm/gtc/type_ptr.hpp"
|
|
|
|
|
#include "Prism/Renderer/Renderer.h"
|
|
|
|
|
#include "Prism/Renderer/Shader.h"
|
|
|
|
|
#include "Prism.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void EnableDockSpace(const bool enable)
|
|
|
|
|
@ -162,15 +158,20 @@ void TestLayer::OnAttach()
|
|
|
|
|
-1.0f, 1.0f, 0.0f, 0.0f, 1.0f
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static unsigned int QuadIndices[] = {
|
|
|
|
|
static uint32_t QuadIndices[] = {
|
|
|
|
|
0, 1, 2, 2, 3, 0
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_VertexBuffer = std::unique_ptr<Prism::VertexBuffer>(Prism::VertexBuffer::Create());
|
|
|
|
|
m_VertexBuffer->SetData(QuadVertex, sizeof(QuadVertex));
|
|
|
|
|
m_VertexArray = Prism::VertexArray::Create();
|
|
|
|
|
auto quadVB = Prism::VertexBuffer::Create(QuadVertex, sizeof(QuadVertex) * sizeof(float));
|
|
|
|
|
quadVB->SetLayout({
|
|
|
|
|
{ Prism::ShaderDataType::Float3, "a_Position" },
|
|
|
|
|
{ Prism::ShaderDataType::Float2, "a_TexCoord" }
|
|
|
|
|
});
|
|
|
|
|
m_VertexArray->AddVertexBuffer(quadVB);
|
|
|
|
|
|
|
|
|
|
m_IndexBuffer = std::unique_ptr<Prism::IndexBuffer>(Prism::IndexBuffer::Create());
|
|
|
|
|
m_IndexBuffer->SetData(QuadIndices, sizeof(QuadIndices));
|
|
|
|
|
auto ib = Prism::IndexBuffer::Create(QuadIndices, 6 * sizeof(uint32_t));
|
|
|
|
|
m_VertexArray->SetIndexBuffer(ib);
|
|
|
|
|
|
|
|
|
|
m_SkyBoxTextureCube.reset(Prism::TextureCube::Create("assets/textures/environments/Arches_E_PineTree_Radiance.tga"));
|
|
|
|
|
|
|
|
|
|
@ -178,7 +179,8 @@ void TestLayer::OnAttach()
|
|
|
|
|
m_Shader = Prism::Shader::Create("assets/shaders/demo.glsl");
|
|
|
|
|
m_HDRShader = Prism::Shader::Create("assets/shaders/hdr.glsl");
|
|
|
|
|
|
|
|
|
|
m_Mesh = std::make_unique<Prism::Mesh>("assets/meshes/cerberus.fbx");
|
|
|
|
|
// m_Mesh = std::make_unique<Prism::Mesh>("assets/meshes/cerberus.fbx");
|
|
|
|
|
// m_MeshMaterial = Prism::CreateRef<Prism::MaterialInstance>(m_Mesh->GetMaterial());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TestLayer::OnDetach()
|
|
|
|
|
@ -194,38 +196,22 @@ void TestLayer::OnUpdate(Prism::TimeStep deltaTime)
|
|
|
|
|
m_FrameBuffer->Bind();
|
|
|
|
|
Prism::Renderer::Clear(m_clearColor[0], m_clearColor[1], m_clearColor[2], m_clearColor[3]);
|
|
|
|
|
|
|
|
|
|
Prism::UniformBufferDeclaration<sizeof(glm::mat4), 1> skyboxShaderUB;
|
|
|
|
|
skyboxShaderUB.Push("u_InverseVP", inverse(viewProjection));
|
|
|
|
|
m_SkyboxShader->UploadUniformBuffer(skyboxShaderUB);
|
|
|
|
|
// SkyBox
|
|
|
|
|
m_SkyboxShader->Bind();
|
|
|
|
|
m_SkyboxShader->SetMat4("u_InverseVP", inverse(viewProjection));
|
|
|
|
|
m_SkyBoxTextureCube->Bind(0);
|
|
|
|
|
m_VertexBuffer->Bind();
|
|
|
|
|
m_IndexBuffer->Bind();
|
|
|
|
|
Prism::Renderer::DrawIndexed(m_IndexBuffer->GetCount(), false);
|
|
|
|
|
m_VertexArray->Bind();
|
|
|
|
|
Prism::Renderer::DrawIndexed(m_VertexArray->GetIndexBuffer()->GetCount(), false);
|
|
|
|
|
|
|
|
|
|
Prism::UniformBufferDeclaration<sizeof(glm::vec4) + sizeof(glm::mat4), 2> uniformbuffer;
|
|
|
|
|
uniformbuffer.Push("u_Color", m_TriangleColor);
|
|
|
|
|
uniformbuffer.Push("u_MVP", viewProjection);
|
|
|
|
|
m_Shader->UploadUniformBuffer(uniformbuffer);
|
|
|
|
|
|
|
|
|
|
m_Shader->Bind();
|
|
|
|
|
|
|
|
|
|
// m_Mesh->Render(deltaTime, m_Shader);
|
|
|
|
|
// m_VertexBuffer->Bind();
|
|
|
|
|
// m_IndexBuffer->Bind();
|
|
|
|
|
|
|
|
|
|
// m_Mesh->Render();
|
|
|
|
|
// Prism::Renderer::DrawIndexed(3, false);
|
|
|
|
|
m_FrameBuffer->Unbind();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// HDR
|
|
|
|
|
m_FinalPresentBuffer->Bind();
|
|
|
|
|
m_HDRShader->Bind();
|
|
|
|
|
m_HDRShader->SetFloat("u_Exposure", m_Exposure);
|
|
|
|
|
m_FrameBuffer->BindTexture();
|
|
|
|
|
m_VertexBuffer->Bind();
|
|
|
|
|
m_IndexBuffer->Bind();
|
|
|
|
|
Prism::Renderer::DrawIndexed(m_IndexBuffer->GetCount(), false);
|
|
|
|
|
Prism::Renderer::DrawIndexed(m_VertexArray->GetIndexBuffer()->GetCount(), false);
|
|
|
|
|
m_FinalPresentBuffer->Unbind();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|