Что означают компоненты gl_TexCoord [0]?

10

Каковы различия между gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].pи gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].z?

Я так понимаю gl_TexCoord[0].x, gl_TexCoord[0].y gl_TexCoord[0].zэто пиксельные координаты?

Но что это gl_TexCoord[0].s, gl_TexCoord[0].t gl_TexCoord[0].pзначит и где я должен их использовать?

G-71
источник

Ответы:

15

Разница только семантическая . Любой вектор GLSL можно получить с помощью x/y/z/w, r/g/b/aили s/t/p/q. Типичное использование:

  • xyzwдля пространственных координат
  • rgbaдля цветов
  • stpqдля текстурных координат
  • если ничего из вышеперечисленного не применимо, можно использовать любой аромат, но когда это может сбить с толку, var[0]/var[1]/var[2]/var[3]можно использовать вместо этого.

Вы можете смешивать их в выражениях: foo.x = bar.qили даже foo.xy = bar.gb + baz.st;. Основным ограничением является то, что перебор может быть осуществлен только с использованием букв той же группы, т.е. foo.xyaявляется недействительным , так как он смешивается xyс xyzwи aс rgba.

Сэм Хоцевар
источник
Я не знаком с нотацией stpq для текстурных координат (всегда видел вместо этого uv ). Я предполагаю, что p будет использоваться для 3D текстур, но в какой ситуации будет использоваться q ? Редактировать: фигу Я только что нашел свой ответ. Это было бы с TextureCubeArrays.
Дэвид Гувейя
@DavidGouveia: Нет, на самом деле. Различные функции текстурирования имеют разные значения. Например, обращение к sampler2DShadowс textureпомощью что р координат этого значения для сравнения. Доступ к a sampler2DShadowс textureProjпомощью означает, что координата p является значением сравнения, а координата q делится на остальные три ( перед сравнением, так что p фактически comparison * q). У них нет никакого внутреннего значения; значение меняется в зависимости от того, как они используются.
Никол Болас
@Nicol Спасибо за разъяснение. Раньше я использовал только HLSL, и даже там когда-либо действительно были нужны базовые функции tex2D и texCube. Я не знал о множестве существующих функций текстурирования. (Несвязанный: это ваше настоящее имя или просто дракон из MTG?)
Дэвид Гувейя