Zdroj:
Základní verze využívá víceprůchodový algoritmus podobný odloženému vykreslování. Hlavním rozdílem oproti odloženému vykreslování je fakt, že výpočet osvětlení je prováděn v nižším rozlišení.
První průchod naplní G-buffer, pomocí kterého se následně druhým průchodem vypočítá osvětlení a uloží se do L-bufferu. Poslední průchod, který pracuje v plném rozlišení, znovu vykresluje geometrii scény a pomocí speciálně interpolovaných dat z G a L-bufferů dochází k výpočtu výsledné barvy fragmentů.
Navíc lze zajistit i vykreslování poloprůhledných objektů pomocí techniky prokládání, při ztrátě poloviny rozlišení.
Oproti původnímu popisu z článku je zde přidáno několik úprav se snahou o odstranění některých neduhů:
Navíc je zde implementováno dlaždicové vykreslování osvětlení, při kterém dochází k filtrování seznamu světel a následném počítání osvětlení pouze u světel, které mohou osvětlit fragmenty dané dlažice. Tohoto je docíleno pomocí výpočtu rozsahu hloubek fragmentů z prvního průchodu vykreslování a analytického výpočtu rozsahu hloubek jednotlivých světel.
Forward | Inferred 75% | Inferred 25% | Inferred 100% | Inferred 75% (predepth) | Inferred 75% (complex dsf) | Inferred 75% (w/o light count) | |
---|---|---|---|---|---|---|---|
Render CPU | 2150.52µs | 2826µs | 2463.96µs | 3181.99µs | 5221.74µs | 2924.04µs | 12155.3µs |
Predepth G-Buffer | 596.41µs | ||||||
G-Buffer Pass | 1739.34µs | 1395.38µs | 1942.67µs | 1975.7µs | 1739.04µs | 1713.48µs | |
Light Depth Scale | 46.5838µs | 32.3348µs | 59.0694µs | 47.017µs | 46.7159µs | ||
Light Count Pass | 31.0538µs | 22.4102µs | 39.1383µs | 34.7085µs | 32.0594µs | ||
Light Pass | 1050.3µs | 229.847µs | 1709.84µs | 1052.2µs | 1054.84µs | 9355.22µs | |
Predepth Material | 699.995µs | ||||||
Material Pass | 1668.05µs | 1502.94µs | 1833.83µs | 1565.58µs | 2413.88µs | 2063.01µs | |
Render GPU | 163289µs | 5142.88µs | 3758.47µs | 6295.97µs | 6376.58µs | 5942.01µs | 13752.8µs |