About Store Forum Documentation Contact



Post Reply 
FPS keeps lower than 60 even with Vsync OFF regardless graphic quality
Author Message
tipforeveryone Offline
Bronze Supporter

Post: #1
FPS keeps lower than 60 even with Vsync OFF regardless graphic quality
Here is video from my friend when he plays my game

https://drive.google.com/file/d/1VCTvwrF...ET7Bv/view

The problem is whatever graphic setting is, from maximum to minimum, the game's FPS always at range from 50-60 and drop below 40 when there is heavy calculation like combat, AI process. (I am aware of that it is not because of Vsync)

At lowest setting, He turns off every heavy FPS affection like MultiSampling, FXAA, AO, using 50% render pixels, No shadow, No toneMaping, No bloom etc.. As maximum setting, below 60fps is normal I think, but when changing to lowest, it is all the same. I am sure that D.sync(false) and expect fps goes above 80 or 100 but it is not.

In video, my friend tries to look at the sky where almost nothing is rendered, the direction is pointing to outside of the map too.

My friend's computer spec: https://i.gyazo.com/99cd8f955d6718bd9d0d...6029b9.png

I don't believe that this spec can't handle lowest setting of EE at 60- FPS and Vsync Off smile What may cause this, while his computer can play Some game like Call of Duty Modern Warfare at good FPS, Team Fortress 2 at 100+ FPS, same as Counter Strike GO.

Edit:
Decreasing resolution to much lower like 800px width can't affect anything too
(This post was last modified: 08-15-2023 03:16 AM by tipforeveryone.)
08-15-2023 01:41 AM
Find all posts by this user Quote this message in a reply
RedcrowProd Offline
Bronze Supporter

Post: #2
RE: FPS keeps lower than 60 even with Vsync OFF regardless graphic quality
His gpu might not be the bottle neck, but the cpu might be ?
08-15-2023 01:57 AM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #3
RE: FPS keeps lower than 60 even with Vsync OFF regardless graphic quality
this is because he is not GPU bottlenecked he is CPU bottlenecked, might be memory and it might be IO, without knowing where the load is put during a normal frame, there are very few graphical settings these days that will affect CPU in a big way outside of insane amount of objects spewing out drawcalls.

reducing the game to 50% or even 90% rendering resolution won't increase FPS unless it actually causes less draw calls or it reduces CPU workload in other ways, like distance based animation tiers, disabling 'x' bones at 'y' distance, so animation updates doesn't require so much matrix operations, or if you are using inverse kinematics disabling that based on distance to prevent the solvers consuming too much time.

You need to do some performance analyzis of your game and find out where most of your CPU/Memory load is put during normal scene processing.

might want to consider batched|priority|fixedrate update system as in not every object gets to update every single frame other than most basic things like positions.
(This post was last modified: 08-15-2023 06:34 AM by Zervox.)
08-15-2023 06:08 AM
Find all posts by this user Quote this message in a reply
tipforeveryone Offline
Bronze Supporter

Post: #4
RE: FPS keeps lower than 60 even with Vsync OFF regardless graphic quality
Thanks for suggestion guys! If it is CPU bottleneck, I will try to cut out part by part of the game to find out which part is killing FPS smile
08-15-2023 07:19 AM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #5
RE: FPS keeps lower than 60 even with Vsync OFF regardless graphic quality
if you are able to I would suggest using the visual studio performance profiling tools, it will allow you to find the most called functions and the ones which consumes most time, this way you don't have to jump around hoops everywhere. smile
08-15-2023 07:35 AM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #6
RE: FPS keeps lower than 60 even with Vsync OFF regardless graphic quality
Coming back to this a bit late, but I do remember that you could do a drawShadow override, if you have a specific LOD setting that is available(assuming all objects you have have atleast base and one additional LOD level) there is alot of performance to be had there, further is another if you know that your worst LOD setting maintains the correct shape of the object or close enough to the original shape that you know that the shadow cast will be 99% the same you can do something like
this example is using the drawShadow function of static
Code:
void drawShadow()
   {
      if(mesh && actor.is())
      {
         if(Frustum(*mesh, T.matrixScaled()))
         {
            SetVariation(mesh_variation); mesh->lod(mesh->lods()-1).drawShadow(T.matrixScaled());
            SetVariation();
         }
      }
   }

using something like the default Barrel object, compared to using
Code:
mesh->drawShadow(T.matrixScaled());

10,000 barrels as static objects, there is a decent performance gain for me
the difference is 1331 vtxs,2180 triangles, and two meshparts.

the final lod in this example I have set the distance to one thousand just to make sure I do not see this super simplified body rendered normally and even if it is, if it is that far away you won't be able to tell it being a single material is at
583vtxs, 504 triangles, and one meshpart

this not only helps GPU performance but also CPU performance because setting up draw calls isn't free, so two parts per mesh, or having an unreasonable detailed mesh being cast as the shadow is wasted GPU bandwidth and CPU and GPU processing.

if there are certain things you know will only be affected by local lights like light point and cone, you can look into using something like
Code:
if(mesh && actor.is() &&  CurrentLight.type==LIGHT_POINT)
so even if there is a directional sun outside but you know these objects won't recieve that light, then you can block it off. if you are using custom bounding volumes of objects to cull you could move this light_point check to the bounding volume instead perhaps to only have to check it once for all the objects inside.
(This post was last modified: 09-13-2023 09:11 AM by Zervox.)
09-13-2023 05:52 AM
Find all posts by this user Quote this message in a reply
Post Reply