pub struct ComputePipeline {
pub label: String,
pub pipeline: Option<ComputePipeline>,
pub layout: Option<PipelineLayout>,
pub is_initialized: bool,
/* private fields */
}Expand description
Create a compute pipeline from WGSL source and bind group layouts.
§Example
use wde_wgpu::compute_pipeline::ComputePipeline;
let mut pipeline = ComputePipeline::new("particles");
pipeline
.set_shader(include_str!("../../../res/marching-cubes/spawn_terrain.comp.wgsl"))
.set_bind_groups(layouts)
.add_push_constant(16) // bytes starting at offset 0
.init(instance)
.expect("shader validated");
assert!(pipeline.is_initialized());
let _wgpu_pipeline = pipeline.get_pipeline().unwrap();Fields§
§label: StringLabel for the compute pipeline
pipeline: Option<ComputePipeline>The compute pipeline
layout: Option<PipelineLayout>The pipeline layout
is_initialized: boolWhether the compute pipeline has been initialized
Implementations§
Source§impl ComputePipeline
impl ComputePipeline
Sourcepub fn set_shader(&mut self, shader: &str) -> &mut Self
pub fn set_shader(&mut self, shader: &str) -> &mut Self
Sourcepub fn set_bind_groups(&mut self, layout: Vec<BindGroupLayout>) -> &mut Self
pub fn set_bind_groups(&mut self, layout: Vec<BindGroupLayout>) -> &mut Self
Add a set of bind groups via its layout to the compute pipeline. Note that the order of the bind groups will be the same as the order of the bindings in the shaders.
§Arguments
layout- The bind group layout.
Sourcepub fn add_push_constant(&mut self, offset: u32, size: u32) -> &mut Self
pub fn add_push_constant(&mut self, offset: u32, size: u32) -> &mut Self
Add a push constant to the compute pipeline.
§Arguments
offset- The offset of the push constant.size- The size of the push constant.
Sourcepub fn init(
&mut self,
instance: &RenderInstanceData<'_>,
) -> Result<(), RenderError>
pub fn init( &mut self, instance: &RenderInstanceData<'_>, ) -> Result<(), RenderError>
Sourcepub fn get_pipeline(&self) -> Option<&ComputePipeline>
pub fn get_pipeline(&self) -> Option<&ComputePipeline>
Sourcepub fn get_layout(&self) -> Option<&PipelineLayout>
pub fn get_layout(&self) -> Option<&PipelineLayout>
Sourcepub fn is_initialized(&self) -> bool
pub fn is_initialized(&self) -> bool
Check if the compute pipeline is initialized.
§Returns
bool- True if the compute pipeline is initialized, false otherwise.
Auto Trait Implementations§
impl Freeze for ComputePipeline
impl !RefUnwindSafe for ComputePipeline
impl Send for ComputePipeline
impl Sync for ComputePipeline
impl Unpin for ComputePipeline
impl !UnwindSafe for ComputePipeline
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Converts this type into the system output type.