amethyst / sheep

Modular and lightweight spritesheet packer 🐑
Other
89 stars 12 forks source link

Rounding to power-of-two dimensions #36

Open LPGhatguy opened 4 years ago

LPGhatguy commented 4 years ago

First, thanks for publishing sheep! It was heartening to see other people working on asset pipeline tooling for games in Rust.

In a tool my team is working on, we need to pack images into square power-of-two textures for some devices, preferring to waste a little space to get a square image instead of a perfectly packed non-square image.

When using Sheep's Max Rects packer with five 128x128 textures and a max size of 1024x1024, it produces a 128x640 texture like this:

22d80dd5ebdb967194b2d144f57eee3e

We'd prefer that it instead produce a 512x512 square texture with wasted space. On some platforms, would have to expand a 128x640 texture into a 1024x1024 texture, which is more wasteful!

We've found some other tools that mention the problem of PO2 textures with maxrects, but I'm not familiar enough with packing algorithms to know if it's feasible to enforce exactly.