Tahap vertex-shader

Tahap vertex-shader (VS) memproses simpul dari perakitan input, melakukan operasi per vertex seperti transformasi, skinning, morphing, dan pencahayaan per vertex. Shader vertex selalu beroperasi pada satu verteks input dan menghasilkan satu puncak output. Tahap vertex-shader harus selalu aktif agar alur dapat dijalankan. Jika tidak diperlukan modifikasi atau transformasi vertex, shader vertex pass-through harus dibuat dan diatur ke alur.

The Vertex-shader

Setiap verteks input shader vertex dapat terdiri dari hingga 16 vektor 32-bit (masing-masing hingga 4 komponen) dan setiap puncak output dapat terdiri dari sebanyak 16 vektor 4 komponen 32-bit. Semua vertex-shader harus memiliki minimal satu input dan satu output, yang bisa sesederhana satu nilai skalar.

Tahap vertex-shader dapat menggunakan dua nilai yang dihasilkan sistem dari perakit input: VertexID dan InstanceID (lihat Semantik nilai sistem). Karena VertexID dan InstanceID keduanya bermakna pada tingkat puncak, dan ID yang dihasilkan oleh perangkat keras hanya dapat diumpankan ke tahap pertama yang memahaminya, nilai ID ini hanya dapat diumpankan ke tahap vertex-shader.

Shader puncak selalu dijalankan pada semua simpul, termasuk simpul yang berdekatan dalam topologi primitif input dengan kedekatan. Berapa kali vertex-shader telah dijalankan dapat dikueri dari CPU menggunakan statistik alur VSInvocations.

Shader vertex dapat melakukan operasi pengambilan sampel beban dan tekstur di mana turunan ruang layar tidak diperlukan (menggunakan fungsi intrinsik HLSL: Sampel (Objek Tekstur DirectX HLSL), SampleCmpLevelZero (Objek Tekstur HLSL DirectX), dan SampleGrad (Objek Tekstur DirectX HLSL)).