I’ve just got a new pc (laptop). A project I’ve been working on my desktop is running at 80 fps, but is running at 8 fps on the laptop. I’ve looked everywhere to find the reason for fps difference but just can’t seem to track it down… Both machines are fairly similar, both have a GeForce GTX 1060 (6GB/3GB DDR5), a good cpu (i7-6700K/i7-7700HQ), 8GB+ Ram, PCIe3, etc (full specs attached)…
I’ve made sure the laptop is using the GTX gpu and not the integrated cpu gpu, checked the NVidia control panel settings, and checked disabling some of the manufacturer provided hardware driver controllers, but no joy. I’ve made sure the project, editor settings and UE4 versions are the same, and the project is version controlled so both projects are identical…
The only thing I can think is its a simple graphics card/pc setting I’m missing somewhere, or it’s something to do with the amount of gpu memory used (I checked on afterburner and the scene is using 4370MB gpu memory on the desktop and 3022MB (100%) on the laptop, but would that be enough for such a massive difference…?
The laptop is an MSI GE72VR-7RF Apache Pro, in case anyone has encountered something similar… Any help on a setting somewhere I might be missing would be great…
(also have gpu stats profile ue4stats for the scene running on both machines if that would be helpful and a screenshot of the scene)…
Yes, if you’re running out of VRAM you will use normal RAM instead which is usually a bad idea. You can try doing r.MipMapLODBias 1 or even higher until you’re using less than 100% VRAM on the laptop and check the FPS again.
Thanks for the quick reply, How can I check if it’s using/set not to use VRAM? (r.MipMapLODBias 1?)
(ed: soz, thought vram was virtual :/)
Just run r.MipMapLODBias 0/1/2/3, and memory usage dropped down to 2980 (40MB), not much but enough to be in the gpu memory limit (3071 physical (vram?), 3072 virtual (motherboard?)). Just ran some more tests and think it may be our landscape material that’s doing something interesting (not the laptop, just hitting the 3GB limit made it apparent). GPU memory usage:: Empty Level: 670MB, Level with projects previous materials: 960MB, Level with new landscape materials: 3020MB) (desktop memory usage 30% higher in each case). Looks like going to have to look at the material…
Most likely it is using the wrong GPU, most laptop these days have an integrated Intel GPU even if they have a dedicated gaming GPU like a GTX 1060, by default the OS will try to choose which GPU to use for an application (so that it doesn’t use more power than necessary) but it does a pretty poor job of figuring that out. What you can do is open the Nvidia control panel and assign the Nvidia GPU to be used for everything and that will likely fix the problem.
Landscape: Using an atlased 4k material (4x4 1k textures - with diffuse, normal, and a hybrid height/roughness map) (textures format: DXT1, default compression, no mipmaps, each 8.2MB => 25MB total). The landscape resolution is 505x505 (520k tris). The landscape/material also generates/uses a couple of render targets for auto-painting (~65MB).
Character: Basic material - diffuse, metallic, normal, specular (1MBx4 => 4MB). Model 12k tris.
Foliage: 2 tree types using same texture set (diff, normal, rough 1k textures => 4MB). Model lod0:6k > lod3:32 tris.
Grass: 2 types , roughly the same at 5MB each.
So, I’m not a graphics pipeline expert at all but I’m guessing in theory that would mean about 50+65MB for the textures, and however much space is needed for about 550k tris (not sure how much more is needed for instanced foliage)?
The map is also statically lit with distance fields and ambient occlusion enabled, and uses height-map blending in the landscape material… Either way, as you say that can’t be needing any more than about 200MB of gpu memory…? Any ideas? Am I missing anything else major? Is there any way to find out where the gpu memory budget is going?
I also just noticed that the level is running at ~40-60 fps in-game (but only 8 fps in the editor), so I’m just checking with the guy who put the landscape materials together if he has any extra ideas (I think it might be running some real-time render captures while in editor)…
Thanks for the quick reply, has given me some other things to check… I’ll try and get some more info and post anything interesting…
Using Afterburner. r.MipMapLODBias 1 or higher will use a lower mipmap level of your textures globally, lowering VRAM usage, that way you can see if it’s the textures that are using a lot of memory. Which in your case isn’t that likely, it’s probably something else. There are also console commands like “stat streaming” that will show you the texture streaming stats.