How it all started
Texture packing is an essential process in game development, as it helps optimize performance by reducing the number of draw calls and utilize graphics memory more efficiently. There are lots of ways to pack textures using various softwares such as Photoshop and Substance Designer, but I find those time consuming and not very flexible. For this reason, I created this simple app to pack textures and unpack texture channels faster and more efficiently.
Here is a simple comparison:
- Photoshop: Takes time to launch, organize, and create a packed texture
- Substance Designer: More robust and faster than Photoshop, but still needs preparation for packing and not convinient much with templates either.
- Texture Packer: Launches blazing fast, works directly through drag and drop and allows you to selectively pack source image channels.
Features
Texture packer has 2 main features: Channel Packing and Channel Splitting.
Texture Packing
Allows you to pack multiple source images into a single texture with an option to select the channels of each image.
- Drag and drop images to the R, G, B and A source image slots. Unassigned slots will be white by default.
- Select the corresponding channels to pack for each source image.
- Select the export size for the output (color codes show if upscale or downscale will be applied).
- Export required textures by clicking the export button.
Channel Splitting
Splits the source image into RGBA channels to export them as separate images with your preferred size.
- Drag and drop an image to the source image slot.
- Observe the RGBA output channels for the source image.
- Select the export size for the outputs (color codes show if upscale or downscale will be applied).
- Export required textures by clicking the export button.
Upscale / Downscale Options
Texture packer allows you to either upscale or downscale source images to a specific size. This is useful when you want to pack textures with different resolutions into a single texture.
- Each source image displays the original size for your convinience.
- On output area, you can select the output size:
- Minimum selects the minimum scale of the source images and downscales the rest.
- Maximum selects the maximum scale of the source images and upscales the rest.
- Has an option to select other resolutions that are power of two.
- Output area also shows the output size with a color code:
- Blue: The output will be downscaled for some textures.
- Red: The output will be upscaled for some textures.
- Green: The output will be the same size as the source images.
This way you can ensure the output texture will be the same size as the source images, or you can choose to upscale or downscale the source images to a specific size. I am also planning to add AI upscaling in the future.
How To Use
Currently, I am still working on improving the performance and UX of the app. After battle-testing it with my own projects, I will release it for free to the public, including the source code.
Upcoming Features
- Automated builds for each new version for Windows, Mac and Linux.
- Improved performance, utilizing multi-threading for faster processing
- Better UX with more feedback and error handling
- AI upscaling for better quality textures