Передача вперед - це процес обчислення значення сяйва для фрагмента поверхні безпосередньо з вхідної геометрії та інформації про освітлення. Відкладене візуалізація розбиває цей процес на два етапи: спочатку створюють буфер простору на екрані, що містить властивості матеріалу (буфер геометрії або G-буфер), побудований за допомогою растеризації вхідної геометрії, а другий виробляє значення випромінювання для кожного пікселя, комбінуючи G- буфер з інформацією про освітлення.
Відкладене візуалізація часто подається як оптимізація передачі вперед. Одне з пояснень полягає в тому, що освітлення є досить дорогим, і якщо у вас є якийсь перебір, ви запалюєте пікселі, які ніколи не будуть помічені на екрані, тоді як якщо ви зберігаєте властивості матеріалу в G-буфер і світло потім, ви запалюєте лише піксель, який буде насправді з'являються на екрані. Це насправді перевага відкладеного, враховуючи те, що ви також можете зробити попередній прохід по глибині, а потім зробити пропуск у прямому рендері з тестом на глибину, встановлений на D3D11_COMPARISON_EQUAL
або GL_EQUAL
еквівалент?
Відкладене візуалізація також має потенціал для кращого планування графічного процесора. Розщеплення однієї великої основи / фронта хвилі на меншу геометрію хвилі, а потім меншу освітлювальну хвилю пізніше покращує заповнення (більше хвиль у польоті одночасно). Але ви також набагато більше використовуєте пропускну здатність (записуючи велику кількість каналів у G-буфер, а потім читайте їх під час освітлення). Очевидно, що тут особливості багато залежать від вашого GPU, але які загальні принципи?
Чи існують інші практичні міркування щодо ефективності, коли приймаються рішення між передачею вперед та відкладеною подачею? (Припустимо, що при необхідності ми можемо використовувати варіанти кожної техніки: тобто ми можемо порівняти плитку вперед і відкладену плиткою.)