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

Instruksi Vertex Shader