В современных играх ААА с открытым окружением и большим количеством статического контента (например, crysis), как выполняется отбор окклюзии?

19

Две идеи, которые я имею в виду:

1) Сцена отображается в невидимом буфере с использованием моделей низкого разрешения и низкого количества полигонов (или даже с использованием только ограничивающих объемов, таких как кубы или сферы). Затем проверяется буфер, чтобы узнать, что видно или нет. Перед рендерингом сцены с низким разрешением можно применить отбраковку усеченного конуса, чтобы удалить как можно больше объектов.

2) Инструмент запускается на статической карте и выполняет сложную (и, следовательно, медленную) трассировку лучей, чтобы узнать для некоторых трехмерных позиций на карте, что видно, а что нет. Вся эта информация затем сохраняется эффективным способом, который может быть использован пользователем позднее во время выполнения (например, октавное дерево). Это решение будет работать только для статических сеток (например, для построения), а не для движущихся объектов.

tigrou
источник
3
Вопросы «Как игра <X> сделала это» явно не по теме в соответствии с часто задаваемыми вопросами . Может быть, отредактируйте этот вопрос, чтобы спросить, как вы можете сделать выборку окклюзии, а не как это делает кто-то другой ? (Кроме того, предоставляя свои собственные ответы в основной части вопроса, создается ощущение, что вы спрашиваете о дискуссии или списке, а не о ответе )
Тревор Пауэлл,

Ответы:

13

Ответ Йована великолепен, но я просто хотел добавить, что иногда есть аппаратная поддержка для того, чтобы задать вопрос: «Эта геометрия действительно отображала пиксели?» (ваша идея # 1) Они называются окклюзия запросов - это хороший GPU Gems статья о них здесь

Это очень похоже на вашу идею № 1, за исключением того, что вам не нужен невидимый буфер, и может быть более эффективным или простым, чем проверка буфера. Связанная статья отлично справляется с работой аппаратных запросов окклюзии.

Unreal Engine использует аппаратные запросы окклюзии на платформах, которые его поддерживают, в дополнение к другим методам, таким как выборка усеченного вида и предварительный расчет статической геометрии.

Брайан Фелпс
источник
Аппаратные запросы окклюзии на самом деле немного чаще, чем «иногда» в наши дни - за исключением некоторых мобильных графических процессоров, их можно считать вездесущими.
Максимус Минимус
разве они не очень медленные?
Quonux
12

1) Сцена отображается в невидимом буфере с использованием моделей низкого разрешения и низкого количества полигонов (или даже с использованием только ограничивающих объемов, таких как кубы или сферы). Затем проверяется буфер, чтобы узнать, что видно или нет. Перед рендерингом сцены с низким разрешением можно применить отбраковку усеченного конуса, чтобы удалить как можно больше объектов.

Этот метод используется Killzone и подробно описан в их презентации « Практическая окклюзия на PS3» . Они также используют порталы для помещений.

При работе с большими картами на открытом воздухе следует иметь в виду, что упрощение сетки так же важно, как и выборка окклюзии, поэтому часто используются некоторые вариации полей высоты с привязкой к геометрии. Вот хорошая статья, которая также охватывает отбор. GPU Gems 2 имеет реализацию этого .

Йован
источник
5

По крайней мере, в первых двух играх Quake использовалась стратегия 2; Я не знаю, используют ли все еще движки idTech. Мир достижимости делится на выпуклые пространства, организованные в виде древовидной структуры данных («раздел двоичного пространства»), и для каждого узла в дереве существует битовый вектор, представляющий, какие другие узлы видны из этого узла («потенциально видимый набор»).

Рассел Борогове
источник
1
Если вы собираетесь использовать Quake, вы также можете использовать технологию рендеринга Thief;) - nothings.org/gamedev/thief_rendering.html
Йован