Две идеи, которые я имею в виду:
1) Сцена отображается в невидимом буфере с использованием моделей низкого разрешения и низкого количества полигонов (или даже с использованием только ограничивающих объемов, таких как кубы или сферы). Затем проверяется буфер, чтобы узнать, что видно или нет. Перед рендерингом сцены с низким разрешением можно применить отбраковку усеченного конуса, чтобы удалить как можно больше объектов.
2) Инструмент запускается на статической карте и выполняет сложную (и, следовательно, медленную) трассировку лучей, чтобы узнать для некоторых трехмерных позиций на карте, что видно, а что нет. Вся эта информация затем сохраняется эффективным способом, который может быть использован пользователем позднее во время выполнения (например, октавное дерево). Это решение будет работать только для статических сеток (например, для построения), а не для движущихся объектов.
Ответы:
Ответ Йована великолепен, но я просто хотел добавить, что иногда есть аппаратная поддержка для того, чтобы задать вопрос: «Эта геометрия действительно отображала пиксели?» (ваша идея # 1) Они называются окклюзия запросов - это хороший GPU Gems статья о них здесь
Это очень похоже на вашу идею № 1, за исключением того, что вам не нужен невидимый буфер, и может быть более эффективным или простым, чем проверка буфера. Связанная статья отлично справляется с работой аппаратных запросов окклюзии.
Unreal Engine использует аппаратные запросы окклюзии на платформах, которые его поддерживают, в дополнение к другим методам, таким как выборка усеченного вида и предварительный расчет статической геометрии.
источник
Этот метод используется Killzone и подробно описан в их презентации « Практическая окклюзия на PS3» . Они также используют порталы для помещений.
При работе с большими картами на открытом воздухе следует иметь в виду, что упрощение сетки так же важно, как и выборка окклюзии, поэтому часто используются некоторые вариации полей высоты с привязкой к геометрии. Вот хорошая статья, которая также охватывает отбор. GPU Gems 2 имеет реализацию этого .
источник
По крайней мере, в первых двух играх Quake использовалась стратегия 2; Я не знаю, используют ли все еще движки idTech. Мир достижимости делится на выпуклые пространства, организованные в виде древовидной структуры данных («раздел двоичного пространства»), и для каждого узла в дереве существует битовый вектор, представляющий, какие другие узлы видны из этого узла («потенциально видимый набор»).
источник