Сучасне трасування променів у реальному часі зазвичай кидає лише 1–4 промені на піксель за кадр. У граничному випадку трасування шляхів 1 spp (семпл на піксель) дає результат, що майже на 100% складається з шуму. Знешумлення перетворює цей надзвичайно шумний сигнал на часово стабільне, перцептивно чисте зображення — і має зробити це в межах бюджету GPU 1–3 мс. Ця стаття охоплює канонічні алгоритми: білатеральну фільтрацію, SVGF, A-SVGF, ReLAX та сімейство нейронного масштабування (DLSS / FSR / XeSS).
1. Проблема шуму в трасуванні променів при 1 spp
Трасувальник шляхів розв'язує рівняння рендерингу інтегруванням методом Монте-Карло:
За 1 семпла на піксель дисперсія оцінювача пропорційна другому моменту підінтегральної функції та обернено пропорційна кількості семплів. Для типових інтер'єрних сцен попіксельний коефіцієнт варіації може перевищувати 200% при 1 spp. Знешумлювач має відновити справжнє середнє з цієї дуже шумної оцінки, використовуючи просторові, часові дані та дані G-буфера.
Доступні дані G-буфера
Сучасні відкладені конвеєри надають попіксельно: позицію у світовому просторі, нормаль (16/32-бітну), альбедо, шорсткість/металічність, глибину, вектори руху (репроєкція), ID об'єкта та ID матеріалу. Усі алгоритми знешумлення використовують цей високоякісний геометричний сигнал, щоб скеровувати фільтрацію.
2. Білатеральні та крос-білатеральні фільтри
Білатеральний фільтр — концептуальна основа всіх знешумлювачів трасування променів. На відміну від гаусового розмиття, він зберігає краї, зважуючи внески семплів не лише за просторовою відстанню, але й за подібністю ознак:
W_p — нормувальний множник. k_s — гаусове ядро діапазону (просторове), k_r — гаусове ядро діапазону (фотометричне/за ознаками). Крос-білатеральний варіант (спільний білатеральний) використовує ознаки G-буфера замість шумного кольору для k_r — нормаль n(p)·n(q) > cos θ_thresh, лінеаризовану глибину z та подібність альбедо. Це уникає затікання через межі матеріалів, водночас згладжуючи всередині поверхонь.
Обмеження: фіксований просторовий слід (наприклад, ядро 5×5 або 11×11) або надмірно розмиває високочастотні деталі, або пропускає далекосяжні кореляції, потрібні для непрямого освітлення. Вейвлет-факторизація à-trous вирішує це.
3. SVGF: просторово-часова фільтрація під керуванням дисперсії
SVGF (Schied et al., HPG 2017) запровадив поєднання часового накопичення та фільтрації під керуванням дисперсії в уніфікований однопрохідний знешумлювач для трасування шляхів при 1 spp. Алгоритм виконується у три стадії на кожному кадрі:
3.1 Часове накопичення
Кожен піксель p репроєктується на попередній кадр за допомогою вектора руху. Накопичений колір та інтегрований квадрат кольору (для дисперсії) змішуються експоненційним ковзним середнім:
Попіксельна дисперсія оцінюється з різниці накопичених першого та другого моментів: σ²(p) = Ê[C²] − Ê[C]². Тест на розкриття (пороги глибини + нормалі, застосовані до репроєктованої позиції) скидає накопичення до α=1 для щойно видимих пікселів, уникаючи «привидів», коли рухомий об'єкт розкриває приховані поверхні.
3.2 Оцінка дисперсії та попередня фільтрація
Часова оцінка дисперсії просторово попередньо згладжується білатеральним фільтром 3×3, щоб зменшити шум у самій карті дисперсії. Це дає надійну локальну дисперсію σ²(p) для наступного кроку.
3.3 Вейвлет-фільтр à-trous
П'ять проходів 5-відвідного розширеного фільтра (вейвлет з шаблоном дірок = «à trous») з розміром кроку 2⁰, 2¹, 2², 2³, 2⁴ дають ефективний радіус 65 пікселів, коштуючи лише 5 × 5 = 25 вибірок текстури на прохід (порівняйте: 65² = 4225 для грубої сили).
Вага кожного відводу поєднує просторове гаусове ядро, ядро нормалі та ядро яскравості; ширина смуги ядра яскравості керується оберненою дисперсією: більший шум → м'якіше ядро; менший шум → різкіше ядро:
де g(p) — попередньо згладжена дисперсія, а σ_L — налаштовуваний параметр (зазвичай 4.0).
4. A-SVGF: адаптивний SVGF
A-SVGF (Schied et al., Eurographics 2018) усуває два режими відмови SVGF: часові привиди від агресивного часового повторного використання та надмірне розмиття від фіксованої ширини смуги фільтра. Він додає:
| Проблема в SVGF | Рішення A-SVGF |
|---|---|
| Привиди, коли α=0.05 дозволяє забагато історії | Попіксельна адаптивна α на основі величини часового градієнта; ділянки з високою часовою зміною отримують α→1 (без історії) |
| Фіксований 5-рівневий à-trous завжди виконується, надмірно розмиваючи різкі ділянки | Попіксельна кількість ітерацій фільтра (1–5) на основі просторово-часово оціненої дисперсії; пікселі з малим шумом пропускають глибокі вейвлет-рівні |
| Дисперсія від 1 spp має викиди | Оцінювач часового градієнта: виявляє, коли шумна яскравість поточного кадру узгоджена з накопиченою історією (обмежує, якщо розбіжна) |
A-SVGF дає різкіші результати на дзеркальних поверхнях та краще опрацьовує швидкий рух камери, ніж звичайний SVGF, за порівнянної вартості GPU (адаптивна кількість ітерацій часто зменшує середню кількість проходів з 5 до ~2–3).
5. ReLAX: знешумлювач дифузного/дзеркального
ReLAX (Nvidia, розширення VulkanRT NRD — NVIDIA Real-time Denoising) — продакшн-знешумлювач, що використовується в NVIDIA NRD SDK та постачається з такими іграми, як Cyberpunk 2077 RT Overdrive. Його ключові інновації порівняно з SVGF:
5.1 Окремі проходи дифузного та дзеркального
Дифузне освітлення та дзеркальне освітлення мають принципово різні характеристики шуму та когерентності. ReLAX знешумлює їх в окремих конвеєрах з різними моделями дисперсії та критеріями часової стабільності, потім знову поєднує через обчислення BRDF матеріалу. Знешумлення дзеркального використовує віртуальну історію — простежуючи домінантний напрямок дзеркальної пелюстки назад у часі — замість простої попіксельної репроєкції, що значно покращує рухомі відбиття.
5.2 Придушення «світлячків»
Попередній прохід обрізає викидні пікселі-«світлячки» (надзвичайно яскраві поодинокі влучання від точкових джерел світла за ковзних кутів) за допомогою обмеження до локального максимуму околу. Без цього кроку поодинокий яскравий піксель, поширюючись через часове накопичення, лишає постійну темну пляму.
5.3 Репроєкція з урахуванням пелюстки (LOBE)
Для глянсового дзеркального репроєкція використовує шорсткість поверхні, щоб зважувати між вирівняною за пікселем (як дифузне) та віртуально-позиційною (дзеркальною) репроєкцією. Для roughness→0 це збігається до дзеркальної віртуальної репроєкції; для roughness→1 це зводиться до стандартної дифузної репроєкції.
6. Нейронне масштабування: DLSS, FSR, XeSS
Тоді як SVGF та ReLAX знешумлюють на нативній роздільності рендерингу, нейронні масштабувачі одночасно знешумлюють і підвищують роздільність з нижчої внутрішньої роздільності (наприклад, 1080p → 4K у режимі «Quality» = коефіцієнт масштабу 1,5×). Це обмінює роздільність рендерингу на якість знешумлення в межах того самого піксельного бюджету.
| Алгоритм | Розробник | Метод | Зовнішні дані | Режими |
|---|---|---|---|---|
| DLSS 2/3 | NVIDIA | CNN, навчена офлайн на 16K еталонних кадрах; рекурентне часове накопичення в просторі ознак | Так — пропрієтарні ваги NN; потребує тензорних ядер | Quality (1,5×), Balanced (1,7×), Performance (2×), Ultra-Perf (3×) |
| DLSS 3.5 Ray Reconstruction | NVIDIA | Додає попроменеве нейронне знешумлення перед масштабуванням; модель розуміє шумові патерни трасування променів семантично | Ті самі ваги; генерація кадрів лише для RTX 40 | Ті самі режими масштабу + генерація кадрів |
| FSR 3 (FidelityFX) | AMD | Просторове різкішання CAS (FSR 1); часове TAAU з FP16 (FSR 2); інтерполяція кадрів за оптичним потоком (FSR 3) | Відкритий код; будь-який GPU | Ultra Quality (1,3×), Quality (1,5×), Balanced (1,7×), Performance (2×) |
| XeSS 1.3 | Intel | На основі CNN, як DLSS, але з цілочисельним резервним шляхом DP4a для GPU не від Intel | Відкритий SDK; блоки XMX на GPU Arc розблоковують повну якість | Ultra Quality+ (1,3×) … Ultra Performance (3×) |
Архітектура DLSS (спрощено)
DLSS 2 використовує єдину згорткову нейронну мережу з часовою рекурентністю. Вхідні дані: поточний кадр (у роздільності рендерингу), вектори руху, експозиція, попередній масштабований кадр. Мережа вчиться передбачати, як виглядав би еквівалентний офлайн-відрендерений кадр високої роздільності, зокрема часове накопичення без привидів. Навчання використовує асиметричну функцію втрат — караючи часову неузгодженість (привиди) сильніше, ніж втрату різкості.
7. Оцінка дисперсії з 1 spp — інженерні деталі
Точна попіксельна дисперсія — найкритичніший вхідний параметр для фільтрів сімейства SVGF. У продакшні поєднують кілька взаємодоповнювальних стратегій:
Стратегія 1: часові моменти (SVGF)
Підтримуй поточне середнє та середній квадрат яскравості. Після ≥4 дійсних кадрів історії дисперсія = E[L²] − E[L]². Схильна до привидів, якщо історія застаріла.
Стратегія 2: просторові моменти 3×3 (резерв SVGF)
Коли часова історія недоступна (перший кадр, розкриття), оцінюй дисперсію з просторового білатерального околу 7×7. Шумніше, але без привидів.
Стратегія 3: демодуляція в просторі шляхів
Відділи освітлення від альбедо (демодулюй діленням) перед фільтрацією, потім ремодулюй. Це перетворює мультиплікативну модель шуму (альбедо × шум освітлення) на приблизно адитивну, роблячи оцінку дисперсії точнішою через межі матеріалів.
8. Інтерактивне демо: порівняння білатерального та SVGF
Демо нижче рендерить синтетичний шумний сигнал (Ламбертова сфера при 1 spp з точковим джерелом світла, обчислена на JavaScript) і дозволяє порівняти сирий вивід 1 spp, спільне білатеральне знешумлення та спрощений однопрохідний SVGF-подібний фільтр. Використовуйте випадне меню та повзунки сигми, щоб побачити, як параметри знешумлення впливають на збереження країв проти усунення шуму.
Ліва панель: сирий 1 spp. Права панель: знешумлений вивід. Білатеральний фільтр зберігає край силуету сфери (керований G-буфером глибини), розмиваючи шум усередині відблиску. SVGF-подібний режим також застосовує 3-рівневий прохід à-trous для ширшого інтегрування шуму.