SlideShare a Scribd company logo
1 of 58
Stable SSAO in Battlefield 3 with
Selective Temporal Filtering
Louis Bavoil
Developer Technology Engineer
NVIDIA
Johan Andersson
Rendering Architect
DICE / EA
SSAO
● Screen Space Ambient Occlusion (SSAO)
● Has become de-facto approach for rendering AO in
games with no precomputation
● Key Idea: use depth buffer as approximation of the
opaque geometry of the scene
● Large variety of SSAO algorithms, all taking as input
the scene depth buffer
[Kajalin 09]
[Loos and Sloan 10]
[McGuire et al. 11]
HBAO
● Horizon-Based Ambient Occlusion (HBAO)
● Considers the depth buffer as a heightfield, and
approximates ray-tracing this heightfield
● Improved implementation available in NVIDIA’s SDK11
(SSAO11.zip / HBAO_PS.hlsl)
● Used for rendering SSAO in Battlefield 3 / PC for its
“High” and “Ultra” Graphics Quality presets
[Bavoil and Sainz 09a]
[Andersson 10]
[White and Barré-Brisebois 11]
[Andersson 10]
Original HBAO
Implementation
in Frostbite 2
Frame time (GPU):
25.2 ms
Total HBAO time:
2.5 ms (10% of frame)
[1920x1200 “High” DX11
GeForce GTX 560 Ti]
Screenshot: With HBAO
Screenshot: HBAO Only
The HBAO looked good-enough on screenshots…
Video: Flickering HBAO
…but produced objectionable flickering in motion on thin objects
such as alpha-tested foliage (grass and trees in particular)
Our Constraints
● PC-only
● In Frostbite 2, HBAO implemented only for DX10 & DX11
● Low Perf Hit, High Quality
● Whole HBAO was already 2.5 ms (1920x1200 / GTX 560 Ti)
● HBAO used in High and Ultra presets, had to look great
Considered Workarounds
● Full-resolution SSAO or dual-resolution SSAO (*)
…but that more-than-doubled the cost of the SSAO, and
some flickering could remain
● Brighten SSAO on the problematic objects
…but we wanted a way to keep full-strength SSAO on
everything (in particular on foliage)
(*) [Bavoil and Sainz 09b]
Temporal Filtering Approach
● By definition, AO depends only on the scene
geometry, not on the camera
● For static (or nearly-static geometry), can re-project AO
from previous frame
● Reduce AO variance between frames by using a temporal
filter: newAO = lerp(newAO,previousAO,x)
● Known approach used in Gears of War 2
[Nehab et al. 07]
[Smedberg and Wright 09]
Reverse
Reprojection
[Nehab et al. 07]
(uvi, zi)
Current
Camera
(Frame i)
Previous
Camera
(Frame i-1)
Pi
(uvi, zi)
Reverse
Reprojection
[Nehab et al. 07]
Current
Camera
(Frame i)
1. Current
ViewProjection-1
Previous
Camera
(Frame i-1)
Pi
uvi-1
1. Current
ViewProjection-1
2. Previous
ViewProjection
(uvi, zi)
Reverse
Reprojection
[Nehab et al. 07]
Current
Camera
(Frame i)
Previous
Camera
(Frame i-1)
Current
Camera
(Frame i)
Pi
Pi-1
(uvi-1, zi-1)
1. Current
ViewProjection-1
3. Fetch
Previous
View Depth
2. Previous
ViewProjection
(uvi, zi)
Reverse
Reprojection
[Nehab et al. 07]
Previous
Camera
(Frame i-1)
Current
Camera
(Frame i) Pi
Pi-1
(uvi-1, zi-1)
1. Current
ViewProjection-1
3. Fetch Previous
View Depth
2. Previous
ViewProjection
4. If Pi ~= Pi-1
re-use AO(Pi-1)
(uvi, zi)
Reverse
Reprojection
[Nehab et al. 07]
Previous
Camera
(Frame i-1)
Temporal Refinement [Mattausch et al. 11]
If Pi-1 ~= Pi
AOi = (Ni-1 AOi-1 + AOi) / (Ni-1 + 1)
Ni = min(Ni-1 + 1, Nmax)
Else
AOi = AOi
Ni = 1
Ni = num. frames that have been accumulated in current solution at Pi
Nmax = max num. frames (~8), to keep AOi-1 contributing to AOi
Pi
Pi-1
(uvi-1, zi-1)
(uvi, zi)
Disocclusion Test [Mattausch et al. 11]
Pi ~= Pi-1 
wi = ViewDepth(Viewi-1, Pi)
wi-1 = ViewDepth(Viewi-1, Pi-1)
Relaxed Disocclusion Test
Pi ~= Pi-1 
To support nearly-static objects
● Such as foliage waving in the wind (grass, trees, …)
● We simply relaxed the threshold (used ε = 10%)
Video: Temporal Filtering with ε=+Inf
Flickering is fixed, but there are ghosting artifacts due to disocclusions
Flickering on the grass (nearly static), but no ghosting artifacts
Video: Temporal Filtering with ε=0.1%
No flickering, no ghosting, 1% perf hit (25.2 -> 25.5 ms)
Video: Temporal Filtering with ε=10%
Video: Trailing Artifacts
New issue: trailing artifacts on static objects receiving AO from dynamic objects
Observations
1. With temporal filtering OFF
The flickering pixels are mostly on
foliage. The other pixels do not have any
objectionable flickering.
2. With temporal filtering ON
The trailing artifacts (near the
character's feet) are not an issue on
foliage pixels.
Selective Temporal Filtering
● Assumption
The set of flickering pixels and the set of trailing
pixels are mutually exclusive
● Our Approach:
1. Classify the pixels as stable (potential trailing) or
unstable (potential flickering)
2. Disable the temporal filter for the stable pixels
Pixel Classification Approach
● Normal reconstruction in SSAO shader
● Px = ||P - Pleft|| < ||P - Pright|| ? Pleft : Pright
● Py = ||P - Ptop|| < ||P - Pbottom|| ? Ptop : Pbottom
● N = ± normalize(cross(P - Px, P - Py))
● Idea: If reconstructed normal is noisy,
the SSAO will be noisy
P
Pl Pr
Pt
Pb
Piecewise Continuity Test
1. Select nearest
neighbor Px between
Pleft and Pright
P
Px = Pleft
Pright
Piecewise Continuity Test
1. Select nearest
neighbor Px between
Pleft and Pright
2. Continuous pixels 
|| Px – P || < L
where L = distance threshold
(in view-space units)
P
Px = Pleft
Pright
Pixel Classification Examples
Two Half-Res Passes
Pass 1: Output SSAO and continuity mask
continuityMask = (|| Px – P || < L && || Py – P || < L)
Pass 2: Dilate the discontinuities
dilatedMask = all4x4(continuityMask)
Example Scene
Pass 1: Classification
Note: Distant pixels are all classified as “unstable” because ||P – Px/y||
increases with depth (perspective camera). Luckily for us, trailing
artifacts were not an issue in the distance so this was not an issue.
Pass 2: 4x4 Dilation
Pixel classified as unstable if it
has at least one discontinuity in
its neighborhood
4 Gather4 instructions on DX11
Enable temporal filter only:
- for unstable pixels
- with (|1 – wi /wi-1| < ε)
Selective Temporal Filtering
Video: HBAO + Selective Temporal Filtering
Video: Final Result
Final Pipeline with
Selective Temporal
Filtering (STF)
STF Performance Hit
[1920x1200 “High”, GTX 560 Ti]
• HBAO total: 2.5 ms -> 2.9 ms
• Frame time (GPU): 25.2 -> 25.6 ms
(1.6% performance hit)
STF Parameters
• Reprojection Threshold: For detecting
disocclusions (ε=10%)
• Distance Threshold: For detecting
discontinuities (L=0.1 meter)
• Dilation Kernel Size (4x4 texels)
History Buffers
● Additional GPU memory required for the history buffers
● For (AOi, Zi, Ni) and (AOi-1, Zi-1, Ni)
● Full-res, 1xMSAA
● For Multi-GPU Alternate Frame Rendering (AFR) rendering
● Create one set of buffers per GPU and alternate between them
● Each AFR GPU has its own buffers & reprojection state
● The history buffers are cleared on first use
● Clear values: (AO,Z)=(1.f, 0.f) and N=0
SelectiveTemporalFilter(uvi, AOi)
zi = Fetch(ZBufferi, uvi)
Pi = UnprojectToWorld(uvi, zi)
uvi-1 = ProjectToUV(Viewi-1, Pi)
zi-1 = Fetch(ZBufferi-1, uvi-1)
Pi-1 = UnprojectToWorld(uvi-1, zi-1)
wi = ViewDepth(Viewi-1 , Pi)
wi-1 = ViewDepth(Viewi-1 , Pi-1)
isStablePixel = Fetch(StabilityMask, uvi)
if ( |1 – wi/wi-1 | < ε && !isStablePixel )
AOi-1 = Fetch(AOTexturei-1, uvi-1)
Ni-1 = Fetch(NTexturei-1, uvi-1)
AOi = (Ni-1 AOi-1 + AOi) / (Ni-1 + 1)
Ni = min(Ni-1 + 1, Nmax)
else
Ni = 1
return(AOi, wi, Ni)
Unoptimized
pseudo-code
For fetching zi-1, use
clamp-to-border to
discard out-of-frame
data, with borderZ=0.f
For fetching AOi-1, use
bilinear filtering like in
[Nehab et al. 07]
Blur Optimization
Raw HBAO (Blur OFF)
Final HBAO (Blur ON)
Blur Overview
● Full-screen pixel-shader passes
● BlurX (horizontal)
● BlurY (vertical)
● BlurX takes as input
● Half-res AO
● Full-res linear depth (non-MSAA)
Blur Kernel
● We use 1D Cross-Bilateral Filters (CBF)
● Gaussian blur with depth-dependent weights
[Petschnigg et al. 04]
[Eisemann and Durand 04]
[Kopf et al. 07]
[Bavoil et al. 08]
[McGuire et al. 11]
Sum[ AOi w(i,Zi,Z0), i=-R..R ]
Sum[ w(i,Zi,Z0), i=-R..R ]
Output =
Blur Opt: Adaptive Sampling
2/3 of total weights
1/3 of total weights
Can these samples be
approximated?
Blur Opt: Adaptive Sampling
Replace pairs of samples
with in-between sample
Keep original samples
(AO,Z) fetches with
hw bilinear filtering
Blur Opt: Adaptive Sampling
Brute-Force Sampling BlurX cost: 0.8 ms
Adaptive Sampling BlurX cost: 0.6 ms
Blur Opt: Speedup
Blur Radius: 8
Resolution: 1920x1200
GeForce GTX 560 Ti
GPU Time Before After Speedup
Pack (AO,Z) 0.18 ms 0.18 ms 0%
BlurX 0.75 ms 0.58 ms 29%
BlurY+STF 1.00 ms 0.95 ms 5% (*)
Blur Total 1.93 ms 1.71 ms 13%
(*) Lower speedup due to the math overhead of
the Selective Temporal Filter (STF)
Summary
Two techniques used in Battlefield 3 / PC
1. A generic solution to fix SSAO flickering with
a low perf hit (*) on DX10/11 GPUs
2. An approximate cross-bilateral filter, using a
mix of point and bilinear taps
(*) 0.4 ms in 1920x1200 on GeForce GTX 560 Ti
Questions?
Louis Bavoil
lbavoil@nvidia.com
Johan Andersson
johan.andersson@dice.se
References
[McGuire et al. 11] McGuire, Osman, Bukowski, Hennessy. The Alchemy
Screen-Space Ambient Obscurance Algorithm. Proceedings of ACM
SIGGRAPH / Eurographics High-Performance Graphics 2011 (HPG '11).
[White and Barré-Brisebois 11] White, Barré-Brisebois. More Performance!
Five Rendering Ideas from Battlefield 3 and Need For Speed: The Run.
Advances in Real-Time Rendering in Games. SIGGRAPH 2011.
[Mattausch et al. 11] Mattausch, Scherzer, Wimmer. Temporal Screen-
Space Ambient Occlusion. In GPU Pro 2. 2011.
[Loos and Sloan 10] Loos, Sloan. Volumetric Obscurance. ACM Symposium
on Interactive 3D Graphics and Games 2010.
References
[Andersson 10] Andersson. Bending the Graphics Pipeline. Beyond
Programmable Shading course, SIGGRAPH 2010.
[Bavoil and Sainz 09a] Bavoil, Sainz. Image-Space Horizon-Based Ambient
Occlusion. In ShaderX7. 2009.
[Bavoil and Sainz 09b] Bavoil, Sainz. Multi-Layer Dual-Resolution Screen-
Space Ambient Occlusion. SIGGRAPH Talk. 2009.
[Smedberg and Wright 09] Smedberg, Wright. Rendering Techniques in
Gears of War 2. GDC 2009.
[Kajalin 09] Kajalin. Screen Space Ambient Occlusion. In ShaderX7. 2009.
[Bavoil et al. 08] Bavoil, Sainz, Dimitrov. Image-Space Horizon-Based
Ambient Occlusion. SIGGRAPH Talk. 2008.
References
[Nehab et al. 07] Nehab, Sander, Lawrence, Tatarchuk, Isidoro.
Accelerating Real-Time Shading with Reverse Reprojection Caching. In ACM
SIGGRAPH/Eurographics Symposium on Graphics Hardware 2007.
[Kopf et al. 07] Kopf, Cohen, Lischinski, Uyttendaele. 2007. Joint Bilateral
Upsampling. In Proceedings of SIGGRAPH 2007.
[Petschnigg et al. 04] Petschnigg, Szeliski, Agrawala, Cohen, Hoppe.
Toyama: Digital photography with flash and no-flash image pairs. In
Proceedings of SIGGRAPH 2004.
[Eisemann and Durand 04] Eisemann, Durand. “Flash Photography
Enhancement via Intrinsic Relighting”. In Proceedings of SIGGRAPH 2004.
Bonus Slides
HLSL: Adaptive Sampling
float r = 1;
// Inner half of the kernel: step size = 1 and POINT filtering
[unroll] for (; r <= KERNEL_RADIUS/2; r += 1)
{
float2 uv = r * deltaUV + uv0;
float2 AOZ = mainTexture.Sample(pointClampSampler, uv).xy;
processSample(AOZ, r, centerDepth, totalAO, totalW);
}
// Outer half of the kernel: step size = 2 and LINEAR filtering
[unroll] for (; r <= KERNEL_RADIUS; r += 2)
{
float2 uv = (r + 0.5) * deltaUV + uv0;
float2 AOZ = mainTexture.Sample(linearClampSampler, uv).xy;
processSample(AOZ, r, centerDepth, totalAO, totalW);
}
HLSL: Cross-Bilateral Weights
// d and d0 = linear depths
float crossBilateralWeight(float r, float d, float d0)
{
// precompiled by fxc
const float BlurSigma = ((float)KERNEL_RADIUS+1.0f) * 0.5f;
const float BlurFalloff = 1.f / (2.0f*BlurSigma*BlurSigma);
// assuming that d and d0 are pre-scaled linear depths
float dz = d0 - d;
return exp2(-r*r*BlurFalloff - dz*dz);
}

More Related Content

What's hot

Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility bufferWolfgang Engel
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The SurgeMichele Giacalone
 
Physically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in FrostbitePhysically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in FrostbiteElectronic Arts / DICE
 
Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Tiago Sousa
 
A Bit More Deferred Cry Engine3
A Bit More Deferred   Cry Engine3A Bit More Deferred   Cry Engine3
A Bit More Deferred Cry Engine3guest11b095
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnGuerrilla
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Tiago Sousa
 
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...Johan Andersson
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunElectronic Arts / DICE
 
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)Philip Hammer
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Tiago Sousa
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2Guerrilla
 
The Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsThe Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsJohan Andersson
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3stevemcauley
 
Lighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow FallLighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow FallGuerrilla
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
 
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingSIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingElectronic Arts / DICE
 
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsHPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsElectronic Arts / DICE
 

What's hot (20)

Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility buffer
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
Physically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in FrostbitePhysically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in Frostbite
 
Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666
 
A Bit More Deferred Cry Engine3
A Bit More Deferred   Cry Engine3A Bit More Deferred   Cry Engine3
A Bit More Deferred Cry Engine3
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero Dawn
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)
 
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
 
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2
 
The Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsThe Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next Steps
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3
 
Lighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow FallLighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow Fall
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingSIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
 
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsHPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
 
Frostbite on Mobile
Frostbite on MobileFrostbite on Mobile
Frostbite on Mobile
 

Viewers also liked

Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Guerrilla
 
Building the Battlefield AI Experience
Building the Battlefield AI ExperienceBuilding the Battlefield AI Experience
Building the Battlefield AI ExperienceElectronic Arts / DICE
 
How data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield HeroesHow data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield HeroesElectronic Arts / DICE
 
Destruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsDestruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsElectronic Arts / DICE
 
5 Major Challenges in Interactive Rendering
5 Major Challenges in Interactive Rendering5 Major Challenges in Interactive Rendering
5 Major Challenges in Interactive RenderingElectronic Arts / DICE
 
Stylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield HeroesStylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield HeroesElectronic Arts / DICE
 
Battlelog - Building scalable web sites with tight game integration
Battlelog - Building scalable web sites with tight game integrationBattlelog - Building scalable web sites with tight game integration
Battlelog - Building scalable web sites with tight game integrationElectronic Arts / DICE
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3Electronic Arts / DICE
 
Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)
 	 Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09) 	 Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)
Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)Johan Andersson
 
Level Design Challenges & Solutions - Mirror's Edge
Level Design Challenges & Solutions - Mirror's EdgeLevel Design Challenges & Solutions - Mirror's Edge
Level Design Challenges & Solutions - Mirror's EdgeElectronic Arts / DICE
 
