Що таке відкладена візуалізація?


54

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

Відповіді:


55

Визначальною характеристикою відкладеної візуалізації є те, що вона суттєво змінює складність відображення сцени з O (геометрія * фари) на O (геометрія + вогні).

Це досягається спочатку візуалізацією сцени за допомогою шейдерів, призначених для виведення основних атрибутів, таких як (як мінімум) положення *, звичайний та розсіяний колір. Інші атрибути можуть включати в себе піксельні значення пікселя та інші властивості матеріалу. Вони зберігаються в цілях повного екрану візуалізації, спільно відомих як G-буфер.

(*: Варто відзначити, що розробники будуть частіше вибирати для зберігання глибини і використовувати це для реконструкції позиції, оскільки наявність глибини доступна для багатьох інших ефектів. )

Після створення G-буфера можна обчислити повністю освітлений результат для будь-якого пікселя на екрані, вирішивши BRDF рівно один раз на піксель на світло. Іншими словами, якщо у вас 20 сіток, на кожну з яких впливає 20 світильників, традиційне ("вперед") відображення вимагатиме повторного відтворення кожної сітки кілька разів, щоб накопичити результат кожного світла, що впливає на неї. У гіршому випадку це буде один дзвінок дзвінка на сітку на світло, або 400 загальних розмовних дзвінків! Для кожного з цих викликів притягування ви надмірно ретранслюєте вершини сітки. Також є хороший шанс, що ви будете затінювати пікселі, які насправді не впливають на світло, або не будуть видні в кінцевому результаті (тому що вони будуть закупорені іншою геометрією сцени). Кожен з цих результатів витрачає витрачені ресурси GPU.

Порівняйте із відкладеною візуалізацією: для заповнення G-буфера потрібно лише один раз виводити сітки. Після цього для кожного світла ви надаєте обмежувальну форму, яка представляє тривалість впливу світла. Для точкового світла це може бути невелика сфера, або для спрямованого світла, це буде повноекранний квадроцикл, оскільки впливає вся сцена.

Потім, виконуючи шейдер пікселя / фрагмента для обмежуючого гучності світла, ви читаєте атрибути геометрії з відповідного положення текстур G-буфера і використовуєте ці значення для визначення результату освітлення. Затіняються лише пікселі сцени, які видно в кінцевому результаті, і вони затінені рівно один раз на світло. Це представляє потенційно величезну економію.

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


8

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

Буфери з геометрії - це ранній приклад, коли сцена відображається в ряд буферів, які містять, наприклад, положення, нормальну та основну текстуру непрозорої геометрії. Освітлення не застосовувалося, а остаточний колір не відомий. У наступних проходах відображаються фари, а буфери геометрії відбираються. Це означає, що велика кількість вогнів може бути відображена за фіксованою вартістю кількості вогнів, можливо видимих ​​на піксельному екрані. Традиційне візуалізація оцінювала б усі джерела світла для поверхонь, які були закупорені та ніколи не помічені на екрані.

Існує багато варіантів, включаючи, наприклад, спочатку надання легкої інформації.

Додаткову інформацію див. На веб-сайті: http://en.wikipedia.org/wiki/Deferred_shading http://delicious.com/aancsiid/deferred-shading


-3

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

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

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


Я не думаю, що це додає нічого нового у відповіді. Це просто схоже на перефразовані частини відповіді Невердера.
HolyBlackCat

@HolyBlackCat Є кілька важливих відмінностей. По-перше, є правильне рівняння складності, по-друге, воно набагато більш стисло, хоча все ж пояснюється, як реально його реалізувати.
hellol11

there's the correct complexity equationПравда. Але я б сказав, що це незначна деталь. Ви можете запропонувати, як редагувати іншу відповідь, або залишити коментар до цього, як тільки у вас буде достатня репутація. Зробити нову відповідь через це трохи непосильне. it's much more conciseОсобисто я не думаю, що це добре. Чим більше корисних деталей має відповідь, тим краще, чи не так?
HolyBlackCat

1
@HolyBlackCat До речі, так. Особисто мені не подобається переходити через стіну тексту, щоб відповісти на просте запитання.
hellol11
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.