Skip to content

Commit

Permalink
Mention buffer size and Windows 11 mouse polling in Fixing jitter, st…
Browse files Browse the repository at this point in the history
…utter and input lag

This also documents command line arguments that may be of interest when
running Godot projects.
  • Loading branch information
Calinou committed Aug 21, 2023
1 parent 8ce770e commit 8200af4
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions tutorials/rendering/jitter_stutter.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ Finally, a game exhibiting *stutter* will appear smooth, but appear to *stop* or

.. image:: img/motion_stutter.gif


Jitter
------

Expand Down Expand Up @@ -98,6 +97,11 @@ games, will usually not exhibit this problem anyway).
For fullscreen, Windows gives special priority to the game so stutter is no
longer visible and very rare. This is how most games are played.

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

Linux
^^^^^

Expand Down Expand Up @@ -143,7 +147,17 @@ Project configuration

On platforms that support disabling V-Sync, input lag can be made less
noticeable by disabling V-Sync in the project settings. This will however cause
tearing to appear, especially on monitors with low refresh rates.
tearing to appear, especially on monitors with low refresh rates. It's suggested
to make V-Sync available as an option for players to toggle.

When using the Forward+ or Mobile rendering methods, another way to reduce
visual latency is to reduce the number of frames that can be buffered by the CPU.
Since Godot 4.2, this can be achieved by changing the
**Display > Window > Vsync > Buffer Count** project setting (it's effective regardless
of the current V-Sync mode). The downside of reducing this buffer size to ``1``
is that the number of frames per second rendered may be decreased significantly
in some cases. The default value of ``2`` is a good balance between throughput
and latency.

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

.. tip::

On any Godot project, you can use the ``--disable-vsync``
:ref:`command line argument <doc_command_line_tutorial>` to forcibly disable V-Sync.
Since Godot 4.2, ``--max-fps <fps>`` can also be used to set a FPS limit
(``0`` is unlimited). These arguments can be used at the same time.

Hardware/OS-specific
^^^^^^^^^^^^^^^^^^^^

Expand Down

0 comments on commit 8200af4

Please sign in to comment.