Que signifient les composants de gl_TexCoord [0]?


10

Quelles sont les différences entre gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].pet gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z?

Je comprends que ce gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zsont des coordonnées de pixels?

Mais que gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].psignifient-ils et où dois-je les utiliser?

Réponses:


15

La différence n'est que sémantique . Tout vecteur GLSL est accessible à l' aide x/y/z/w, r/g/b/aou s/t/p/q. L'utilisation typique est:

  • xyzwpour les coordonnées spatiales
  • rgbapour les couleurs
  • stpqpour les coordonnées de texture
  • si rien de ce qui précède ne s'applique, n'importe quelle saveur peut être utilisée, mais lorsqu'elle peut prêter à confusion, elle var[0]/var[1]/var[2]/var[3]peut être utilisée à la place.

Vous pouvez les mélanger dans des expressions:, foo.x = bar.qou même foo.xy = bar.gb + baz.st;. La principale restriction est que le swizzling ne peut être effectué qu'en utilisant des lettres du même groupe, c'est-à - dire. foo.xyan'est pas valide car il se mélange xyde xyzwet ade rgba.


Je ne connais pas la notation stpq pour les coordonnées de texture (j'ai toujours vu uv à la place). Je suppose que p serait utilisé pour les textures 3D, mais dans quelle situation q serait-il utilisé? Edit: Peu importe, je viens de trouver ma réponse. Ce serait, avec TextureCubeArrays.
— David Gouveia

@DavidGouveia: Non, en fait. Les différentes fonctions de texturation ont des significations différentes. Par exemple, l'accès à a sampler2DShadowavec texturesignifie que la coordonnée p est la valeur de comparaison. L'accès à a sampler2DShadowavec textureProjsignifie que la coordonnée p est la valeur de comparaison et que la coordonnée q est divisée en les trois autres ( avant la comparaison, donc p est en fait comparison * q). Ils n'ont aucune signification intrinsèque ; le sens change en fonction de leur utilisation.
— Nicol Bolas

@Nicol Merci d'avoir clarifié cela. En fait, je n'ai utilisé que HLSL auparavant et même là-bas, je n'avais vraiment besoin que des intrinsèques de base tex2D et texCube. Je n'étais pas au courant de la multitude de fonctions de texturation existantes. (Sans lien: est-ce votre vrai nom, ou juste le dragon de MTG?)
— David Gouveia
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.