Skip to content

A header-only, very efficient 2D rectangle packing library. Used in Assassin's Creed and Skydio drones. 2 scientific references.

License

Notifications You must be signed in to change notification settings

TeamHypersomnia/rectpack2D

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Check out this modern re-implementation of the library.

rectpack2D

Tiny rectangle packing library allowing multiple, dynamic-sized bins.

The code is ugly, I know, I was learning the language at the time. Nevertheless, it's been years since I used it for the first time in my open-source shooter Hypersomnia. No crashes so far and works quite fast.

Copied from: http://gamedev.stackexchange.com/a/34193/16982

This algorithm should meet every gamedeving needs. It's very, very efficient, lightweight, and I've myself improved it with searching the best possible sorting function (whether it's by area, perimeter, width, height, max(width, height)) and the best possible bin size so you don't have to hardcode the width/height yourself anymore.

It's also easy to design it so it automatically portions out your rectangles into more bins if one with fixed maximum size is not sufficient, so you probably want to pass all your textures to it and pass a maximum texture size as the value for maximum bins' dimension, and BAM ! You have your texture atlases ready to be uploaded to GPU. Same goes for font packing.

400 random rectangles, automatically divided into 3 bins of maximum 400x400 size: enter image description here

About

A header-only, very efficient 2D rectangle packing library. Used in Assassin's Creed and Skydio drones. 2 scientific references.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published