Jump to content
Sign in to follow this  
Helmut_AUT

Serious unexplainable Performance Differences - got proof

Recommended Posts

Okay, this gets to the point where I really have to believe the engine has code problems or design problems. I can't explain it any other way, and I would really appreciate if we can hear from the devs here.

Using a GF9600GT, everthing to low except textures (normal) and shadows (normal), VD 1200, Fillrate 100% at 1920x1200.

Now, the test:

On the small island in Utres, walk to the first wooden house in Strelka, the first on the right as you come up from the beach.

Drop your gun.

Walk up to the house facing NW and place yourself directly in front of a stretch of wooden wall with NO windows or anything in it. With your nose touching the house, so the house blocks everthing else, straight on.

Gives me 24 FPS.

Now, I move to the opposite side of the house, walk up to a bare stretch of wood wall, and do the same.

34 FPS.

That's a 40% frame difference. Looking at the SAME texture from the SAME distance with nothing else on the screen.

I really can only explain this by assuming that they are not properly culling background objects as they get blocked by other things. Because when you are looking SE at the house, behind it is mostly open ocean. When you are staring NW "trough the house" you are looking at the destroyed church.

I have no way to take apart the engine and know what BIS has done here, but I do know that 40% framerate difference looking at the same texture should not happen. Can someone throw this on the bugtracker please?

Share this post


Link to post
Share on other sites

Your post would go a long way in helping explain your situation if your provided pics. What you need is:

-fraps which will allow you to either record it or screen shot the situation

-programs like Media Show Espresso allows you to convert videos to youtube

-Youtube will allow you to upload any video you created

-Image Shack will allow you to upload your screenshots and show them to the community

I say this because what you posted is interesting and hopefully more information is addressed and perhaps fixed.

Share this post


Link to post
Share on other sites

I have all that, but I don't have the time right now to prepare such a detailed report.

And anyway, the gist of it is simple: If the player is in front of an object with a simple texture that totally blocks his view, the framerate varies by 40%, seemingly dependent on what is BEHIND that object. Which makes no sense because if you are looking at the broad side of a house, nothing else should be rendered at all, so anything that is BEHIND the house shouldn't matter.

Or, in other words: Looking at the same piece of texture in game, so that it fills your screen, can give you 40% framerate difference. This makes no sense since it's the same graphical detail being rendered.

Share this post


Link to post
Share on other sites

Ok you are onto something here. I did exactly what you said mate and here are the results. You can see the framerate in the top right of the pictures.

First picture is facing NW towards the church:

arma22009060923090151.jpg

The second picture is facing SE towards the sea from the other side of the house:

arma22009060923084864.jpg

So as you can there is certainly some performance drop!

Edited by dale0404

Share this post


Link to post
Share on other sites

60% difference rendering the same piece of texture. Insane.

Share this post


Link to post
Share on other sites

The framerate does not only depend on the texture. The engine cannot always render all objects of a scene. This would result in a framerate under 1. So it must calculate which objects are completely outside the view frustum (the 3d space the player can see) which partially outside and which inside. This calculation leads to different results depending of your direction of sight. The more objects you can see, the slower the rendering.

Share this post


Link to post
Share on other sites

Steinfisch, I know that. In this case, you can only see one object, both times.

Share this post


Link to post
Share on other sites

...But the graphics engine don't know what you know. There can be different ways to calculate, and mistakes.

Share this post


Link to post
Share on other sites
...But the graphics engine don't know what you know. There can be different ways to calculate, and mistakes.

Thats exactly what they are trying to point out, massive problem with the graphics engine. This clearly displays that people are NOT getting the performance they should with the same amount of detail.

---------- Post added at 12:20 AM ---------- Previous post was at 12:15 AM ----------

This is called overdraw right? So this would mean that the graphics engine isn't properly communicating with the graphics cards. Therefor the graphics cards processing depth that you cant see. Which ultimately means that once again, BIS has not optimized correctly for the graphics cards.

