The sense and nonsense of FPS


I’m always wondering the arguments on a forum  when posters are talking about frame rates. They argue about what ‘frame rate’ means, what is a good or bad frame rate or how high a frame rate must be. This is a “long winded” story, so take your time to read and to understand what it’s all about FPS.
So let’s get back to the basics of which most of them can be found in a Wiki.

Frame rate (also known as frame frequency) is the frequency (rate) at which an imaging device produces unique consecutive images called frames. The term applies equally well to computer graphics, video cameras, film cameras, and motion capture systems. Frame rate is most often expressed in frames per second (FPS), and is also expressed in progressive scan monitors as hertz (Hz). (Remember terms like 1080p or 50i, where “p” stands for progressive an  the “i” stands for interlaced).

The human eye and its brain interface, the human visual system, can process 10 to 12 separate images per second, perceiving them individually. The visual cortex holds onto one image for about one-fifteenth of a second, so if another image is received during that period an illusion of continuity is created, allowing a sequence of still images to give the impression of smooth motion.

humaneyeFrame rate is also a term used in real-time computing. In a fashion somewhat comparable to the moving-picture definition presented above, a real-time frame is the time it takes to complete a full round of the system’s processing tasks. If the frame rate of a real-time system is 60 hertz, the system re-evaluates all necessary inputs and updates the necessary outputs 60 times per second under all circumstances.

The designed frame rates of real-time systems vary depending on the equipment. For a real-time system that is steering an oil tanker, a frame rate of 1 FPS may be sufficient, while a rate of even 100 FPS may not be adequate for steering a guided missile.

The designer must choose a frame rate appropriate to the application’s requirements. It all depends of speed of the moving objects.

Frame rates in video games refer to the speed at which the image is refreshed (typically in frames per second, or FPS). Many underlying processes, such as collision detection and network processing, run at different or inconsistent frequencies or in different physical components of a computer.

FPS affect the experience in two ways:

  • low FPS does not give the illusion of motion effectively and affects the user’s capacity to interact with the game, while
  • FPS that vary substantially from one second to the next, depending on computational load, produce uneven, “choppy” animation.

Many video processing programs lock their frame rate at lower, but more sustainable levels to give consistently smooth motion.
This is the main reason that in FSX (which is not a game but a simulation process) one should use a FPS limiter or when you don’t, set the slider to 30 fps. Remember that the sliders in FSX are limiters (!) and are not settings.

A culture of competition has arisen among FSX enthusiasts with regard to frame rates, with players striving to obtain the highest FPS possible, due to their utility in demonstrating a system’s power and efficiency. Indeed, many benchmarks released by the marketing departments of hardware manufacturers and published in hardware reviews focus on the FPS measurement. Even though, the typical LCD monitors of today are locked at 60 FPS, making extremely high frame rates impossible to see in real time.

May be this requires some clarification: the refresh rate of a TFT screen is set to e.g. 60 Hz

The refresh rate (most commonly the “vertical refresh rate”) is the number of times in a second that a display hardware draws the data.  Which means that all the pixels in a TFT will be refreshed in one time (in 1/60 of a second) whatever the content of the pixels is.

The distinct from the measure of frame rate and refresh rate is that the refresh rate includes the repeated drawing of identical frames, while frame rate measures how often a video source can feed an entire frame of new data to a display.

Imagine that the refresh rate is in sync with the number of times the video content is changed, you would have 60 different images in a second. Every frame another image, 60 frames in a second. What would you see in real?

Since the human visual system can process 10 to 12 separate images per second, perceiving them individually and the visual cortex holds onto one image for about one-fifteenth of a second (= 4/60), you will only observe 15 images, and hopefully in smooth motion if the image moves. This implicates that a negative influence of the presented video data to the screen is only observed when the refresh rate drops lower than 15 fps.

 

fps-forest-60-03-00And now the test: with the help of this website
Frames per second http://frames-per-second.appspot.com/

When you get there, first disable all the balls and set the Asset to Autum2, set the Frames per second to 5 fps, the Motion blur to None and the Velocity to zero px/s. Observe the image.
Your home situation is that the refresh rate of your display  is 60Hz and get a stable picture to process which changes by 5 frames/sec. Now set the Frames per second to 60 fps. Do you see the difference?
No, the image is not moving and the refresh rate is still 60 Hz. Even if you increase the Frames per second higher than 60 Hz, you won’t see the difference.

Now return the Frames per second to 5 fps and set the Velocity to move the picture 50 px/s, 100 px/s etc. The only thing that changes is the staggered movement of the image. Set the FPS  to 25 fps and look again. The Motion blur is still set to None.The image is moving without any blur on screen.

Next: introduce some Motion blur and notice that with Realistic Motion blur there is hardly need to increase the FPS of the picture. The more “blur” is introduced, the more the leaves of the trees get defocussing. Try to improve the situation while increasing the FPS. The faster the image moves (change the velocity) the more FPS you need to get a sharp picture and get rid of the blurries. Is your graphic card able to do so?

OK, now for FSX: normally the scenery is moving and the aircraft is somewhere fixed in a view. Take 2 soccer balls (the aircraft) and set the one ball to fps 5 and the other to 60 fps. (Asset is fixed to velocity zero; Asset FPS  is 5). What do you see?

Change the movement of the Asset to 100 px/s and introduce a Realistic Motion blur; increase step by step the FPS of the Autumn2 scenery. Somewhere at 25 fps the scenery will become acceptable. What ‘s the conclusion? The fps of the soccer balls (the aircraft) does not have any effect on the (moving) scenery. However, the quality of the presented images is (1) dependable of the manufacturer of the ball image (say aircraft) and (2) the performance of the moving images (scenery) is dependable of the ability of your system components.

