if_comp - vs
Mulai jika bool - vs...else - vs...endif - vs blok, dengan kondisi berdasarkan nilai yang dapat dihitung dalam shader. Instruksi ini digunakan untuk melewati blok kode, berdasarkan kondisi.
Sintaks
if_comp src0, src1 |
---|
Mana:
_comp adalah perbandingan antara dua register sumber. Bisa jadi salah satu dari yang berikut:
Sintaks Perbandingan _Gt Lebih dari _Lt Kurang dari _Ge Lebih besar dari atau sama dengan _Le Kurang dari atau sama dengan _Eq Sama dengan _Ne Tidak sama dengan src0 adalah register sumber. Replikasi swizzle diperlukan untuk memilih komponen.
src1 adalah register sumber. Replikasi swizzle diperlukan untuk memilih komponen.
Keterangan
Versi shader vertex | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
if_comp | x | x | x | x |
Instruksi ini digunakan untuk melewati blok kode, berdasarkan kondisi.
if_lt src0, src1
jump to the corresponding else or endif instruction;
Berhati-hatilah menggunakan sama dengan dan tidak sama dengan mode perbandingan pada angka titik mengambang. Karena pembulatan terjadi selama perhitungan titik mengambang, perbandingan dapat dilakukan terhadap nilai epsilon (angka bukan nol kecil) untuk menghindari kesalahan.
Pembatasan meliputi:
- if_comp...else - vs...endif - vs blok (bersama dengan predikat jika blok) dapat ditumpuk hingga kedalaman 24 lapisan.
- src0 dan src1 register memerlukan swizzle replikasi.
- if_comp blok harus diakhir dengan yang lain - vs atau endif - vs instruksi.
- if_comp...else - vs...endif - vs blok tidak dapat mengalihkan blok perulangan. Blok if_comp harus sepenuhnya berada di dalam, atau di luar perulangan - vs blok.
Contoh
Instruksi ini menyediakan kontrol alur dinamis kondisional.
if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y
else
// Instructions to run otherwise
endif
Topik terkait