From 16c34b297116c796f18f2d19f1cf9e00fbcfc9f7 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 22 Aug 2023 00:25:13 +0200 Subject: [PATCH] Mention buffer size and Windows 11 mouse polling in Fixing jitter, stutter and input lag This also documents command line arguments that may be of interest when running Godot projects. --- tutorials/rendering/jitter_stutter.rst | 28 ++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/tutorials/rendering/jitter_stutter.rst b/tutorials/rendering/jitter_stutter.rst index c06cc636373..aeaaf79c910 100644 --- a/tutorials/rendering/jitter_stutter.rst +++ b/tutorials/rendering/jitter_stutter.rst @@ -34,7 +34,6 @@ Finally, a game exhibiting *stutter* will appear smooth, but appear to *stop* or .. image:: img/motion_stutter.gif - Jitter ------ @@ -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. + .. tip:: Games should use the **Exclusive Fullscreen** window mode, as opposed to @@ -157,7 +161,20 @@ 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 when V-Sync is enabled is to use double-buffered V-Sync instead +of the default triple-buffered V-Sync. Since Godot 4.3, this can be achieved by +reducing the **Display > Window > V-Sync > Swapchain Image Count** project +setting to ``2``. The downside of using double buffering is that framerate will +be less stable if the display refresh rate can't be reached due to a CPU or GPU +bottleneck. For instance, on a 60 Hz display, if the framerate would normally +drop to 55 FPS during gameplay with triple buffering, it will have to drop down +to 30 FPS momentarily with double buffering (and then go back to 60 FPS when +possible). As a result, double-buffered V-Sync is only recommended if you can +*consistently* reach the display refresh rate on the target hardware. Increasing the number of physics iterations per second can also reduce physics-induced input latency. This is especially noticeable when using physics @@ -187,6 +204,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 ` to forcibly disable V-Sync. + Since Godot 4.2, ``--max-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 ^^^^^^^^^^^^^^^^^^^^