Как пройти дерево BSP обратно вперед - PullRequest
0 голосов
/ 06 декабря 2011

Привет, я пишу рендерер уровня Quake.Я подхожу к тому, что мне нужно учитывать прозрачность.Я знаю, что дерево двоичных разделителей пространства (BSP) отформатировано таким образом, что данные сортируются по расстоянию, или, по крайней мере, это то, что я слышал, но я не знаю, как этого добиться.Я построил дерево BSP и расшифровал PVS.

Должен ли я: 1. Выяснить, в каком листе я, например, 6.2. Выполните рендеринг от максимума до листа 6, при условии, что эти листья находятся в моем усеченном контуре и PVS.3. Выполните рендеринг с минимума до листа 6, снова принимая во внимание PVS и усеченный конус.

Разве это не так, как работает дерево BSP?

Так что это вопрос № 1.Вопрос номер два касается PVS.Я знаю, что в старые времена, когда пространство было проблемой, PVS был великолепен, потому что он был сжат.Как я сейчас это делаю, я не распаковываю PVS каждый раз при рендеринге фрейма, я делаю это один раз и сохраняю видимость листьев в векторе, который я пересекаю во время рендеринга.Имеет ли это смысл или это контрпродуктивно?

Итак, еще раз напомню, могу ли я предположить, что дерево BSP структурировано так, что листья уже отсортированы по расстоянию, а на листе 6 (из 9 листьев) я долженрендеринг 9, 8, 7, 6, 1, 2, 3, 4, 5 (при условии, что все 9 видны в PVS листа 6) таким же образом, с учетом PVS и усеченного конуса.

Спасибо.

1 Ответ

0 голосов
/ 06 декабря 2011

Чтобы выполнить рендеринг назад, я бы предложил сначала пройти / рекурсировать узел, в котором находится камера (ближние узлы).Как только вы закончите, вы пройдете через дальние узлы.

...