В звичайний день тижня SSAO або HBAO (Horizon Based Ambient Occlusion) нададуть деякої глибини ігровим моделям. Але для тренованого ока будуть виглядати як чорні плями поверх зображення, які хочеться зменшувати допоки ефект не згине повністю.
Проте життя дає всьому другий шанс, і екранно-просторове контактне затемнення може радувати вас і в майбутньому.
Зазвичай для генерування контактних тіней використовують глибину: речі, котрі далеко від камери, є "глибшими". Фільтр шукає в цій глибині "щилини" - регіони, котрі є глибшими за сусідні. Потім ці "щілини" і стають нашою маскою для затінення.
Саме це зробив і я, жодних іновацій, скопіював та додав. Майже... Головною відмінністю є другий крок...
Спочатку вкрутимо ефект на максимум, щоб ми точно розуміли про що йде мова.
Це без:
З ефектом:
Жахливо, чи не так?
Тепер я поміняю кут падіння сонячних променів щоб ОСВІТИТИ різницю між традиційним підходом і цим:
Різниця власне полягає у тому, як використати цю маску "щілин". Замість накладання її поверх усього зображення, я передаю її в шейдери геометрії для подальшого використання. І оскільки контактні тіні зменшують розсіяне світло, а не пряме, то я використовую їх лише для модифікації відбитого (непрямого) освітлення. Пряме сончне світло не стає темнішим коли попадає у "щілину".
Переваги
Окрім більш правильного освітлення, ще однією перевагою є можливість використання маски контактних тіней щоб зменшити відбите світло. На зеркальних обєктах я ховаю відбиття якщо кількість затемнення більша певно межі:
Без котактних тіней:
Щоправда це не найкраще порівняння оскільки в сцені також працює деяке запечене світло, котре частково дублює ефект контактних тіней. Тому вимкнемо його і зробимо останнє порівняння. З Контактними тінями (без запеченого світла):
Без контактних тіней:
Підсумок
Та й таке.
Всі інші статті у блозі писав англійською. Стало цікаво скільки людей побачить статтю якщо напишу рідною соловїною.
Comments