2.5D Renderer

Stage 2: Отрисовка секторов

Порталы 1D: соединяем сектора

Чтобы реализовать идею о порталах, начнем с самого простого ограничения области видимости портала — одномерного интервала по оси X экрана. Когда отрисовщик встречает портал, он запоминает его левую и правую границы, переходит в соседний сектор и рисует его только внутри этого интервала.

2.5D Renderer

2D Renderer

Управление камерой WASD

Первая демонстрация показывает рекурсивный обход целиком по секторам: за один шаг подготавливаются и рисуются стены, пол и потолок очередного сектора.

2.5D Renderer

2D Renderer

Во второй демонстрации тот же алгоритм разбит на более мелкие шаги.

Отдельно рисуется каждый фрагмент пола, потолка и стены, поэтому порядок заполнения экрана виден подробнее.

2.5D Renderer

2D Renderer

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

Реализация шага на github: Анимация 1 ; Анимация 2