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 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
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
function: FunctionThe 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 more