Получение данных из вершинного шейдера GLSL - PullRequest
0 голосов
/ 30 мая 2011

У меня есть много прозрачных примитивов, которые я хочу отсортировать перед рисованием, но чтобы получить координату Z, ключ сортировки, я выполняю программно все преобразования, выполняемые вершинным шейдером в аппаратном обеспечении.

Я думал, что смогу оптимизировать процесс, извлекая координату Z из шейдера и используя ее для сортировки примитивов в следующем кадре. Поскольку не ожидается, что порядок примитивов резко изменится между кадрами, он должен обеспечить достаточно справедливое упорядочение. Итак, я хотел бы знать, как получить пакет координат Z обратно из вершинного шейдера? Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

Вы можете использовать Преобразование обратной связи , чтобы получить данные из вывода Vertex Shader в буфер, который вы сможете позже прочитать, но я не думаю, что это принесет вам много пользы, вы должны указать, какое решение лучше(экспериментально).

1 голос
/ 30 мая 2011

Вместо того, чтобы рассматривать каждый примитив в отдельности, вы должны сортировать на основе ограничивающих объемов связанных сеток. Этот вид сортировки предоставляется более или менее бесплатно, если вы организуете геометрию в структуре пространственного подразделения, такой как дерево Kd или BSP. Тогда задача сортировки сводится к осуществлению обхода дерева в правильном направлении - в основном это сводится к первому обходу на глубину с обходом ветвей почти ← → далеко.

...