Чому деякі ігри використовують прозорий візерунок замість традиційного альфа для прозорості?


24

Останнім часом я бачив деякі 3D-ігри (наприклад:), GTA IVщоб використовувати якусь впорядковану забарвлення, щоб імітувати прозорість / альфа.

Багатокутники не прозорі, як зазвичай, але натомість надають відтінку текстуру, яка поступово переходить зліва направо, щоб імітувати прозорість:

введіть тут опис зображення

Ефект спочатку не неприємний, але досить дивно (порівняно з традиційним альфа-змішуванням)

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

Я шукав в Інтернеті, але нічого не можу знайти про цю техніку.


Ймовірно, він просто поєднувався з піксельним стилем мистецтва.
MichaelHouse

@ Byte56 Піксельний стиль мистецтва? GTA IV? Так?
Натан Рід

@NathanReed Heh, не в GTA IV. ОП згадує його побачення останнім часом в іграх.
MichaelHouse

1
Я вважаю техніку приємнішою, ніж альфа-змішування, коли зникають 3D-об’єкти, що надто наближаються до найближчої площини.
Андреас

Відповіді:


27

Це досить поширений підхід до прозорості в іграх, які використовують відкладене затінення. Належна прозорість взагалі не спрацьовує з відкладеним затіненням, оскільки на одному пікселі можуть зберігатися лише одна поверхня даних (глибина, нормальний вектор, колір тощо), а належна прозорість передбачає безліч поверхонь, що перекриваються пікселем, кожна з яких потребує незалежності освітлення.

Існує кілька способів вирішити цю проблему:

  • Використовуйте затінення вперед (можливо, за допомогою моделі зменшеного освітлення) для прозорих поверхонь, а для непрозорих поверхонь - відкладених. Прозорі поверхні повинні бути намальовані в окремому проході з сортуванням "назад-до-перед".
  • Використовуйте затухання, більш відоме як заслінка або прозорість екрану, що працює з відкладеним затіненням, оскільки дає лише одну поверхню на піксель. Це особливо добре спрацьовує для переходів LOD, оскільки вони зазвичай закінчуються за фіксовану кількість часу, обмежуючи тривалість видимості забиття. Це не дуже добре підходить для, скажімо, скляних вікон на будівлі.
  • Можливо також застосувати стиплінг, але потім застосувати розмиття після обробки, яке рекомбінує зв'язані пікселі, надаючи наближення належної прозорості. Volition робить це в Saints Row the Third (а можливо, і в інших їхніх іграх) під назвою " підведене освітлення ". Це може виглядати досить приємно, але розмивання після обробки коштує дорого.
  • І звичайно, існують усі методи , що не залежать від замовлення прозорості , хоча я не знаю жодної гри, яка їх використовує. Вони поки що лише для демонстрацій технологій.

Можна також використовувати комбінацію цих підходів, наприклад, затінення вперед для скляних вікон та застигнення для переходів LOD.

Варто також відзначити, що деякі ігри використовують стиглі для м'яких тіней. Це компроміс продуктивності; приємніші тіні потребують більшої кількості зразків текстури в піксельній шейдері, що займає більше часу, але ви можете отримати добре виглядати результати, використовуючи меншу кількість зразків і компенсуючи їх положення випадковим чином. Випадкове зміщення створює ефект защемлення.


Я не знав про техніку відкладеного затінення (пояснив тут: en.wikipedia.org/wiki/Deferred_shading ). Вони також розповідають про можливі альфа-проблеми. Майте сенс зараз. Дякую за відповідь
tigrou

0

Це простий компроміс продуктивності. Альфа-змішування вимагає зчитування з поточного кольорового буфера, тоді як цей вид відшарування є лише для запису (або, звичайно, лише для відкидання).

Можна змішати цю техніку з мультисемплінг, який потім називається альфа до покриття .


Про яку "компромісну діяльність" ви говорите? Early-Z вимикається, якщо ви користуєтесь відказом у вашому шейдері. Змішування проводиться на апаратному забезпеченні і швидко.
Тара

Насправді я просто перевірив це на своєму моторі на належній сцені з високою роздільною здатністю: Увімкнення суміші проти відключення для ВСІХ геометрії не призвело до різниці в продуктивності. Відповідь Натана Ріда є правильною, оскільки для відкладеного візуалізації зазвичай використовується дрітінг.
Тара
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.