pub trait RenderAsset: Asset {
    type ExtractedAsset: Send + Sync + 'static;
    type PreparedAsset: Send + Sync + 'static;
    type Param: SystemParam;

    // Required methods
    fn extract_asset(&self) -> Self::ExtractedAsset;
    fn prepare_asset(
        extracted_asset: Self::ExtractedAsset,
        param: &mut <Self::Param as SystemParam>::Item<'_, '_>
    ) -> Result<Self::PreparedAsset, PrepareAssetError<Self::ExtractedAsset>>;
}
Expand description

Describes how an asset gets extracted and prepared for rendering.

In the ExtractSchedule step the asset is transferred from the “main world” into the “render world”. Therefore it is converted into a RenderAsset::ExtractedAsset, which may be the same type as the render asset itself.

After that in the RenderSet::Prepare step the extracted asset is transformed into its GPU-representation of type RenderAsset::PreparedAsset.

Required Associated Types§

type ExtractedAsset: Send + Sync + 'static

The representation of the asset in the “render world”.

type PreparedAsset: Send + Sync + 'static

The GPU-representation of the asset.

type Param: SystemParam

Specifies all ECS data required by RenderAsset::prepare_asset. For convenience use the lifetimeless SystemParam.

Required Methods§

fn extract_asset(&self) -> Self::ExtractedAsset

Converts the asset into a RenderAsset::ExtractedAsset.

fn prepare_asset( extracted_asset: Self::ExtractedAsset, param: &mut <Self::Param as SystemParam>::Item<'_, '_> ) -> Result<Self::PreparedAsset, PrepareAssetError<Self::ExtractedAsset>>

Prepares the extracted asset for the GPU by transforming it into a RenderAsset::PreparedAsset. Therefore ECS data may be accessed via the param.

Implementors§