Рисуется террайн посредством карты высот. В вершинном шейдере нужно для каждого квада получить координаты XY ячейки, показывающие ее координаты.
На рисунке большим черным шрифтом - нужные координаты(которые нужно вычислить), красным - координаты вершин квадов в глобальном пространстве.
На один квад вершинный шейдер вызовется четыре раза. Соответственно, для левого верхнего квада нужно получить в вершинном шейдере координаты (0,0), для правого верхнего - (1,0), для левого нижнего (0,1)...
Возможно ли это сделать не передавая эти координаты через атрибуты вершины, а посчитать непосредственно в самом вертексном шейдере? Или это в принципе невозможно?
MikeNew
Точно ли координаты ячейки нужны в вершинном шейдере? Потому что это проще посчитать во фрагментном, передать туда координаты вершин, интерполяцией получить координаты во фрагменте, отбросить дробную часть и готово.
uint cellIndex = gl_VertexIndex % 4; //4 vertices per cell ivec2 cellCoord = ivec2(cellIndex / width, cellIndex % width) //width cells per row
Ranma
> Точно ли координаты ячейки нужны в вершинном шейдере? Потому что это проще
> посчитать во фрагментном, передать туда координаты вершин, интерполяцией
> получить координаты во фрагменте, отбросить дробную часть и готово.
Точно. Мне надо читать из текстуры в вертексном шейдере по этим координатам.
Suslik
> gl_VertexIndex
Совсем про него забыл, спасибо.
Тема в архиве.