Input Assembler (IA) stage

The Input Assembler (IA) stage supplies primitive and adjacency data to the pipeline, such as triangles, lines and points, including semantics IDs to help make shaders more efficient by reducing processing to primitives that haven't already been processed.

Purpose and uses

The purpose of the Input Assembler (IA) stage is to read primitive data (points, lines and triangles) from user-filled buffers and assemble the data into primitives that will be used by the other pipeline stages, and to attach system-generated values to help make shaders more efficient. System-generated values are text strings that are also called semantics. The programmable shader stages are constructed from a common shader core, which uses system-generated values (such as a primitive ID, an instance ID, or a vertex ID), so that the shader stage can reduce processing to only those primitives, instances, or vertices that have not already been processed.

The IA stage can assemble vertices into several different primitive types (such as line lists, triangle strips, or primitives with adjacency). Primitive types such as a triangle list with adjacency, and a line list with adjacency, support the Geometry Shader (GS) stage.

Adjacency information is visible to an application only in a geometry shader. If a geometry shader were invoked with a triangle including adjacency, for instance, the input data would contain 3 vertices for each triangle and 3 vertices for adjacency data per triangle.

When the IA stage is requested to output adjacency data, the input data must include adjacency data. This may require providing a dummy vertex (forming a degenerate triangle), or perhaps by flagging in one of the vertex attributes whether the vertex exists or not. This would also need to be detected and handled by a geometry shader, although culling of degenerate geometry will happen in the rasterizer stage.

Input

The IA stage reads data from memory: primitive data (points, lines and/or triangles), from user-filled buffers.

Output

The IA stage assembles the data into primitives and attaches system-generated values, and outputs that as primitives that will be used by the Vertex Shader (VS) stage and then other pipeline stages.

In this section

Topic Description

Primitive topologies

Direct3D supports several primitive topologies, which define how vertices are interpreted and rendered by the pipeline, such as point lists, line lists, and triangle strips.

Using system-generated values

System-generated values are generated by the Input Assembler (IA) stage (based on user-supplied input semantics) to allow certain efficiencies in shader operations. By attaching data, such as an instance ID (visible to the Vertex Shader (VS) stage), a vertex ID (visible to VS), or a primitive ID (visible to Geometry Shader (GS) stage/Pixel Shader (PS) stage), a subsequent shader stage may look for these system values to optimize processing in that stage.

 

Graphics pipeline