godotengine / godotengine/godot

Severe Visual Artifacts When FOV Changes with FSR2 < 1 or FSR1 + TAA when using shaders

Open
#108,945 9 comments 0 reactions 0 assignees View on GitHub
bug confirmed topic:3d topic:rendering
Dominant language
C++
Stars
117k
Forks
26.8k
PR merge metrics
PR metrics pending

Description

### Tested versions

Reproducible in godot 4.4.stable branch

### System information

Windows 10, RTX 2070, Pilote 572.83, Vulkan, i7-9700KF

### Issue description

When changing the field of view (FOV) in a 3D scene, severe visual artifacts appear under certain upscaling and anti-aliasing conditions. This issue is reproducible using a minimal project and are related to interactions with the fpsViewClip shader (classic shader technic to always draw view model on top).

https://github.com/user-attachments/assets/a6f56f9d-6a05-4e54-ad4f-4073904d1a27

The shader: https://godotshaders.com/shader/first-person-view-model-shader-updated-for-godot-4-3/

### Steps to Reproduce:
- Use FSR2 with a scaling factor less than 1, or use FSR1 with TAA enabled.
- Add the fpsViewClip shader to a material in a first-person setup.
- Dynamically change the camera’s FOV (e.g., zoom in/out).
- Observe visual artifacts (e.g., jittering, ghosting, or pixel stretching).

### Expected Behavior:
FOV changes should occur smoothly without producing distracting artifacts, regardless of the upscaling or anti-aliasing settings.

### Actual Behavior:
Severe visual artifacts occur when FOV is modified:
- With FSR2, only when scaling < 1.
- With FSR1, TAA must also be enabled.

_(The problem appears specifically in combination with the fpsViewClip shader)_

### Minimal reproduction project (MRP)

[bs_visualartefact-minimal.zip](https://github.com/user-attachments/files/21416607/bs_visualartefact-minimal.zip)

Contributor guide

Open the contributing guide

Research direction

Run the attached minimal reproduction project with the fpsViewClip shader, varying FOV, FSR2 scaling below 1, and FSR1 with TAA as described. Compare the affected combinations and trace the Godot rendering path responsible for temporal upscaling or anti-aliasing. Done means FOV changes no longer produce jittering, ghosting, or pixel stretching in those configurations.

Written by the indexing model from the issue text.

Assessment

Tech stack
godot
Domain
computer-graphics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.