Bagikan melalui


Tahap vertex-shader

Tahap vertex-shader (VS) memproses simpul dari perakitan input, melakukan operasi per vertex seperti transformasi, menguliti, morfing, 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 ada modifikasi atau transformasi vertex yang diperlukan, shader vertex pass-through harus dibuat dan diatur ke alur.

The Vertex-shader

Setiap vertex shader input vertex dapat terdiri dari hingga 16 vektor 32-bit (masing-masing hingga 4 komponen) dan setiap puncak output dapat terdiri dari vektor komponen 4-16 32-bit. Semua vertex-shader harus memiliki minimal satu input dan satu output, yang bisa sesediki 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 vertex, 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 vertex selalu dijalankan di 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 HLSL DirectX)).