By limiting the frame rate, (= the speed at which the total image is refreshed) you limit the number of cycles of your processor to execute this action. You don’t limit the graphics processes on the video card. The rest of the available cycles of your workhorse will be available for graphic processes.i7-920-OC-1Message 1: buy Aircraft and Sceneries from nominated producers (Carenado, PMDG, F1, ORBX) to get the best quality of images. After all the performance is all up to your machine.

Message 2: don’t spoil CPU resources to get a maximum of frame rates; simulation flying is all about looking to a smooth picture; set the Target frame rate slider in FSX>Options>Settigs>Display @ 30 fps.
Read more how to fresh up your fsx.cfg in this post.

Message 3: when using 2 graphic cards (with 4 displays), the frame rate is divided by the number of exposed panes as long as generated by FSX!

 

Resources used: Wikipedia

Tweaking FSX.CFG


There are 2 primary influences on a smooth presentation of sceneries:
1. How much you want the program writes on screen
2. How capable the machine is in getting data from the hard disk and put it into the rendering machine.

The purpose of tweaking fsx.cfg is to minimize influences that have a negative impact on the frame rate. Nothing more, nothing less!

The file fsx.cfg is located in:
Windows XP:
C:Documents and SettingsYourNameApplication DataMicrosoftFSX
or when you are using
Windows 7/8:
C:UsersYourNameAppDataRoamingMicrosoftFSX

Before making any changes, backup your original file and read this article first.
Tweak 1: Jobscheduler
(for all single- dual- and multi core machines)

[JOBSCHEDULER]
AffinityMask=0 //for single core machines
AffinityMask=3   //for dual core machines
AffinityMask=7   //for triple core machines
AffinityMask=15 //for multi core machines
Select one of the lines which is appropriate for your machine.

Tweak 2a: Settings – Display – Graphics

Remind that all sliders are limiters and NOT to be a predefined setting!

Global Texture Resolution: has little to no impact on frame rate;
Lens flare has little impact on frame rate (box Checked);
Light bloom is a killer for frame rate, so unchecked the box;
Advanced Animations has a high impact on frame rate; Advanced animations controls the drawing of people, animals, etc.
Some aircrafts (PMDG-Aerosoft) require Advanced Animations to be checked, otherwise the fuselage is not drawn properly;
Filtering & Anti Aliasing: AA smooths fagged lines; filtering improves crispness of textures; recommended AA check-box= unchecked;
Filtering = trilinear; use windows control panel to set the graphic card;

Tweak 2b: Settings – Display – Scenery
Scenery objects controls the number of trees and buildings in a cell (1 cell= 1 km x 1 km); The guys from ACES tell us that 50 x 1 km square cell/ frame is max number of trees per cell= 4500: setting slider to max= 250000 trees; recommended 1000 trees and 800 buildings…which makes the following statement for the fsx.cfg file:
[Terrain]
Terrain_Max_Autogen_Trees_per_Cell=1000
Terrain_Max_Autogen_Buildings_per_Cell=800
Set slider in mid position and check;
Terrain and water:
Level of detail radius is the size of the circle that the Sim fills with detail: a smaller circle results in less calculation; recommended setting is medium to small;
Mesh Complexity is the world underneath;
Mesh resolution is the size of the triangles that are drawn; recommended settings is medium;
Texture resolution: the smaller the value, the finer the level of variation; add/change to fsx.cfg the following:
[DISPLAY]
Texture_Bandwidth_Mult=n
n=30 ./, 40 for single and dual core and n=70./.90 for quad core processor machines
This value equals the target frame rate for calculating how much texture data to load into the graphic card each frame;
Set the maximum value just under the fps as required in the game; FPS=30 than TBM=25; the minimum value is 10;

Some other handsome tweaks that disable screen notification:
[DISPLAY]
InfoBrakesEnable=False
InfoParkingBrakesEnable=False
InfoPauseEnable=False
InfoSlewEnable=False
InfoStallEnable=False
InfoOverspeedEnable=False

Add also to fsx.cfg:
[BUFFERPOOLS]
PoolSize=8000000
//@FSX SP1 value =4000000
//@FSX 1st Release value =1000000

The BUFFERPOOL value reserves the amount of memory for generating landscape mesh; setting this argument too high, than is the memory not functional; setting this value too low than the disk is taking over this function (page filing) with as a consequence a stuttering frame rate;

And now a difficult one… read twice to understand:
Fiber Frame Time Fraction
(for single processor machines only!)
This argument is placed in the [MAIN] section of fsx.cfg;

[MAIN]
Fiber_Frame_Time_Fraction=0.33

Tasks that the processor executes, are called threads;
Threads are given priority by the operating system;
Fibers are using time slots and are generated by FSX to figure out detail;
When the Fiber Time Slots are too narrow to complete the task, you end up with blurries in the terrain;
FFTF defines the maximum amount of time per frame that the fiber tasks will be run on the primary thread; The sim times how long it takes to run the simulation and then renders it to the graphics card. This time multiplied by the FFTF value, gives the total time dedicated to the fiber.

If the value is too high, than the fibers get pre-empted by other subsequent threads and thus is unable to do the work and therefore is missing frames;
If the value is too low,than the fiber has too less time to do the work before the next thread takes over.

Reduce FFTF value to 0,2 or 0,1 and check the result; view out of the window, look at stability of the frame rate; when the value is too high you get fluctuation of frame rate, when the value is too low you see a ton of blurries…

ADJUSTING AUTOGEN DETAIL LEVEL:
search in your fsx.cfg the following statement and change if applicable.

[MAIN]
PERFBUCKET=n
Default value is 6. Recommended value is 4. Max. 7