Struct naga::EntryPoint
source · 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,
}
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
Binding
s. This associates every value passed to or returned from the entry
point with either a BuiltIn
or a Location
:
-
A
BuiltIn
has special semantics, usually specific to its pipeline stage. For example, the result of a vertex shader can include aBuiltIn::Position
value, 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
Location
indicates user-defined IO to be passed from one pipeline stage to the next. For example, a vertex shader might also produce auv
texture 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: String
Name of this entry point, visible externally.
Entry point names for a given stage
must be distinct within a module.
stage: ShaderStage
Shader 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: Function
The entrance function.
Trait Implementations§
source§impl Clone for EntryPoint
impl Clone for EntryPoint
source§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,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)