Asset Processing and the Asset Pipeline

In Open 3D Engine (O3DE), an asset is a resource file, saved to disk, that is consumed by O3DE in some way. Assets include meshes, textures, animations, and audio files created in third-party applications, as well as assets created with O3DE’s tools and automated processes.

Most assets must undergo some form of processing to generate runtime optimized files that can be used by O3DE Editor and Launcher. For example, a texture stored as a .png file is processed and generates a file that can be streamed and efficiently stored in the memory of a video card (GPU). This end to end process is the Asset Pipeline.

In O3DE, assets can be divided into two categories; source assets and product assets. Source assets are portable assets created with third-party applications and with O3DE’s tools. These are the inputs for the Asset Pipeline. Product assets are the runtime optimized assets required by O3DE Editor and Launcher. These are the products of the Asset Pipeline.

Asset Pipeline overview

Asset Processor launches when you start O3DE Editor and runs as a background service while you work with O3DE. Asset Processor monitors a pre-configured set of scan directories for source assets. When Asset Processor detects a new or changed source asset, it determines what processing, if any, is required. It then queues a job to process the source asset. An Asset Builder for the source asset type generates a product asset. The runtime optimized product asset is stored in the Asset Cache for your project. The result is that your project’s assets are constantly kept up to date. New and updated assets are ready to use as quickly as possible, and are hot reloaded in O3DE Editor and Launcher during runtime. The assets used in O3DE Editor are the same assets used by your deployment runtime.

Below is a simple flowchart showing the process for a mesh file.

Mesh processing flowchart example

  1. Source assets are placed in scan directories that are monitored by Asset Processor.
  2. Asset Processor detects new or changed source assets.
  3. Asset Processor determines the content of the source asset and how to process it.
  4. Asset Processor creates a job to process the source asset.
  5. An Asset Builder generates runtime optimized product assets for specific deployment platforms.
  6. Asset Processor gathers information about the job and product assets and updates the Asset Cache.
  7. The product assets can be loaded by O3DE Editor and Launcher.

In the mesh processing diagram above, the .fbx file containing the mesh (source asset) produces an .azmodel and several .azbuffer files (product assets) in the Asset Cache. It’s common, particularly with art assets, for an Asset Builder to generate multiple product assets from a single source asset.