Since the last patch we have been hard at work optimizing and upgrading the graphics in Last Epoch. Today I’d like to share a few of the changes that we have made so far. Many framerate issues were caused by either grass or real-time lighting.
To resolve the bad performance with shadows we have begun the process for baking shadows into the levels, as well as swapping our real-time shadows to a new solution that uses a Monte Carlo method to blend hard shadows.
The main advantage of baked effects is they are entirely calculated on our end, rather than being created by your computer. This means that baked effects are much more performant - but the downside is that they cannot adapt to changing conditions in the game, making them better suited for objects that don’t move. This allows us to make the shadows on Medium look as good as the shadows previously did on Ultra, while performing better.
This grass near the campfire demonstrates our new shadows.
We also did not want to compromise on the grass used in Last Epoch, but there were serious performance issues. The grass system now uses multithreading, which has drastically reduced the impact grass has on frame rate, while maintaining quality. Some other graphics updates include our new reflections system and texture streaming.
The old reflection system was based on a full 3D image of the scene from a single point in the middle of the map. This meant that the reflections were very inaccurate due to the sheer size of the volume it was trying to reflect from one point. The new reflection system uses many smaller reflection images placed at intervals throughout the scene.
The texture streaming system replaces our old texture loading system. The old system used to load all the textures required for a zone when you entered it, then unloaded the textures when you changed to a new zone. This is really bad for loading and memory usage, as the game was keeping all textures from the the entire zone loaded in memory. The new system will load in textures as they are requested in-game and unload textures slowly while they are not being used. This leads to lower memory usage and quicker load times.
Another big graphics change is that we added support for changing the resolution and display mode from in game, as well as in the launcher. We now support Windowed, Exclusive Fullscreen and Fullsceen Windowed (borderless). We are also working on adding support for newer graphics APIs, but this is still in development.
The graphics system for some time now has had its own config file. In the next patch we have updated it to also contains the appropriate values that can be set, which will allow for easier manual editing of the file if necessary.
Our graphics .ini file will show you which values are supported.
With so many changes happening, we have also changed some graphics settings and reorganized them into two categories, Basic and Advanced. The most notable change is that the quality setting is now Master Quality, which will automatically change most other settings and act as a preset. You can still modify individual settings at will.