Skip to content

Texture atlas preprocessing & the art production pipeline. #13713

@brandon-reinhart

Description

@brandon-reinhart

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-AssetsLoad files from disk to use for things like images, models, and soundsA-EditorGraphical tools to make Bevy gamesA-RenderingDrawing game state to the screenC-FeatureA new feature, making something new possibleS-Needs-DesignThis issue requires design work to think about how it would best be accomplished

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions