Re: Deus Ex: Mankind Divided
Posted: Sun May 31, 2015 1:59 am
Well, a high-level rundown then, because that feels like a fun thing to do at 3:30 am.
There's three major components to performance: memory (RAM and VRAM), GPU, and CPU.
GPU is rarely a bottleneck on PC - it can be on consoles, but generally speaking graphics cards are really powerful, and really good at the very specific things they do. Crudely speaking, video cards crunch the polygons and the shaders. This is what most people think of as "graphics" - more numerous and more detailed objects on the screen, with fancier materials like 8-bit transparency, emission, reflection, refraction, parallax, animation, and so on. You can definitely have too many polygons and too many fancy shaders on screen at any time, but you'll probably fuck up the CPU or fill the memory before you manage that.
Memory is always an issue. Now adays a standard gaming rig has at least 8 GB of RAM and some have 16, so that's obviously tons, but the videocard has its own RAM, and that's typically more limited. Blowing the memory budget is painfully easy, but fixing it is usually pretty easy too - compress your assets as much as you can get away with, or stream a little more aggressively (more on that in a second).
CPU is always a concern. You tend to run physics on your CPU (except when you can throw it over to the GPU), you run AI on it which can get really really heavy in a modern game (The Last of Us is probably the current state of the art when it comes to individual agent AI, and they couldn't have more than 8 characters in a fight at the same time because it got too intense). The CPU also handles draw calls, which is basically how many objects you're rendering. Static objects can be batched (dynamic objects can kinda be batched too, but that gets messy) to reduce the draw calls, but Clandestine for example (which batches almost everything) tends to hover around 5-6000 draw calls, which means the CPU has to process that many rendered objects every single frame (so ~60 times per second).
Occlusion is the way you reduce the GPU load by filtering out objects that are hidden behind other objects before you draw the scene, but IIRC occlusion is done on the CPU, so you're kinda moving the problem from the GPU to the CPU. Still, it's pre-baked, so occlusion definitely helps.
Streaming is how you reduce GPU and CPU load by only loading in the objects that are relevant to the current area the player is in, and just keeping the rest of the scene handy on the harddrive until they're needed. Streaming is how modern games can actually exist in the first place, with levels that are larger than - let's say - the levels in Thief 3. Streaming is also, however, why you have to either go through the subway station or crawl through a weird little tunnel in an alley to get from one side of Detroit to the other in DXHR.
Unfortunately now it's 4 am and I'd rather go to bed than finish this post. Good night
There's three major components to performance: memory (RAM and VRAM), GPU, and CPU.
GPU is rarely a bottleneck on PC - it can be on consoles, but generally speaking graphics cards are really powerful, and really good at the very specific things they do. Crudely speaking, video cards crunch the polygons and the shaders. This is what most people think of as "graphics" - more numerous and more detailed objects on the screen, with fancier materials like 8-bit transparency, emission, reflection, refraction, parallax, animation, and so on. You can definitely have too many polygons and too many fancy shaders on screen at any time, but you'll probably fuck up the CPU or fill the memory before you manage that.
Memory is always an issue. Now adays a standard gaming rig has at least 8 GB of RAM and some have 16, so that's obviously tons, but the videocard has its own RAM, and that's typically more limited. Blowing the memory budget is painfully easy, but fixing it is usually pretty easy too - compress your assets as much as you can get away with, or stream a little more aggressively (more on that in a second).
CPU is always a concern. You tend to run physics on your CPU (except when you can throw it over to the GPU), you run AI on it which can get really really heavy in a modern game (The Last of Us is probably the current state of the art when it comes to individual agent AI, and they couldn't have more than 8 characters in a fight at the same time because it got too intense). The CPU also handles draw calls, which is basically how many objects you're rendering. Static objects can be batched (dynamic objects can kinda be batched too, but that gets messy) to reduce the draw calls, but Clandestine for example (which batches almost everything) tends to hover around 5-6000 draw calls, which means the CPU has to process that many rendered objects every single frame (so ~60 times per second).
Occlusion is the way you reduce the GPU load by filtering out objects that are hidden behind other objects before you draw the scene, but IIRC occlusion is done on the CPU, so you're kinda moving the problem from the GPU to the CPU. Still, it's pre-baked, so occlusion definitely helps.
Streaming is how you reduce GPU and CPU load by only loading in the objects that are relevant to the current area the player is in, and just keeping the rest of the scene handy on the harddrive until they're needed. Streaming is how modern games can actually exist in the first place, with levels that are larger than - let's say - the levels in Thief 3. Streaming is also, however, why you have to either go through the subway station or crawl through a weird little tunnel in an alley to get from one side of Detroit to the other in DXHR.
Unfortunately now it's 4 am and I'd rather go to bed than finish this post. Good night