Share this post


Link to post
Share on other sites

Nice find. This could bring a nice fps boost if it was optimized correctly.

Share this post


Link to post
Share on other sites
Nice find. This could bring a nice fps boost if it was optimized correctly.

Yes, this could mean that looking at a forest or town might not kill your fps as much as it used too. Although dont expect them to 100% clear it up, just as much as possible.

Share this post


Link to post
Share on other sites

The fact that you are conducting this test next to the ocean might indicate that it is not a problem with the engine. If the same thing happens with a building in a town, in the middle of the island then it might be a problem.

The reason I say this is because you are freeing up both the GPU and CPU by looking toward the ocean, there is absolutely nothing else to render. I'm not sure that buildings and the like would "occlude" the CPU's rendering of the landscape/objects, like it would if it was outside your field of view (eg facing toward the water), or the same way a GPU occludes object's rendering and effects.

Edited by -=seany=-

Share this post


Link to post
Share on other sites
The fact that you are conducting this test next to the ocean might indicate that it is not a problem with the engine. If the same thing happens with a building in a town, in the middle of the island then it might be a problem.

The reason I say this is because you are freeing up both the GPU and CPU by looking toward the ocean, there is absolutely nothing else to render. I'm not sure that buildings and the like would "occlude" the CPU's rendering of the landscape/objects, like it would if it was outside your field of view (eg facing toward the water), or the same way a GPU occludes object's rendering and effects.

The problem with that is there are not any CPU variables in that situation besides the character itself, the wind, the ocean moving, and maby some animals, but I dont think those would drasticaly affect FPS like that.

Share this post


Link to post
Share on other sites

It might be because the game cannot cull terrain. Terrain is different to objects.

Share this post


Link to post
Share on other sites

Typically games (especially FPSes) do a check to determine what objects the player is able to see before drawing anything, the benefit of this is that stuff that has no affect on the final image doesn't have to be drawn.

However, this checking isn't done for free, depending on the method used, CPU usage may take a hit, usually this is offset by not having to process things the player can't see.

ArmA2 is an exception, since the game takes place pretty much entirely outside with an extremely long draw distance, it is less computationally expensive to assume the player can see everything, although, I think terrain blocks unseen objects from being drawn, but terrain is substantially cheaper to process (terrain is a heightmap).

Although the developers could prevent unseen objects being rendered, it would decrease performance in most situations.

Share this post


Link to post
Share on other sites

The engine obviously has a long way to go in optimisations. Another test, I look through the forrest and spin I, get say 30 fps.. I look at the floor and get 30fps, i look at the sky and get 30fps.. Its like I am limited to 30fps no matter what I do. Clearly there are engine problems, and hopefully BIS is working hard to correct them. Unfortunately I am sure BIS does not have the resources at their disposal that a big studio has so will have to be patient. But you never know!

Share this post


Link to post
Share on other sites
Typically games (especially FPSes) do a check to determine what objects the player is able to see before drawing anything, the benefit of this is that stuff that has no affect on the final image doesn't have to be drawn.

However, this checking isn't done for free, depending on the method used, CPU usage may take a hit, usually this is offset by not having to process things the player can't see.

ArmA2 is an exception, since the game takes place pretty much entirely outside with an extremely long draw distance, it is less computationally expensive to assume the player can see everything, although, I think terrain blocks unseen objects from being drawn, but terrain is substantially cheaper to process (terrain is a heightmap).

Although the developers could prevent unseen objects being rendered, it would decrease performance in most situations.

But doesnt the GPU get put under even more stress? I think what you say would only apply if we were still playing with 2.0ghz p4's. 3.2ghz dual core with large bandwidth would not be that affected by it. Were not talking about cracking sha1 here. Its just counting objects and giving out a block signal. I mean, the CPU is counting them anyway so it doesn't really matter.

Share this post


Link to post
Share on other sites

