fix: remove Y-flip counter-hacks in FSR shaders; invert mouse by default; FSR1 disables MSAA

FSR EASU and FSR2 sharpen fragment shaders had a manual Y-flip to undo
the now-removed postprocess.vert flip.  Strip those since the vertex
shader no longer flips, making all postprocess paths consistent.

Also flip the default mouse Y-axis to match user expectation (mouse
down = look up / flight-sim style) and make FSR1 disable MSAA on
enable, matching FSR2 behaviour (FSR provides its own spatial AA).
This commit is contained in:
Kelsi 2026-03-12 21:59:41 -07:00
parent f8f57411f2
commit ebaf95cc42
6 changed files with 10 additions and 8 deletions

View file

@ -10,9 +10,7 @@ layout(push_constant) uniform PushConstants {
} pc;
void main() {
// Undo the vertex shader Y flip (postprocess.vert flips for Vulkan overlay,
// but we need standard UV coords for texture sampling)
vec2 tc = vec2(TexCoord.x, 1.0 - TexCoord.y);
vec2 tc = TexCoord;
vec2 texelSize = pc.params.xy;
float sharpness = pc.params.z;

Binary file not shown.

View file

@ -21,9 +21,7 @@ vec3 fsrFetch(vec2 p, vec2 off) {
}
void main() {
// Undo the vertex shader Y flip (postprocess.vert flips for Vulkan overlay,
// but we need standard UV coords for texture sampling)
vec2 tc = vec2(TexCoord.x, 1.0 - TexCoord.y);
vec2 tc = TexCoord;
// Map output pixel to input space
vec2 pp = tc * fsr.con2.xy; // output pixel position

Binary file not shown.

View file

@ -162,7 +162,7 @@ private:
// Mouse settings
float mouseSensitivity = 0.2f;
bool invertMouse = false;
bool invertMouse = true;
bool mouseButtonDown = false;
bool leftMouseDown = false;
bool rightMouseDown = false;

View file

@ -3865,7 +3865,13 @@ void Renderer::setFSREnabled(bool enabled) {
if (fsr_.enabled == enabled) return;
fsr_.enabled = enabled;
if (!enabled) {
if (enabled) {
// FSR1 upscaling renders its own AA — disable MSAA to avoid redundant work
if (vkCtx && vkCtx->getMsaaSamples() > VK_SAMPLE_COUNT_1_BIT) {
pendingMsaaSamples_ = VK_SAMPLE_COUNT_1_BIT;
msaaChangePending_ = true;
}
} else {
// Defer destruction to next beginFrame() — can't destroy mid-render
fsr_.needsRecreate = true;
}