"рисуем" геометрию в буфер глубины
"рисуем" другие порталы в буфер без записи, но с тестом и определяем виден он или нет
добавляем видимые порталы, соответственно стороне, в две ветки текущего портала
|
рисовать придётся видимо не 1 раз? т.к. даже если с огромным фовом отрендерить кадр в направлении портала, не факт что у нас в нём растеризуются другие порталы, которые очень по бокам.
наверное надо будет 5 раз рендерить, аля полукуб, чтобы со всех сторон потенциально видимые увидеть.
алсо, вместо софтварного растеризатора, эффективнее было бы юзать occlusion queries.
хм, я тупо делал фрустум из позиции камеры и точек портала (их было всегда 4), в принципе достаточно получить описывающий прямоугольник портала в экране и поплющить направление/фов фрустума, чтобы через него шёл.