Відкладене освітлення і затінювання
Ця стаття не містить посилань на джерела. (січень 2019) |
Відкладене освітлення і затінювання, відкладений рендеринг (англ. deferred shading) — програмна техніка (методика) в тривимірній комп'ютерній графіці для обробки освітлення і затінення візуальної сцени. В результаті роботи алгоритму відкладеного освітлення і затінювання процес обчислення розбивається на менші частини, які записуються у проміжну буферну пам'ять і об'єднуються потім. Головною відмінністю відкладеного освітлення і затінювання від стандартних методів освітлення є те, що ці методи негайно записують результат роботи шейдера у фреймбуфер кольору. Реалізації в сучасних апаратних засобах обробки графіки мають тенденцію використовувати множинні цілі рендерингу (англ. multiple render targets — MRT) для уникнення надмірних трансформацій вершин. Зазвичай, як тільки побудовано усі необхідні буфери, вони потім прочитуються (зазвичай як ввідна текстура) з шейдерного алгоритму (наприклад, рівняння освітлення) і об'єднуються для створення результату. В цьому випадку обчислювальна складність і смуга пропускання пам'яті, необхідні для рендерингу сцени, зменшуються до видимих частин, таким чином зменшуючи складність освітлюваної сцени.
Первинною перевагою відкладеного рендерингу є сумісність з «грубим» і «раннім» тестуванням Z-буфера, інші переваги ще не досліджені належним чином. Ці переваги можуть включати простіше управління складними ресурсами освітлення, легкість управління іншими складними шейдерними ресурсами і спрощення програмного конвеєра візуалізації.
Одним з ключових недоліків техніки відкладеного рендерингу є нездатність обробити прозорість у межах алгоритму, хоча ця проблема є загальною і для Z-буферизації; виходом з цієї проблеми є затримання і сортування рендерингу прозорих частин сцени. Інше рішення — використання обчислювальних шейдерів Direct3D 11/OpenGL 4.3 для реалізації алгоритму Order independent transparency.
Іншим досить важливим недоліком відкладеного рендерингу є несумісність із згладжуванням. Оскільки стадія освітлення відокремлена від стадії геометрії, то апаратний анти-аліасінг не призводить до правильних результатів. Хоча перший прохід, використовуваний при рендерингу базових властивостей (дифузна обробка, карта висот), може використовувати згладжування, до повного освітлення згладжування непридатне. Однією з типових методик для подолання цього обмеження є метод виділення меж (англ. edge detection) фінального зображення з подальшим застосуванням розмиття до граней (меж). Проте цей недолік був актуальний для Direct3D 9. У пізніших версіях з'явилася можливість читати і писати окремі семпли MSAA-текстур(Render targets — в Direct3D 10, буфери глибини — в Direct3D 10.1) Це дозволило розробникам реалізовувати свої алгоритми MSAA для відкладеного освітлення. Прикладами ігор з відкладеним освітленням і підтримкою MSAA є Battlefield 3, Crysis 3, Grand Theft Auto V.
Методика відкладеного рендерингу усе частіше використовується у відеоіграх, оскільки допускає використання необмеженої кількості джерел світла і зменшує складність необхідних шейдерних інструкцій. Зокрема, «Advanced Technology Group», команда фахівців компанії Sony Computer Entertainment, досліджувала цю галузь і допомагає розробникам вбудовувати цю технологію в графічні рушії. PhyreEngine, безкоштовний графічний рушій розробки Sony Computer Entertainment, має підтримку відкладеного освітлення і затінювання. Прикладами ігор, що використовують відкладений рендеринг і розробку яких підтримала Sony Computer Entertainment, є Killzone 2 розробки Guerrilla Games, LittleBigPlanet[en] розробки Media Molecule[en] і inFamous розробки Sucker Punch Productions. До ігор, що використовують відкладений рендеринг, але в розробці яких Sony не брала участь, належать серія ігор S.T.A.L.K.E.R. розробки GSC Game World, Dead Space розробки Electronic Arts і Tabula Rasa[en] розробки NCSoft. Технологія відкладеного освітлення і затінювання використовується в ігровому рушієві CryEngine 3 розробки Crytek.