Apa arti komponen dari gl_TexCoord [0]?

10

Apa perbedaan antara gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].pdan gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z?

Saya mengerti itu gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zkoordinat piksel?

Tapi apa gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].partinya dan di mana saya harus menggunakannya?

G-71
sumber

Jawaban:

15

Perbedaannya hanya semantik . Setiap vektor GLSL dapat diakses menggunakan x/y/z/w, r/g/b/aatau s/t/p/q. Penggunaan khas adalah:

  • xyzwuntuk koordinat ruang
  • rgbauntuk warna
  • stpquntuk koordinat tekstur
  • jika tidak ada satu pun dari yang berlaku di atas, rasa apa pun dapat digunakan, tetapi ketika itu bisa membingungkan, var[0]/var[1]/var[2]/var[3]dapat digunakan sebagai gantinya.

Anda dapat mencampurnya dalam ekspresi:, foo.x = bar.qatau bahkan foo.xy = bar.gb + baz.st;. Pembatasan utama adalah bahwa swizzling hanya dapat dilakukan dengan menggunakan huruf dari kelompok yang sama, yaitu. foo.xyaadalah tidak sah karena bercampur xydari xyzwdan adari rgba.

sam hocevar
sumber
Saya tidak terbiasa dengan notasi stpq untuk koordinat tekstur (selalu melihat uv sebagai gantinya). Saya menduga p akan digunakan untuk tekstur 3D, tetapi dalam situasi apa q akan digunakan? Sunting: Nevermind Saya baru saja menemukan jawaban saya. Itu akan menjadi, dengan TextureCubeArrays.
David Gouveia
@ David Gouveia: Tidak, sebenarnya. The berbeda fungsi texturing memiliki arti yang berbeda. Misalnya, mengakses a sampler2DShadowdengan textureberarti bahwa p koordinat adalah nilai perbandingan. Mengakses dengan sampler2DShadowdengan textureProjberarti bahwa p koordinat adalah nilai perbandingan, dan koordinat q dibagi menjadi tiga lainnya ( sebelum perbandingan, jadi p sebenarnya comparison * q). Mereka tidak memiliki makna intrinsik ; artinya berubah tergantung pada bagaimana mereka digunakan.
Nicol Bolas
@Nicol Terima kasih telah menjelaskannya. Saya sebenarnya hanya menggunakan HLSL sebelumnya dan bahkan di sana hanya benar-benar membutuhkan tex2D dasar dan intrinsik texCube. Saya tidak menyadari banyaknya fungsi texturing yang ada. (Tidak terkait: Apakah itu nama asli Anda, atau hanya naga dari MTG?)
David Gouveia