mirror of
https://github.com/bevyengine/bevy
synced 2024-11-21 20:23:28 +00:00
local -> material bind group layout
This commit is contained in:
parent
86a467f0f3
commit
62364660de
5 changed files with 20 additions and 23 deletions
|
@ -20,21 +20,10 @@ pub struct Application
|
||||||
|
|
||||||
impl Application {
|
impl Application {
|
||||||
fn add_default_passes(&mut self) {
|
fn add_default_passes(&mut self) {
|
||||||
let local_bind_group_layout =
|
|
||||||
self.render_graph.data.device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
|
|
||||||
bindings: &[wgpu::BindGroupLayoutBinding {
|
|
||||||
binding: 0,
|
|
||||||
visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT,
|
|
||||||
ty: wgpu::BindingType::UniformBuffer { dynamic: false },
|
|
||||||
}],
|
|
||||||
});
|
|
||||||
|
|
||||||
self.render_graph.add_render_resource_manager(Box::new(render_resources::MaterialResourceManager));
|
self.render_graph.add_render_resource_manager(Box::new(render_resources::MaterialResourceManager));
|
||||||
self.render_graph.add_render_resource_manager(Box::new(render_resources::LightResourceManager::new(10)));
|
self.render_graph.add_render_resource_manager(Box::new(render_resources::LightResourceManager::new(10)));
|
||||||
self.render_graph.add_render_resource_manager(Box::new(render_resources::CameraResourceManager));
|
self.render_graph.add_render_resource_manager(Box::new(render_resources::CameraResourceManager));
|
||||||
|
|
||||||
self.render_graph.data.set_bind_group_layout("local", local_bind_group_layout);
|
|
||||||
|
|
||||||
let depth_format = wgpu::TextureFormat::Depth32Float;
|
let depth_format = wgpu::TextureFormat::Depth32Float;
|
||||||
self.render_graph.set_pass("forward", Box::new(ForwardPass::new(depth_format)));
|
self.render_graph.set_pass("forward", Box::new(ForwardPass::new(depth_format)));
|
||||||
self.render_graph.set_pipeline("forward", "forward", Box::new(ForwardPipeline::new()));
|
self.render_graph.set_pipeline("forward", "forward", Box::new(ForwardPipeline::new()));
|
||||||
|
|
|
@ -66,11 +66,10 @@ impl Pipeline for ForwardPipeline {
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: fix this inline "local"
|
let material_bind_group_layout = render_graph.get_bind_group_layout(render_resources::MATERIAL_BIND_GROUP_LAYOUT_NAME).unwrap();
|
||||||
let local_bind_group_layout = render_graph.get_bind_group_layout("local").unwrap();
|
|
||||||
|
|
||||||
let pipeline_layout = render_graph.device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
|
let pipeline_layout = render_graph.device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
|
||||||
bind_group_layouts: &[&bind_group_layout, local_bind_group_layout],
|
bind_group_layouts: &[&bind_group_layout, material_bind_group_layout],
|
||||||
});
|
});
|
||||||
|
|
||||||
let vertex_buffer_descriptor = get_vertex_buffer_descriptor();
|
let vertex_buffer_descriptor = get_vertex_buffer_descriptor();
|
||||||
|
|
|
@ -88,10 +88,10 @@ impl Pipeline for ForwardShadowPassNew {
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
let local_bind_group_layout = render_graph.get_bind_group_layout("local").unwrap();
|
let material_bind_group_layout = render_graph.get_bind_group_layout(render_resources::MATERIAL_BIND_GROUP_LAYOUT_NAME).unwrap();
|
||||||
|
|
||||||
let pipeline_layout = render_graph.device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
|
let pipeline_layout = render_graph.device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
|
||||||
bind_group_layouts: &[&bind_group_layout, local_bind_group_layout],
|
bind_group_layouts: &[&bind_group_layout, material_bind_group_layout],
|
||||||
});
|
});
|
||||||
|
|
||||||
let vs_module = render_graph.device.create_shader_module(&vs_bytes);
|
let vs_module = render_graph.device.create_shader_module(&vs_bytes);
|
||||||
|
|
|
@ -38,13 +38,12 @@ impl Pipeline for ShadowPipeline {
|
||||||
}],
|
}],
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: stop using "local"
|
let material_bind_group_layout = render_graph.get_bind_group_layout(render_resources::MATERIAL_BIND_GROUP_LAYOUT_NAME).unwrap();
|
||||||
let local_bind_group_layout = render_graph.get_bind_group_layout("local").unwrap();
|
|
||||||
|
|
||||||
let pipeline_layout = render_graph.device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
|
let pipeline_layout = render_graph.device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
|
||||||
bind_group_layouts: &[
|
bind_group_layouts: &[
|
||||||
&bind_group_layout,
|
&bind_group_layout,
|
||||||
local_bind_group_layout,
|
material_bind_group_layout,
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -4,11 +4,22 @@ use legion::prelude::*;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use zerocopy::AsBytes;
|
use zerocopy::AsBytes;
|
||||||
|
|
||||||
|
pub const MATERIAL_BIND_GROUP_LAYOUT_NAME: &str = "material";
|
||||||
|
|
||||||
pub struct MaterialResourceManager;
|
pub struct MaterialResourceManager;
|
||||||
|
|
||||||
impl RenderResourceManager for MaterialResourceManager {
|
impl RenderResourceManager for MaterialResourceManager {
|
||||||
fn initialize(&self, _render_graph: &mut RenderGraphData, _world: &mut World) {
|
fn initialize(&self, render_graph: &mut RenderGraphData, _world: &mut World) {
|
||||||
|
let material_bind_group_layout =
|
||||||
|
render_graph.device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
|
||||||
|
bindings: &[wgpu::BindGroupLayoutBinding {
|
||||||
|
binding: 0,
|
||||||
|
visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT,
|
||||||
|
ty: wgpu::BindingType::UniformBuffer { dynamic: false },
|
||||||
|
}],
|
||||||
|
});
|
||||||
|
|
||||||
|
render_graph.set_bind_group_layout(MATERIAL_BIND_GROUP_LAYOUT_NAME, material_bind_group_layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update<'a>(&mut self, render_graph: &mut RenderGraphData, encoder: &'a mut wgpu::CommandEncoder, world: &mut World) {
|
fn update<'a>(&mut self, render_graph: &mut RenderGraphData, encoder: &'a mut wgpu::CommandEncoder, world: &mut World) {
|
||||||
|
@ -31,8 +42,7 @@ impl RenderResourceManager for MaterialResourceManager {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: dont use inline local
|
let material_bind_group_layout = render_graph.get_bind_group_layout(MATERIAL_BIND_GROUP_LAYOUT_NAME).unwrap();
|
||||||
let local_bind_group_layout = render_graph.get_bind_group_layout("local").unwrap();
|
|
||||||
|
|
||||||
for mut material in <Write<Material>>::query().filter(!component::<Instanced>()).iter(world) {
|
for mut material in <Write<Material>>::query().filter(!component::<Instanced>()).iter(world) {
|
||||||
if let None = material.bind_group {
|
if let None = material.bind_group {
|
||||||
|
@ -43,7 +53,7 @@ impl RenderResourceManager for MaterialResourceManager {
|
||||||
});
|
});
|
||||||
|
|
||||||
let bind_group = render_graph.device.create_bind_group(&wgpu::BindGroupDescriptor {
|
let bind_group = render_graph.device.create_bind_group(&wgpu::BindGroupDescriptor {
|
||||||
layout: local_bind_group_layout,
|
layout: material_bind_group_layout,
|
||||||
bindings: &[wgpu::Binding {
|
bindings: &[wgpu::Binding {
|
||||||
binding: 0,
|
binding: 0,
|
||||||
resource: wgpu::BindingResource::Buffer {
|
resource: wgpu::BindingResource::Buffer {
|
||||||
|
|
Loading…
Reference in a new issue