From fb217221b7e23c54a9fbd1cc49de9fafb1f2b85e Mon Sep 17 00:00:00 2001 From: antopilo Date: Sun, 1 Dec 2024 02:09:06 -0500 Subject: [PATCH] Added new postfx UI widgets in environment properties --- Editor/src/Windows/EditorSelectionPanel.cpp | 148 +++++++++++++++++++- 1 file changed, 145 insertions(+), 3 deletions(-) diff --git a/Editor/src/Windows/EditorSelectionPanel.cpp b/Editor/src/Windows/EditorSelectionPanel.cpp index 721b9b99..f2b40b1b 100644 --- a/Editor/src/Windows/EditorSelectionPanel.cpp +++ b/Editor/src/Windows/EditorSelectionPanel.cpp @@ -798,6 +798,64 @@ void EditorSelectionPanel::DrawFile(Ref file) if (ImGui::Button(resetQuality.c_str())) env->mBloom->SetIteration(3); ImGui::PopStyleColor(); } + + ImGui::TableNextColumn(); + { + // Title + ImGui::Text("Lens Dirt"); + ImGui::TableNextColumn(); + + Ref lensTexture = env->mBloom->GetLensDirt(); + + std::string filePath = lensTexture == nullptr ? "None" : lensTexture->GetPath(); + std::string controlName = filePath + std::string("##") + filePath; + ImGui::Button(controlName.c_str(), ImVec2(ImGui::GetContentRegionAvail().x, 0)); + + if (ImGui::BeginDragDropTarget()) + { + if (const ImGuiPayload* payload = ImGui::AcceptDragDropPayload("_Image")) + { + const char* payloadFilePath = static_cast(payload->Data); + const std::string fullPath = std::string(payloadFilePath, 256); + const Ref file = FileSystem::GetFile(FileSystem::AbsoluteToRelative(fullPath)); + env->mBloom->SetLensDirt(TextureManager::Get()->GetTexture(file->GetAbsolutePath())); + Engine::GetProject()->IsDirty = true; + } + ImGui::EndDragDropTarget(); + } + + ImGui::TableNextColumn(); + + // Reset button + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(1, 1, 1, 0)); + std::string resetLens = ICON_FA_UNDO + std::string("##resetLens"); + if (ImGui::Button(resetLens.c_str())) env->mBloom->ClearLensDirt(); + ImGui::PopStyleColor(); + } + + ImGui::TableNextColumn(); + { + // Title + ImGui::Text("Lens Dirt Intensity"); + ImGui::TableNextColumn(); + + float lensDirtIntensity = env->mBloom->GetLensDirtIntensity(); + ImGui::SliderFloat("##lensDirtIntensity", &lensDirtIntensity, 0.0f, 1.0f); + + if (lensDirtIntensity != env->mBloom->GetLensDirtIntensity()) + { + env->mBloom->SetLensDirtIntensity(lensDirtIntensity); + } + + ImGui::TableNextColumn(); + + // Reset button + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(1, 1, 1, 0)); + std::string resetLensDirt = ICON_FA_UNDO + std::string("##resetLensDirtIntensity"); + if (ImGui::Button(resetLensDirt.c_str())) env->mBloom->SetLensDirtIntensity(1.0f); + ImGui::PopStyleColor(); + } + ImGui::EndTable(); } END_COLLAPSE_HEADER() @@ -958,7 +1016,7 @@ void EditorSelectionPanel::DrawFile(Ref file) } END_COLLAPSE_HEADER() - BEGIN_COLLAPSE_HEADER(SSR) + BEGIN_COLLAPSE_HEADER(SSR) if (ImGui::BeginTable("EnvTable", 3, ImGuiTableFlags_BordersInner | ImGuiTableFlags_SizingStretchProp)) { ImGui::TableSetupColumn("name", 0, 0.3); @@ -1140,7 +1198,7 @@ void EditorSelectionPanel::DrawFile(Ref file) END_COLLAPSE_HEADER() - BEGIN_COLLAPSE_HEADER(DOF) + BEGIN_COLLAPSE_HEADER(DOF) if (ImGui::BeginTable("EnvTable", 3, ImGuiTableFlags_BordersInner | ImGuiTableFlags_SizingStretchProp)) { ImGui::TableSetupColumn("name", 0, 0.3); @@ -1415,7 +1473,7 @@ void EditorSelectionPanel::DrawFile(Ref file) } END_COLLAPSE_HEADER() - BEGIN_COLLAPSE_HEADER(VIGNETTE) + BEGIN_COLLAPSE_HEADER(VIGNETTE) if (ImGui::BeginTable("EnvTable", 3, ImGuiTableFlags_BordersInner | ImGuiTableFlags_SizingStretchProp)) { ImGui::TableSetupColumn("name", 0, 0.3); @@ -1471,6 +1529,90 @@ void EditorSelectionPanel::DrawFile(Ref file) ImGui::EndTable(); } END_COLLAPSE_HEADER() + + BEGIN_COLLAPSE_HEADER(POSTERIZATION) + if (ImGui::BeginTable("EnvTable", 3, ImGuiTableFlags_BordersInner | ImGuiTableFlags_SizingStretchProp)) + { + ImGui::TableSetupColumn("name", 0, 0.3); + ImGui::TableSetupColumn("set", 0, 0.6); + ImGui::TableSetupColumn("reset", 0, 0.1); + + { + ImGui::TableNextColumn(); + // Title + ImGui::Text("Posterization Enabled"); + ImGui::TableNextColumn(); + + ImGui::Checkbox("##PosterizationEnabled", &env->PosterizationEnabled); + ImGui::TableNextColumn(); + + // Reset button + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(1, 1, 1, 0)); + std::string resetPosterization = ICON_FA_UNDO + std::string("##resetPosterizationEnabled"); + if (ImGui::Button(resetPosterization.c_str())) env->PosterizationEnabled = false; + ImGui::PopStyleColor(); + } + + { + ImGui::TableNextColumn(); + // Title + ImGui::Text("Levels"); + ImGui::TableNextColumn(); + ImGui::DragInt("##PosterizationLevels", &env->PosterizationLevels, 1, 4, 25); + ImGui::TableNextColumn(); + + // Reset button + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(1, 1, 1, 0)); + std::string resetPosterizationLevels = ICON_FA_UNDO + std::string("##resetPosterizationLevels"); + if (ImGui::Button(resetPosterizationLevels.c_str())) env->PosterizationLevels = 10; + ImGui::PopStyleColor(); + } + + ImGui::EndTable(); + } + END_COLLAPSE_HEADER() + + BEGIN_COLLAPSE_HEADER(PIXELIZATION) + if (ImGui::BeginTable("EnvTable", 3, ImGuiTableFlags_BordersInner | ImGuiTableFlags_SizingStretchProp)) + { + ImGui::TableSetupColumn("name", 0, 0.3); + ImGui::TableSetupColumn("set", 0, 0.6); + ImGui::TableSetupColumn("reset", 0, 0.1); + + { + ImGui::TableNextColumn(); + // Title + ImGui::Text("Pixelization Enabled"); + ImGui::TableNextColumn(); + + ImGui::Checkbox("##PixelizationEnabled", &env->PixelizationEnabled); + ImGui::TableNextColumn(); + + // Reset button + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(1, 1, 1, 0)); + std::string resetPixelization = ICON_FA_UNDO + std::string("##resetPixelizationEnabled"); + if (ImGui::Button(resetPixelization.c_str())) env->PixelizationEnabled = false; + ImGui::PopStyleColor(); + } + + { + ImGui::TableNextColumn(); + // Title + ImGui::Text("Pixel Size"); + ImGui::TableNextColumn(); + ImGui::DragInt("##PixelSize", &env->PixelSize, 1, 1, 25); + ImGui::TableNextColumn(); + + // Reset button + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(1, 1, 1, 0)); + std::string resetPixelSize = ICON_FA_UNDO + std::string("##resetPixelSize"); + if (ImGui::Button(resetPixelSize.c_str())) env->PixelSize = 4; + ImGui::PopStyleColor(); + } + + ImGui::EndTable(); + } + END_COLLAPSE_HEADER() break; } }