Future Directions for Compute-for-Graphics
Future Directions for Compute-for-GraphicsFuture Directions for Compute-for-Graphics
Future Directions for Compute-for-GraphicsElectronic Arts / DICE
 

Viewers also liked (16)

Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2
 
Building the Battlefield AI Experience
Building the Battlefield AI ExperienceBuilding the Battlefield AI Experience
Building the Battlefield AI Experience
 
A Real-time Radiosity Architecture
A Real-time Radiosity ArchitectureA Real-time Radiosity Architecture
A Real-time Radiosity Architecture
 
Bending the Graphics Pipeline
Bending the Graphics PipelineBending the Graphics Pipeline
Bending the Graphics Pipeline
 
How data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield HeroesHow data rules the world: Telemetry in Battlefield Heroes
How data rules the world: Telemetry in Battlefield Heroes
 
Destruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsDestruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance Fields
 
5 Major Challenges in Interactive Rendering
5 Major Challenges in Interactive Rendering5 Major Challenges in Interactive Rendering
5 Major Challenges in Interactive Rendering
 
Stylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield HeroesStylized Rendering in Battlefield Heroes
Stylized Rendering in Battlefield Heroes
 
Battlelog - Building scalable web sites with tight game integration
Battlelog - Building scalable web sites with tight game integrationBattlelog - Building scalable web sites with tight game integration
Battlelog - Building scalable web sites with tight game integration
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
 
Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)
 	 Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09) 	 Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)
