AGAL и переменный регистр

  1. Я просто хотел сделать, как это работает. Так что я в верте шейдере. Я храню UV-координаты от va1 до v1. В шейдере фрагмента интерполированная текстурная координата теперь доступна в v1 для выборки. Есть ли связи под капотом, как семантика, чтобы связать v1 с нормальными координатами?

  2. Фрагменты подталкиваются к фрагментному шейдеру в каждом треугольнике или после прохождения вершин геометрии всей сетки?

  3. Допустим, в вершинном шейдере я умножаю свой вид модели на позицию моей вершины. Затем я хочу поделиться своими координатами z с фрагментным шейдером для чего-то еще. Я храню z-шнур преобразованного вектора в v3. Когда я нахожусь в фрагментном шейдере и у меня есть доступ к v3 для z-координаты, это та же самая z-координата, которую я передал, или эта z-координата будет изменена из-за разрыва перспективы между ними? Я спрашиваю только потому, что хочу уточнить поведение "интерполяции", описанное при сохранении значений в этих регистрах.

1 ответ

Решение
  1. Нет семантики с переменными регистрами. Все, что вы передаете в переменный регистр, будет интерполировано, и оно будет работать так же для нормалей, как и для uvs или чего-либо еще.

  2. Я считаю, что вся сетка сначала трансформируется с помощью вершинного шейдера, а затем запускается фрагментный шейдер. Это не должно действительно иметь значение, как аппаратные средства обрабатывают это все же.

  3. Координата будет интерполирована; различные регистры не знают, какие данные они хранят - с их точки зрения, это всего лишь 4 числа с плавающей запятой. Поскольку переменные регистры содержат 4 компонента, вы можете просто вставить туда всю позицию вершины. Стоит отметить одну вещь - если вы хотите сделать что-то, связанное с глубиной, я думаю, вам нужен компонент w.

Другие вопросы по тегам