diff --git a/content/docs/user-guide/assets/asset-types.md b/content/docs/user-guide/assets/asset-types.md index 1b9819ab9a5..8c1aae2615e 100644 --- a/content/docs/user-guide/assets/asset-types.md +++ b/content/docs/user-guide/assets/asset-types.md @@ -6,26 +6,46 @@ weight: 700 toc: true --- -The table below describes some of the most common source asset types supported by the **Asset Pipeline** in **Open 3D Engine (O3DE)** and lists the product assets generated by **Asset Processor** for each source asset type. +The table below describes some of the most common source asset types supported by the **Asset Pipeline** in **Open 3D Engine (O3DE)** and lists the product assets generated by **Asset Processor** for each source asset type. The table also lists which builders process specific source asset types, and the location of the builders in the source code. Builders can be located in the O3DE engine code, Gems, or project code. {{< note >}} Some source assets are simply copied to the **Asset Cache**, so the product asset type is identical to the source asset type. {{< /note >}} + +## Asset Builders -| Source Asset | Description | Product Assets | -| - | - | - | -| `.assetinfo` | A sidecar file that contains an asset processing configuration and settings for a source asset. `.assetinfo` files are source dependencies. If a `.assetinfo` file is modified, its corresponding source asset is reprocessed. | `.assetinfo` | -| `.bmp`
`.gif`
`.jpg`
`.jpeg`
`.png`
`.tga`
`.tif`
`.tiff` | Image file formats commonly used as textures for materials and UI elements. Image source assets generate a streaming image product asset and might generate several mipmap product assets if mipmap generation is enabled. | `.streamingimage`
`.imagemipchain` | -| `.dds` | A specialized compressed image format most often used for normal maps and texture atlases. | `.streamingimage` | -| `.exr` | High dynamic range (HDR) images used for Image Based Lighting (IBL) and skyboxes. HDR image source assets generate a streaming image product asset and might generate several mipmap product assets if mipmap generation is enabled. | `.streamingimage`
`.imagemipchain` | -| `.fbx` | A scene file format that stores complete 3D scenes including meshes, skeletons, skin weights, animation, and materials. 3D scene source assets generate various product assets depending on the contents of the source asset and the data specified for processing. 3D scene files usually contain at least one mesh, and each mesh can produce over a dozen product assets including a model, a buffer for each of the model's vertex attributes, materials, and PhysX meshes. | `.azmodel`
`.azlod`
`.azbuffer`
`.actor`
`.skinmeta`
`.motion`
`.pxmesh`
`.azmaterial` | -| `.gltf`
`.glb` | An open source scene transport format that stores complete 3D scenes including meshes, skeletons, skin weights, animation, textures, and materials. 3D scene source assets generate various product assets depending on the contents of the source asset and the data specified for processing. 3D scene files usually contain at least one mesh, and each mesh can produce over a dozen product assets including a model, a buffer for each of the model's vertex attributes, materials, and PhysX meshes. | `.azmodel`
`.azlod`
`.azbuffer`
`.actor`
`.skinmeta`
`.motion`
`.pxmesh`
`.azmaterial` | -| `.gradimagesettings` | Stores properties and values that define an image gradient. | `.gradimagesettings` | -| `.inputbindings` | Binds input from keyboards, gamepads, touchscreens, and other devices to runtime events. | `.inputbindings` | -| `.material` | Stores the properties and values, including texture assignments, that define the look of a surface for rendering. | `.azmaterial` | -| `.physmaterial` | Stores properties and values that define the physical properties of a surface for simulation. | `.physmaterial` | -| `.postFXLayerCategories` | A list of key value pairs that define layers for Post FX assignments. | `.postFXLayerCategories` | -| `.prefab` | A spawnable asset container that can include entities and/or other prefabs. | `.spawnable` | -| `.scriptcanvas` | A Script Canvas graph created with **Script Canvas Editor**, which is O3DE's visual scripting tool. | `.scriptcanvas_compiled`
`.scriptcanvas_fn_compiled`
`.luac` | -| `.shader` | A program written in O3DE's shader language, **Amazon Shading Language (AZSL)**, that calculates the shading of a surface. Shader assets are compiled when processed and produce several intermediate files and product assets for each supported target platform. | `.azshader`
`.azshadervariant`
`.hlsl`
`.json`
| -| `.stl` | A simple mesh format used in computer aided design (CAD) and 3D printing. Unlike other 3D scene formats, `.stl` assets can only contain a simple model with limited vertex attributes. | `.azmodel`
`.azlod`
`.azbuffer`
`.pxmesh` | \ No newline at end of file +| Source Asset | Builder | Builder Location | Description | Product Assets | +| - | - | - | - | - | +| `.animgraph` | AnimGraphBuilderWorker | [EMotionFX Gem](https://github.com/o3de/o3de/tree/development/Gems/EMotionFX) | [Animation graphs](docs/user-guide/visualization/animation/character-editor/concepts-and-terms) define animation behavior for characters. | `.animgraph` | +| `.attimage`, `.azasset`, `.azbuffer` | Any Asset Builder | [Atom Gem](https://github.com/o3de/o3de/blob/development/Gems/Atom/RPI/Code/Source/RPI.Builders/Common/AnyAssetBuilder.h) | - | Same as the source asset, `.attimage` generates an `.attimage` product asset. | +| `.texatlas` | Atlas Worker Builder | [Texture Atlas Gem](https://github.com/o3de/o3de/blob/development/Gems/TextureAtlas/Code/Source/Editor/AtlasBuilderWorker.h) | [Texture atlases](docs/user-guide/interactivity/user-interface/canvases/texture-atlases) are used to reduce draw calls in user interfaces. | `.texatlasidx` and `.streamingimage` | +| `.bmp`, `.dds`, `.exr`, `.gif`, `.jpeg`, `.jpg`, `.png`, `.tga`, `.tiff`, `.tif` | Atom Image Builder | [Atom Gem](https://github.com/o3de/o3de/blob/development/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageBuilderComponent.h) | Processes images for use in O3DE, primarily for use as [Textures](docs/user-guide/assets/texture-settings/texture-assets). | Product assets generated depend on settings, but will generally include `.imagemipchain` and `.streamingimage`. | +| `.materialtype`, `.material` | Atom Material Builder | [Atom Gem](https://github.com/o3de/o3de/blob/development/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.h) | [Materials](docs/atom-guide/look-dev/materials) contain properties to define how objects are rendered. | `.materialtype` outputs `.material` and `.azmaterialtype` products. `.material` outputs `.azmaterial` products. | +| `.resourcepool` | Atom Resource Pool Asset Builder | [Atom Gem](https://github.com/o3de/o3de/blob/development/Gems/Atom/RPI/Code/Source/RPI.Builders/ResourcePool/ResourcePoolBuilder.h) | - | `.pool` or `.streamingimagepool` | +| `.benchmarksettings`, `.benchmark` | Benchmark Asset Worker Builder | [LmbrCentral Gem](https://github.com/o3de/o3de/blob/development/Gems/LmbrCentral/Code/Source/Builders/BenchmarkAssetBuilder/BenchmarkAssetBuilderComponent.h) | - | - | +| `.blast` | Blast Scene Builder | [Blast Gem](https://github.com/o3de/o3de/blob/development/Gems/Blast/Editor/Scripts/blast_asset_builder.py) | - | `.blast`, `.assetinfo.generated` | +| `.cfg` | CFG Builder Worker | [LmbrCentral Gem](https://github.com/o3de/o3de/blob/development/Gems/LmbrCentral/Code/Source/Builders/CopyDependencyBuilder/CfgBuilderWorker/CfgBuilderWorker.h) | - | `.cfg` | +| `.emfxworkspace` | EmfxWorkspaceBuilderDescriptor | [LmbrCentral Gem](https://github.com/o3de/o3de/blob/development/Gems/LmbrCentral/Code/Source/Builders/CopyDependencyBuilder/EmfxWorkspaceBuilderWorker/EmfxWorkspaceBuilderWorker.h) | - | `.emfxworkspace` | +| `.fontfamily`, `.font` | FontBuilderWorker | [LmbrCentral Gem](https://github.com/o3de/o3de/blob/development/Gems/LmbrCentral/Code/Source/Builders/CopyDependencyBuilder/FontBuilderWorker/FontBuilderWorker.h) | [Fonts](docs/user-guide/interactivity/user-interface/fonts) are used to render text. | Same as the source asset, `.font` generates a `.font` product asset. | +| `.tfx` | HairAssetBuilder | [AtomTressFX Gem](https://github.com/o3de/o3de/blob/development/Gems/AtomTressFX/Code/Builders/HairAssetBuilder.h) | [TressFX](docs/user-guide/gems/reference/rendering/amd/atom-tressfx) provides realistic hair and fur simulation. | `.tfxhair` | +| `.lua` | Lua Worker Builder | [LmbrCentral Gem](https://github.com/o3de/o3de/blob/development/Gems/LmbrCentral/Code/Source/Builders/LuaBuilder/LuaBuilderWorker.h) | [Lua](docs/user-guide/scripting/lua) is a scripting language that can be used to author logic for your project. | `.luac` | +| `.mock` | Mock Builder | [Automated Testing Project](https://github.com/o3de/o3de/blob/development/AutomatedTesting/Gem/PythonTests/PythonAssetBuilder/mock_asset_builder.py) | This builder assists in automated testing, run with the AutomatedTesting project. It's a useful example for teams that wish to author builders in Python for custom asset types in their own project. | `.mock_asset` | +| `.motionset` | MotionSetBuilderWorker | [EmotionFX Gem](https://github.com/o3de/o3de/blob/development/Gems/EMotionFX/Code/EMotionFX/Pipeline/EMotionFXBuilder/MotionSetBuilderWorker.h) | A [motion set](docs/user-guide/visualization/animation/character-editor/concepts-and-terms) contains a list of motions. | `.motionset` | +| `.pass` | Pass Asset Builder | [Atom Gem](https://github.com/o3de/o3de/blob/development/Gems/Atom/RPI/Code/Source/RPI.Builders/Pass/PassBuilder.h) | [Passes](docs/atom-guide/dev-guide/passes) are logical groupings of render work with a defined input and output. | `.pass` | +| `.precompiledshader` | Precompiled Shader Builder | [Atom Gem](https://github.com/o3de/o3de/blob/development/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h) | - | `.azshader` | +| `.prefab` | Prefab Builder | [Prefab Gem](https://github.com/o3de/o3de/blob/development/Gems/Prefab/PrefabBuilder/PrefabBuilderComponent.h) | [Prefabs](docs/user-guide/interactivity/prefabs) are a foundational element for building an O3DE project, a prefab is a collection of entities. | `.spawnable` | +| `.ts` | Qt Translation File Builder | [LmbrCentral Gem](https://github.com/o3de/o3de/blob/development/Gems/LmbrCentral/Code/Source/Builders/TranslationBuilder/TranslationBuilderComponent.h) | Qt translation files. Qt is only enabled in Editor tools, so these can be useful for translating tools, but not projects, to different languages. | `.qm` | +| `.fbx`, `.glb`, `gltf`, `stl` | Scene Builder | [SceneProcessing Gem](https://github.com/o3de/o3de/blob/development/Gems/SceneProcessing/Code/Source/SceneBuilder/SceneBuilderWorker.h) | [Scene files](docs/user-guide/assets/scene-settings/scene-format-support) are used to define 3D content, such as meshes and animations. | `.motion`, `.procprefab`, `.azmaterial`, `.azbuffer`, `.azlod`, `.azmodel`, `.blast_chunks`, `.pxmesh`, `.skinmeta`, `.actor` | +| `.xmlschema` | SchemaBuilderWorker | [LmbrCentral Gem](https://github.com/o3de/o3de/blob/development/Gems/LmbrCentral/Code/Source/Builders/CopyDependencyBuilder/SchemaBuilderWorker/SchemaBuilderWorker.h) | XML Schema files assist with finding product dependencies in XML files. The XML Schema Editing tool in O3DE Editor can define patterns to match XML format files, and patterns search for product dependencies in those files. | `.xmlschema` | +| `.scriptcanvas` | Script Canvas Builder | [ScriptCanvas Gem](https://github.com/o3de/o3de/blob/development/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilderWorker.h) | [Script Canvas](docs/user-guide/scripting/script-canvas) is a general purpose, visual scripting environment for O3DE. | `.luac`, `.scriptcanvas_compiled`, `.scriptcanvas_fn_compiled` | +| `.scriptevents` | Script Events Builder | [ScriptEvents Gem](https://github.com/o3de/o3de/blob/development/Gems/ScriptEvents/Code/Builder/ScriptEventsBuilderWorker.h) | [Script Events](docs/user-guide/scripting/script-events) allow scripts to communicate with each other. | `.scriptevents` | +| `.seed` | SeedBuilderDescriptor | [LmbrCentral Gem](https://github.com/o3de/o3de/blob/development/Gems/LmbrCentral/Code/Source/Builders/DependencyBuilder/DependencyBuilderWorker.h) | [Seed asset lists](docs/user-guide/packaging/asset-bundler) are used in the asset bundling process, which is how content is packaged up for distributing projects to end users. | `.seed` | +| `engine.json` | Settings Registry Builder | [Asset Processor](https://github.com/o3de/o3de/blob/development/Code/Tools/AssetProcessor/native/InternalBuilders/SettingsRegistryBuilder.h) | - | `engine.json`, `.setreg` | +| `.shader` | Shader Asset Builder | [Atom Gem](https://github.com/o3de/o3de/blob/development/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h) | [Shaders](docs/atom-guide/dev-guide/shaders) are used by the rendering system to determine how 3D geometry is rendered. | `.json`, `.azslin`, `.azshadervariant`, `.hlsl` | +| `.shadervariantlist` | Shader Variant Asset Builder | [Atom Gem](https://github.com/o3de/o3de/blob/development/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h) | [Shader variants](docs/atom-guide/dev-guide/shaders/azsl/shader-variant-options) are shader constants that are only used in conditional statements that can be statically optimized. | `.azshadervarianttree`, `.azshadervariant` | +| `.uicanvas` | UI Canvas Builder | [LyShine Gem](https://github.com/o3de/o3de/blob/development/Gems/LyShine/Code/Pipeline/LyShineBuilder/UiCanvasBuilderWorker.h) | [UI Canvas](docs/user-guide/interactivity/user-interface) files define two dimensional visual elements for your project, usually used for user interfaces. | `.uicanvas` | +| `.ent`, `.vegdescriptorlist`, and anything matching the regular expression:`(?!.*libs\/gameaudio\/).*\.xml` | XmlBuilderWorker | [LmbrCentral Gem](https://github.com/o3de/o3de/blob/development/Gems/LmbrCentral/Code/Source/Builders/CopyDependencyBuilder/XmlBuilderWorker/XmlBuilderWorker.h) | XML files are copied directly to the cache as product assets. The XML Builder provides an entry point for scanning XML files for product dependencies, used during [Asset Bundling](docs/user-guide/packaging/asset-bundler), for packaging up content when distributing projects to end users. | `.xml` | + +## Copy Jobs + +A copy job is used for assets that have no additional processing requirements, they copy the source asset directly to the asset cache. In these cases, the product asset is identical to the source asset. Copy jobs are defined via the settings registry, the engine's default copy jobs can be found in [AssetProcessorPlatformConfig.setreg](https://github.com/o3de/o3de/blob/development/Registry/AssetProcessorPlatformConfig.setreg).