Pengubah untuk ps_2_0 ke Atas

Pengubah instruksi memengaruhi hasil instruksi sebelum ditulis ke dalam register tujuan.

Bagian ini berisi informasi referensi untuk pengubah instruksi yang diimplementasikan oleh pixel shader versi 2_0 ke atas.

Nama Sintaks 2_0 2_x 2_sw 3_0 3_sw
Sentroid _centroid x x x x x
Partial_Precision _Pp x x x x x
Saturasi _Duduk x x x x x

 

Sentroid

Pengubah sentroid adalah pengubah opsional yang menjepit interpolasi atribut dalam rentang primitif saat pusat piksel multisample tidak dicakup oleh primitif. Ini dapat dilihat di Centroid Sampling.

Anda dapat menerapkan pengubah sentroid ke instruksi perakitan seperti yang ditunjukkan di sini:

dcl_texcoord0_centroid v0

Anda juga dapat menerapkan pengubah sentroid ke semantik seperti yang ditunjukkan di sini:

float4 TexturePointCentroidPS( float4 TexCoord : TEXCOORD0_centroid ) : COLOR0
{
    return tex2D( PointSampler, TexCoord );
}

Selain itu, Setiap Register Warna Input (v#) yang dinyatakan dengan semantik warna akan secara otomatis menerapkan sentroid. Gradien yang dihitung dari atribut yang diambil sampel sentroidnya tidak dijamin akurat.

Presisi Parsial

Pengubah instruksi presisi parsial (_pp) menunjukkan area di mana presisi parsial dapat diterima, asalkan implementasi yang mendasarinya mendukungnya. Implementasi selalu bebas untuk mengabaikan pengubah dan melakukan operasi yang terpengaruh dengan presisi penuh.

Pengubah _pp dapat terjadi dalam dua konteks:

  • Pada deklarasi koordinat tekstur untuk memungkinkan meneruskan koordinat tekstur ke shader piksel dalam bentuk presisi parsial. Ini memungkinkan, misalnya, penggunaan koordinat tekstur untuk menyampaikan data warna ke shader piksel, yang mungkin lebih cepat dengan presisi parsial daripada dengan presisi penuh dalam beberapa implementasi. Dengan tidak adanya pengubah ini, koordinat tekstur harus diteruskan dengan presisi penuh.
  • Pada instruksi apa pun termasuk instruksi beban tekstur. Ini menunjukkan bahwa implementasi diizinkan untuk menjalankan instruksi dengan presisi parsial dan menyimpan hasil presisi parsial. Dengan tidak adanya pengubah eksplisit, instruksi harus dilakukan dengan presisi penuh (terlepas dari presisi input).

Contoh:

dcl_texcoord0_pp t1
cmp_pp r0, r1, r2, r3

Saturasi

Pengubah instruksi jenuh (_sat) menjenuhkan (atau menjepit) hasil instruksi ke rentang [0, 1] sebelum menulis ke register tujuan.

Pengubah instruksi _sat dapat digunakan dengan instruksi apa pun kecuali instruksi frc - ps, sincos - ps, dan tex*.

Untuk ps_2_0, ps_2_x, dan ps_2_sw, pengubah instruksi _sat tidak dapat digunakan dengan instruksi menulis ke daftar output apa pun (Register Warna Output atau Register Kedalaman Output). Pembatasan ini tidak berlaku untuk ps_3_0 ke atas.

Contoh:

dp3_sat r0, v0, c1

Instruksi Pixel Shader