What Meek said.

An algorithm (i.e. for culling unseen geometry) that yields the best result in the majority of cases will hardly ever yield a perfect result in any case. You can't draw any conclusion from this test.

Share this post


Link to post
Share on other sites
What Meek said.

An algorithm (i.e. for culling unseen geometry) that yields the best result in the majority of cases will hardly ever yield a perfect result in any case. You can't draw any conclusion from this test.

So you have the balls to say that losing 15 of your frames looking at the same texture isn't conclusive? I'm sorry, but it just doesn't make sense. I would not care about 2 or 5 frames, but 15! Its just too much. Not to mention this is repeatable, not some random event. Something like this is worthy of more investigation and fixing.

I'm sorry, but if the obtained variables are honest, then the extreme fps loss has been concluded. Its just time to solve the next problem, what exactly is causing it and how to fix it.

Share this post


Link to post
Share on other sites
This is called overdraw right? So this would mean that the graphics engine isn't properly communicating with the graphics cards. Therefor the graphics cards processing depth that you cant see. Which ultimately means that once again, BIS has not optimized correctly for the graphics cards.

Exactly. That explains IMHO why inside villages, our framerates tank.

Because as I understand it, the closer you get to an object, the more detail is rendered for that object (higher LOD textures, more shading....) As the workload increases when you get close to an object, the objects BEHIND that one would vanish into "can't see", so the card can balance it's power more toward the one house you actually can see.

Right now it seems the card has to render the house you can see, and still keeps drawing stuff that is behind it.

Another thing I tried yesterday: In the barracks at Utes, I stood behind an outer wall facing the field behind it, and then moved sideways two steps so I could actually see the field and trees. Result: Field & Trees in view are 30FPS, two steps to the side (which pretty much leaves same field and trees in your view) but with the wall now blocking the scene, I get 40.

So trees, stones, terrain seems to be culled alright. But tried it the other way round - looking INTO the barracks, and then side-stepped to bring the wall into my field of view - little to no improvement.

Very rough assumption: They are not culling house or buildings correctly.

---------- Post added at 08:27 AM ---------- Previous post was at 08:26 AM ----------

I'm not sure that buildings and the like would "occlude" the CPU's rendering of the landscape/objects, like it would if it was outside your field of view (eg facing toward the water), or the same way a GPU occludes object's rendering and effects.

But that's the point: Buildings and the like SHOULD occlude the GPU (not CPU) rendering of landscape and objects.

BTW, as Frag points out, there's another explanation: Even looking at sky or ground never really gets you max FPS, which contradicts pretty much every other 3d game I ever played. Which would mean the card is not only rendering what you look at, but maybe the shading and post processing are always there, always applied to an image even if there's nothing to see and no motion.

Defunct, go ahead and test this with other houses and objects. It seems pretty universal to me.

Edited by Helmut_AUT

Share this post


Link to post
Share on other sites

It would be interesting to test this with different cards. Lets not let this go unnoticed to BIS. If we can get grass, trees, and buildings to be blocked then we've solved a lot right there. A 25-50% increase in performance for those situations should be a good target imo.

Share this post


Link to post
Share on other sites
The engine obviously has a long way to go in optimisations. Another test, I look through the forrest and spin I, get say 30 fps.. I look at the floor and get 30fps, i look at the sky and get 30fps.. Its like I am limited to 30fps no matter what I do. Clearly there are engine problems, and hopefully BIS is working hard to correct them. Unfortunately I am sure BIS does not have the resources at their disposal that a big studio has so will have to be patient. But you never know!

I don't have this problem. I can look at the ground 30fps, spin between 30-40fps and at the sky up to 70fps. Not to be an ass but maybe your hardware is the limiting factor? I have it on 2 similar but different systems and both show a discrepancy in fps when looking those ways.

system 1

q9550 @ 3.4

2 g 1066 ram

winxp 32bit

gtx 260 192sp 896 ram

