OpenGL 3D прозрачность в вокселях

(Извините заранее, я не за компьютером, поэтому не могу предоставить код) У меня есть игра на основе вокселей, и я хотел добавить прозрачные текстуры, а именно стекло. Я понял, что прозрачные текстуры будут отбрасывать вещи (просматривая другие блоки), поэтому я использовал свои шейдеры, чтобы удалить любые альфа-компоненты ниже, чем альфа-значение стеклянной текстуры. В настоящее время стекло имеет альфа-коэффициент 0,26 (диапазон координат от 0 до 1), и он отлично работает. Но, если я хочу добавить прозрачность к стеклу вместо того, чтобы удалить всю прозрачность, я столкнусь с моей старой проблемой, где вы можете видеть сквозь блоки за стеклом.

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

Или есть лучший способ сделать это?

1 ответ

Решение

Просмотр блоков за прозрачной геометрией означает, что у вас все еще включена проверка глубины, то есть блоки за стеклом не визуализируются.

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

да, вам все равно нужно сортировать, геометрические шейдеры не решают эту проблему

однако вам нужно сортировать прозрачную геометрию только когда вы визуализируете их после непрозрачной геометрии (после включения альфа-смешивания)

Другие вопросы по тегам