In the project settings, you can find a setting called “Smooth Frame Rate”. It looks like this:
Is there any documentation about how this exactly works? Does it deactivate effects or reduce the screen percentage to reach this minimum frame rate? And what does “Min Desired Frame Rate” mean in this context?
Unfortunately I got no response until now nor didn’t I find more documentation regarding this feature. Initially I was hoping for dynamic resolution scale or adaptive quality settings but this seems not the case.
Smooth Frame Rate and VSync actually have a lot in common. To help understand what Smooth Frame Rate does I want to make sure we understand what VSync does.
VSync or Vertical Sync essentially is a means to control screen tearing (when the Frame Rate exceeds the Refresh Rate of the monitor) or stutter (when the Frame Rate drops below the Frame Rate Cap, typically 60 FPS) in your rendered application. In functionally works by setting and overall Frame rate based on the video card demands and the Monitor refresh rate, this will yield a very harsh jump sometimes between 30 FPS and 60 FPS on modern machines which yields the stuttering effect. With modern monitors and Video Cards, VSync is not often as critical an issue (depending of course on demands of the system and desired results); and, for that reason, VSync for most is set to Application Specific in your Video Card’s Configuration Manager (like NVidia Control Panel). This allows each Application to decide whether you want to use VSync with it or not.
Most modern video cards have a means of adaptive V Syncing which yields much better results with less stuttering and will yield a curve more like the following:
So it locks the higher end of the Frame Rate to 60 and turns v-Sync off below 60 allowing for less stuttering.
With Frame Rate Smoothing, the application is determining what range is acceptable for frame rate wandering, so you can cap your frame rate to between Min and Max allowable frame rates. Since this is application based, it will make these changes before any hardware vsync changes. (<-- TL;DR answer)
As an example, let’s say I have a great game I have built that runs amazing on my Titan X card and it is running at around a consistent 75 to 85 FPS. Well, I know most users will not have the higher end machine to play on (or if I am developing for console the target is usually 60 FPS exactly). So I set the smooth Framerate to a range of 40 to 60 FPS. This means even though my machine could run at a much higher frame rate, for the best experience for all playing I want to cap that number at 60 FPS. Taking this a step further, if I have a user who is playing my great game but on a lower end machine which is struggling at 40 FPS, the VSync hardware changes will probably limit the FPS of the game to 30FPS after the Smooth Frame Rate shifts to a lower 40FPS.
This is one one of many reasons that developing for the PC market can be challenging and extensive testing has to be done on multiple PC make-ups and why many companies will but in Min. Specifications for games.
Hopefully this helps clear up what Smooth Frame Rate is used for.
Wow, didn’t hope to get answered this after 14 months of waiting…
So, as long as I got V-Sync enabled to avoid tearing and microstuttering and I can maintain the framerate, this essentially doesn’t have any effect, right?
It has the effect that Eric described above. The smoothing helps to smooth out the stuttering that can happen when your system either climbs really far above the target frame rate or too far below it which helps to avoid screen tearing (above) and stuttering (below).
But what about input lag? V-sync is known for it, and in a competitive game like PUBG (feature got released today) it could be more of an issue than stuttering.
it tries to prevent sudden quick fps drops. Unreal engine locks it to whatever the application thinks your computer can handle. If your max FPS is 120 with dips of 40 then it’s going to set it at its smoothest framerate (hence the name). So it will set it at a maximum of 60fps with a minimum of 40. What’s the point of this, you might ask. It’s to prevent stutters that would normally occur with vsync and no vsync.
This answer is complete nonsense. It only tells you what adaptive vsync is, doesn’t mention that triple buffering (forced by windows 10) does the same thing, and doesn’t actually tell you what framerate smoothing does at all. The question was about framerate smoothing, not adaptive vsync. It doesn’t tell how you can “cap” to a minimum framerate, if the pc or console is too slow then it will run at a lower framerate regardless.