Code cleanup

This commit is contained in:
Antoine Pilote
2023-07-04 00:14:35 -04:00
parent c56a655be4
commit 5d6052f027
4 changed files with 51 additions and 24 deletions

View File

@@ -4,6 +4,7 @@
#include <src/Scene/Components/LightComponent.h>
#include <src/Scene/Components/CameraComponent.h>
#include <src/Scene/Components/SphereCollider.h>
#include <src/Scene/Components/CharacterControllerComponent.h>
#include <src/Scene/Components/BoxCollider.h>
#include <src/Resource/ModelLoader.h>
@@ -35,6 +36,7 @@ GizmoDrawer::GizmoDrawer()
_gizmos = std::map<std::string, Ref<Model>>();
_gizmos["cam"] = loader.LoadModel("resources/Models/Camera.gltf");
_gizmos["light"] = loader.LoadModel("resources/Models/Light.gltf");
_gizmos["player"] = loader.LoadModel("resources/Models/Player.gltf");
}
void GizmoDrawer::GenerateSphereGizmo()
@@ -178,7 +180,7 @@ void GizmoDrawer::DrawGizmos(Ref<Scene> scene)
{
using namespace Nuake;
//RenderCommand::Disable(RendererEnum::DEPTH_TEST);
RenderCommand::Enable(RendererEnum::DEPTH_TEST);
//RenderCommand::Enable(RendererEnum::DEPTH_TEST);
// Draw Axis lignes.
{
mLineShader->Bind();
@@ -224,6 +226,8 @@ void GizmoDrawer::DrawGizmos(Ref<Scene> scene)
glCullFace(GL_BACK);
RenderList renderList;
// Camera
auto camView = scene->m_Registry.view<TransformComponent, CameraComponent>();
for (auto e : camView)
{
@@ -233,6 +237,7 @@ void GizmoDrawer::DrawGizmos(Ref<Scene> scene)
}
renderList.Flush(flatShader, true);
// Lights
auto lightView = scene->m_Registry.view<TransformComponent, LightComponent>();
for (auto e : lightView)
{
@@ -242,8 +247,24 @@ void GizmoDrawer::DrawGizmos(Ref<Scene> scene)
renderList.AddToRenderList(_gizmos["light"]->GetMeshes()[0], transform.GetGlobalTransform());
renderList.Flush(flatShader, true);
}
renderList.Flush(flatShader, true);
// Player
auto characterControllerView = scene->m_Registry.view<TransformComponent, CharacterControllerComponent>();
for (auto e : characterControllerView)
{
auto [transformComponent, characterControllerComponent] = scene->m_Registry.get<TransformComponent, CharacterControllerComponent>(e);
flatShader->SetUniformVec4("u_Color", Vector4(0.0f, 1.0f, 0.4f, 1.0f));
const auto scaledTransform = glm::scale(transformComponent.GetGlobalTransform(), Vector3(0.25f, 0.25f, 0.25f));
renderList.AddToRenderList(_gizmos["player"]->GetMeshes()[0], scaledTransform);
renderList.Flush(flatShader, true);
}
renderList.Flush(flatShader, true);
RenderCommand::Disable(RendererEnum::FACE_CULL);
RenderCommand::Enable(RendererEnum::DEPTH_TEST);
}

View File

@@ -84,10 +84,12 @@ namespace Nuake {
void FileSystemUI::DrawDirectory(Ref<Directory> directory)
{
ImGui::PushFont(EditorInterface::bigIconFont);
std::string id = directory->name;
const char* icon = ICON_FA_FOLDER;
const std::string id = ICON_FA_FOLDER + std::string("##") + directory->name;
if (ImGui::Button(id.c_str(), ImVec2(100, 100)))
{
m_CurrentDirectory = directory;
}
ImGui::Text(directory->name.c_str());
ImGui::PopFont();

View File

@@ -7,21 +7,20 @@
namespace Nuake {
void SceneRenderer::Init()
{
mGBuffer = CreateScope<FrameBuffer>(false, Vector2(1920, 1080));
mGBuffer->SetTexture(CreateRef<Texture>(Vector2(1920, 1080), GL_DEPTH_COMPONENT), GL_DEPTH_ATTACHMENT);
mGBuffer->SetTexture(CreateRef<Texture>(Vector2(1920, 1080), GL_RGB), GL_COLOR_ATTACHMENT0);
mGBuffer->SetTexture(CreateRef<Texture>(Vector2(1920, 1080), GL_RGB), GL_COLOR_ATTACHMENT1);
mGBuffer->SetTexture(CreateRef<Texture>(Vector2(1920, 1080), GL_RGB), GL_COLOR_ATTACHMENT2);
mGBuffer->SetTexture(CreateRef<Texture>(Vector2(1920, 1080), GL_RGB), GL_COLOR_ATTACHMENT3);
const auto defaultResolution = Vector2(1920, 1080);
mGBuffer = CreateScope<FrameBuffer>(false, defaultResolution);
mGBuffer->SetTexture(CreateRef<Texture>(defaultResolution, GL_DEPTH_COMPONENT), GL_DEPTH_ATTACHMENT);
mGBuffer->SetTexture(CreateRef<Texture>(defaultResolution, GL_RGB), GL_COLOR_ATTACHMENT0);
mGBuffer->SetTexture(CreateRef<Texture>(defaultResolution, GL_RGB), GL_COLOR_ATTACHMENT1);
mGBuffer->SetTexture(CreateRef<Texture>(defaultResolution, GL_RGB), GL_COLOR_ATTACHMENT2);
mGBuffer->SetTexture(CreateRef<Texture>(defaultResolution, GL_RGB), GL_COLOR_ATTACHMENT3);
mShadingBuffer = CreateScope<FrameBuffer>(true, Vector2(1920, 1080));
Ref<Texture> shadedTexture = CreateRef<Texture>(Vector2(1920, 1080), GL_RGB, GL_RGB16F, GL_FLOAT);
mShadingBuffer->SetTexture(shadedTexture);
mShadingBuffer = CreateScope<FrameBuffer>(true, defaultResolution);
mShadingBuffer->SetTexture(CreateRef<Texture>(defaultResolution, GL_RGB, GL_RGB16F, GL_FLOAT));
mSSR = CreateScope<SSR>();
mToneMapBuffer = CreateScope<FrameBuffer>(false, Vector2(1920, 1080));
mToneMapBuffer->SetTexture(CreateRef<Texture>(Vector2(1920, 1080), GL_RGB), GL_COLOR_ATTACHMENT0);
mToneMapBuffer = CreateScope<FrameBuffer>(false, defaultResolution);
mToneMapBuffer->SetTexture(CreateRef<Texture>(defaultResolution, GL_RGB), GL_COLOR_ATTACHMENT0);
}
void SceneRenderer::Cleanup()
@@ -36,8 +35,14 @@ namespace Nuake {
mCamPos = camPos;
}
/// <summary>
/// Renders a scene to a framebuffer. The size of the framebuffer will be used.
/// </summary>
/// <param name="scene">Scene to render</param>
/// <param name="framebuffer">Framebuffer to render the scene to. Should be in the right size</param>
void SceneRenderer::RenderScene(Scene& scene, FrameBuffer& framebuffer)
{
// Renders all shadow maps
ShadowPass(scene);
mGBuffer->QueueResize(framebuffer.GetSize());
@@ -47,14 +52,14 @@ namespace Nuake {
ShadingPass(scene);
const auto& sceneEnv = scene.GetEnvironment();
Texture* finalOutput = mShadingBuffer->GetTexture().get();
Ref<Texture> finalOutput = mShadingBuffer->GetTexture();
if (scene.GetEnvironment()->BloomEnabled)
{
sceneEnv->mBloom->SetSource(mShadingBuffer->GetTexture());
sceneEnv->mBloom->Resize(framebuffer.GetSize());
sceneEnv->mBloom->Draw();
finalOutput = scene.GetEnvironment()->mBloom->GetOutput().get();
finalOutput = scene.GetEnvironment()->mBloom->GetOutput();
}
@@ -82,14 +87,15 @@ namespace Nuake {
Shader* shader = ShaderManager::GetShader("resources/Shaders/combine.shader");
shader->Bind();
shader->SetUniformTex("u_Source", finalOutput, 0);
shader->SetUniformTex("u_Source", finalOutput.get(), 0);
shader->SetUniformTex("u_Source2", sceneEnv->mVolumetric->GetFinalOutput().get(), 1);
Renderer::DrawQuad();
}
framebuffer.Unbind();
}
finalOutput = framebuffer.GetTexture().get();
finalOutput = framebuffer.GetTexture();
// SSAO
sceneEnv->mSSAO->Resize(framebuffer.GetSize());
sceneEnv->mSSAO->Draw(mGBuffer.get(), mProjection, mView);
@@ -104,13 +110,11 @@ namespace Nuake {
shader->SetUniform1f("u_Exposure", scene.GetEnvironment()->Exposure);
shader->SetUniform1f("u_Gamma", scene.GetEnvironment()->Gamma);
shader->SetUniformTex("u_Source", finalOutput);
shader->SetUniformTex("u_Source", finalOutput.get());
Renderer::DrawQuad();
}
mToneMapBuffer->Unbind();
mSSR->Resize(framebuffer.GetSize());
mSSR->Draw(mGBuffer.get(), framebuffer.GetTexture(), mView, mProjection, scene.GetCurrentCamera());

View File

@@ -23,11 +23,11 @@ namespace Nuake
glGenerateMipmap(GL_TEXTURE_2D);
//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, -1.0f);
//glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, -1.0f);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, m_Width, m_Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, m_LocalBuffer);
glGenerateMipmap(GL_TEXTURE_2D);
if (m_LocalBuffer)