Каркасный рендеринг с буфером глубины при отложенном рендеринге - PullRequest
0 голосов
/ 31 октября 2018

У меня есть небольшое приложение OpenGL для научной визуализации с конвейером отложенного рендеринга. У меня есть 2 прохода: геометрический проход, на котором я рендерил текстуры с позициями, нормалями, альбедо, сегментацией и т. Д .; и проход освещения, где я просто отображаю некоторые из этих данных на четырехугольник и отображаю их на экране или даже сохраняю некоторые изображения на жестком диске. Итак, классический отложенный рендеринг.

Теперь мне нужно добавить каркасный рендеринг для дополнительной текстуры. Я думал о том, чтобы сделать это в геометрическом шейдере, но это казалось довольно сложным, и производительность не была проблемой, поэтому я просто установил третий проход с glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);, где я рендерил его в текстуру, а затем передал его в проход освещения. вместе с другими вещами.

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

Было бы также хорошо визуализировать модель, а затем визуализировать на ней каркас, но я не могу этого сделать, потому что я рендерил модель на текстуру в проходе геометрии с помощью glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); и каркас в другом проходе с glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);, поэтому я не могу использовать буфер глубины по умолчанию.

Итак, у вас, ребята, есть мысли?

1 Ответ

0 голосов
/ 31 октября 2018

Хорошо, я решил проблему. Перед реализацией сплошного каркасного рендеринга, как предложено @httpdigest, я попытался просто сохранить буферы глубины с обоих проходов и визуализировать модель поверх каркаса, если глубина меньше, чем у каркасного. Оказалось, в значительной степени то, что мне нужно.

enter image description here

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

...