Отключить запись в глубину буфера из glsl - PullRequest
0 голосов
/ 12 января 2012

Вся геометрия хранится в одном VBO (прозрачный + не прозрачный).Я не могу сортировать геометрию.Как отключить запись в буфер глубины из glsl без потери цветов данных?

Ответы [ 2 ]

5 голосов
/ 12 января 2012

Если я правильно понимаю, вы хотите отключить глубинную запись, потому что вы рисуете как непрозрачные, так и прозрачные объекты. Помимо того факта, что он не работает таким образом из GLSL, он не будет производить то, что вы хотите, если бы он работал.

Если вы просто отключили глубину записи ad hoc , непрозрачные объекты, появляющиеся после прозрачного объекта, будут перезаписывать его независимо от порядка z.

То, что вы действительно хотите сделать, это:

  1. Включение записи глубины и проверки глубины
  2. Нарисуйте всю непрозрачную геометрию. Если вы можете, в грубо отсортированном порядке ( грубо достаточно!), Сначала расположите самые близкие объекты.
  3. Отключить запись глубины, оставить включенным тест глубины
  4. Включить смешивание
  5. Нарисуйте прозрачные объекты, отсортированные в противоположном направлении, которое находится дальше всего. Это исключает прозрачные объекты с непрозрачной геометрией и обеспечивает правильное смешивание.

Если по какой-то причине вы не можете отсортировать непрозрачную геометрию (хотя на самом деле нет причин, почему вы не можете этого сделать?), Не берите в голову - это будет немного медленнее, потому что он не отбирает фрагменты, но создает одно и то же изображение.

Если по какой-то причине вы не можете отсортировать геометрию прозрачный , вам придется ожидать неверных результатов, когда несколько прозрачных объектов перекрываются. Это может быть или не быть заметным (особенно, если порядок «случайный», т. Е. Изменяется кадр за кадром, это будет очень заметно - в противном случае вам может это сойти с рук, хотя это неверно).

Обратите внимание, что, как уже указывал datenwolf, тот факт, что несколько объектов находятся в одном VBO, не означает, что вы не можете нарисовать их подмножество или несколько подмножеств в любом порядке. В конце концов, VBO содержит только некоторые вершины, это зависит от вас, какие группы из них вы рисуете в каком порядке.

0 голосов
/ 12 января 2012

Нельзя.

Я не могу отсортировать геометрию.

Почему?Вы думаете, потому что это все в одном VBO?Тогда у меня есть хорошие новости: можно рисовать только из подмножества буферного объекта.

...