ppy/osu-framework

`TextureAtlas` isn't using space efficiently

EVAST9919 opened this issue · 1 comments

Suppose we have 2 textures to be added into the atlas: one is wide and another is tall (images 1 & 2). Now if we want to add another texture - it should be very small to fit with the current implementation (3), otherwise new atlas will be created (4).
The issue is that the huge empty atlas area is being unused.

1 2 3 4
1 2 3 4

Implementing some sort of packing algorithm would probably be an overkill, but there should be at least some simple approach to make things better.

Relevant code
Test scene to play around with

The algorithm that's chosen here should also consider being able to remove areas from the atlas. This is something that blocks us from using these atlases for larger more-ephemeral textures like avatars and beatmap/carousel backgrounds.