¿Qué significan los componentes de gl_TexCoord [0]?

10

¿Cuáles son las diferencias entre gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].py gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z?

Entiendo que gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zson coordenadas de píxeles?

Pero, ¿qué gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].psignifican y dónde debo usarlos?

G-71
fuente

Respuestas:

15

La diferencia es solo semántica . Se puede acceder a cualquier vector GLSL usando x/y/z/w, r/g/b/ao s/t/p/q. El uso típico es:

  • xyzwpara coordenadas espaciales
  • rgbapara colores
  • stpqpara coordenadas de textura
  • Si no se aplica ninguno de los anteriores, se puede usar cualquier sabor, pero cuando puede ser confuso, var[0]/var[1]/var[2]/var[3]se puede usar en su lugar.

Puedes mezclarlos en expresiones: foo.x = bar.qo incluso foo.xy = bar.gb + baz.st;. La principal restricción es que el swizzling solo se puede hacer usando letras del mismo grupo, es decir. nofoo.xya es válido porque se mezcla xydesde xyzwy adesde rgba.

sam hocevar
fuente
No estoy familiarizado con la notación stpq para coordenadas de textura (siempre he visto uv en su lugar). Supongo que p se usaría para texturas 3D, pero ¿en qué situación se usaría q ? Editar: No importa, acabo de encontrar mi respuesta. Eso sería, con TextureCubeArrays.
David Gouveia
@DavidGouveia: No, en realidad. Las diferentes funciones de textura tienen diferentes significados. Por ejemplo, acceder a sampler2DShadowcon texturesignifica que la coordenada p es el valor de comparación. Acceder a a sampler2DShadowcon textureProjsignifica que la coordenada p es el valor de comparación, y la coordenada q se divide en las otras tres ( antes de la comparación, entonces p es realmente comparison * q). No tienen ningún significado intrínseco ; el significado cambia según cómo se usen.
Nicol Bolas
@ Nicol Gracias por aclarar eso. De hecho, solo he usado HLSL antes e incluso allí solo he necesitado realmente los intrínsecos básicos tex2D y texCube. No estaba al tanto de la multitud de funciones de texturas existentes. (Sin relación: ¿Es ese su nombre real, o simplemente el dragón de MTG?)
David Gouveia