pub enum PrimitiveAssemblerDesc<'a, B: Backend> {
Vertex {
buffers: &'a [VertexBufferDesc],
attributes: &'a [AttributeDesc],
input_assembler: InputAssemblerDesc,
vertex: EntryPoint<'a, B>,
tessellation: Option<(EntryPoint<'a, B>, EntryPoint<'a, B>)>,
geometry: Option<EntryPoint<'a, B>>,
},
Mesh {
task: Option<EntryPoint<'a, B>>,
mesh: EntryPoint<'a, B>,
},
}
Expand description
Primitive Assembler describes how input data are fetched in the pipeline and formed into primitives before being sent into the fragment shader.
Variants§
Vertex
Vertex based pipeline
Fields
buffers: &'a [VertexBufferDesc]
Vertex buffers (IA)
attributes: &'a [AttributeDesc]
Vertex attributes (IA)
input_assembler: InputAssemblerDesc
Input assembler attributes, describes how vertices are assembled into primitives (such as triangles).
vertex: EntryPoint<'a, B>
A shader that outputs a vertex in a model.
tessellation: Option<(EntryPoint<'a, B>, EntryPoint<'a, B>)>
Tesselation shaders consisting of:
-
Hull shader: takes in an input patch (values representing a small portion of a shape, which may be actual geometry or may be parameters for creating geometry) and produces one or more output patches.
-
Domain shader: takes in domains produced from a hull shader’s output patches and computes actual vertex positions.
geometry: Option<EntryPoint<'a, B>>
A shader that takes given input vertexes and outputs zero or more output vertexes.
Mesh
Mesh shading pipeline
Fields
task: Option<EntryPoint<'a, B>>
A shader that creates a variable amount of mesh shader invocations.
mesh: EntryPoint<'a, B>
A shader of which each workgroup emits zero or more output primitives and the group of vertices and their associated data required for each output primitive.