-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Speed up converter texture packing with Cython #1371
Labels
area: assets
Involved with assets (images, sounds, ...)
good first issue
Suitable for newcomers
improvement
Enhancement of an existing component
lang: cython
Implemented using Cython code
Comments
heinezen
added
improvement
Enhancement of an existing component
lang: python
Done in Python code
area: assets
Involved with assets (images, sounds, ...)
good first issue
Suitable for newcomers
labels
Jan 22, 2021
heinezen
added
lang: cython
Implemented using Cython code
and removed
lang: python
Done in Python code
labels
Sep 8, 2023
Looking in the |
@fabiobarkoski It has been converted to Cython but none of the points in the ssue have been solved completely afaik. |
Can I try to work on it? But I'll need some guidance :) |
You absolutely can :) Although it might be a bit harder than medium difficulty if you don't work with Cython much. Just saying :D |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area: assets
Involved with assets (images, sounds, ...)
good first issue
Suitable for newcomers
improvement
Enhancement of an existing component
lang: cython
Implemented using Cython code
Required skills: Cython
Difficulty: Medium
Animation frames from AoE2 graphics files are packed into a texture atlas by the openage converter. We use bin packing to find the optimal arrangement (= smallest atlas dimensions) of the frames in the atlas. Bin packing becomes computationally intensive if a lot of frames are packed (looking at you Definitive Edition), so we want to optimize the algorithm as much as possible.
The goal of this issue is to speed up the bin packing implemented here using Cython. The most important methods to cythonize are
pack()
andfactor()
, since they are responsible for the packing logic. Ideally, these functions should contain as little Python overhead as possible.Additional optimization might be possible such as:
pack()
gets passed a list of frame objects, but technically only width, height and index of a frame are needed.factor()
texture_merge.pyx
, the function initiating the binpacking, could also use optimization for merging the individual frames into the atlas using the packer settings.You can test your changes with the singlefile media converter.
Further Reading
The text was updated successfully, but these errors were encountered: