Files
NX2navi/runtime/ui/perf_panel.h
epicmeme546 1c654ba0c1 Let the Anti-aliasing row's Game SMAA, Off, FXAA and SMAA run together with FSR 4, FSR 3.1 or DLSS, and show the anti-aliasing in the performance overlay.
Choosing one of them while a temporal upscaler was set turned the upscaler off, and the picture fell back to bilinear scaling. vk_aa.c no longer keeps the game's SMAA while DLSS or FSR runs. The chosen pass replaces the game's composition as without them: in the native modes after the upscaler, and in the scaling modes before it. In the menu, a choice leaves the upscaler and frame generation alone, and the row notes that the upscaler's TAA runs too. Picking DLSS or FSR under Upscaling keeps the Anti-aliasing choice. The TAA entry, listed while no temporal mode is set, now sets FSR 4 Native AA where FSR 4 runs instead of forcing FSR 3.1. The overlay gets an Anti-aliasing line under Upscaling, for example "TAA + SMAA (Ultra)".

Checked on an RX 7900 XT in Hyrule Field with FSR 4.1 Native AA and Quality, and with FSR 3.1. The log has "the game's SMAA replaced by" smaa, off and fxaa while FSR 4.1.2 upscales, and the pictures are right.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 08:23:25 -05:00

23 lines
1.1 KiB
C

// The full performance overlay's panel (ui/perf_panel.cpp), drawn in the settings menu's look: what menu.cpp
// perf_full_draw gathered, laid out in tables on the menu's framed panel with the game's divider between the sections.
#pragma once
#include "imgui.h"
extern "C" {
#include "perfmon.h"
}
typedef struct {
PerfStats s; // perfmon_snapshot
const char *version; // "NX2navi <version>, game <update>"
// window, game image, scene, then the settings as the menu names them: upscaling, anti-aliasing, frame limit, VSync,
// widescreen, resolution, HDR, frame generation. An empty string leaves its line out.
char picture[11][64];
bool scene_known; // the scene line is shown (resolution.c sets the scene's size)
float fg_fps; // frames the display gets with frame generation, 0 without it
bool under_menu; // the menu is open: the panel goes under its window
} PerfPanel;
// The panel at the top right corner of a width-pixel-wide frame.
void perf_panel_draw(const PerfPanel *p, float width, float scale);