ПрограммированиеФорумГрафика

Вычислить координаты ячейки регулярной сети в вертексном шейдере

#0
18:57, 13 апр 2021

Рисуется террайн посредством карты высот. В вершинном шейдере нужно для каждого квада получить координаты XY ячейки, показывающие ее координаты.
На рисунке большим черным шрифтом - нужные координаты(которые нужно вычислить), красным - координаты вершин квадов в глобальном пространстве.

Изображение


На один квад вершинный шейдер вызовется четыре раза. Соответственно, для левого верхнего квада нужно получить в вершинном шейдере координаты (0,0), для правого верхнего - (1,0), для левого нижнего (0,1)...

Возможно ли это сделать не передавая эти координаты через атрибуты вершины, а посчитать непосредственно в самом вертексном шейдере? Или это в принципе невозможно?

#1
19:11, 13 апр 2021

MikeNew
Точно ли координаты ячейки нужны в вершинном шейдере? Потому что это проще посчитать во фрагментном, передать туда координаты вершин, интерполяцией получить координаты во фрагменте, отбросить дробную часть и готово.

#2
20:31, 13 апр 2021
uint cellIndex = gl_VertexIndex % 4; //4 vertices per cell
ivec2 cellCoord = ivec2(cellIndex / width, cellIndex % width) //width cells per row
#3
9:47, 14 апр 2021

Ranma
> Точно ли координаты ячейки нужны в вершинном шейдере? Потому что это проще
> посчитать во фрагментном, передать туда координаты вершин, интерполяцией
> получить координаты во фрагменте, отбросить дробную часть и готово.
Точно. Мне надо читать из текстуры в вертексном шейдере по этим координатам.

#4
9:48, 14 апр 2021

Suslik
> gl_VertexIndex
Совсем про него забыл, спасибо.

ПрограммированиеФорумГрафика

Тема в архиве.