Hörnskuggningssteg
Vs-fasen (vertex-shader) bearbetar hörn från indatamonteraren och utför åtgärder per hörn, till exempel transformeringar, flådning, morfning och per hörnbelysning. Hörnskuggor fungerar alltid på ett enda indatahörn och skapar ett enda utdatahörn. Hörnskuggningssteget måste alltid vara aktivt för att pipelinen ska kunna köras. Om ingen hörnändring eller transformering krävs måste en genomströmningshörnskuggare skapas och ställas in på pipelinen.
Hörn-skuggning
Varje hörn shader in hörn kan bestå av upp till 16 32-bitars vektorer (upp till 4 komponenter vardera) och varje utdatahörn kan bestå av så många som 16 32-bitars 4-komponentvektorer. Alla hörn-skuggningar måste ha minst en indata och en utdata, vilket kan vara så lite som ett skalärt värde.
Hörnskuggningssteget kan använda två systemgenererade värden från indatamonteraren: VertexID och InstanceID (se System-value-semantik). Eftersom VertexID och InstanceID båda är meningsfulla på hörnnivå, och ID:n som genereras av maskinvara bara kan matas in i det första steget som förstår dem, kan dessa ID-värden endast matas in i hörnskuggningssteget.
Hörnskuggor körs alltid på alla hörn, inklusive intilliggande hörn i primitiva indatatopologier med angränsande. Antalet gånger som hörn-skuggningen har körts kan frågas från PROCESSORn med hjälp av vsinvocations-pipelinestatistiken.
En hörnskuggare kan utföra belastnings- och struktursamplingsåtgärder där skärmutrymmesderivat inte krävs (med inbyggda HLSL-funktioner: Sample (DirectX HLSL Texture Object), SampleCmpLevelZero (DirectX HLSL Texture Object)och SampleGrad (DirectX HLSL Texture Object)).