feat: enable FXAA alongside FSR3 in settings and add FXAA to Ultra preset

- Remove fsr2Active guard that prevented FXAA when FSR3 was active
- FXAA checkbox now always enabled; tooltip adapts to explain FSR3+FXAA combo
  when FSR3 is active ('recommended ultra-quality combination')
- Performance HUD shows 'FXAA: ON (FSR3+FXAA combined)' when both active
- Ultra graphics preset now enables FXAA (8x MSAA + FXAA for max smoothness)
- Preset detection updated to require FXAA for Ultra match
This commit is contained in:
Kelsi 2026-03-12 19:27:00 -07:00
parent 284b98d93a
commit 214c1a9ff8
2 changed files with 16 additions and 11 deletions

View file

@ -220,7 +220,11 @@ void PerformanceHUD::render(const Renderer* renderer, const Camera* camera) {
ImGui::Text(" FG Fallbacks: %zu", renderer->getAmdFsr3FallbackCount());
}
if (renderer->isFXAAEnabled()) {
ImGui::TextColored(ImVec4(0.8f, 1.0f, 0.6f, 1.0f), "FXAA: ON");
if (renderer->isFSR2Enabled()) {
ImGui::TextColored(ImVec4(0.6f, 1.0f, 0.8f, 1.0f), "FXAA: ON (FSR3+FXAA combined)");
} else {
ImGui::TextColored(ImVec4(0.8f, 1.0f, 0.6f, 1.0f), "FXAA: ON");
}
}
ImGui::Spacing();

View file

@ -14234,20 +14234,19 @@ void GameScreen::renderSettingsWindow() {
updateGraphicsPresetFromCurrentSettings();
saveSettings();
}
// FXAA — post-process, combinable with any MSAA level (disabled with FSR2)
if (fsr2Active) {
ImGui::BeginDisabled();
bool fxaaOff = false;
ImGui::Checkbox("FXAA (disabled with FSR3)", &fxaaOff);
ImGui::EndDisabled();
} else {
// FXAA — post-process, combinable with MSAA or FSR3
{
if (ImGui::Checkbox("FXAA (post-process)", &pendingFXAA)) {
if (renderer) renderer->setFXAAEnabled(pendingFXAA);
updateGraphicsPresetFromCurrentSettings();
saveSettings();
}
if (ImGui::IsItemHovered())
ImGui::SetTooltip("FXAA smooths jagged edges as a post-process pass.\nCan be combined with MSAA for extra quality.");
if (ImGui::IsItemHovered()) {
if (fsr2Active)
ImGui::SetTooltip("FXAA applies spatial anti-aliasing after FSR3 upscaling.\nFSR3 + FXAA is the recommended ultra-quality combination.");
else
ImGui::SetTooltip("FXAA smooths jagged edges as a post-process pass.\nCan be combined with MSAA for extra quality.");
}
}
}
// FSR Upscaling
@ -15187,6 +15186,7 @@ void GameScreen::applyGraphicsPreset(GraphicsPreset preset) {
pendingShadows = true;
pendingShadowDistance = 500.0f;
pendingAntiAliasing = 3; // 8x MSAA
pendingFXAA = true; // FXAA on top of MSAA for maximum smoothness
pendingNormalMapping = true;
pendingNormalMapStrength = 1.2f;
pendingPOM = true;
@ -15196,6 +15196,7 @@ void GameScreen::applyGraphicsPreset(GraphicsPreset preset) {
renderer->setShadowsEnabled(true);
renderer->setShadowDistance(500.0f);
renderer->setMsaaSamples(VK_SAMPLE_COUNT_8_BIT);
renderer->setFXAAEnabled(true);
if (auto* wr = renderer->getWMORenderer()) {
wr->setNormalMappingEnabled(true);
wr->setNormalMapStrength(1.2f);
@ -15241,7 +15242,7 @@ void GameScreen::updateGraphicsPresetFromCurrentSettings() {
pendingGroundClutterDensity >= 90 && pendingGroundClutterDensity <= 110;
case GraphicsPreset::ULTRA:
return pendingShadows && pendingShadowDistance >= 480 && pendingAntiAliasing == 3 &&
pendingNormalMapping && pendingPOM && pendingGroundClutterDensity >= 140;
pendingFXAA && pendingNormalMapping && pendingPOM && pendingGroundClutterDensity >= 140;
default:
return false;
}