Fase vertex-shader
De hoekpunt-shader (VS) verwerkt hoekpunten van de invoerassembly, waarbij per hoekpuntbewerkingen worden uitgevoerd, zoals transformaties, skinning, morphing en per hoekpuntverlichting. Hoekpunt-shaders werken altijd op één invoerpunt en produceren één uitvoerpunt. De hoekpunt-shader-fase moet altijd actief zijn om de pijplijn uit te voeren. Als er geen hoekpuntwijziging of transformatie vereist is, moet er een arcering voor passthrough-hoekpunten worden gemaakt en ingesteld op de pijplijn.
De hoekpunt-shader
Elk hoekpunt voor de arcering van hoekpunten kan bestaan uit maximaal 16 32-bits vectoren (maximaal 4 onderdelen) en elk uitvoerpunt kan bestaan uit maximaal 16 32-bits vectoren met vier componenten. Alle hoekpunt-shaders moeten minimaal één invoer en één uitvoer hebben, wat zo weinig kan zijn als één scalaire waarde.
De fase vertex-shader kan twee door het systeem gegenereerde waarden van de invoerassemblyer gebruiken: VertexID en InstanceID (zie semantiek van systeemwaarden). Omdat VertexID en InstanceID zowel zinvol zijn op hoekpuntniveau als id's die door hardware worden gegenereerd, kunnen alleen worden ingevoerd in de eerste fase die ze begrijpt, kunnen deze id-waarden alleen worden ingevoerd in de fase van de hoekpunt-shader.
Hoekpunt-shaders worden altijd uitgevoerd op alle hoekpunten, inclusief aangrenzende hoekpunten in invoer primitieve topologieën met aangrenzing. Het aantal keren dat de hoekpunt-shader is uitgevoerd, kan worden opgevraagd vanuit de CPU met behulp van de vsInvocations-pijplijnstatistiek.
Een hoekpunt-shader kan bewerkingen uitvoeren voor belastings- en textuursampling waarbij schermruimtederivaten niet vereist zijn (met behulp van intrinsieke HLSL-functies: Sample (DirectX HLSL Texture Object), SampleCmpLevelZero (DirectX HLSL Texture Object)en SampleGrad (DirectX HLSL Texture Object)).