mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-10 21:00:55 -04:00
Add Bloom debug window
This commit is contained in:
@@ -1358,6 +1358,8 @@ set(DUSK_FILES
|
||||
src/dusk/imgui/ImGuiEngine.hpp
|
||||
src/dusk/imgui/ImGuiMenuGame.cpp
|
||||
src/dusk/imgui/ImGuiMenuGame.hpp
|
||||
src/dusk/imgui/ImGuiBloomWindow.cpp
|
||||
src/dusk/imgui/ImGuiBloomWindow.hpp
|
||||
src/dusk/imgui/ImGuiMenuTools.cpp
|
||||
src/dusk/imgui/ImGuiMenuTools.hpp
|
||||
src/dusk/imgui/ImGuiMenuEnhancements.cpp
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#if TARGET_PC
|
||||
#include "dusk/imgui/ImGuiBloomWindow.hpp"
|
||||
#include "dusk/settings.h"
|
||||
#endif
|
||||
|
||||
@@ -2578,6 +2579,10 @@ void dScnKy_env_light_c::setLight() {
|
||||
mDoGph_gInf_c::getBloom()->setMode(mode);
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
dusk::ApplyBloomOverride();
|
||||
#endif
|
||||
|
||||
f32 var_f30;
|
||||
if (dKy_Outdoor_check() == true) {
|
||||
static f32 now_shadow_alpha[] = {0.25f, 0.35f, 0.6f, 0.6f, 0.25f, 0.35f};
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
#include <algorithm>
|
||||
|
||||
#include "imgui.h"
|
||||
|
||||
#include "ImGuiBloomWindow.hpp"
|
||||
#include "ImGuiMenuTools.hpp"
|
||||
#include "m_Do/m_Do_graphic.h"
|
||||
|
||||
namespace dusk {
|
||||
namespace {
|
||||
struct BloomOverride {
|
||||
bool enabled = false;
|
||||
bool bloomEnabled = true;
|
||||
int mode = 0;
|
||||
int point = 128;
|
||||
int blureSize = 64;
|
||||
int blureRatio = 128;
|
||||
GXColor blendColor = {255, 255, 255, 255};
|
||||
GXColor monoColor = {0, 0, 0, 0};
|
||||
};
|
||||
|
||||
BloomOverride s_bloomOverride;
|
||||
|
||||
void SyncFromCurrentBloom() {
|
||||
mDoGph_gInf_c::bloom_c* bloom = mDoGph_gInf_c::getBloom();
|
||||
s_bloomOverride.bloomEnabled = bloom->getEnable() != 0;
|
||||
s_bloomOverride.mode = bloom->mMode;
|
||||
s_bloomOverride.point = bloom->getPoint();
|
||||
s_bloomOverride.blureSize = bloom->getBlureSize();
|
||||
s_bloomOverride.blureRatio = bloom->getBlureRatio();
|
||||
s_bloomOverride.blendColor = *bloom->getBlendColor();
|
||||
s_bloomOverride.monoColor = *bloom->getMonoColor();
|
||||
}
|
||||
|
||||
u8 ClampToByte(int value) {
|
||||
return static_cast<u8>(std::clamp(value, 0, 255));
|
||||
}
|
||||
|
||||
void DrawColorEdit(const char* label, GXColor& color) {
|
||||
float colorValue[4] = {
|
||||
color.r / 255.0f,
|
||||
color.g / 255.0f,
|
||||
color.b / 255.0f,
|
||||
color.a / 255.0f,
|
||||
};
|
||||
if (ImGui::ColorEdit4(label, colorValue, ImGuiColorEditFlags_Uint8)) {
|
||||
color.r = ClampToByte(static_cast<int>(colorValue[0] * 255.0f + 0.5f));
|
||||
color.g = ClampToByte(static_cast<int>(colorValue[1] * 255.0f + 0.5f));
|
||||
color.b = ClampToByte(static_cast<int>(colorValue[2] * 255.0f + 0.5f));
|
||||
color.a = ClampToByte(static_cast<int>(colorValue[3] * 255.0f + 0.5f));
|
||||
}
|
||||
}
|
||||
} // namespace
|
||||
|
||||
void ApplyBloomOverride() {
|
||||
if (!s_bloomOverride.enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
mDoGph_gInf_c::bloom_c* bloom = mDoGph_gInf_c::getBloom();
|
||||
bloom->setEnable(s_bloomOverride.bloomEnabled ? 1 : 0);
|
||||
bloom->setMode(static_cast<u8>(std::clamp(s_bloomOverride.mode, 0, 1)));
|
||||
bloom->setPoint(ClampToByte(s_bloomOverride.point));
|
||||
bloom->setBlureSize(ClampToByte(s_bloomOverride.blureSize));
|
||||
bloom->setBlureRatio(ClampToByte(s_bloomOverride.blureRatio));
|
||||
bloom->setBlendColor(s_bloomOverride.blendColor);
|
||||
bloom->setMonoColor(s_bloomOverride.monoColor);
|
||||
}
|
||||
|
||||
void DrawBloomWindow(bool& open) {
|
||||
if (!open) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ImGui::Begin("Bloom", &open)) {
|
||||
ImGui::End();
|
||||
return;
|
||||
}
|
||||
|
||||
bool copyCurrent = false;
|
||||
if (ImGui::Checkbox("Override", &s_bloomOverride.enabled) && s_bloomOverride.enabled) {
|
||||
copyCurrent = true;
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("Sync with current")) {
|
||||
copyCurrent = true;
|
||||
}
|
||||
|
||||
if (copyCurrent) {
|
||||
SyncFromCurrentBloom();
|
||||
}
|
||||
|
||||
ImGui::SeparatorText("Values");
|
||||
ImGui::Checkbox("Enabled", &s_bloomOverride.bloomEnabled);
|
||||
ImGui::SliderInt("Mode", &s_bloomOverride.mode, 0, 1);
|
||||
ImGui::SliderInt("Threshold", &s_bloomOverride.point, 0, 255);
|
||||
ImGui::SliderInt("Blur Size", &s_bloomOverride.blureSize, 0, 255);
|
||||
ImGui::SliderInt("Blur Ratio", &s_bloomOverride.blureRatio, 0, 255);
|
||||
DrawColorEdit("Blend Color", s_bloomOverride.blendColor);
|
||||
DrawColorEdit("Mono Color", s_bloomOverride.monoColor);
|
||||
|
||||
ApplyBloomOverride();
|
||||
|
||||
ImGui::SeparatorText("Current");
|
||||
mDoGph_gInf_c::bloom_c* bloom = mDoGph_gInf_c::getBloom();
|
||||
GXColor blendColor = *bloom->getBlendColor();
|
||||
GXColor monoColor = *bloom->getMonoColor();
|
||||
ImGui::Text("Enabled: %d", bloom->getEnable());
|
||||
ImGui::Text("Mode: %d", bloom->mMode);
|
||||
ImGui::Text("Threshold: %u", static_cast<unsigned>(bloom->getPoint()));
|
||||
ImGui::Text("Blur Size: %u", static_cast<unsigned>(bloom->getBlureSize()));
|
||||
ImGui::Text("Blur Ratio: %u", static_cast<unsigned>(bloom->getBlureRatio()));
|
||||
ImGui::Text("Blend RGBA: %u, %u, %u, %u", static_cast<unsigned>(blendColor.r),
|
||||
static_cast<unsigned>(blendColor.g), static_cast<unsigned>(blendColor.b),
|
||||
static_cast<unsigned>(blendColor.a));
|
||||
ImGui::Text("Mono RGBA: %u, %u, %u, %u", static_cast<unsigned>(monoColor.r),
|
||||
static_cast<unsigned>(monoColor.g), static_cast<unsigned>(monoColor.b),
|
||||
static_cast<unsigned>(monoColor.a));
|
||||
ImGui::End();
|
||||
}
|
||||
|
||||
void ImGuiMenuTools::ShowBloomWindow() {
|
||||
DrawBloomWindow(m_showBloomWindow);
|
||||
}
|
||||
} // namespace dusk
|
||||
@@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
namespace dusk {
|
||||
void DrawBloomWindow(bool& open);
|
||||
void ApplyBloomOverride();
|
||||
} // namespace dusk
|
||||
@@ -271,6 +271,7 @@ namespace dusk {
|
||||
m_menuTools.ShowHeapOverlay();
|
||||
m_menuTools.ShowStubLog();
|
||||
m_menuTools.ShowMapLoader();
|
||||
m_menuTools.ShowBloomWindow();
|
||||
m_menuTools.ShowPlayerInfo();
|
||||
m_menuTools.ShowAudioDebug();
|
||||
m_menuTools.ShowSaveEditor();
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace dusk {
|
||||
ImGui::MenuItem("State Share", hotkeys::SHOW_STATE_SHARE, &m_showStateShare);
|
||||
ImGui::MenuItem("Debug Camera", hotkeys::SHOW_DEBUG_CAMERA, &m_showCameraOverlay);
|
||||
ImGui::MenuItem("Audio Debug", hotkeys::SHOW_AUDIO_DEBUG, &m_showAudioDebug);
|
||||
|
||||
ImGui::MenuItem("Bloom", nullptr, &m_showBloomWindow);
|
||||
ImGui::MenuItem("Stub Log", nullptr, &m_showStubLog);
|
||||
|
||||
if (!dusk::IsGameLaunched) {
|
||||
|
||||
@@ -21,6 +21,7 @@ namespace dusk {
|
||||
void ShowHeapOverlay();
|
||||
void ShowStubLog();
|
||||
void ShowMapLoader();
|
||||
void ShowBloomWindow();
|
||||
void ShowPlayerInfo();
|
||||
void ShowAudioDebug();
|
||||
void ShowSaveEditor();
|
||||
@@ -41,6 +42,8 @@ namespace dusk {
|
||||
|
||||
bool m_showMapLoader = false;
|
||||
|
||||
bool m_showBloomWindow = false;
|
||||
|
||||
bool m_showAudioDebug = false;
|
||||
struct {
|
||||
int mapIdx = -1;
|
||||
|
||||
Reference in New Issue
Block a user