Multi-Resolution Screen-Space Ambient Occlusion

Download Report

Transcript Multi-Resolution Screen-Space Ambient Occlusion

Multi-Resolution Screen-Space
Ambient Occlusion
Thai-Duong Hoang
Kok-Lim Low
National University of Singapore
1
Ambient Occlusion (AO)
𝐩
πͺ
2
AO
πœ½π’Š
𝐩
Cosine-weighted fraction of a
tangent hemisphere that is
occluded
πͺi
𝐧
π’…π’Š
π‘‘π‘šπ‘Žπ‘₯
1
𝐴𝑂 𝐩 =
πœ‹
𝜌 𝐩, 𝑑𝑖 cos πœƒπ‘– 𝑑𝑀𝑖
Ξ©
𝑑𝑖 β‰₯ π‘‘π‘šπ‘Žπ‘₯ : 𝜌 = 0
𝑑𝑖 = 0
:𝜌=1
3
Screen-Space AO (SSAO)
𝐩
Volumetric AO [SKUT10]
4
SSAO
(Dis)Advantages
Inaccurate
Local AO
Over/underestimated
AO
Low quality
Simple
Fast
General
Easy to integrate
Noise
Blur
5
Multi-Resolution AO (MSSAO)
Intuition
𝐴𝑂1 𝐴𝑂2 𝐴𝑂3
π΄π‘‚π‘“π‘–π‘›π‘Žπ‘™ = max 𝐴𝑂𝑖
6
Multi-Resolution AO (MSSAO)
Intuition
256x256
𝐴𝑂256
512x512
𝐴𝑂512
1024x1024
𝐴𝑂1024
π΄π‘‚π‘“π‘–π‘›π‘Žπ‘™ = f max 𝐴𝑂𝑖 , average 𝐴𝑂𝑖
π΄π‘‚π‘“π‘–π‘›π‘Žπ‘™ β‰₯ max 𝐴𝑂𝑖
π΄π‘‚π‘“π‘–π‘›π‘Žπ‘™ ∝ average 𝐴𝑂𝑖
7
MSSAO
Overview
Geometry
g-buffer
(1024x1024)
Downsample
AO buffer
(256x256)
Compute AO
(256x256)
g-buffer
(256x256)
Compute AO
(512x512)
g-buffer
(512x512)
Compute AO
(1024x1024)
g-buffer
(1024x1024)
Blur & Upsample
AO buffer
(512x512)
Blur & Upsample
AO buffer
(1024x1024)
8
MSSAO
AO from Multiple Resolutions
9
MSSAO
Overview
Geometry
g-buffer
(1024x1024)
Downsample
AO buffer
(256x256)
Compute AO
(256x256)
g-buffer
(256x256)
Compute AO
(512x512)
g-buffer
(512x512)
Compute AO
(1024x1024)
g-buffer
(1024x1024)
Blur & Upsample
AO buffer
(512x512)
Blur & Upsample
AO buffer
(1024x1024)
10
MSSAO
Downsampling
𝐩1𝑧 ≀ 𝐩2𝑧 ≀ 𝐩3𝑧 ≀ 𝐩4𝑧
𝑝1
𝑝2
𝑝
𝑝3
𝑝4
if 𝐩4𝑧 βˆ’ 𝐩1𝑧 ≀ π‘‘π‘‘β„Žπ‘Ÿπ‘’π‘ β„Žπ‘œπ‘™π‘‘
𝐩 ← (𝐩2 + 𝐩3 )/2
𝐧 ← (𝐧2 + 𝐧3 )/2
else
𝐩 ← 𝐩2
𝐧 ← 𝐧2
11
MSSAO
Overview
Geometry
g-buffer
(1024x1024)
Downsample
AO buffer
(256x256)
Compute AO
(256x256)
g-buffer
(256x256)
Compute AO
(512x512)
g-buffer
(512x512)
Compute AO
(1024x1024)
g-buffer
(1024x1024)
Blur & Upsample
AO buffer
(512x512)
Blur & Upsample
AO buffer
(1024x1024)
12
MSSAO
Neighborhood Sampling
β€’ Project the AO radius of influence to screen space at each
pixel 𝑝 at resolution 𝑅𝑒𝑠𝑖 to get π‘Ÿπ‘– (𝑝) (in terms of pixels)
β€’ Cap π‘Ÿπ‘– 𝑝 to some value π‘Ÿπ‘šπ‘Žπ‘₯ (typical value is 5)
1024x1024
512x512
16-point Poisson disk
256x256
Works well with a 3x3 Gaussian filter
13
MSSAO
Computing AO
Low-variance
Cheap
Biased
πͺi
𝐧
πœ½π’Š
π’…π’Š
𝐩
1
𝐴𝑂(𝐩) =
𝑁
𝑁
𝜌(𝐩, 𝑑𝑖 )(𝐧 βˆ™ πͺ𝑖 βˆ’ 𝐩)
𝑖=1
model after the Monte-Carlo approximation of
1
𝐴𝑂 𝐩 =
πœ‹
𝜌 𝐩, 𝑑𝑖 cos πœƒπ‘– π‘‘πœ”π‘–
Ξ©
14
MSSAO
Overview
Geometry
g-buffer
(1024x1024)
Downsample
AO buffer
(256x256)
Compute AO
(256x256)
g-buffer
(256x256)
Compute AO
(512x512)
g-buffer
(512x512)
Compute AO
(1024x1024)
g-buffer
(1024x1024)
Blur & Upsample
AO buffer
(512x512)
Blur & Upsample
AO buffer
(1024x1024)
15
MSSAO
Bilateral Upsampling
9
16
3
16
β€’ Bilinear weights 𝑀𝑏
β€’ Depth weights
1
𝑀𝑧 𝑝𝑖 =
1 + 𝑧𝑖 βˆ’ 𝑧
β€’ Normal weights
𝐧 βˆ™ 𝐧𝑖 + 1
𝑀𝑛 𝑝𝑖 =
2
3
16
1
16
𝑑𝑧
𝑑𝑛
4
𝐴𝑂 𝑝 =
𝑀𝑏 𝑝𝑖 𝑀𝑧 𝑝𝑖 𝑀𝑛 𝑝𝑖 𝐴𝑂 𝑝𝑖
𝑖=1
16
MSSAO
Combining AO Values
π΄π‘‚π‘“π‘–π‘›π‘Žπ‘™ = 1 βˆ’ 1 βˆ’ max 𝐴𝑂𝑖
1 βˆ’ avg 𝐴𝑂𝑖
β€’ max 𝐴𝑂𝑖 and avg 𝐴𝑂𝑖 are computed by
β€œpropagating” appropriate values across
resolutions
β€’ Avoid underestimating AO by ensuring
π΄π‘‚π‘“π‘–π‘›π‘Žπ‘™ β‰₯ max 𝐴𝑂𝑖
β€’ And a plausible heuristic
π΄π‘‚π‘“π‘–π‘›π‘Žπ‘™ ∝ avg 𝐴𝑂𝑖
17
MSSAO
Temporal Filtering
π‘˜ = 0.5
π‘˜=0
π΄π‘‚π‘π‘’π‘Ÿπ‘Ÿ = π‘˜ π΄π‘‚π‘π‘Ÿπ‘’π‘£ + 1 βˆ’ π‘˜ π΄π‘‚π‘“π‘–π‘›π‘Žπ‘™
π‘˜=0
18
Results
Quality
Blizzard [FM08]
MSSAO
19
Results
Quality
HBAO [BSD08]
MSSAO
20
Results
Quality
VAO [SKUT10]
MSSAO
21
Results
Ground-truth Comparison
Blender
MSSAO
22
Results
Noise/Blur
Blizzard [FM08]
HBAO [BSD08]
MSSAO
23
Results
Multiple AO Scales
Small AO radius
Large AO radius
MSSAO
24
Results
Performance
β€’ Scenes rendered at 1024x1024 on GeForce GTX 460M
β€’ Exclusive of geometry pass
β€’ The same parameters used to produce the shown images
Sibenik
Cathedral
Conference
Room
Sponza
Atrium
MSSAO
21.9 ms
VAO
22.9
Blizzard
25.7
HBAO
50.1
24.0 ms
24.8
24.9
49.5
22.2 ms
24.0
28.9
54.3
25
MSSAO
Conclusions
Inaccurate
Local AO
Over/underestimated AO
Low quality
Noise
Blur
Use more memory
Poor temporal coherence
on very thin geometry
Simple
Fast
General
Easy to integrate
Capture multiple shadow
frequencies
Not too noticeable
Errors due to the use of
coarse resolutions
Not too noticeable unless
compared with ground-truths
26
Results
Additional Results
27
Results
Additional Results
28
Results
Additional Results
29
Results
Additional Results
30
Thank You
31