use static dispatch in add_resource_provider
This commit is contained in:
parent
7d3f271cfa
commit
440d883322
@ -23,7 +23,7 @@ fn main() {
|
|||||||
.setup_world(setup)
|
.setup_world(setup)
|
||||||
.setup_render_graph(|builder, pipeline_storage, shader_storage| {
|
.setup_render_graph(|builder, pipeline_storage, shader_storage| {
|
||||||
builder
|
builder
|
||||||
.add_resource_provider(Box::new(UniformResourceProvider::<MyMaterial>::new()))
|
.add_resource_provider(UniformResourceProvider::<MyMaterial>::new())
|
||||||
.add_pipeline_to_pass(
|
.add_pipeline_to_pass(
|
||||||
resource_name::pass::MAIN,
|
resource_name::pass::MAIN,
|
||||||
pipeline_storage,
|
pipeline_storage,
|
||||||
|
@ -147,13 +147,13 @@ impl AppBuilder {
|
|||||||
.add_draw_target(MeshesDrawTarget::default())
|
.add_draw_target(MeshesDrawTarget::default())
|
||||||
.add_draw_target(AssignedMeshesDrawTarget::default())
|
.add_draw_target(AssignedMeshesDrawTarget::default())
|
||||||
.add_draw_target(UiDrawTarget::default())
|
.add_draw_target(UiDrawTarget::default())
|
||||||
.add_resource_provider(Box::new(CameraResourceProvider::default()))
|
.add_resource_provider(CameraResourceProvider::default())
|
||||||
.add_resource_provider(Box::new(Camera2dResourceProvider::default()))
|
.add_resource_provider(Camera2dResourceProvider::default())
|
||||||
.add_resource_provider(Box::new(LightResourceProvider::new(10)))
|
.add_resource_provider(LightResourceProvider::new(10))
|
||||||
.add_resource_provider(Box::new(UiResourceProvider::new()))
|
.add_resource_provider(UiResourceProvider::new())
|
||||||
.add_resource_provider(Box::new(MeshResourceProvider::new()))
|
.add_resource_provider(MeshResourceProvider::new())
|
||||||
.add_resource_provider(Box::new(UniformResourceProvider::<StandardMaterial>::new()))
|
.add_resource_provider(UniformResourceProvider::<StandardMaterial>::new())
|
||||||
.add_resource_provider(Box::new(UniformResourceProvider::<LocalToWorld>::new()))
|
.add_resource_provider(UniformResourceProvider::<LocalToWorld>::new())
|
||||||
.add_forward_pass()
|
.add_forward_pass()
|
||||||
.add_forward_pipeline(pipeline_storage, shader_storage)
|
.add_forward_pipeline(pipeline_storage, shader_storage)
|
||||||
.add_ui_pipeline(pipeline_storage, shader_storage)
|
.add_ui_pipeline(pipeline_storage, shader_storage)
|
||||||
|
@ -10,7 +10,7 @@ pub trait ForwardPassBuilder {
|
|||||||
|
|
||||||
impl ForwardPassBuilder for RenderGraphBuilder {
|
impl ForwardPassBuilder for RenderGraphBuilder {
|
||||||
fn add_forward_pass(self) -> Self {
|
fn add_forward_pass(self) -> Self {
|
||||||
self.add_resource_provider(Box::new(FrameTextureResourceProvider::new(
|
self.add_resource_provider(FrameTextureResourceProvider::new(
|
||||||
resource_name::texture::DEPTH,
|
resource_name::texture::DEPTH,
|
||||||
TextureDescriptor {
|
TextureDescriptor {
|
||||||
size: wgpu::Extent3d {
|
size: wgpu::Extent3d {
|
||||||
@ -25,7 +25,7 @@ impl ForwardPassBuilder for RenderGraphBuilder {
|
|||||||
format: wgpu::TextureFormat::Depth32Float,
|
format: wgpu::TextureFormat::Depth32Float,
|
||||||
usage: wgpu::TextureUsage::OUTPUT_ATTACHMENT,
|
usage: wgpu::TextureUsage::OUTPUT_ATTACHMENT,
|
||||||
},
|
},
|
||||||
)))
|
))
|
||||||
.add_pass(
|
.add_pass(
|
||||||
resource_name::pass::MAIN,
|
resource_name::pass::MAIN,
|
||||||
PassDescriptor {
|
PassDescriptor {
|
||||||
|
@ -86,8 +86,13 @@ impl RenderGraphBuilder {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_resource_provider(mut self, resource_provider: Box<dyn ResourceProvider>) -> Self {
|
pub fn add_resource_provider<T>(mut self, resource_provider: T) -> Self
|
||||||
self.render_graph.resource_providers.push(resource_provider);
|
where
|
||||||
|
T: ResourceProvider + 'static,
|
||||||
|
{
|
||||||
|
self.render_graph
|
||||||
|
.resource_providers
|
||||||
|
.push(Box::new(resource_provider));
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user