From 2c2612be7b705f569eb2abbd07f97ad233f68a2c Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Sun, 11 Jul 2021 14:32:01 -0400 Subject: [PATCH] Transparent --- Editor/resources/Shaders/debug.shader | 5 ----- Nuake/src/Scene/Scene.cpp | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Editor/resources/Shaders/debug.shader b/Editor/resources/Shaders/debug.shader index 80447b73..9c28bf52 100644 --- a/Editor/resources/Shaders/debug.shader +++ b/Editor/resources/Shaders/debug.shader @@ -1,10 +1,5 @@ #shader vertex #version 460 core -// Have you ever seen Godot shader. The whole engine has ONE monolithic shader. -// Also, how do you want me to split this in multiple shaders lmao. -// Click upper right Round thing -// DO CODE REVIEW yep -// im following u daddy layout(location = 0) in vec3 VertexPosition; diff --git a/Nuake/src/Scene/Scene.cpp b/Nuake/src/Scene/Scene.cpp index 40c4f011..047c3ebb 100644 --- a/Nuake/src/Scene/Scene.cpp +++ b/Nuake/src/Scene/Scene.cpp @@ -332,6 +332,9 @@ void Scene::EditorDraw() for (auto e : quakeView) { auto [transform, model, parent] = quakeView.get(e); + if (model.IsTransparent) + continue; + Renderer::m_Shader->SetUniformMat4f("u_View", m_EditorCamera->GetTransform()); Renderer::m_Shader->SetUniformMat4f("u_Projection", m_EditorCamera->GetPerspective()); Renderer::m_Shader->SetUniformMat4f("u_Model", transform.GetTransform()); @@ -367,6 +370,25 @@ void Scene::EditorDraw() t.Scale = (box.Radius * 2.f) * transform.Scale; Renderer::DrawSphere(t, glm::vec4(0.0f, 0.0f, 0.9f, 0.2f)); } + + Renderer::m_DebugShader->Bind(); + + auto quakeViewTransparent = m_Registry.view(); + for (auto e : quakeViewTransparent) + { + auto [transform, model, parent] = quakeViewTransparent.get(e); + + if (!model.IsTransparent) + continue; + + Renderer::m_DebugShader->SetUniformMat4f("u_View", m_EditorCamera->GetTransform()); + Renderer::m_DebugShader->SetUniformMat4f("u_Projection", m_EditorCamera->GetPerspective()); + Renderer::m_DebugShader->SetUniformMat4f("u_Model", transform.GetTransform()); + Renderer::m_DebugShader->SetUniform4f("u_Color", 1.f, 0.0f, 0.1f, 0.5f); + for (auto& e : model.Meshes) { + e->Draw(); + } + } } }