Showing Posts For Zao.1806:

Low FPS for Smoke Effects

in Account & Technical Support

Posted by: Zao.1806

Zao.1806

Large translucent sprites is a problem for any game, on any card, since the dawn of time.

For normal opaque geometry, it’s drawn once and the distance from the observer is recorded into the Z buffer. If some other opaque geometry is drawn later, it can be classified as either farther or closer to the observer. If it’s farther, it’s not drawn. If it’s closer, it replaces the previous color cheaply.

With translucent surfaces like effects, it’s a completely different story… it’s done by sorting all the sprites farthest-to-closest. Then for each surface, draw it and combine it with the previous color in the image, based on how translucent it is.

This means that for each layer of smoke, there’s a read of the previous color and a write of the combination of the previous and current color.

The amount of these kinds of pixel operations are limited, and is what is typically referred to as the “fill rate” of a card. The ways that you as a layman can help combat such things is to lower settings (to get fewer layers of smoke and stuff) and to lower your resolution.

There’s 2.25 times more pixels on a 1080p screen than a 720p screen. That means that there if your main bottleneck is fill rate, you could achieve close to a doubling of effective frame rate in the worst-case scenarios.

On the developer side of things, there’s not much one can do. If you disable smoke effects, you give advantages to the people who disable it. You could try to make the same effects with fewer layers, but that doesn’t help when there’s multiple stacks of effects going on. There’s techniques to avoid excessive overdraw when a fragment is considered fully opaque or has enough layers that drawing more to it wouldn’t matter.

I would have some faith in the rendering engineers of ANet, that they most certainly have evaluated most things possible, and some things impossible.

And of course, it doesn’t help when driver bugs ruin the day, no matter what you try.