raptor 140g hd

giga ud3p mb

system 2

q6600 @ 3.2

2 g 800 ram

8800gt 1g ram

winxp 32bit

asus p5k deluxe

both use latest 186 drivers.

BTW, as Frag points out, there's another explanation: Even looking at sky or ground never really gets you max FPS, which contradicts pretty much every other 3d game I ever played. Which would mean the card is not only rendering what you look at, but maybe the shading and post processing are always there, always applied to an image even if there's nothing to see and no motion.

What is the max fps? In the menu 60-65fps and in game hovering around 35-40fps. Not being an ass but I'm curious what that would be?

I do agree that the game needs to be optimized alot more but sometimes dream what the game could be like if they did have the budget of a big studio, say Take2 and GTA IV...

Ahhh dreams...

I can live with the bugs now because I know that the coming patches and tools will certainly transform this to be the epic game most will come to love.

Share this post


Link to post
Share on other sites

Max FPS should be close to vsynch or above. In most every 3d game I ever saw, looking straight down or up will give you that framerate. Even for you, the ground obviously requires a lot more rendering power than if there is nothing (the sky) in view. Why is that, it's merely a bit of shaded texture?

In other terms, you spinning inside a forest full of trees gives you the same FPS as looking static at a piece of flat texture. Doesn't make much sense, does it?

Speaking in more general terms, which is arguable not very scientific: I always had the impression that in A1 - and now in A2 - the amount of graphics quality rendered in view does not correlate correctly to framerate, when compared with other 3d intense games. Bringing up my favorite STALKER:CS example, I can set there a view distance of 500m, lots of grass and shader details, and then move trough a village full of individual buildings, partially destructed, every object casting a correct shadow on itself and others. Every spar and blank of a destroyed roof will render it's shadow on the building inside too. That's an awful lot of shading and details. But the game runs nicely at steady 30+ FPS with 2xFSAA and high details on everthing.

A similar "tense" scene in A1 or A2, even if there's less individual houses, less detailed shading and low graphic detail - gives me 20 FPS.

But the overall "feel" and detail of the scene are not that different. In fact both games can be pretty comparable since they use Russian style small villages with fences, grass, clutter. I know A2 supports a lot more view distance, but you can turn STALKER up and A2 down until they match. And you still get 50%+ more FPS in STALKER.

I'm not trying to argue that a tactical "open world" game like A2 should have the same insane graphics performance as a shooter like STALKER. These are different concepts, different engines. But both games can render pretty awesome scenery, only one is 50% faster. Which brings me back to my assumption that A1 and A2 are doing additional rendering work - maybe in the full-screen post processing - that is a total bottleneck and slows framerate even when you are looking at pretty much nothing.

Edited by Helmut_AUT

Share this post


Link to post
Share on other sites
So you have the balls to say that losing 15 of your frames looking at the same texture isn't conclusive? I'm sorry, but it just doesn't make sense. I would not care about 2 or 5 frames, but 15! Its just too much. Not to mention this is repeatable, not some random event. Something like this is worthy of more investigation and fixing.

I'm sorry, but if the obtained variables are honest, then the extreme fps loss has been concluded. Its just time to solve the next problem, what exactly is causing it and how to fix it.

That's not what he said. He pointed that, even if it's bad, occlusion culling on such a large scale engine/area may be even worse in result, or maybe it's simply huge occlusion culling calculation which explains this difference.

It may not be good, but there may be no workaround

Share this post


Link to post
Share on other sites

Helmut_AUT:

About your first post.

How can the engine know you are just looking in the wall made of continuous polygons??

What if there was a small hole right bellow or above that wall which would allow you to see other objects behind it?? The engine would have to do lots of calculations to figure that out and that would mean more stress to cpu (even though less to gpu). It renders most of objects in front of you all the time to avoid visual bugs.

I say leave the optimization to devs, you're hardly going to find something they don't know already about.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×