Struct EntryPoint
pub struct EntryPoint {
pub name: String,
pub stage: ShaderStage,
pub early_depth_test: Option<EarlyDepthTest>,
pub workgroup_size: [u32; 3],
pub workgroup_size_overrides: Option<[Option<Handle<Expression>>; 3]>,
pub function: Function,
}unstable-wgpu-27 only.Expand description
The main function for a pipeline stage.
An EntryPoint is a Function that serves as the main function for a
graphics or compute pipeline stage. For example, an EntryPoint whose
stage is ShaderStage::Vertex can serve as a graphics pipeline’s
vertex shader.
Since an entry point is called directly by the graphics or compute pipeline, not by other WGSL functions, you must specify what the pipeline should pass as the entry point’s arguments, and what values it will return. For example, a vertex shader needs a vertex’s attributes as its arguments, but if it’s used for instanced draw calls, it will also want to know the instance id. The vertex shader’s return value will usually include an output vertex position, and possibly other attributes to be interpolated and passed along to a fragment shader.
To specify this, the arguments and result of an EntryPoint’s function
must each have a Binding, or be structs whose members all have
Bindings. This associates every value passed to or returned from the entry
point with either a BuiltIn or a Location:
-
A
BuiltInhas special semantics, usually specific to its pipeline stage. For example, the result of a vertex shader can include aBuiltIn::Positionvalue, which determines the position of a vertex of a rendered primitive. Or, a compute shader might take an argument whose binding isBuiltIn::WorkGroupSize, through which the compute pipeline would pass the number of invocations in your workgroup. -
A
Locationindicates user-defined IO to be passed from one pipeline stage to the next. For example, a vertex shader might also produce auvtexture location as a user-defined IO value.
In other words, the pipeline stage’s input and output interface are
determined by the bindings of the arguments and result of the EntryPoint’s
function.
Fields§
§name: StringName of this entry point, visible externally.
Entry point names for a given stage must be distinct within a module.
stage: ShaderStageShader stage.
early_depth_test: Option<EarlyDepthTest>Early depth test for fragment stages.
workgroup_size: [u32; 3]Workgroup size for compute stages
workgroup_size_overrides: Option<[Option<Handle<Expression>>; 3]>Override expressions for workgroup size in the global_expressions arena
function: FunctionThe entrance function.
Trait Implementations§
§impl Clone for EntryPoint
impl Clone for EntryPoint
§fn clone(&self) -> EntryPoint
fn clone(&self) -> EntryPoint
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for EntryPoint
impl RefUnwindSafe for EntryPoint
impl Send for EntryPoint
impl Sync for EntryPoint
impl Unpin for EntryPoint
impl UnwindSafe for EntryPoint
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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>
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>
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)
&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)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§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>
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 more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.