Есть некий формат статических моделек, в котором хранятся меши с отсортированными через BSP полигонами. Как выясняется, эта сортировка рендерится корректно даже если тупо записать все полигоны меша в одну ноду в отсортированном порядке.
Доводилось ли вам встречаться со сплющенными BSP-деревьями? По какому принципу их жмут в плоские списки?
Например, какой список получился бы из такого дерева?
nemyax писал: Как выясняется, эта сортировка рендерится корректно даже если тупо записать все полигоны меша в одну ноду в отсортированном порядке.
Да хардварным рендерерам как бы пливать на порядок отрисовки, они всё равно через depth-buffer определяют что поверх чего рисовать. Это для софтварного такая полезная оптимизация была.
А вообще при наличии BSP-дерева всегда существует способ его не использовать. BSP - это как каталог в библиотеке, который позволяет быстро найти искомое в несколько шагов. Но никто ж тебе не запретит перешерстить библиотеку пошагово для достижения той же цели.
Вот только зачем?
Дядя Миша писал: Да хардварным рендерерам как бы пливать на порядок отрисовки, они всё равно через depth-buffer определяют что поверх чего рисовать.
Отрисовка полигонов поверх уже отрисованных - пустая трата ресурсов. Ну конечно для древних движков, вроде Source Engine, это не имеет значения - там можно хоть всю карту рисовать, не заботясь ни о порядке отрисовки (за исключением конечно прозрачности), ни об удалении невидимых частей. Но для всяких Крузисов, с многомегабайтными пиксельными шейдерами и километровыми пейзажами, это может быть критично.
Спасибо за ответы. Я всё надеялся, что пронесёт и не придётся говнокодить bsp-резак, а получится обойтись какой-нибудь примитивной недосортировкой. Но по ходу дела надо действительно строить дерево. Как я это буду делать петоном без рекурсии, хрен его знает =(
Конечно можно, но сколько возни. Где-нибудь в ерланге положил сверху паттернов да насовал снизу самовызовов — вот тебе и дерево. А тут ещё в голову думать.