Получение нескольких значений глубины пикселя после проецирования сетки - PullRequest
2 голосов
/ 04 июля 2019

Мне нужно записать несколько значений глубины на пиксель. У меня есть сетка, и при проецировании на изображение мы можем вывести глубину в месте расположения пикселя. Эта глубина дает расстояние до ближайшего полигона.

Но можем ли мы получить значения глубины всех полигонов, которые проецируются в пикселях (x, y)?

Если да, может ли кто-нибудь предоставить помощь в том, как это сделать в Opengl?

1 Ответ

0 голосов
/ 04 июля 2019

Я не думаю, что есть наивный способ сделать это.

Но вот идея.

Сначала предварительно выделите несколько буферов глубины, например, 16. Это будет максимумколичество различных глубин, которые вы можете сохранить.

Очистить все буферы глубины до бесконечности (максимальной глубины).

Нормально перетянуть в первый буфер глубины (GL_LESS).

Для следующих буферов мы будем рисовать иначе.Мы возьмем предыдущий буфер глубины в качестве входных данных для нашего фрагментного шейдера.В шейдерном фрагменте мы проводим какой-то ручной тест глубины.

if(currentDepth <= previousDepth) {
    discard;
}

Мы здесь делаем «рассмотрим фрагмент, только если он дальше, чем предыдущий».Аппаратный тест глубины делает свое дело одновременно.

Таким образом, результатом каждой итерации является ближайший фрагмент, который находится дальше, чем предыдущий.И мы получаем «массив срезов глубины».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...