Shadows & Decals: D3D10 Techniques in Frostbite (GDC'09)
 
Scope Stack Allocation
Scope Stack AllocationScope Stack Allocation
Scope Stack Allocation
 
A Step Towards Data Orientation
A Step Towards Data OrientationA Step Towards Data Orientation
A Step Towards Data Orientation
 
Introduction to Data Oriented Design
Introduction to Data Oriented DesignIntroduction to Data Oriented Design
Introduction to Data Oriented Design
 
Level Design Challenges & Solutions - Mirror's Edge
Level Design Challenges & Solutions - Mirror's EdgeLevel Design Challenges & Solutions - Mirror's Edge
Level Design Challenges & Solutions - Mirror's Edge
 
Future Directions for Compute-for-Graphics
Future Directions for Compute-for-GraphicsFuture Directions for Compute-for-Graphics
Future Directions for Compute-for-Graphics
 

Similar to Stable SSAO in Battlefield 3 with Selective Temporal Filtering

Battle field3 ssao
Battle field3 ssaoBattle field3 ssao
Battle field3 ssaoMinGeun Park
 
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...Unity Technologies
 
Interactive Control over Temporal Consistency while Stylizing Video Streams
Interactive Control over Temporal Consistency while Stylizing Video StreamsInteractive Control over Temporal Consistency while Stylizing Video Streams
Interactive Control over Temporal Consistency while Stylizing Video StreamsMatthias Trapp
 
Multilayer Neuronal network hardware implementation
Multilayer Neuronal network hardware implementation Multilayer Neuronal network hardware implementation
Multilayer Neuronal network hardware implementation Nabil Chouba
 
Practical spherical harmonics based PRT methods.ppsx
Practical spherical harmonics based PRT methods.ppsxPractical spherical harmonics based PRT methods.ppsx
Practical spherical harmonics based PRT methods.ppsxMannyK4
 
Practical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT MethodsPractical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT MethodsNaughty Dog
 
Alex Smola, Professor in the Machine Learning Department, Carnegie Mellon Uni...
Alex Smola, Professor in the Machine Learning Department, Carnegie Mellon Uni...Alex Smola, Professor in the Machine Learning Department, Carnegie Mellon Uni...
Alex Smola, Professor in the Machine Learning Department, Carnegie Mellon Uni...MLconf
 
Deblocking Filter for Reduction of Blocking Artifacts in Video
Deblocking Filter for Reduction of Blocking Artifacts in VideoDeblocking Filter for Reduction of Blocking Artifacts in Video
Deblocking Filter for Reduction of Blocking Artifacts in VideoIRJET Journal
 
B Eng Final Year Project Presentation
B Eng Final Year Project PresentationB Eng Final Year Project Presentation
B Eng Final Year Project Presentationjesujoseph
 
Applying Recursive Temporal Blocking for Stencil Computations to Deeper Memor...
Applying Recursive Temporal Blocking for Stencil Computations to Deeper Memor...Applying Recursive Temporal Blocking for Stencil Computations to Deeper Memor...
Applying Recursive Temporal Blocking for Stencil Computations to Deeper Memor...Tokyo Institute of Technology
 
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...ozlael ozlael
 
“Show Me the Garbage!”, Garbage Collection a Friend or a Foe
“Show Me the Garbage!”, Garbage Collection a Friend or a Foe“Show Me the Garbage!”, Garbage Collection a Friend or a Foe
“Show Me the Garbage!”, Garbage Collection a Friend or a FoeHaim Yadid
 
CyberSec_JPEGcompressionForensics.pdf
CyberSec_JPEGcompressionForensics.pdfCyberSec_JPEGcompressionForensics.pdf
CyberSec_JPEGcompressionForensics.pdfMohammadAzreeYahaya
 
Real Time Human Posture Detection with Multiple Depth Sensors
Real Time Human Posture Detection with Multiple Depth SensorsReal Time Human Posture Detection with Multiple Depth Sensors
Real Time Human Posture Detection with Multiple Depth SensorsWassim Filali
 
Technical Documentation_Embedded_Acoustic_DSP_Projects
Technical Documentation_Embedded_Acoustic_DSP_ProjectsTechnical Documentation_Embedded_Acoustic_DSP_Projects
Technical Documentation_Embedded_Acoustic_DSP_ProjectsEmmanuel Chidinma
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Johan Andersson
 
customization of a deep learning accelerator, based on NVDLA
customization of a deep learning accelerator, based on NVDLAcustomization of a deep learning accelerator, based on NVDLA
customization of a deep learning accelerator, based on NVDLAShien-Chun Luo
 
Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Graham Wihlidal
 

Similar to Stable SSAO in Battlefield 3 with Selective Temporal Filtering (20)

Battle field3 ssao
Battle field3 ssaoBattle field3 ssao
Battle field3 ssao
 
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
 
Interactive Control over Temporal Consistency while Stylizing Video Streams
Interactive Control over Temporal Consistency while Stylizing Video StreamsInteractive Control over Temporal Consistency while Stylizing Video Streams
Interactive Control over Temporal Consistency while Stylizing Video Streams
 
Multilayer Neuronal network hardware implementation
Multilayer Neuronal network hardware implementation Multilayer Neuronal network hardware implementation
Multilayer Neuronal network hardware implementation
 
Practical spherical harmonics based PRT methods.ppsx
Practical spherical harmonics based PRT methods.ppsxPractical spherical harmonics based PRT methods.ppsx
Practical spherical harmonics based PRT methods.ppsx
 
Practical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT MethodsPractical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT Methods
 
Alex Smola, Professor in the Machine Learning Department, Carnegie Mellon Uni...
Alex Smola, Professor in the Machine Learning Department, Carnegie Mellon Uni...Alex Smola, Professor in the Machine Learning Department, Carnegie Mellon Uni...
Alex Smola, Professor in the Machine Learning Department, Carnegie Mellon Uni...
 
Deblocking Filter for Reduction of Blocking Artifacts in Video
Deblocking Filter for Reduction of Blocking Artifacts in VideoDeblocking Filter for Reduction of Blocking Artifacts in Video
Deblocking Filter for Reduction of Blocking Artifacts in Video
 
Thesis Final Presentation
Thesis Final PresentationThesis Final Presentation
Thesis Final Presentation
 
B Eng Final Year Project Presentation
B Eng Final Year Project PresentationB Eng Final Year Project Presentation
B Eng Final Year Project Presentation
 
Applying Recursive Temporal Blocking for Stencil Computations to Deeper Memor...
Applying Recursive Temporal Blocking for Stencil Computations to Deeper Memor...Applying Recursive Temporal Blocking for Stencil Computations to Deeper Memor...
Applying Recursive Temporal Blocking for Stencil Computations to Deeper Memor...
 
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
 
Moving object detection on FPGA
Moving object detection on FPGAMoving object detection on FPGA
Moving object detection on FPGA
 
“Show Me the Garbage!”, Garbage Collection a Friend or a Foe
“Show Me the Garbage!”, Garbage Collection a Friend or a Foe“Show Me the Garbage!”, Garbage Collection a Friend or a Foe
“Show Me the Garbage!”, Garbage Collection a Friend or a Foe
 
CyberSec_JPEGcompressionForensics.pdf
CyberSec_JPEGcompressionForensics.pdfCyberSec_JPEGcompressionForensics.pdf
CyberSec_JPEGcompressionForensics.pdf
 
Real Time Human Posture Detection with Multiple Depth Sensors
Real Time Human Posture Detection with Multiple Depth SensorsReal Time Human Posture Detection with Multiple Depth Sensors
Real Time Human Posture Detection with Multiple Depth Sensors
 
Technical Documentation_Embedded_Acoustic_DSP_Projects
Technical Documentation_Embedded_Acoustic_DSP_ProjectsTechnical Documentation_Embedded_Acoustic_DSP_Projects
Technical Documentation_Embedded_Acoustic_DSP_Projects
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
 
customization of a deep learning accelerator, based on NVDLA
customization of a deep learning accelerator, based on NVDLAcustomization of a deep learning accelerator, based on NVDLA
customization of a deep learning accelerator, based on NVDLA
 
Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016
 

More from Electronic Arts / DICE

GDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game DevelopmentGDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game DevelopmentElectronic Arts / DICE
 
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeSIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeElectronic Arts / DICE
 
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray TracingSyysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray TracingElectronic Arts / DICE
 
Khronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and VulkanKhronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and VulkanElectronic Arts / DICE
 
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time RaytracingCEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time RaytracingElectronic Arts / DICE
 
CEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and ProceduralismCEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and ProceduralismElectronic Arts / DICE
 
SIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA TuringSIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA TuringElectronic Arts / DICE
 
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...Electronic Arts / DICE
 
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time RenderingDD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time RenderingElectronic Arts / DICE
 
Creativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural SystemsCreativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural SystemsElectronic Arts / DICE
 
Shiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEEDShiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEEDElectronic Arts / DICE
 
High Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in FrostbiteHigh Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in FrostbiteElectronic Arts / DICE
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect AndromedaElectronic Arts / DICE
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteElectronic Arts / DICE
 
Photogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontPhotogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontElectronic Arts / DICE
 
5 Major Challenges in Real-time Rendering (2012)
5 Major Challenges in Real-time Rendering (2012)5 Major Challenges in Real-time Rendering (2012)
5 Major Challenges in Real-time Rendering (2012)Electronic Arts / DICE
 

More from Electronic Arts / DICE (20)

GDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game DevelopmentGDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game Development
 
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeSIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
 
SEED - Halcyon Architecture
SEED - Halcyon ArchitectureSEED - Halcyon Architecture
SEED - Halcyon Architecture
 
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray TracingSyysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
 
Khronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and VulkanKhronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and Vulkan
 
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time RaytracingCEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
 
CEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and ProceduralismCEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
 
SIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA TuringSIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA Turing
 
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
 
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time RenderingDD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
 
Creativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural SystemsCreativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural Systems
 
Shiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEEDShiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEED
 
High Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in FrostbiteHigh Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in Frostbite
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
Photogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontPhotogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars Battlefront
 
Rendering Battlefield 4 with Mantle
Rendering Battlefield 4 with MantleRendering Battlefield 4 with Mantle
Rendering Battlefield 4 with Mantle
 
Mantle for Developers
Mantle for DevelopersMantle for Developers
Mantle for Developers
 
Battlefield 4 + Frostbite + Mantle
Battlefield 4 + Frostbite + MantleBattlefield 4 + Frostbite + Mantle
Battlefield 4 + Frostbite + Mantle
 
5 Major Challenges in Real-time Rendering (2012)
5 Major Challenges in Real-time Rendering (2012)5 Major Challenges in Real-time Rendering (2012)
5 Major Challenges in Real-time Rendering (2012)
 

Recently uploaded

The Fine Line Between Honest and Evil Comics by Salty Vixen
The Fine Line Between Honest and Evil Comics by Salty VixenThe Fine Line Between Honest and Evil Comics by Salty Vixen
The Fine Line Between Honest and Evil Comics by Salty VixenSalty Vixen Stories & More
 
Hot Call Girls In Goa 7028418221 Call Girls In Vagator Beach EsCoRtS
Hot Call Girls In Goa 7028418221 Call Girls In Vagator Beach EsCoRtSHot Call Girls In Goa 7028418221 Call Girls In Vagator Beach EsCoRtS
Hot Call Girls In Goa 7028418221 Call Girls In Vagator Beach EsCoRtSApsara Of India
 
QUIZ BOLLYWOOD ( weekly quiz ) - SJU quizzers
QUIZ BOLLYWOOD ( weekly quiz ) - SJU quizzersQUIZ BOLLYWOOD ( weekly quiz ) - SJU quizzers
QUIZ BOLLYWOOD ( weekly quiz ) - SJU quizzersSJU Quizzers
 
Call Girls Near Delhi Pride Hotel New Delhi 9873777170
Call Girls Near Delhi Pride Hotel New Delhi 9873777170Call Girls Near Delhi Pride Hotel New Delhi 9873777170
Call Girls Near Delhi Pride Hotel New Delhi 9873777170Sonam Pathan
 
Kolkata Call Girl Bagbazar 👉 8250192130 ❣️💯 Available With Room 24×7
Kolkata Call Girl Bagbazar 👉 8250192130 ❣️💯 Available With Room 24×7Kolkata Call Girl Bagbazar 👉 8250192130 ❣️💯 Available With Room 24×7
Kolkata Call Girl Bagbazar 👉 8250192130 ❣️💯 Available With Room 24×7Riya Pathan
 
Housewife Call Girls Sonagachi - 8250192130 Booking and charges genuine rate ...
Housewife Call Girls Sonagachi - 8250192130 Booking and charges genuine rate ...Housewife Call Girls Sonagachi - 8250192130 Booking and charges genuine rate ...
Housewife Call Girls Sonagachi - 8250192130 Booking and charges genuine rate ...Riya Pathan
 
Call Girls Somajiguda Sarani 7001305949 all area service COD available Any Time
Call Girls Somajiguda Sarani 7001305949 all area service COD available Any TimeCall Girls Somajiguda Sarani 7001305949 all area service COD available Any Time
Call Girls Somajiguda Sarani 7001305949 all area service COD available Any Timedelhimodelshub1
 
Fun Call Girls In Goa 7028418221 Escort Service In Morjim Beach Call Girl
Fun Call Girls In Goa 7028418221 Escort Service In Morjim Beach Call GirlFun Call Girls In Goa 7028418221 Escort Service In Morjim Beach Call Girl
Fun Call Girls In Goa 7028418221 Escort Service In Morjim Beach Call GirlApsara Of India
 
Call Girl Price Andheri WhatsApp:+91-9833363713
Call Girl Price Andheri WhatsApp:+91-9833363713Call Girl Price Andheri WhatsApp:+91-9833363713
Call Girl Price Andheri WhatsApp:+91-9833363713Sonam Pathan
 
LE IMPOSSIBRU QUIZ (Based on Splapp-me-do)
LE IMPOSSIBRU QUIZ (Based on Splapp-me-do)LE IMPOSSIBRU QUIZ (Based on Splapp-me-do)
LE IMPOSSIBRU QUIZ (Based on Splapp-me-do)bertfelixtorre
 
Call US '' 8377087607'' !! Call Girls In Model Town Metro (Delhi NCR)
Call US '' 8377087607'' !! Call Girls In Model Town Metro (Delhi NCR)Call US '' 8377087607'' !! Call Girls In Model Town Metro (Delhi NCR)
Call US '' 8377087607'' !! Call Girls In Model Town Metro (Delhi NCR)dollysharma2066
 
Call Girls In Karnal O8860008073 Sector 6 7 8 9 Karnal Escorts
Call Girls In Karnal O8860008073 Sector 6 7 8 9 Karnal EscortsCall Girls In Karnal O8860008073 Sector 6 7 8 9 Karnal Escorts
Call Girls In Karnal O8860008073 Sector 6 7 8 9 Karnal EscortsApsara Of India
 
VIP Call Girls In Goa 7028418221 Call Girls In Baga Beach Escorts Service
VIP Call Girls In Goa 7028418221 Call Girls In Baga Beach Escorts ServiceVIP Call Girls In Goa 7028418221 Call Girls In Baga Beach Escorts Service
VIP Call Girls In Goa 7028418221 Call Girls In Baga Beach Escorts ServiceApsara Of India
 
5* Hotel Call Girls In Goa 7028418221 Call Girls In Calangute Beach Escort Se...
5* Hotel Call Girls In Goa 7028418221 Call Girls In Calangute Beach Escort Se...5* Hotel Call Girls In Goa 7028418221 Call Girls In Calangute Beach Escort Se...
5* Hotel Call Girls In Goa 7028418221 Call Girls In Calangute Beach Escort Se...Apsara Of India
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607dollysharma2066
 
Kolkata Call Girl Howrah 👉 8250192130 ❣️💯 Available With Room 24×7
Kolkata Call Girl Howrah 👉 8250192130 ❣️💯 Available With Room 24×7Kolkata Call Girl Howrah 👉 8250192130 ❣️💯 Available With Room 24×7
Kolkata Call Girl Howrah 👉 8250192130 ❣️💯 Available With Room 24×7Riya Pathan
 
1681275559_haunting-adeline and hunting.pdf
1681275559_haunting-adeline and hunting.pdf1681275559_haunting-adeline and hunting.pdf
1681275559_haunting-adeline and hunting.pdfTanjirokamado769606
 
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort Services
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort ServicesHi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort Services
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort ServicesApsara Of India
 
Private Call Girls Bansdroni - 8250192130 | 24x7 Service Available Near Me
Private Call Girls Bansdroni - 8250192130 | 24x7 Service Available Near MePrivate Call Girls Bansdroni - 8250192130 | 24x7 Service Available Near Me
Private Call Girls Bansdroni - 8250192130 | 24x7 Service Available Near MeRiya Pathan
 

Recently uploaded (20)

Call Girls Koti 7001305949 all area service COD available Any Time
Call Girls Koti 7001305949 all area service COD available Any TimeCall Girls Koti 7001305949 all area service COD available Any Time
Call Girls Koti 7001305949 all area service COD available Any Time
 
The Fine Line Between Honest and Evil Comics by Salty Vixen
The Fine Line Between Honest and Evil Comics by Salty VixenThe Fine Line Between Honest and Evil Comics by Salty Vixen
The Fine Line Between Honest and Evil Comics by Salty Vixen
 
Hot Call Girls In Goa 7028418221 Call Girls In Vagator Beach EsCoRtS
Hot Call Girls In Goa 7028418221 Call Girls In Vagator Beach EsCoRtSHot Call Girls In Goa 7028418221 Call Girls In Vagator Beach EsCoRtS
Hot Call Girls In Goa 7028418221 Call Girls In Vagator Beach EsCoRtS
 
QUIZ BOLLYWOOD ( weekly quiz ) - SJU quizzers
QUIZ BOLLYWOOD ( weekly quiz ) - SJU quizzersQUIZ BOLLYWOOD ( weekly quiz ) - SJU quizzers
QUIZ BOLLYWOOD ( weekly quiz ) - SJU quizzers
 
Call Girls Near Delhi Pride Hotel New Delhi 9873777170
Call Girls Near Delhi Pride Hotel New Delhi 9873777170Call Girls Near Delhi Pride Hotel New Delhi 9873777170
Call Girls Near Delhi Pride Hotel New Delhi 9873777170
 
Kolkata Call Girl Bagbazar 👉 8250192130 ❣️💯 Available With Room 24×7
Kolkata Call Girl Bagbazar 👉 8250192130 ❣️💯 Available With Room 24×7Kolkata Call Girl Bagbazar 👉 8250192130 ❣️💯 Available With Room 24×7
Kolkata Call Girl Bagbazar 👉 8250192130 ❣️💯 Available With Room 24×7
 
Housewife Call Girls Sonagachi - 8250192130 Booking and charges genuine rate ...
Housewife Call Girls Sonagachi - 8250192130 Booking and charges genuine rate ...Housewife Call Girls Sonagachi - 8250192130 Booking and charges genuine rate ...
Housewife Call Girls Sonagachi - 8250192130 Booking and charges genuine rate ...
 
Call Girls Somajiguda Sarani 7001305949 all area service COD available Any Time
Call Girls Somajiguda Sarani 7001305949 all area service COD available Any TimeCall Girls Somajiguda Sarani 7001305949 all area service COD available Any Time
Call Girls Somajiguda Sarani 7001305949 all area service COD available Any Time
 
Fun Call Girls In Goa 7028418221 Escort Service In Morjim Beach Call Girl
Fun Call Girls In Goa 7028418221 Escort Service In Morjim Beach Call GirlFun Call Girls In Goa 7028418221 Escort Service In Morjim Beach Call Girl
Fun Call Girls In Goa 7028418221 Escort Service In Morjim Beach Call Girl
 
Call Girl Price Andheri WhatsApp:+91-9833363713
Call Girl Price Andheri WhatsApp:+91-9833363713Call Girl Price Andheri WhatsApp:+91-9833363713
Call Girl Price Andheri WhatsApp:+91-9833363713
 
LE IMPOSSIBRU QUIZ (Based on Splapp-me-do)
LE IMPOSSIBRU QUIZ (Based on Splapp-me-do)LE IMPOSSIBRU QUIZ (Based on Splapp-me-do)
LE IMPOSSIBRU QUIZ (Based on Splapp-me-do)
 
Call US '' 8377087607'' !! Call Girls In Model Town Metro (Delhi NCR)
Call US '' 8377087607'' !! Call Girls In Model Town Metro (Delhi NCR)Call US '' 8377087607'' !! Call Girls In Model Town Metro (Delhi NCR)
Call US '' 8377087607'' !! Call Girls In Model Town Metro (Delhi NCR)
 
Call Girls In Karnal O8860008073 Sector 6 7 8 9 Karnal Escorts
Call Girls In Karnal O8860008073 Sector 6 7 8 9 Karnal EscortsCall Girls In Karnal O8860008073 Sector 6 7 8 9 Karnal Escorts
Call Girls In Karnal O8860008073 Sector 6 7 8 9 Karnal Escorts
 
VIP Call Girls In Goa 7028418221 Call Girls In Baga Beach Escorts Service
VIP Call Girls In Goa 7028418221 Call Girls In Baga Beach Escorts ServiceVIP Call Girls In Goa 7028418221 Call Girls In Baga Beach Escorts Service
VIP Call Girls In Goa 7028418221 Call Girls In Baga Beach Escorts Service
 
5* Hotel Call Girls In Goa 7028418221 Call Girls In Calangute Beach Escort Se...
5* Hotel Call Girls In Goa 7028418221 Call Girls In Calangute Beach Escort Se...5* Hotel Call Girls In Goa 7028418221 Call Girls In Calangute Beach Escort Se...
5* Hotel Call Girls In Goa 7028418221 Call Girls In Calangute Beach Escort Se...
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607
 
Kolkata Call Girl Howrah 👉 8250192130 ❣️💯 Available With Room 24×7
Kolkata Call Girl Howrah 👉 8250192130 ❣️💯 Available With Room 24×7Kolkata Call Girl Howrah 👉 8250192130 ❣️💯 Available With Room 24×7
Kolkata Call Girl Howrah 👉 8250192130 ❣️💯 Available With Room 24×7
 
1681275559_haunting-adeline and hunting.pdf
1681275559_haunting-adeline and hunting.pdf1681275559_haunting-adeline and hunting.pdf
1681275559_haunting-adeline and hunting.pdf
 
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort Services
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort ServicesHi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort Services
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort Services
 
Private Call Girls Bansdroni - 8250192130 | 24x7 Service Available Near Me
Private Call Girls Bansdroni - 8250192130 | 24x7 Service Available Near MePrivate Call Girls Bansdroni - 8250192130 | 24x7 Service Available Near Me
Private Call Girls Bansdroni - 8250192130 | 24x7 Service Available Near Me
 

Stable SSAO in Battlefield 3 with Selective Temporal Filtering

  • 1. Stable SSAO in Battlefield 3 with Selective Temporal Filtering Louis Bavoil Developer Technology Engineer NVIDIA Johan Andersson Rendering Architect DICE / EA
  • 2. SSAO ● Screen Space Ambient Occlusion (SSAO) ● Has become de-facto approach for rendering AO in games with no precomputation ● Key Idea: use depth buffer as approximation of the opaque geometry of the scene ● Large variety of SSAO algorithms, all taking as input the scene depth buffer [Kajalin 09] [Loos and Sloan 10] [McGuire et al. 11]
  • 3. HBAO ● Horizon-Based Ambient Occlusion (HBAO) ● Considers the depth buffer as a heightfield, and approximates ray-tracing this heightfield ● Improved implementation available in NVIDIA’s SDK11 (SSAO11.zip / HBAO_PS.hlsl) ● Used for rendering SSAO in Battlefield 3 / PC for its “High” and “Ultra” Graphics Quality presets [Bavoil and Sainz 09a] [Andersson 10] [White and Barré-Brisebois 11]
  • 5. Original HBAO Implementation in Frostbite 2 Frame time (GPU): 25.2 ms Total HBAO time: 2.5 ms (10% of frame) [1920x1200 “High” DX11 GeForce GTX 560 Ti]
  • 7. Screenshot: HBAO Only The HBAO looked good-enough on screenshots…
  • 8. Video: Flickering HBAO …but produced objectionable flickering in motion on thin objects such as alpha-tested foliage (grass and trees in particular)
  • 9. Our Constraints ● PC-only ● In Frostbite 2, HBAO implemented only for DX10 & DX11 ● Low Perf Hit, High Quality ● Whole HBAO was already 2.5 ms (1920x1200 / GTX 560 Ti) ● HBAO used in High and Ultra presets, had to look great
  • 10. Considered Workarounds ● Full-resolution SSAO or dual-resolution SSAO (*) …but that more-than-doubled the cost of the SSAO, and some flickering could remain ● Brighten SSAO on the problematic objects …but we wanted a way to keep full-strength SSAO on everything (in particular on foliage) (*) [Bavoil and Sainz 09b]
  • 11. Temporal Filtering Approach ● By definition, AO depends only on the scene geometry, not on the camera ● For static (or nearly-static geometry), can re-project AO from previous frame ● Reduce AO variance between frames by using a temporal filter: newAO = lerp(newAO,previousAO,x) ● Known approach used in Gears of War 2 [Nehab et al. 07] [Smedberg and Wright 09]
  • 12. Reverse Reprojection [Nehab et al. 07] (uvi, zi) Current Camera (Frame i) Previous Camera (Frame i-1)
  • 13. Pi (uvi, zi) Reverse Reprojection [Nehab et al. 07] Current Camera (Frame i) 1. Current ViewProjection-1 Previous Camera (Frame i-1)
  • 14. Pi uvi-1 1. Current ViewProjection-1 2. Previous ViewProjection (uvi, zi) Reverse Reprojection [Nehab et al. 07] Current Camera (Frame i) Previous Camera (Frame i-1)
  • 15. Current Camera (Frame i) Pi Pi-1 (uvi-1, zi-1) 1. Current ViewProjection-1 3. Fetch Previous View Depth 2. Previous ViewProjection (uvi, zi) Reverse Reprojection [Nehab et al. 07] Previous Camera (Frame i-1)
  • 16. Current Camera (Frame i) Pi Pi-1 (uvi-1, zi-1) 1. Current ViewProjection-1 3. Fetch Previous View Depth 2. Previous ViewProjection 4. If Pi ~= Pi-1 re-use AO(Pi-1) (uvi, zi) Reverse Reprojection [Nehab et al. 07] Previous Camera (Frame i-1)
  • 17. Temporal Refinement [Mattausch et al. 11] If Pi-1 ~= Pi AOi = (Ni-1 AOi-1 + AOi) / (Ni-1 + 1) Ni = min(Ni-1 + 1, Nmax) Else AOi = AOi Ni = 1 Ni = num. frames that have been accumulated in current solution at Pi Nmax = max num. frames (~8), to keep AOi-1 contributing to AOi Pi Pi-1 (uvi-1, zi-1) (uvi, zi)
  • 18. Disocclusion Test [Mattausch et al. 11] Pi ~= Pi-1  wi = ViewDepth(Viewi-1, Pi) wi-1 = ViewDepth(Viewi-1, Pi-1)
  • 19. Relaxed Disocclusion Test Pi ~= Pi-1  To support nearly-static objects ● Such as foliage waving in the wind (grass, trees, …) ● We simply relaxed the threshold (used ε = 10%)
  • 20. Video: Temporal Filtering with ε=+Inf Flickering is fixed, but there are ghosting artifacts due to disocclusions
  • 21. Flickering on the grass (nearly static), but no ghosting artifacts Video: Temporal Filtering with ε=0.1%
  • 22. No flickering, no ghosting, 1% perf hit (25.2 -> 25.5 ms) Video: Temporal Filtering with ε=10%
  • 23. Video: Trailing Artifacts New issue: trailing artifacts on static objects receiving AO from dynamic objects
  • 24. Observations 1. With temporal filtering OFF The flickering pixels are mostly on foliage. The other pixels do not have any objectionable flickering. 2. With temporal filtering ON The trailing artifacts (near the character's feet) are not an issue on foliage pixels.
  • 25. Selective Temporal Filtering ● Assumption The set of flickering pixels and the set of trailing pixels are mutually exclusive ● Our Approach: 1. Classify the pixels as stable (potential trailing) or unstable (potential flickering) 2. Disable the temporal filter for the stable pixels
  • 26. Pixel Classification Approach ● Normal reconstruction in SSAO shader ● Px = ||P - Pleft|| < ||P - Pright|| ? Pleft : Pright ● Py = ||P - Ptop|| < ||P - Pbottom|| ? Ptop : Pbottom ● N = ± normalize(cross(P - Px, P - Py)) ● Idea: If reconstructed normal is noisy, the SSAO will be noisy P Pl Pr Pt Pb
  • 27. Piecewise Continuity Test 1. Select nearest neighbor Px between Pleft and Pright P Px = Pleft Pright
  • 28. Piecewise Continuity Test 1. Select nearest neighbor Px between Pleft and Pright 2. Continuous pixels  || Px – P || < L where L = distance threshold (in view-space units) P Px = Pleft Pright
  • 30. Two Half-Res Passes Pass 1: Output SSAO and continuity mask continuityMask = (|| Px – P || < L && || Py – P || < L) Pass 2: Dilate the discontinuities dilatedMask = all4x4(continuityMask)
  • 32. Pass 1: Classification Note: Distant pixels are all classified as “unstable” because ||P – Px/y|| increases with depth (perspective camera). Luckily for us, trailing artifacts were not an issue in the distance so this was not an issue.
  • 33. Pass 2: 4x4 Dilation Pixel classified as unstable if it has at least one discontinuity in its neighborhood 4 Gather4 instructions on DX11
  • 34. Enable temporal filter only: - for unstable pixels - with (|1 – wi /wi-1| < ε) Selective Temporal Filtering
  • 35. Video: HBAO + Selective Temporal Filtering
  • 37. Final Pipeline with Selective Temporal Filtering (STF) STF Performance Hit [1920x1200 “High”, GTX 560 Ti] • HBAO total: 2.5 ms -> 2.9 ms • Frame time (GPU): 25.2 -> 25.6 ms (1.6% performance hit) STF Parameters • Reprojection Threshold: For detecting disocclusions (ε=10%) • Distance Threshold: For detecting discontinuities (L=0.1 meter) • Dilation Kernel Size (4x4 texels)
  • 38. History Buffers ● Additional GPU memory required for the history buffers ● For (AOi, Zi, Ni) and (AOi-1, Zi-1, Ni) ● Full-res, 1xMSAA ● For Multi-GPU Alternate Frame Rendering (AFR) rendering ● Create one set of buffers per GPU and alternate between them ● Each AFR GPU has its own buffers & reprojection state ● The history buffers are cleared on first use ● Clear values: (AO,Z)=(1.f, 0.f) and N=0
  • 39. SelectiveTemporalFilter(uvi, AOi) zi = Fetch(ZBufferi, uvi) Pi = UnprojectToWorld(uvi, zi) uvi-1 = ProjectToUV(Viewi-1, Pi) zi-1 = Fetch(ZBufferi-1, uvi-1) Pi-1 = UnprojectToWorld(uvi-1, zi-1) wi = ViewDepth(Viewi-1 , Pi) wi-1 = ViewDepth(Viewi-1 , Pi-1) isStablePixel = Fetch(StabilityMask, uvi) if ( |1 – wi/wi-1 | < ε && !isStablePixel ) AOi-1 = Fetch(AOTexturei-1, uvi-1) Ni-1 = Fetch(NTexturei-1, uvi-1) AOi = (Ni-1 AOi-1 + AOi) / (Ni-1 + 1) Ni = min(Ni-1 + 1, Nmax) else Ni = 1 return(AOi, wi, Ni) Unoptimized pseudo-code For fetching zi-1, use clamp-to-border to discard out-of-frame data, with borderZ=0.f For fetching AOi-1, use bilinear filtering like in [Nehab et al. 07]
  • 43. Blur Overview ● Full-screen pixel-shader passes ● BlurX (horizontal) ● BlurY (vertical) ● BlurX takes as input ● Half-res AO ● Full-res linear depth (non-MSAA)
  • 44. Blur Kernel ● We use 1D Cross-Bilateral Filters (CBF) ● Gaussian blur with depth-dependent weights [Petschnigg et al. 04] [Eisemann and Durand 04] [Kopf et al. 07] [Bavoil et al. 08] [McGuire et al. 11] Sum[ AOi w(i,Zi,Z0), i=-R..R ] Sum[ w(i,Zi,Z0), i=-R..R ] Output =
  • 45. Blur Opt: Adaptive Sampling 2/3 of total weights 1/3 of total weights Can these samples be approximated?
  • 46. Blur Opt: Adaptive Sampling Replace pairs of samples with in-between sample Keep original samples (AO,Z) fetches with hw bilinear filtering
  • 47. Blur Opt: Adaptive Sampling
  • 49. Adaptive Sampling BlurX cost: 0.6 ms
  • 50. Blur Opt: Speedup Blur Radius: 8 Resolution: 1920x1200 GeForce GTX 560 Ti GPU Time Before After Speedup Pack (AO,Z) 0.18 ms 0.18 ms 0% BlurX 0.75 ms 0.58 ms 29% BlurY+STF 1.00 ms 0.95 ms 5% (*) Blur Total 1.93 ms 1.71 ms 13% (*) Lower speedup due to the math overhead of the Selective Temporal Filter (STF)
  • 51. Summary Two techniques used in Battlefield 3 / PC 1. A generic solution to fix SSAO flickering with a low perf hit (*) on DX10/11 GPUs 2. An approximate cross-bilateral filter, using a mix of point and bilinear taps (*) 0.4 ms in 1920x1200 on GeForce GTX 560 Ti
  • 53. References [McGuire et al. 11] McGuire, Osman, Bukowski, Hennessy. The Alchemy Screen-Space Ambient Obscurance Algorithm. Proceedings of ACM SIGGRAPH / Eurographics High-Performance Graphics 2011 (HPG '11). [White and Barré-Brisebois 11] White, Barré-Brisebois. More Performance! Five Rendering Ideas from Battlefield 3 and Need For Speed: The Run. Advances in Real-Time Rendering in Games. SIGGRAPH 2011. [Mattausch et al. 11] Mattausch, Scherzer, Wimmer. Temporal Screen- Space Ambient Occlusion. In GPU Pro 2. 2011. [Loos and Sloan 10] Loos, Sloan. Volumetric Obscurance. ACM Symposium on Interactive 3D Graphics and Games 2010.
  • 54. References [Andersson 10] Andersson. Bending the Graphics Pipeline. Beyond Programmable Shading course, SIGGRAPH 2010. [Bavoil and Sainz 09a] Bavoil, Sainz. Image-Space Horizon-Based Ambient Occlusion. In ShaderX7. 2009. [Bavoil and Sainz 09b] Bavoil, Sainz. Multi-Layer Dual-Resolution Screen- Space Ambient Occlusion. SIGGRAPH Talk. 2009. [Smedberg and Wright 09] Smedberg, Wright. Rendering Techniques in Gears of War 2. GDC 2009. [Kajalin 09] Kajalin. Screen Space Ambient Occlusion. In ShaderX7. 2009. [Bavoil et al. 08] Bavoil, Sainz, Dimitrov. Image-Space Horizon-Based Ambient Occlusion. SIGGRAPH Talk. 2008.
  • 55. References [Nehab et al. 07] Nehab, Sander, Lawrence, Tatarchuk, Isidoro. Accelerating Real-Time Shading with Reverse Reprojection Caching. In ACM SIGGRAPH/Eurographics Symposium on Graphics Hardware 2007. [Kopf et al. 07] Kopf, Cohen, Lischinski, Uyttendaele. 2007. Joint Bilateral Upsampling. In Proceedings of SIGGRAPH 2007. [Petschnigg et al. 04] Petschnigg, Szeliski, Agrawala, Cohen, Hoppe. Toyama: Digital photography with flash and no-flash image pairs. In Proceedings of SIGGRAPH 2004. [Eisemann and Durand 04] Eisemann, Durand. “Flash Photography Enhancement via Intrinsic Relighting”. In Proceedings of SIGGRAPH 2004.
  • 57. HLSL: Adaptive Sampling float r = 1; // Inner half of the kernel: step size = 1 and POINT filtering [unroll] for (; r <= KERNEL_RADIUS/2; r += 1) { float2 uv = r * deltaUV + uv0; float2 AOZ = mainTexture.Sample(pointClampSampler, uv).xy; processSample(AOZ, r, centerDepth, totalAO, totalW); } // Outer half of the kernel: step size = 2 and LINEAR filtering [unroll] for (; r <= KERNEL_RADIUS; r += 2) { float2 uv = (r + 0.5) * deltaUV + uv0; float2 AOZ = mainTexture.Sample(linearClampSampler, uv).xy; processSample(AOZ, r, centerDepth, totalAO, totalW); }
  • 58. HLSL: Cross-Bilateral Weights // d and d0 = linear depths float crossBilateralWeight(float r, float d, float d0) { // precompiled by fxc const float BlurSigma = ((float)KERNEL_RADIUS+1.0f) * 0.5f; const float BlurFalloff = 1.f / (2.0f*BlurSigma*BlurSigma); // assuming that d and d0 are pre-scaled linear depths float dz = d0 - d; return exp2(-r*r*BlurFalloff - dz*dz); }

Editor's Notes

  1. In Gears of War 2 talk: “Motivation – Large spatial filters needed to hide low occlusion samples – Detail is lost with large filters Lots of variance between frames"
  2. Two 1D passes: applied horizontally, then vertically
  3. approximating the low-weighted part of the Gaussian kernel.
  4. TODO: Dump Gaussian weights for R=8