bevy_render::render_asset

Trait RenderAsset

Source
pub trait RenderAsset:
    Send
    + Sync
    + 'static
    + Sized {
    type SourceAsset: Asset + Clone;
    type Param: SystemParam;

    // Required method
    fn prepare_asset(
        source_asset: Self::SourceAsset,
        param: &mut SystemParamItem<'_, '_, Self::Param>,
    ) -> Result<Self, PrepareAssetError<Self::SourceAsset>>;

    // Provided methods
    fn asset_usage(_source_asset: &Self::SourceAsset) -> RenderAssetUsages { ... }
    fn byte_len(source_asset: &Self::SourceAsset) -> Option<usize> { ... }
}
Expand description

Describes how an asset gets extracted and prepared for rendering.

In the ExtractSchedule step the RenderAsset::SourceAsset is transferred from the “main world” into the “render world”.

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

Required Associated Types§

Source

type SourceAsset: Asset + Clone

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

Source

type Param: SystemParam

Specifies all ECS data required by RenderAsset::prepare_asset.

For convenience use the lifetimeless SystemParam.

Required Methods§

Source

fn prepare_asset( source_asset: Self::SourceAsset, param: &mut SystemParamItem<'_, '_, Self::Param>, ) -> Result<Self, PrepareAssetError<Self::SourceAsset>>

Prepares the RenderAsset::SourceAsset for the GPU by transforming it into a RenderAsset.

ECS data may be accessed via param.

Provided Methods§

Source

fn asset_usage(_source_asset: &Self::SourceAsset) -> RenderAssetUsages

Whether or not to unload the asset after extracting it to the render world.

Source

fn byte_len(source_asset: &Self::SourceAsset) -> Option<usize>

Size of the data the asset will upload to the gpu. Specifying a return value will allow the asset to be throttled via RenderAssetBytesPerFrame.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§