rafx_renderer/
renderer_pipeline_plugin.rs

1use crate::RendererLoadContext;
2use rafx_api::extra::upload::RafxTransferUpload;
3use rafx_api::RafxResult;
4use rafx_assets::AssetManager;
5use rafx_assets::AssetResource;
6use rafx_framework::graph::PreparedRenderGraph;
7use rafx_framework::render_features::{ExtractResources, RenderRegistryBuilder, RenderView};
8use rafx_framework::{ImageViewResource, RenderResources, ResourceArc};
9use std::path::PathBuf;
10
11pub trait RendererPipelinePlugin: Send + Sync {
12    fn plugin_name(&self) -> &'static str {
13        std::any::type_name::<Self>()
14    }
15
16    fn add_asset_paths(
17        &self,
18        _asset_paths: &mut Vec<PathBuf>,
19    ) {
20    }
21
22    fn configure_render_registry(
23        &self,
24        render_registry: RenderRegistryBuilder,
25    ) -> RenderRegistryBuilder {
26        render_registry
27    }
28
29    fn initialize_static_resources(
30        &self,
31        _renderer_load_context: &RendererLoadContext,
32        _asset_manager: &mut AssetManager,
33        _asset_resource: &mut AssetResource,
34        _extract_resources: &ExtractResources,
35        _render_resources: &mut RenderResources,
36        _upload: &mut RafxTransferUpload,
37    ) -> RafxResult<()> {
38        Ok(())
39    }
40
41    fn generate_render_graph(
42        &self,
43        asset_manager: &AssetManager,
44        swapchain_image: ResourceArc<ImageViewResource>,
45        rotating_frame_index: usize,
46        main_view: RenderView,
47        extract_resources: &ExtractResources,
48        render_resources: &RenderResources,
49    ) -> RafxResult<PreparedRenderGraph>;
50
51    fn finish_frame(
52        &self,
53        _render_resources: &RenderResources,
54    ) {
55    }
56
57    fn prepare_renderer_destroy(
58        &self,
59        _render_resources: &RenderResources,
60    ) -> RafxResult<()> {
61        Ok(())
62    }
63}