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 SystemParamItem<'_, '_, Self::Param>
    ) -> 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§

source

type ExtractedAsset: Send + Sync + 'static

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

source

type PreparedAsset: Send + Sync + 'static

The GPU-representation of the asset.

source

type Param: SystemParam

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

Required Methods§

source

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

Converts the asset into a RenderAsset::ExtractedAsset.

source

fn prepare_asset( extracted_asset: Self::ExtractedAsset, param: &mut SystemParamItem<'_, '_, Self::Param> ) -> 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§