FSX Tip of the Week:Water slider and FPS costs

So why does FSX not render as fast as your typical FPS game?

The primary difference is the sheer amount of things we render, given a 120+km or greater viewing distance and trying to render the visible portion of the planet within that viewing distance and not some hand-tuned level like a first-person shooter style game. We dont "know" what is going to be rendered at a particular location in FSX, and we cant "tune" the content in any specific way to address performance. Once you establish that as the fundamental difference, it isn’t meaningful to talk about "FSX seems light on shaders" vs GameX, or "FSX seems heavy on CPU workload" vs GameX. FSX is just different.

 

What we do though, is let the user manipulate settings via sliders and hope they can find a level of detail and visual quality that are both "good enough to look at" and "perform good enough to fly". For the most part, this just works. For the "tweakers", though, I have been blogging on various topics to try to help people understand how FSX works and where different "sweet spots" can be found.

 

For instance, every one notes that water is a heavy cost, especially 2.x. Why is that so? 

 

Here is a breakdown of what the water slider does:

1.x has no reflections:

· The lowest 1.x level does the basic shader.

· The mid 1.x level adds an animated detail texture.

· The highest 1.x level adds some specular effects

2.x adds a 2nd pass to get reflections and this can be a killer:

· 2.low reflects only the clouds and has a little more complicated shader – it can be a good compromise

· 2.med adds scenery, eg terrain and custom objects

· 2.hi adds Autogen (trees, generic objects ) and basically reflects the entire scene, which costs a lot

 

Water 1.x thus just increases the shader cost and adds sampling from more textures as you move the sliders to the right. For modern hw, thats no problem.

 

Water 2.x needs a 2nd pass to generate the reflection. That means rendering the world a 2nd time into a texture as a render target. Which is an obvious performance hit.

 

And thats just for the 1st 2.x level.

 

Reading my list above, with Water 2.hi the shader and rendering cost is intense and directly related to full scene complexity. So having Autogen and Scenery to extremely dense coupled with Water 2.hi has a direct negative impact on performance. Water 2.hi, like our other 2 2nd pass features ( shadows, bloom ) basically cuts your FPS in half.

 

Water 2.med with Scenery complexity at extremely dense and Mesh resolution all the way right means that the 2nd render pass is going to cost a lot. Lower your scenery and mesh settings, though, and 2.med might not be such a FPS killer while adding a bit more visual quality.

 

Water 2.lo renders only the clouds and the skybox on the 2nd pass, and can be a very good compromise. And in general when over water its mostly the cloud reflections you see except at the shoreline. So this choice doesnt sacrifice too much visual quality and is FPS friendly.

 

Understanding this lets you make intelligent choices. Water 2.lo with high Autogen and high Scenery is much better than any other Water 2.x because 2.lo doesn’t render the terrain or Autogen.

 

 You have to understand FSX and its performance as a Socratic, holistic thing across all the subsystems and how they interact. It’s really hard to use try a simple Aristotelian breakdown as a vehicle to understanding FSX.