pub struct Compute { /* private fields */ }Expand description
Describes a compute pipeline + its own bind group, the source type
GPUCompute is built from via build_compute. Fields are private —
start from Compute::new and chain the setters below rather than
constructing one as a struct literal.
Implementations§
Source§impl Compute
impl Compute
Sourcepub fn new(shader_source: &'static str) -> Self
pub fn new(shader_source: &'static str) -> Self
Start building a compute pass with the given WGSL shader source.
All other fields are set to their defaults (see Default).
pub fn label(self, label: &'static str) -> Self
pub fn entry_point(self, entry: &'static str) -> Self
Sourcepub fn entries(self, groups: Vec<GroupEntry>) -> Self
pub fn entries(self, groups: Vec<GroupEntry>) -> Self
This compute pass’s bind groups, in @group(N) order — position in groups is the
@group(N) index a shader must declare to match: the first element is @group(0),
the second @group(1), and so on. Each element is either:
GroupEntry::Own— this compute pass’s own bind group entries, built into a fresh layout internally. At most one of these is allowed — the one group aGPUComputeInstancebinds concrete resources against —build_computepanics on a second one.GroupEntry::Layout— an already-built layout occupying this position directly: any external bind group layout, e.g. pulled from aGlobalLayoutPoolviaGlobalLayoutPool::get.
build_compute also panics if any Own entry isn’t visible to exactly the compute
stage, or if groups needs more bind groups than the device’s max_bind_groups
allows (wgpu guarantees only 4) — list only the groups this pass’s shader actually
declares.
Sourcepub fn build_asset(self, name: &str, assets: &mut Assets<Self>) -> Handle<Self>
pub fn build_asset(self, name: &str, assets: &mut Assets<Self>) -> Handle<Self>
Consume the builder, insert into assets under name, and return
the resulting Handle<Compute>.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Compute
impl !UnwindSafe for Compute
impl Freeze for Compute
impl Send for Compute
impl Sync for Compute
impl Unpin for Compute
impl UnsafeUnpin for Compute
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> Component for T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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> ⓘ
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> ⓘ
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().