2016-09-06 11 views
0

Я создаю воксельный движок, разделяющий мир на куски с 32 x 32 x 32 кадрами каждый. Я выполнял много оптимизаций рендеринга, таких как не рендеринг лиц, покрытых сплошными вокселями, или face merging для одинаково похожих соседей вокселей.OpenGL Voxel движок Face Minging vs Per-Vertex Окружающая окклюзия

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

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

+0

Google "Жадная сетка" – Krythic

ответ

1

Было бы лучше вообще опустить вашу систему слияния лиц. Хотя дело не только в том, что это позволит вам делать этот эффект окклюзии более эффективно.

Одна из проблем, с лицом системы слияния является то, что рендеры только гарантирует, что ребра между двумя треугольника не будет иметь разрывы только если две общие позиции двоичные идентичные значения. Система слияния лиц имеет много треугольников, которые частично разделяют края. Графические процессоры в этих случаях не гарантируют ничего о краях; это может привести к появлению трещин между краями.