NOISE · Monte CarloGUIDE · albedo+normalFILTER · edge-awareTEMPORAL · accumulate
Rozdział 19 / Zastosowania praktyczne

Denoising

Path tracing z Rozdziału 15 zbiega się do prawidłowego obrazu — w teorii, przy nieskończonej liczbie próbek. W praktyce zawsze kończysz wcześniej. Denoising to sztuka wyciśnięcia gładkiego obrazu z za małej liczby próbek, bez oszukiwania na tyle, żeby ktoś to zauważył.

TL;DR
Pass: Bufory

Beauty jest szumiący, ale nie wszystko wokół niego

Beauty pass (finalny kolor) niesie cały szum Monte Carlo — losowość ścieżek światła z Rozdziału 15. Ale albedo (surowy kolor materiału, Rozdział 9) i normalna w punkcie trafienia (Rozdział 4) nie zależą od losowego próbkowania odbić — są praktycznie czyste, nawet przy jednej próbce na piksel. To te same AOV-y, o których wspominał Rozdział 1.

AOV.buffersnoisy vs clean
N=1 próbka · szum ∝ 1/√N ≈ 100%
BEAUTY (szum → zbiega się) ALBEDO (czysty od razu) NORMAL (czysty od razu)
Przesuń liczbę próbek — beauty stopniowo wygładza się do jednolitego koloru, dokładnie jak w Rozdziale 15, podczas gdy albedo i normal są czyste niezależnie od N.
Pass: Filtrowanie

Filtr, który wie, gdzie są krawędzie

Zwykłe rozmycie (jak uśrednianie z Rozdziału 8, tylko po sąsiednich pikselach, nie próbkach) wygładzi szum, ale też zetrze prawdziwe krawędzie. Denoiser waży sąsiadów nie tylko odległością, ale podobieństwem normalnej i głębi z buforów pomocniczych — piksele po drugiej stronie krawędzi geometrii dostają wagę bliską zeru, nawet jeśli są blisko w przestrzeni obrazu.

↓ Dodatek D — jak dokładnie liczy się ta waga
Edge-aware.filterweight by normal similarity
powierzchnia A powierzchnia B jasne = wysoka waga, ciemne = odrzucone wynik: krawędź zostaje ostra, szum wewnątrz każdej powierzchni znika
Filtr „widzi” granicę między A i B dzięki normalnym z bufora — nie miesza ich kolorów.
Pass: Czas

Akumulacja czasowa

W animacji i czasie rzeczywistym można pójść dalej: skoro kamera i scena zmieniają się płynnie, wynik z poprzedniej klatki (odpowiednio przesunięty pod ruch, reprojekcja) to darmowa dodatkowa próbka. TAA i denoisery czasowe (jak te w Unrealu czy DLSS-podobnych systemach) uśredniają nie tylko próbki w jednej klatce, ale też wzdłuż osi czasu — dokładnie ta sama logika uśredniania z Rozdziału 8 i 15, tylko rozciągnięta na wiele klatek.

Temporal.reprojectionklatka N-1 → N
KLATKA N-1 KLATKA N próbka na środku piksela próbka przesunięta wewnątrz piksela wektor ruchu
Ten sam punkt sceny w dwóch klatkach: reprojekcja przesuwa próbkę z klatki N-1 pod wektor ruchu, ale rzadko trafia dokładnie w środek piksela klatki N — stąd dodatkowe filtrowanie nawet dla „darmowej” próbki historycznej.
Z praktyki

OptiX AI Denoiser, Intel Open Image Denoise, „AI Denoiser” w Arnoldzie czy Blenderze to sieci neuronowe wytrenowane właśnie na tej relacji: szumiący beauty + czyste albedo/normal/depth na wejściu, czysty obraz na wyjściu. To dlatego włączenie denoisera bez podania buforów pomocniczych daje gorszy wynik niż z nimi — sieć dosłownie ma mniej informacji, z czego skorzystać.

Ten sam denoiser bywa wpięty w kilku miejscach naraz: Arnold ma Imager Denoiser działający po renderze, Karma wystawia OIDN jako opcję w ROP-ie, RenderMan ma własny, trenowany na danych produkcyjnych. Różnią się miejscem w pipelinie, nie zasadą — wszystkie chcą dostać te same bufory pomocnicze.

Denoising to kompromis, nie magia: agresywne ustawienia mogą zmiękczyć drobne, prawdziwe detale (futro, ostre kaustyki z Rozdziału 16) tak samo jak szum. Dlatego produkcyjne pipeline’y wciąż renderują z rozsądną liczbą próbek i używają denoisera jako ostatniego wygładzenia, nie zamiennika próbkowania.

Słowniczek
Bufory pomocnicze (AOV)
Albedo, normalna, głębia — renderowane osobno, dużo mniej zaszumione niż beauty.
Denoiser
Filtr (klasyczny albo sieć neuronowa) wygładzający szum Monte Carlo.
Filtr edge-aware
Filtr ważący sąsiadów podobieństwem normalnej/głębi, nie tylko odległością w pikselach.
Akumulacja czasowa
Uśrednianie wielu klatek, z reprojekcją pod ruch kamery i scenę.
Idź głębiej
Dodatek D — Mechanika denoisera Dodatek AJ — Light Path Expressions i AOV Dodatek AK — Cryptomatte Dodatek AN — MLT, ReSTIR i rekonstrukcja neuronowa