pub struct ForwardRoutine<M: Material> {
pub pipeline_s1: RenderPipeline,
pub pipeline_s4: RenderPipeline,
pub _phantom: PhantomData<M>,
}
Expand description
A set of pipelines for rendering a specific combination of a material.
Fields§
§pipeline_s1: RenderPipeline
§pipeline_s4: RenderPipeline
§_phantom: PhantomData<M>
Implementations§
Source§impl<M: Material> ForwardRoutine<M>
impl<M: Material> ForwardRoutine<M>
Sourcepub fn new(
renderer: &Renderer,
data_core: &mut RendererDataCore,
interfaces: &WholeFrameInterfaces,
per_material: &PerMaterialArchetypeInterface<M>,
vertex: Option<(&str, &ShaderModule)>,
fragment: Option<(&str, &ShaderModule)>,
extra_bgls: &[BindGroupLayout],
blend: Option<BlendState>,
use_prepass: bool,
label: &str,
) -> Self
pub fn new( renderer: &Renderer, data_core: &mut RendererDataCore, interfaces: &WholeFrameInterfaces, per_material: &PerMaterialArchetypeInterface<M>, vertex: Option<(&str, &ShaderModule)>, fragment: Option<(&str, &ShaderModule)>, extra_bgls: &[BindGroupLayout], blend: Option<BlendState>, use_prepass: bool, label: &str, ) -> Self
Create a new forward routine with optional customizations.
Specifying vertex or fragment shaders will override the default ones.
The order of BGLs passed to the shader is:
0: Forward uniforms
1: Per material data
2: Texture Array (GpuDriven) / Material (CpuDriven)
3+: Contents of extra_bgls
Blend state is passed through to the pipeline.
If use_prepass is true, depth tests/writes are set such that it is assumed a full depth-prepass has happened before.
Sourcepub fn add_forward_to_graph<'node>(
&'node self,
graph: &mut RenderGraph<'node>,
forward_uniform_bg: DataHandle<BindGroup>,
culled: DataHandle<PerMaterialArchetypeData>,
extra_bgs: Option<&'node Vec<BindGroup>>,
label: &str,
samples: SampleCount,
color: RenderTargetHandle,
resolve: Option<RenderTargetHandle>,
depth: RenderTargetHandle,
)
pub fn add_forward_to_graph<'node>( &'node self, graph: &mut RenderGraph<'node>, forward_uniform_bg: DataHandle<BindGroup>, culled: DataHandle<PerMaterialArchetypeData>, extra_bgs: Option<&'node Vec<BindGroup>>, label: &str, samples: SampleCount, color: RenderTargetHandle, resolve: Option<RenderTargetHandle>, depth: RenderTargetHandle, )
Add the given routine to the graph with the given settings.
I understand the requirement that extra_bgs is explicitly a Vec is weird, but due to my lifetime passthrough logic I can’t pass through a slice.
Auto Trait Implementations§
impl<M> Freeze for ForwardRoutine<M>
impl<M> !RefUnwindSafe for ForwardRoutine<M>
impl<M> Send for ForwardRoutine<M>
impl<M> Sync for ForwardRoutine<M>
impl<M> Unpin for ForwardRoutine<M>where
M: Unpin,
impl<M> !UnwindSafe for ForwardRoutine<M>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more