nemyax писал: Здесь имеется в виду ежекадровая сортировка?
Ну мы же не можем предугадать, куда игрока понесёт в следующую секунду? Конечно ежекадровая.
Цитата:
nemyax писал: Существуют ли алгоритмы, которые позволяют сортировать любой меш без модификации, если известна точка зрения?
Алгоритм здесь простой: берешь и сортируешь по дальности. Ничего умнее пока еще не придумали.
Цитата:
nemyax писал: Существуют ли алгоритмы, которые позволяют сортировать любой меш без модификации при произвольной точке зрения, или нужно BSP-резать?
BSP тут никак не поможет, в самом уровне стеклянные дырки делают редко, а бмодели в BSP-дерево не входят.
Цитата:
nemyax писал: Является ли BSP-нарезка гарантией правильной сортировки?
Только для софтварного рендерера. Аппаратному пофик, т.к. он использует Z-Buffer для сортировки непрозрачных поверхностей.
А прозрачные поверхности нельзя писать в Z-Buffer (потому что они прозрачные), вот и приходится вручную.
Я имел в виду заранее построить для модели дерево и порезать ей полигоны соответствующим образом. После такой подготовки будет гарантироваться корректность сортировки с любого ракурса?
nemyax писал: После такой подготовки будет гарантироваться корректность сортировки с любого ракурса?
Да.
Под "соответствующим образом" понимается отсутствие пересекающихся полигонов, а также полигонов, лежащих вне плоскостей бсп-дерева (т.е. бсп как в ку1/хл1, но НЕ ку3).
Мне казалось, что сортировка на лету — обыденная вещь, которая есть во всех движковых рендерерах, кроме ну самых захудалых (превед, Dark Engine). А оно вон оно чё михалыч.
А в каких движках она всё-таки реализована грамотно?
Дядя Миша писал: Алгоритм здесь простой: берешь и сортируешь по дальности. Ничего умнее пока еще не придумали.
Я на этом как-то застопорился. Полигоны-это же не точки, чтобы однозначно определять расстояние до них. До какой точки полигона считается расстояние до него?
Crystallize писал: The Sega Dreamcast games console included hardware support for automatic OIT.
Да пофигу на самом деле. Сейчас можно всё это через шейдеры сделать.
Цитата:
nemyax писал: Я имел в виду заранее построить для модели дерево и порезать ей полигоны соответствующим образом
Ты понимаешь, что сортировать надо не полигоны внутри модели, а ВООБЩЕ ВСЕ полупрозрачные полигоны, которые попали во фрустум?
Без разницы какой модели они принадлежат. Иначе сортировка будет неправильной.
Цитата:
nemyax писал: А в каких движках она всё-таки реализована грамотно?
В ксаше - более-менее грамотно, надеюсь в новом рендерере ксаш-мода будет совершенно правильной.
Цитата:
Crystallize писал: До какой точки полигона считается расстояние до него?
Да, это правильный вопрос. Можно считать до центра, но будут глюки.
Ксаш использует механизм рассчёта не до точки, а до плоскости (PlaneDist). Это наиболее надёжный метод. Хотя тоже иногда подлагивает, например на крутящихся полупрозрачных брашах.
Есть и другие случаи, но в реальной игре вы их не встретите. Разве что в синтетическом тесте.