Bagikan melalui


texldb - ps

Instruksi beban tekstur bias. Instruksi ini menggunakan elemen keempat (.a atau .w) untuk bias tingkat detail pengambilan sampel tekstur tepat sebelum pengambilan sampel.

Sintaks

texldb dst, src0, src1

 

Di mana:

  • dst adalah register tujuan.
  • src0 adalah register sumber yang menyediakan koordinat tekstur untuk sampel tekstur. Lihat Daftar Koordinat Tekstur.
  • src1 mengidentifikasi Sampler (Direct3D 9 asm-ps) (s#), di mana # menentukan nomor sampler tekstur mana yang akan diambil sampelnya. Sampler telah dikaitkan dengan tekstur dan status sampler yang ditentukan oleh D3DSAMPLERSTATETYPE.

Untuk pembatasan saat menggunakan texldb, lihat instruksi texld - ps_2_0 dan up .

ps_2_0 dan ps_2_x

dst harus berupa Daftar Sementara (r#) dan hanya masker .xyzw (masker default) yang diizinkan.

src0 harus berupa Texture Coordinate Register (t#) atau Temporary Register (r#), tanpa pengubah atau geser.

src1 harus berupa Sampler (Direct3D 9 asm-ps) (s#), tanpa pengubah atau gerimis.

Jika bit batas D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT tidak diatur (dalam D3DPSHADERCAPS2_0), instruksi tekstur tertentu (texld, texldp, texldb, texldd) mungkin bergantung pada, paling banyak, urutan ketiga. Instruksi tekstur dependen urutan pertama adalah instruksi tekstur di mana:

  • src0 adalah Register Sementara (r#).
  • dst sebelumnya ditulis, sekarang sedang ditulis lagi.

Instruksi tekstur dependen urutan kedua didefinisikan sebagai instruksi tekstur yang membaca atau menulis ke Daftar Sementara (r#) yang kontennya, sebelum menjalankan instruksi tekstur, bergantung (mungkin secara tidak langsung) pada hasil instruksi tekstur dependen urutan pertama. Instruksi tekstur dependen (n)urutan ke-1 berasal dari instruksi tekstur (n - 1)urutan ke-1.

ps_3_0

src1 harus berupa Sampler (Direct3D 9 asm-ps) (s#), tanpa pengubah. Swizzle diizinkan pada src1, dan ketika diterapkan, hasil pencarian tekstur telah digelitik sebelumnya sebelum ditulis ke dst.

Keterangan

Versi shader piksel 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texldb x x x x x

 

texldb biase tingkat detail mipmap, dihitung secara normal sebagai bagian dari proses sampel oleh nilai (ditandatangani) di src0.w. Nilai bias positif akan mengakibatkan mipmap yang lebih kecil dipilih dan sebaliknya. Untuk ps_2_0 dan ps_2_x, nilai bias dapat berada dalam rentang [-3.0, +3.0]. Untuk ps_3_0, nilai bias dapat berada dalam rentang [-16.0, +15.0]. Nilai bias di luar rentang ini menghasilkan hasil yang tidak terdefinisi. Status sampler D3DSAMP_MIPMAPLODBIAS masih dihormati, dan bias texldb ditambahkan ke ini, tetapi berdasarkan per piksel. Setelah tingkat detail yang bias dihitung, D3DSAMP_MAXMIPLEVEL masih dihormati dan sampel tekstur terjadi. Setelah texldb, isi src0 tidak terpengaruh (kecuali dst adalah register yang sama).

Jumlah koordinat yang diperlukan src0 untuk melakukan sampel tekstur tergantung pada bagaimana src1 dideklarasikan, ditambah komponen .w. Jenis sampler dideklarasikan dengan dcl_samplerType (sm2, sm3 - ps asm). Jika src1 dinyatakan sebagai sampler 2D, maka src0 harus berisi koordinat .xyw; jika src1 dinyatakan sebagai sampel kubus atau sampler volume, maka src0 harus berisi koordinat .xyzw. Pengambilan sampel tekstur 2D dengan koordinat .xyzw diizinkan (koordinat .z diabaikan).

Jika tekstur sumber berisi kurang dari empat komponen, default ditempatkan di komponen yang hilang. Default bergantung pada format tekstur seperti yang diperlihatkan dalam tabel berikut:

Format Tekstur Nilai Default
D3DFMT_R5G6B5, D3DFMT_R8G8B8, D3DFMT_L8, D3DFMT_L16, D3DFMT_R3G3B2, D3DFMT_CxV8U8, D3DFMT_L6V5U5 A = 1.0
D3DFMT_V8U8, D3DFMT_V16U16, D3DFMT_G16R16, D3DFMT_G16R16F, D3DFMT_G32R32F B = A = 1.0
D3DFMT_A8 R = G = B = 0,0
D3DFMT_R16F, D3DFMT_R32F G = B = A = 1.0
Semua format kedalaman/stensil R = B = 0,0, A = 1,0

 

Instruksi Pixel Shader