bevyengine / bevyengine/bevy

Texture atlas preprocessing & the art production pipeline.

Open
#13,713 4 comments 2 reactions 0 assignees View on GitHub
A-Assets A-Editor A-Rendering C-Feature S-Needs-Design
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 16h
Merged PRs (30d)
171

Description

In order to make Bevy a tier 1 engine for 2D games, a better texture atlas art production pipeline is needed.

Requirements:

- It should be possible to drop texture atlas source art into a directory and have the asset preprocessor rebuild the atlas.
- In this sense, the individual source art is uncooked and the atlas is a cooked (shippable) asset.
- More texture atlas services should be exposed through this preprocessing (and the underlying API).
- Preprocessing should be resilient to bad data, communicating the nature of the error without panics. Cooking content should be a viable runtime development activity by non-programmers on the team.

Additional Features:

- The atlas preprocessor should be configurable.
- Option: Trim whitespace. To pack efficiently, the asset preprocessor should be able to trim whitespace and record in metadata the amount trimmed so that the original UVs can be reconstructed.
- Option: Rotate images. To pack efficiently, the asset preprocessor should be able to rotate images 90deg and record in the metadata the rotation bit so that the original UVs can be reconstructed.
- Option: Paginated atlases. It should be possible to specify the max texture size of an atlas and, if the source art exceeds this arrangement, produce additional atlas pages. Meta data would track this and use the appropriate texture binding at render time.
- Option: Resampling rules. It may be useful to be able to specify resampling rules for input images before they are written to the atlas.

Many of these are features of the Esoteric atlas packer, which is very good.

Contributor guide

Open the contributing guide

Research direction

No files, tests, or entry points are named. Start by locating the existing texture atlas asset preprocessing and underlying API, then determine how source art, cooked atlases, metadata, and errors are currently handled. Done means the proposed pipeline covers rebuilding, configuration, metadata, pagination, and resilient error reporting.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
computer-graphics, game-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.