AGAL и переменный регистр
Я просто хотел сделать, как это работает. Так что я в верте шейдере. Я храню UV-координаты от va1 до v1. В шейдере фрагмента интерполированная текстурная координата теперь доступна в v1 для выборки. Есть ли связи под капотом, как семантика, чтобы связать v1 с нормальными координатами?
Фрагменты подталкиваются к фрагментному шейдеру в каждом треугольнике или после прохождения вершин геометрии всей сетки?
Допустим, в вершинном шейдере я умножаю свой вид модели на позицию моей вершины. Затем я хочу поделиться своими координатами z с фрагментным шейдером для чего-то еще. Я храню z-шнур преобразованного вектора в v3. Когда я нахожусь в фрагментном шейдере и у меня есть доступ к v3 для z-координаты, это та же самая z-координата, которую я передал, или эта z-координата будет изменена из-за разрыва перспективы между ними? Я спрашиваю только потому, что хочу уточнить поведение "интерполяции", описанное при сохранении значений в этих регистрах.
1 ответ
Нет семантики с переменными регистрами. Все, что вы передаете в переменный регистр, будет интерполировано, и оно будет работать так же для нормалей, как и для uvs или чего-либо еще.
Я считаю, что вся сетка сначала трансформируется с помощью вершинного шейдера, а затем запускается фрагментный шейдер. Это не должно действительно иметь значение, как аппаратные средства обрабатывают это все же.
Координата будет интерполирована; различные регистры не знают, какие данные они хранят - с их точки зрения, это всего лишь 4 числа с плавающей запятой. Поскольку переменные регистры содержат 4 компонента, вы можете просто вставить туда всю позицию вершины. Стоит отметить одну вещь - если вы хотите сделать что-то, связанное с глубиной, я думаю, вам нужен компонент w.