Co oznaczają składniki gl_TexCoord [0]?

10

Jakie są różnice między gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].pi gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z?

Rozumiem, że gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zsą to współrzędne pikseli?

Ale co gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].poznaczają i gdzie muszę ich używać?

G-71
źródło

Odpowiedzi:

15

Różnica jest tylko semantyczna . Wszelkie GLSL wektor można uzyskać za pomocą x/y/z/w, r/g/b/alub s/t/p/q. Typowe zastosowanie to:

  • xyzwdla współrzędnych przestrzennych
  • rgbadla kolorów
  • stpqdla współrzędnych tekstury
  • jeżeli żadna z powyższych nie ma zastosowania, można użyć dowolnego smaku, ale var[0]/var[1]/var[2]/var[3]zamiast tego można go użyć, gdy może być mylący .

Możesz je mieszać w wyrażeniach: foo.x = bar.qlub nawet foo.xy = bar.gb + baz.st;. Głównym ograniczeniem jest to, że zamiatanie można wykonać tylko przy użyciu liter tej samej grupy, tj. foo.xyajest nieprawidłowy, ponieważ łączy się xyz xyzwi az rgba.

sam hocevar
źródło
Nie znam notacji stpq dla współrzędnych tekstury (zawsze zamiast tego widziałem UV ). Zgaduję, że p byłoby użyte do tekstur 3D, ale w jakiej sytuacji q byłoby użyte? Edycja: Nieważne, właśnie znalazłem swoją odpowiedź. Tak byłoby w przypadku TextureCubeArrays.
David Gouveia,
@DavidGouveia: Właściwie to nie. Różne funkcje teksturowania mają różne znaczenie. Na przykład, dostępu do sampler2DShadowz texturepomocą, że p współrzędnych jest wartość porównania. Dostawaniem się sampler2DShadowz textureProjpomocą że P współrzędnych jest wartość porównawcza i Q współrzędnych jest podzielony na trzy inne ( przed porównania, tak s faktycznie comparison * q). Nie mają żadnego wewnętrznego znaczenia; znaczenie zmienia się w zależności od sposobu ich użycia.
Nicol Bolas,
@Nicol Dzięki za wyjaśnienie. Właściwie użyłem HLSL wcześniej, a nawet tam naprawdę potrzebowałem tylko podstawowych elementów tex2D i texCube. Nie wiedziałem o wielu istniejących funkcjach teksturowania. (Niepowiązane: Czy to twoje prawdziwe imię, czy tylko smok z MTG?)
David Gouveia,