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()); ImGui::Text(" FG Fallbacks: %zu", renderer->getAmdFsr3FallbackCount());
} }
if (renderer->isFXAAEnabled()) { 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(); ImGui::Spacing();

View file

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