Skip to content

Commit 36630bc

Browse files
authored
Merge pull request #7829 from Calinou/fixing-jitter-stutter-buffer-size
Mention buffer size and Windows 11 mouse polling in Fixing jitter, stutter and input lag
2 parents e9035f7 + 16c34b2 commit 36630bc

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

tutorials/rendering/jitter_stutter.rst

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ Finally, a game exhibiting *stutter* will appear smooth, but appear to *stop* or
3434

3535
.. image:: img/motion_stutter.gif
3636

37-
3837
Jitter
3938
------
4039

@@ -92,6 +91,11 @@ games, will usually not exhibit this problem anyway).
9291
For fullscreen, Windows gives special priority to the game so stutter is no
9392
longer visible and very rare. This is how most games are played.
9493

94+
When using a mouse with a polling rate of 1,000 Hz or more, consider using a
95+
fully up-to-date Windows 11 installation which comes with fixes related to high
96+
CPU utilization with high polling rate mice. These fixes are not available in
97+
Windows 10 and older versions.
98+
9599
.. tip::
96100

97101
Games should use the **Exclusive Fullscreen** window mode, as opposed to
@@ -151,7 +155,20 @@ Project configuration
151155

152156
On platforms that support disabling V-Sync, input lag can be made less
153157
noticeable by disabling V-Sync in the project settings. This will however cause
154-
tearing to appear, especially on monitors with low refresh rates.
158+
tearing to appear, especially on monitors with low refresh rates. It's suggested
159+
to make V-Sync available as an option for players to toggle.
160+
161+
When using the Forward+ or Mobile rendering methods, another way to reduce
162+
visual latency when V-Sync is enabled is to use double-buffered V-Sync instead
163+
of the default triple-buffered V-Sync. Since Godot 4.3, this can be achieved by
164+
reducing the **Display > Window > V-Sync > Swapchain Image Count** project
165+
setting to ``2``. The downside of using double buffering is that framerate will
166+
be less stable if the display refresh rate can't be reached due to a CPU or GPU
167+
bottleneck. For instance, on a 60 Hz display, if the framerate would normally
168+
drop to 55 FPS during gameplay with triple buffering, it will have to drop down
169+
to 30 FPS momentarily with double buffering (and then go back to 60 FPS when
170+
possible). As a result, double-buffered V-Sync is only recommended if you can
171+
*consistently* reach the display refresh rate on the target hardware.
155172

156173
Increasing the number of physics iterations per second can also reduce
157174
physics-induced input latency. This is especially noticeable when using physics
@@ -181,6 +198,13 @@ every input, rather than accumulating inputs and waiting for a frame to be
181198
rendered. Disabling input accumulation will increase CPU usage, so it should be
182199
done with caution.
183200

201+
.. tip::
202+
203+
On any Godot project, you can use the ``--disable-vsync``
204+
:ref:`command line argument <doc_command_line_tutorial>` to forcibly disable V-Sync.
205+
Since Godot 4.2, ``--max-fps <fps>`` can also be used to set a FPS limit
206+
(``0`` is unlimited). These arguments can be used at the same time.
207+
184208
Hardware/OS-specific
185209
^^^^^^^^^^^^^^^^^^^^
186210

0 commit comments

Comments
 (0)