From 24b468f2a2100dc47d626b66c1513f7b1cb35a2b Mon Sep 17 00:00:00 2001 From: madeline Date: Sun, 26 Apr 2026 01:08:58 -0700 Subject: [PATCH] phong --- extern/aurora | 2 +- include/dusk/settings.h | 7 ++++ src/dusk/imgui/ImGuiMenuGame.cpp | 54 +++++++++++++++++++++++++++++++ src/dusk/imgui/ImGuiMenuTools.cpp | 8 ++++- src/dusk/settings.cpp | 14 ++++++++ src/m_Do/m_Do_main.cpp | 8 +++++ 6 files changed, 91 insertions(+), 2 deletions(-) diff --git a/extern/aurora b/extern/aurora index 8af9057689..8899ca90c1 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit 8af9057689b9b85a55bbbd6218bc95304558fabd +Subproject commit 8899ca90c1621f3f9640a5660bdf493d215e0267 diff --git a/include/dusk/settings.h b/include/dusk/settings.h index a7815569d0..50e30cc827 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -89,6 +89,13 @@ struct UserSettings { // Graphics + ConfigVar enhancedLighting; + ConfigVar enableSpecularLighting; + ConfigVar enableRimLighting; + ConfigVar specularIntensity; + ConfigVar rimIntensity; + ConfigVar ambientLightMultiplier; + ConfigVar diffuseLightMultiplier; ConfigVar bloomMode; ConfigVar bloomMultiplier; ConfigVar disableWaterRefraction; diff --git a/src/dusk/imgui/ImGuiMenuGame.cpp b/src/dusk/imgui/ImGuiMenuGame.cpp index dcfcc55657..fd8d675979 100644 --- a/src/dusk/imgui/ImGuiMenuGame.cpp +++ b/src/dusk/imgui/ImGuiMenuGame.cpp @@ -167,6 +167,60 @@ namespace dusk { config::ImGuiCheckbox("Enable Depth of Field", getSettings().game.enableDepthOfField); + ImGui::SeparatorText("Lighting"); + + if (config::ImGuiCheckbox("Enhanced Lighting", getSettings().game.enhancedLighting)) { + aurora_set_enhanced_lighting(getSettings().game.enhancedLighting); + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Enables per-pixel lighting with Blinn-Phong shading."); + } + + const bool enhancedLightingEnabled = getSettings().game.enhancedLighting.getValue(); + if (!enhancedLightingEnabled) { ImGui::BeginDisabled(); } + + if (config::ImGuiCheckbox("Specular Highlights", getSettings().game.enableSpecularLighting)) { + aurora_set_specular_lighting(getSettings().game.enableSpecularLighting); + } + if (config::ImGuiCheckbox("Rim Lighting", getSettings().game.enableRimLighting)) { + aurora_set_rim_lighting(getSettings().game.enableRimLighting); + } + + { + float v = getSettings().game.specularIntensity.getValue(); + if (ImGui::SliderFloat("Specular Intensity", &v, 0.0f, 1.0f, "%.2f")) { + getSettings().game.specularIntensity.setValue(v); + aurora_set_specular_intensity(v); + config::Save(); + } + } + { + float v = getSettings().game.rimIntensity.getValue(); + if (ImGui::SliderFloat("Rim Intensity", &v, 0.0f, 0.5f, "%.3f")) { + getSettings().game.rimIntensity.setValue(v); + aurora_set_rim_intensity(v); + config::Save(); + } + } + { + float v = getSettings().game.ambientLightMultiplier.getValue(); + if (ImGui::SliderFloat("Ambient Multiplier", &v, 0.0f, 3.0f, "%.2f")) { + getSettings().game.ambientLightMultiplier.setValue(v); + aurora_set_ambient_multiplier(v); + config::Save(); + } + } + { + float v = getSettings().game.diffuseLightMultiplier.getValue(); + if (ImGui::SliderFloat("Diffuse Multiplier", &v, 0.0f, 3.0f, "%.2f")) { + getSettings().game.diffuseLightMultiplier.setValue(v); + aurora_set_diffuse_multiplier(v); + config::Save(); + } + } + + if (!enhancedLightingEnabled) { ImGui::EndDisabled(); } + ImGui::EndMenu(); } } diff --git a/src/dusk/imgui/ImGuiMenuTools.cpp b/src/dusk/imgui/ImGuiMenuTools.cpp index a82067a438..e519b0e6a9 100644 --- a/src/dusk/imgui/ImGuiMenuTools.cpp +++ b/src/dusk/imgui/ImGuiMenuTools.cpp @@ -1,6 +1,6 @@ #include "fmt/format.h" #include "imgui.h" -#include "aurora/gfx.h" +#include #include "ImGuiConfig.hpp" #include "dusk/hotkeys.h" @@ -80,6 +80,12 @@ namespace dusk { auto& collisionView = getTransientSettings().collisionView; if (ImGui::BeginMenu("Graphics Settings")) { + bool enhancedLighting = getSettings().game.enhancedLighting; + if (ImGui::Checkbox("Enhanced Lighting", &enhancedLighting)) { + getSettings().game.enhancedLighting.setValue(enhancedLighting); + aurora_set_enhanced_lighting(enhancedLighting); + config::Save(); + } bool disableWaterRefraction = getSettings().game.disableWaterRefraction; if (ImGui::Checkbox("Disable Water Refraction", &disableWaterRefraction)) { getSettings().game.disableWaterRefraction.setValue(disableWaterRefraction); diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index eb1d513ba9..a5e7c41580 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -48,6 +48,13 @@ UserSettings g_userSettings = { .enableAchievementNotifications {"game.enableAchievementNotifications", false}, // Graphics + .enhancedLighting {"game.enhancedLighting", true}, + .enableSpecularLighting {"game.enableSpecularLighting", true}, + .enableRimLighting {"game.enableRimLighting", true}, + .specularIntensity {"game.specularIntensity", 0.2f}, + .rimIntensity {"game.rimIntensity", 0.08f}, + .ambientLightMultiplier {"game.ambientLightMultiplier", 1.0f}, + .diffuseLightMultiplier {"game.diffuseLightMultiplier", 1.0f}, .bloomMode {"game.bloomMode", BloomMode::Classic}, .bloomMultiplier {"game.bloomMultiplier", 1.0f}, .disableWaterRefraction {"game.disableWaterRefraction", false}, @@ -151,6 +158,13 @@ void registerSettings() { Register(g_userSettings.game.freeCameraSensitivity); Register(g_userSettings.game.disableMainHUD); Register(g_userSettings.game.pauseOnFocusLost); + Register(g_userSettings.game.enhancedLighting); + Register(g_userSettings.game.enableSpecularLighting); + Register(g_userSettings.game.enableRimLighting); + Register(g_userSettings.game.specularIntensity); + Register(g_userSettings.game.rimIntensity); + Register(g_userSettings.game.ambientLightMultiplier); + Register(g_userSettings.game.diffuseLightMultiplier); Register(g_userSettings.game.bloomMode); Register(g_userSettings.game.bloomMultiplier); Register(g_userSettings.game.disableWaterRefraction); diff --git a/src/m_Do/m_Do_main.cpp b/src/m_Do/m_Do_main.cpp index d25debb38e..c5aea83beb 100644 --- a/src/m_Do/m_Do_main.cpp +++ b/src/m_Do/m_Do_main.cpp @@ -60,6 +60,7 @@ #include #include +#include #include #include #include @@ -558,6 +559,13 @@ int game_main(int argc, char* argv[]) { config.allowTextureReplacements = true; config.allowTextureDumps = false; auroraInfo = aurora_initialize(argc, argv, &config); + aurora_set_enhanced_lighting(dusk::getSettings().game.enhancedLighting); + aurora_set_specular_lighting(dusk::getSettings().game.enableSpecularLighting); + aurora_set_rim_lighting(dusk::getSettings().game.enableRimLighting); + aurora_set_specular_intensity(dusk::getSettings().game.specularIntensity); + aurora_set_rim_intensity(dusk::getSettings().game.rimIntensity); + aurora_set_ambient_multiplier(dusk::getSettings().game.ambientLightMultiplier); + aurora_set_diffuse_multiplier(dusk::getSettings().game.diffuseLightMultiplier); } #ifdef DUSK_DISCORD_RPC