Struct naga::EntryPoint[][src]

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 BuiltIn has special semantics, usually specific to its pipeline stage. For example, the result of a vertex shader can include a BuiltIn::Position value, which determines the position of a vertex of a rendered primitive. Or, a compute shader might take an argument whose binding is BuiltIn::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 a uv 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.

stage: ShaderStage

Shader stage.

early_depth_test: Option<EarlyDepthTest>

Early depth test for fragment stages.

workgroup_size: [u32; 3]

Workgroup size for compute stages

function: Function

The entrance function.

Trait Implementations

Formats the value using the given formatter. Read more

Deserialize this value from the given Serde deserializer. Read more

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.