Texture Streaming in Echoes of the Atlas
There has been a bit of confusion about this recently, so I felt it was best to explain what Texture Streaming is for, how it helps, and further improvements we will make based on recent feedback.
Historically, Path of Exile's engine would drop a lot of frames (causing a bad stutter) whenever a new asset needed to be rendered but hadn't been loaded yet. So for example, you used a skill for the first time, it'd stutter for a bit while loading the relevant shaders and textures from the hard drive. We mitigated this somewhat with various preloading systems where the game starts to load assets in advance once it knows you're about to encounter them, but it wasn't really a perfect solution.
Improvements to the engine over the last year have had a focus on trying as hard as possible to maintain a stable frame rate, regardless of what is happening. This involves being able to draw a frame even if certain assets aren't loaded yet. The simplest example of this is that if the shader for something isn't loaded yet, then the game doesn't know how to draw it at all, so nothing is drawn. Shaders are given very high priority and so it's quite rare to see something flash into existence, but it can happen occasionally. We feel that this compromise is better than having the whole game client stall until that asset is loaded.
While shaders are fast to load, textures can be a lot slower, as they are often hundreds of kilobytes in size. If no texture was loaded, then the game client would just render the object entirely in black. This didn't look great, but we also didn't want to have the entire client stall while loading the texture. So our compromise was to generate a pack of blurry low-resolution versions of all the textures in the game, make sure it's preloaded right when you launch the client, and then use these stand-in textures while the full ones are loaded.
This "Texture Streaming" tech was added in Echoes of the Atlas, and its goal is to maintain a stable frame rate (never stuttering while assets are loaded) and still drawing something relatively close to the full-detail version of the asset so that you can play while loading is finishing. Further improvements to this system were made in today's 3.13.1 patch with the goal of not consuming too many CPU cores on slower systems.
While it's acceptable for assets to briefly be drawn with blurry-textures during gameplay when they first appear (and is far better than a stall, drawing nothing, or drawing pure blackness), it's not great at all when you load into an area and everything looks terrible for a period of time. We are trying to re-engineer stuff so that the initial loading screen covers the initial asset loading, as it should do. This should ideally mean the new system is only upside - a stable frame rate and no sustained period of terrible texture load-in for some users. We don't have a timeline for this currently but it's hopefully like a week or two. Rest assured that we're going to keep working on this until it's a good experience.
In addition to the above explanation, it's also important to understand that Texture Streaming is the backbone of an ongoing memory usage improvement project that will help make Path of Exile 2 perform well with its higher-detail assets.
There are various other reports of bad performance that are being attributed to Texture Streaming but we believe are not related. Those performance problems are real, and we are investigating them on a case-by-case basis, but they are being conflated with texture streaming when they are actually just unrelated engine issues that we need to identify and fix.
on Jan 27, 2021, 10:11:46 PM
Grinding Gear Games