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.
- Instruksi - vs_3_0 berisi daftar instruksi yang tersedia.
- Registers - vs_3_0 mencantumkan berbagai jenis register yang digunakan oleh vertex shader ALU.
- Vertex Shader Register Modifiers digunakan untuk memodifikasi cara kerja instruksi.
- Vertex Shader Source Register Modifiers mengubah data register sumber sebelum instruksi berjalan.
- Source Register Swizzling memberikan kontrol tambahan atas komponen register mana yang dibaca, disalin, atau ditulis.
- Masking Daftar Tujuan menentukan komponen register tujuan apa yang ditulis.
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 |
|
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 |
|
Topik terkait