Serialization work

This commit is contained in:
Antoine Pilote
2021-05-15 23:57:26 -04:00
parent b53d2e729e
commit 5f364dabb2
27 changed files with 368 additions and 305 deletions

View File

@@ -39,7 +39,7 @@ Window::Window()
Init();
Renderer::Init();
m_Scene->Init();
//m_Scene->Init();
}
Window::~Window()
@@ -62,6 +62,12 @@ GLFWwindow* Window::GetHandle()
return m_Window;
}
bool Window::SetScene(Ref<Scene> scene)
{
m_Scene = scene;
return true;
}
Ref<Scene> Window::GetScene()
{
return m_Scene;
@@ -205,7 +211,7 @@ int Window::Init()
ImGui_ImplGlfw_InitForOpenGL(m_Window, true);
ImGui_ImplOpenGL3_Init("#version 330");
m_Scene = CreateRef<Scene>();
//m_Scene = CreateRef<Scene>();
return 0;
}
@@ -224,163 +230,14 @@ bool init = false;
void Window::Draw()
{
Ref<Camera> cam = m_Scene->GetCurrentCamera();
if (!m_Scene)
return;
Ref<Camera> cam = m_Scene->GetCurrentCamera();
if (!cam)
return;
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
/*
static int selected = 0;
{
//QuadEntity* selectedEntity = m_Scene->GetEntity(selected);
ImGui::Begin("Scene");
{
ImGui::BeginChild("Buttons", ImVec2(300, 20), false);
if (ImGui::Button("Add")) {
m_Scene->CreateEntity("Entity");
}
ImGui::SameLine();
if (ImGui::Button("Remove"))
{
m_Scene->DestroyEntity(selectedEntity);
selectedEntity = m_Scene->GetAllEntities().at(0);
};
ImGui::EndChild();
int idx = 0;
for (Entity e : m_Scene->GetAllEntities()) {
std::string name = e.GetComponent<NameComponent>().Name;
if (ImGui::Selectable(name.c_str(), selected == idx)) {
selected = idx;
selectedEntity = e;
}
if (ImGui::BeginPopupContextItem())
{
// your popup code
ImGui::EndPopup();
}
idx++;
}
}
ImGui::End();
}
bool show = true;
int id = 0;
//
//m_Scene->DrawShadows();
//
// Drawing to texture.
ImGui::Begin("ShadowMap");
{
ImVec2 regionAvail = ImGui::GetContentRegionAvail();
glm::vec2 viewportPanelSize = glm::vec2(regionAvail.x, regionAvail.y);
if (selectedEntity.HasComponent<LightComponent>())
ImGui::Image((void*)selectedEntity.GetComponent<LightComponent>().m_Framebuffer->GetTexture()->GetID(), regionAvail, ImVec2(0, 1), ImVec2(1, 0));
ImGui::End();
}
//m_GBuffer->Bind();
//m_Scene->DrawGBuffer();
//m_GBuffer->Unbind();
////
//DrawQuad();
ImGui::Begin("Deferred output");
{
ImVec2 regionAvail = ImGui::GetContentRegionAvail();
glm::vec2 viewportPanelSize = glm::vec2(regionAvail.x, regionAvail.y);
ImGui::Image((void*)m_DeferredFrambuffer->GetTexture()->GetID(), regionAvail, ImVec2(0, 1), ImVec2(1, 0));
ImGui::End();
}
// Draw rect
//Renderer::m_DeferredShader->Bind();
ImGui::Begin("depth");
{
ImVec2 regionAvail = ImGui::GetContentRegionAvail();
glm::vec2 viewportPanelSize = glm::vec2(regionAvail.x, regionAvail.y);
ImGui::Image((void*)m_GBuffer->gDepth, regionAvail, ImVec2(0, 1), ImVec2(1, 0));
ImGui::End();
}
ImGui::Begin("Albedo");
{
ImVec2 regionAvail = ImGui::GetContentRegionAvail();
glm::vec2 viewportPanelSize = glm::vec2(regionAvail.x, regionAvail.y);
// If viewport is resized
if (m_GBuffer->GetSize() != viewportPanelSize)
{
// Update FBO size and camera aspect ratio.
//m_Framebuffer->UpdateSize(viewportPanelSize);
//cam->OnWindowResize(viewportPanelSize.x, viewportPanelSize.y);
}
ImGui::Image((void*)m_GBuffer->gAlbedo, regionAvail, ImVec2(0, 1), ImVec2(1, 0));
ImGui::End();
}
ImGui::Begin("Material");
{
ImVec2 regionAvail = ImGui::GetContentRegionAvail();
glm::vec2 viewportPanelSize = glm::vec2(regionAvail.x, regionAvail.y);
// If viewport is resized
if (m_GBuffer->GetSize() != viewportPanelSize)
{
// Update FBO size and camera aspect ratio.
//m_Framebuffer->UpdateSize(viewportPanelSize);
//cam->OnWindowResize(viewportPanelSize.x, viewportPanelSize.y);
}
ImGui::Image((void*)m_GBuffer->gMaterial, regionAvail, ImVec2(0, 1), ImVec2(1, 0));
ImGui::End();
}
ImGui::Begin("Normal");
{
ImVec2 regionAvail = ImGui::GetContentRegionAvail();
glm::vec2 viewportPanelSize = glm::vec2(regionAvail.x, regionAvail.y);
// If viewport is resized
if (m_GBuffer->GetSize() != viewportPanelSize)
{
// Update FBO size and camera aspect ratio.
//m_Framebuffer->UpdateSize(viewportPanelSize);
//cam->OnWindowResize(viewportPanelSize.x, viewportPanelSize.y);
}
ImGui::Image((void*)m_GBuffer->gNormal, regionAvail, ImVec2(0, 1), ImVec2(1, 0));
ImGui::End();
}
*/
Renderer::BeginDraw(cam);
glCullFace(GL_FRONT);
@@ -411,33 +268,33 @@ void Window::EndDraw()
void Window::DrawQuad()
{
Renderer::m_DeferredShader->Bind();
//Renderer::m_DeferredShader->Bind();
m_DeferredFrambuffer->Bind();
//m_DeferredFrambuffer->Bind();
m_Scene->DrawDeferred();
//m_Scene->DrawDeferred();
glActiveTexture(GL_TEXTURE0 + 5);
glBindTexture(GL_TEXTURE_2D, m_GBuffer->gAlbedo);
glActiveTexture(GL_TEXTURE0 + 6);
glBindTexture(GL_TEXTURE_2D, m_GBuffer->gNormal);
glActiveTexture(GL_TEXTURE0 + 7);
glBindTexture(GL_TEXTURE_2D, m_GBuffer->gMaterial);
glActiveTexture(GL_TEXTURE0 + 8);
glBindTexture(GL_TEXTURE_2D, m_GBuffer->gDepth);
Renderer::m_DeferredShader->SetUniform1i("m_Albedo", 5);
Renderer::m_DeferredShader->SetUniform1i("m_Depth", 8);
Renderer::m_DeferredShader->SetUniform1i("m_Normal", 6);
Renderer::m_DeferredShader->SetUniform1i("m_Material", 7);
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, 0, 6);
m_DeferredFrambuffer->Unbind();
//glActiveTexture(GL_TEXTURE0 + 5);
//glBindTexture(GL_TEXTURE_2D, m_GBuffer->gAlbedo);
//
//glActiveTexture(GL_TEXTURE0 + 6);
//glBindTexture(GL_TEXTURE_2D, m_GBuffer->gNormal);
//
//glActiveTexture(GL_TEXTURE0 + 7);
//glBindTexture(GL_TEXTURE_2D, m_GBuffer->gMaterial);
//
//glActiveTexture(GL_TEXTURE0 + 8);
//glBindTexture(GL_TEXTURE_2D, m_GBuffer->gDepth);
//
//Renderer::m_DeferredShader->SetUniform1i("m_Albedo", 5);
//Renderer::m_DeferredShader->SetUniform1i("m_Depth", 8);
//Renderer::m_DeferredShader->SetUniform1i("m_Normal", 6);
//Renderer::m_DeferredShader->SetUniform1i("m_Material", 7);
//
//glBindVertexArray(vao);
//glDrawArrays(GL_TRIANGLES, 0, 6);
//
//m_DeferredFrambuffer->Unbind();
}