(Unresolved) Huge FPS loss when near certain particle effects or textures


#1

Hi,

Whenever I stand close to certain particle effects my FPS drops around ~20-25 FPS (down from a solid 60). I’ve had this issue since at least Legion (dunno what patch) and after trying most, if not all, advice I can find online I’m finally at my wits end.

I’m wondering if anyone else is experiencing this issue and if they’ve found a way to solve it?

How to see if you’re having the same issues:

The easiest way to see if you’re having the same issues is by traveling to any of the following places:

  • Travel to Magnarok (Frostfire Ridge) and stand close to the lava pools located in the area.[1]
  • With the camera zoomed all the way in, facing the ocean - stand in the lava fountain located just behind the rare boss Conflagros located in Darkshore.[2]
  • Standing in the area where you lead spirits in the quest The Spirits Within (see below for example images).[3]

[1] https://d1u5p3l4wpay3k.cloudfront.net/wowpedia/5/56/Magnaron_BotSL.jpg
[2] https://i.imgur.com/xlzcA6S.jpg
[3] https://www.wowhead.com/quest=50529/the-spirits-within

Example images:

Here are two images to illustrate what I mean with performance loss using the same graphics settings but with the camera at different zoom levels:

  • No performance issues: https://i.redd.it/gzqhopeb3lb21.jpg
  • Huge FPS loss: https://i.redd.it/wpdtlx3f3lb21.jpg

My computer:

OS:     Windows 10, build 17134 
CPU:    Intel Core i5-8600K @ 3.60GHz (6 cores)
Memory: 32GB (2x HyperX FURY DDR4 2400MHz 16GB)
GPU:    GeForce 1070

Graphical Settings:

Display Mode: Fullscreen(Windowed)
Window size: 2256x1504
Resolution scale: 100%
Anti-Aliasing: FXAA High
V-Sync: Enabled
---
Texture Resolution: High
Texture Filtering: 16x
Projected Textures: Enabled
---
View Distance: 8
Environment Detail: 8
Ground Clutter: 8
---
Shadow Quality: Ultra
Liquid Detail: Good
Sunshafts: High
Particle Density: High
SSAO: Ultra
Depth Effects: High
Lighting Quality: High
Outline Mode: High
---
Tripple Buffering: Disabled
Reduce Input Lag: Enabled
MSAA: None
Multisample Alpha-Test: Disabled
Resample Quality: Bicubic
Graphics API: DirectX 12
Physics Interactions: Player and NPCs

If I missed anything of note please let me know and I’ll update this post.

What I’ve tried doing:

I have done everything that’s suggested on the World of Warcraft Performance Issues page (https://eu.battle.net/support/en/article/18542).

I have also done everything suggested in the Potential fix for FPS issues post (https://us.battle.net/forums/en/wow/topic/20768547339).

Among other things I’ve:

  • Completely removed all add-ons to rule out any chance of them causing the performance losses.
  • Done a clean install of my GeForce GPU drivers, including using the DDU program as described in the “Potential fix for FPS issues”.
  • Downloaded and installed the latest drivers for my graphics card.
  • Checked my power management settings.
  • Closed all other applications running in the background that might be causing the performance loss.
  • Tried lowering the sound quality.
  • Tried lowering the graphics quality (the only thing that gives me a moderate performance boost in the affected areas is to render the game in 50% my native resolution).

Final comment:

Any help in this regard would be greatly appreciated because as it stands right now it’s become very frustrating to run raids at higher levels or Mythic+ keys due to sudden lag spikes whenever someone casts a spell that uses certain particle effects.

Hope anyone can help cause this is starting to drive me a little bit insane :grimacing:


Edit: Thought I’d give an update to this issue (which is still unsolved) by posting what someone said on Reddit:

This because of a technical issue known as “overdraw”.

Basically, drawing 3D graphics is really, really computationally expensive. That’s why you have a dedicated piece of hardware in your PC to make it as fast as possible. But even with that specialized hardware, there are still shortcuts that have to be taken all over the place.

One of the most impactful shortcuts that 3D accelerators have taken since the very first 3D accelerators is using what’s known as a Z Buffer, or basically a big table with one entry for every pixel on the screen. When your card renders something, it records in the Z Buffer how far away from the “camera” whatever it rendered at that location is. That way, when it’s rendering other things in the scene, it can look at the Z Buffer to see if what it wants to draw is behind what was already drawn. If so, it can skip drawing it and thus save a whole lot of time . If not, it draws it, paints it, then updates the Z Buffer to the new, closer depth.

Having to draw to a pixel twice when it first rendered something far away, then had to render something closer over top of it is overdraw : the pixel was drawn, and then it was overdrawn with something else. Overdraw is bad because it means your video card had to pay the computational price of rendering that pixel more than once.

But a Z Buffer is not a silver bullet. It has many sorts of problems. One was just demonstrated above – if you render things far away first, you still end up having to overdraw. So lots of games will try to render things that are closer to the camera first, so they can maximize the benefit of the Z Buffer in saving them work.

The other weakness, which is relevant here, is that a Z Buffer can only work when it’s keeping track of pixels that something opaque has been painted to. A wall, for instance, but not a window – because you can see through the window, even if just a little bit, so the video card still has to render things behind the window and then do all the math to determine what the final pixel should be when the stuff behind it and the window itself are combined.

Walking up to a source of partially transparent particles like smoke is a worst case scenario : you have many transparent things that each need to be individually painted, and worse, all of them cover most or all of the screen. The end result is that your video card ends up having to do lots of work to calculate every single pixel on the screen – one pass over most/all of the entire scene for every particle in view; and this can quickly overwhelm your video card’s “fill rate”, or the measure of how fast it can write to the memory that stores the pixels to be displayed.

If it’s known by an engine’s designers that things like full-screen transparent particles are going to be common, they can design around it to make that worst case scenario not so bad – but the problem is that doing so requires rearchitecting how scenes get drawn as a whole, and the techniques you’d use for doing that have various tradeoffs of their own that might not make them worth doing.

It would be really great to get a confirmation by the support staff if this is indeed what is going on or if something else is amiss.