I wondering what the difference is between a sprite sheet and a texture atlas?
Aren't both the same? In a sprite sheet you have some Sprites and in a texture atlas you also have some sprites, so what's the difference?
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It only takes a minute to sign up.Sign up to join this community
A sprites-sheet (often refers to a large image that) is supposed to contain the animation frames of a specific 2d character or projectile in a game. You can almost think of it as the model of a 2d-character. It stores all the various animations created for a specific character.
A texture-atlas (is often taken to mean a large 2d image that) contains many textures. You can think of these as 2d images "painted" over 3d objects or otherwise applied to them as part of a shader to explain to the renderer (the part that converts 3d data into a 2d image) how they reflect light (normal map) or if there are any grooves, bumps or cracks on their surface (bump map) or possibly something else altogether like opacity and what not.
This term (texture atlas) will often be used in a
3d game environment. Any 3d object (e.g a weapon, a garbage can) or character can have a texture applied to it. Especially 3d levels may require multiple different textures for various walls and elements in the 3d scenery. All these textures can be contained accessibly and effectively in a single large image composed of many squares (subregions) devoted to a specific model.
Also, it may be important to note a texture atlas often contains character skins (character textures) and that the actual animation is (stating the obvious) not stored as 2d imagery as the animation in such cases is generally based on deformation of the mesh with tools like bones.
A sprite sheet and texture atlas are nearly the same. They are both bitmap image files (jpg, png, etc.) that contain multiple smaller images, usually in a grid, that are indexed and displayed using software / game engine that locates the individual images by their coordinates. They also both serve to simplify resource management and lower draw calls by only requiring the management and loading of a single file.
This sheet/atlas has both frame by frame animations of the character (typically used in a "sprite sheet") as well as images that will be tiled as a texture for the walls (a.k.a. a "texture atlas"):
The difference, it seems, is how they are typically implemented. As other answers state, a sprite sheet is often used in 2d games for animations or buttons, while the images in a texture atlas are used as textures for mesh objects.
While the context and what is displayed on the images matters, so does the way that the program manages and manipulates the images. An image file used as a sprite sheet in a game engine could play the individual images one after another to create an animation. But you could equally use the same image file as a texture atlas in the same engine as tiles on a mesh to create a wall of bricks.
This means there are more specific distinctions depending on how your software manages these two types of uses. In Unity for example, it is not so easy to convert an image applied to a GameObject from a sprite sheet to a Texture2D that can then be applied to a different GameObject as a texture. Which is how I arrived on this page via Google and decided to add this answer. :-)
I would say that texture atlas is the most general term: you can build a sprite sheet out of a texture atlas, but usually not the other way around.
The key distinctive assumption is the way texture coordinates are mapped to geometry: sprite sheets assume rectangular sub-regions, whereas texture atlases can be mapped to any geometrical surface.
If all geometrical surfaces mapped from the texture atlas happen to be 2D quads, you have a sprite sheet. If you change the mapping over time, or on a frame-by-frame basis, you can simulate 2D character animation.