vs_3_0

Shader vertex yang dapat diprogram terdiri dari serangkaian instruksi yang beroperasi pada data vertex. Mendaftarkan data transfer masuk dan keluar dari ALU. Kontrol tambahan dapat diterapkan untuk memodifikasi instruksi, hasil, atau data apa yang akan ditulis.

Versi shader vertex vs_3_0 memperluas set fitur yang didukung oleh vs_2_x. Masing-masing fitur dalam vs_2_X yang memerlukan batas untuk diatur, tersedia dalam vs_3_0 tanpa memerlukan batas.

Fitur baru

Fitur baru versi shader vertex vs_3_0 tercantum di bagian berikut.

Daftar Pengindeksan

Dalam model shader sebelumnya, hanya bank register konstan yang dapat diindeks. Dalam model ini, bank register berikut dapat diindeks, menggunakan loop counter register (aL):

  • Daftar input (v#)
  • Register output (o#)

Tekstur Vertex

Model shader ini mendukung pencarian tekstur di shader vertex menggunakan texldl. Mesin vertex memiliki empat tahap sampler tekstur (berbeda dari sampler peta perpindahan dan sampler tekstur di mesin piksel) yang dapat digunakan untuk mengambil sampel tekstur yang ditetapkan pada tahap tersebut. Lihat Tekstur Vertex di vs_3_0 (DirectX HLSL).

Frekuensi Aliran Vertex

Fitur ini memungkinkan subset register input untuk diinisialisasi pada tingkat yang berbeda dari sekali per vertex. Lihat Menggambar Geometri Yang Tidak Terindeks.

Shader Output

Mirip dengan vs_2_0, output shader dapat bervariasi dengan kontrol aliran statis. Berhati-hatilah dengan percabangan dinamis karena ini dapat menyebabkan output shader bervariasi per puncak. Ini akan menghasilkan hasil yang tidak dapat diprediksi pada perangkat keras yang berbeda.

Kontrol alur dinamis

Semua instruksi kontrol alur dinamis didukung. Nilai kedalaman bersarang maksimum yang diizinkan adalah 24. (Lihat Batas Bersarang Kontrol Alur untuk detailnya.)

Daftar Sementara

Total 32 register sementara (r#) didukung.

Kontrol Aliran Statis

Kedalaman bersarang maksimum untuk perulangan - vs/rep - vs adalah 4. Kedalaman bersarang maksimum untuk panggilan - vs/callnz bool - vs/callnz pred - vs adalah 4. Untuk jika bool - vs, nilai kedalaman bersarang maksimum yang diizinkan adalah 24. (Lihat Batas Bersarang Kontrol Alur untuk detailnya.)

Predikasi

Predikasi instruksi didukung. Gunakan setp_comp - vs untuk mengatur register predikat.

Jumlah Instruksi

Setiap shader vertex diizinkan dari 512 hingga jumlah slot di MaxVertexShader30InstructionSlots di D3DCAPS9. Jumlah instruksi yang dijalankan bisa jauh lebih tinggi karena dukungan perulangan/rep; namun, ini dibatasi oleh MaxVShaderInstructionsExecuted di D3DCAPS9 yang setidaknya harus 0xFFFF.

Batas Perangkat

Jika Vertex Shader 3_0 didukung, batas berikut didukung dalam perangkat keras (minimal):

Cap Kemampuan
Huruf shader
  • DynamicFlowControlDepth adalah 24
  • NumTemps adalah 32
  • StaticFlowControlDepth adalah 4
  • Predikasi didukung.
GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom 8K
VertexShaderVersion 3_0
MaxVertexShaderConst 256
MaxVertexShader30InstructionSlots 512
Dukungan kabut D3DPRASTERCAPS_FOGVERTEX
VertexTextureFilterCaps
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET Elemen vertex dalam deklarasi puncak dapat berbagi offset aliran yang sama.
Format vertex
  • D3DDECLTYPE_UBYTE4
  • D3DDECLTYPE_UBYTE4N
  • D3DDECLTYPE_SHORT2N
  • D3DDECLTYPE_SHORT4N
  • D3DDECLTYPE_FLOAT16_2
  • D3DDECLTYPE_FLOAT16_4

 

Vertex Shaders