У сучасних іграх AAA з відкритим середовищем і великою кількістю статичного вмісту (наприклад, криза), як проводиться відключення оклюзії?


19

Дві ідеї, які я маю на увазі:

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

2) Інструмент запускається на статичну карту і виконуватиме складне (і, таким чином повільне) трасування променів, щоб знати, на яких 3d-позиціях на карті видно, а що ні. Потім вся ця інформація зберігається ефективно, що може бути користувачем пізніше під час виконання (наприклад, octree). Це рішення працюватиме лише для статичних сіток (наприклад: побудови) не рухомих об'єктів.


3
Питання "Як гра <X> зробила це" явно поза темою відповідно до FAQ . Може, відредагуйте це запитання, щоб запитати, як ви можете робити відключення оклюзії, а не як це робить хтось інший ? (Крім того, якщо ви надаєте власні відповіді в тілі питання, ви відчуваєте, що ви вимагаєте обговорення чи списку, а не відповіді )
Тревор Пауелл

Відповіді:


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
Jovan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.