diff --git a/include/dusk/settings.h b/include/dusk/settings.h index 3ec1bac876..9fbb17c845 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -68,6 +68,7 @@ struct UserSettings { // Graphics ConfigVar bloomMode; + ConfigVar bloomMultiplier; ConfigVar enableWaterRefraction; ConfigVar enableFrameInterpolation; ConfigVar shadowResolutionMultiplier; diff --git a/src/dusk/imgui/ImGuiMenuGame.cpp b/src/dusk/imgui/ImGuiMenuGame.cpp index 3d658a5d10..6db67f7eb2 100644 --- a/src/dusk/imgui/ImGuiMenuGame.cpp +++ b/src/dusk/imgui/ImGuiMenuGame.cpp @@ -78,6 +78,14 @@ namespace dusk { ImGui::EndCombo(); } + { + float mult = getSettings().game.bloomMultiplier.getValue(); + if (ImGui::SliderFloat("Bloom Brightness", &mult, 0.0f, 1.0f, "%.2f")) { + getSettings().game.bloomMultiplier.setValue(mult); + config::Save(); + } + } + config::ImGuiCheckbox("Enable Water Refraction", getSettings().game.enableWaterRefraction); ImGui::EndMenu(); diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index fbac3fc6d3..6e7c96a818 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -42,6 +42,7 @@ UserSettings g_userSettings = { // Graphics .bloomMode {"game.bloomMode", BloomMode::Classic}, + .bloomMultiplier {"game.bloomMultiplier", 1.0f}, .enableWaterRefraction {"game.enableWaterRefraction", true}, .enableFrameInterpolation = {"game.enableFrameInterpolation", false}, .shadowResolutionMultiplier {"game.shadowResolutionMultiplier", 1}, @@ -114,6 +115,7 @@ void registerSettings() { Register(g_userSettings.game.enableMirrorMode); Register(g_userSettings.game.invertCameraXAxis); Register(g_userSettings.game.bloomMode); + Register(g_userSettings.game.bloomMultiplier); Register(g_userSettings.game.enableWaterRefraction); Register(g_userSettings.game.shadowResolutionMultiplier); Register(g_userSettings.game.enableFastIronBoots); diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index 363507ae09..7aefb1b08e 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -1488,7 +1488,7 @@ void mDoGph_gInf_c::bloom_c::draw2() { GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_OR); for (int i = divNum; i > divStart; i--) { - float alpha = 255.0f * powf(0.25f, 1.0f / (divNum - i + 1)); + float alpha = 255.0f * powf(0.25f * dusk::getSettings().game.bloomMultiplier.getValue(), 1.0f / (divNum - i + 1)); GXSetTevColorS10(GX_TEVREG0, {0, 0, 0, s16(alpha)}); divCopySrc(i);