SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
5 years is a long time
Particularly for one game
But finally I can talk about the renderer




                                            1
Think Different

How we tried to take Conviction in a new direction

How this motivated two new (different) approaches…


A completely dynamic visibility system
A unique, semi-dynamic Ambient Occlusion approach




                                                     2
Inspiration: Bourne series, 24
Initial design: “Nowhere to hide” (out in the open), improvisation, less reliance on
gadgets. MacGyver-esque. Blending into the crowd. Destruction. Stuff blowing up.
Hollywood action.


In terms of rendering:


Outdoor environments
HQ ambient lighting
Lots of dynamic objects


Radical departure…




                                                                                       3
No threading


Interiors
High-contrast lighting
High cost to rendering objects
Bolted down


Plus, also carrying a little ‘extra weight’ - code bloat


The great temptation? To start from scratch…




                                                           4
A prime example: BSP


An integral part of Unreal Engine


Showing its age
Messy implementation (we’d hacked on it)
Won’t meet our goals – dynamic and/or localised occlusion (particularly outside)


But we had a solution…


[By the way, this is me back then getting messy with the code.
As I said, 5 years is a long time. ]




                                                                                   5
Fairly new to the scene
We had naïve expectations
Just render lots of queries – yay!




                                     6
Whilst we were busy rewriting the renderer, back on the farm…


Removing the BSP:


Caused major disruption for LDs. They were used to blocking out maps with BSP
brushes, not making meshes in 3ds Max!
Robbed engine of an acceleration structure


Should have distilled what we had!


The BSP geometry could have been converted to static mesh chunks and also used for
collision, occlusion.




                                                                                     7
Avoid disruptive changes (rewrites) -> Resistance, confusion, distrust


But… you have to push boundaries


Fail Early, Fail Often. Get good at this and you reduce risk. Try 100 ways to find that
one way…


An amazing personal experience




                                                                                          8
What is visibility?


Cull what you can’t see
Ideally everything
Effectively render more


Before & after




                          9
Query problems:


Latency
Popping
Can’t batch
Grouping? Complicated


Nothing worked fully


<rant>You’ll see these issues or their side effects even in commercial middleware.
Either there’s popping (‘latent’ queries) or the tests must be interleaved with regular
rendering, which can complicate things or restrict you.</rant>




                                                                                          10
Had plenty of ideas

One was the “Hierarchical Z Buffer”, Greene et al., Siggraph 93

But:

Ran out of time
Worried about performance
Unproved solutions (HZB in particular)
Thought we could work around every problem

Barriers lifted…
More time + inspiration (Josh & Jeremy at Siggraph ’08 – Froblins talk)




                                                                          11
Simple, elegant


Render occluders - doing this anyway?
Build depth MIP chain
Test objects against this


[Besides read-back, all of this happens on the GPU]




                                                      12
These are our occluders
Typically decoupled from the visual meshes
Pretty abstract
You’ll see this market scene again shortly in context




                                                        13
This is your z-buffer on steroids


Take max of 4 texels when generating next level


Skybox (white) begins to dominate




                                                  14
Take the objects’ bounds (blue)
Find the screen bounds (green)
Find the right level of the HZB (orange) – the one that covers the screen bounds with
<= N texels


Visibility test: Is object min_z < HZB (overlapping texels)


Advantages: Fixed cost, single batch (one big POINTLIST VB of bounds), extremely
fast, in our case no frame delay


Trade off: Small objects are accurate, big objects are inaccurate. This is probabilistic.
Big objects (in screen terms) are more likely to be visible anyway




                                                                                            15
We wait for the results, you could defer


CPU typically has some work to do (light re-association)
GPU can be idle as results are processed by the CPU (try to move most of this work
until later in the frame)


We also test: Lights, AO fields, decals, deferred queries for main engine
We also check: Does object need to stream textures?, can it be screen-size
faded/culled?, what tiles does it cover? (360)


360: No predicated tiling, no BUFFER_2_FRAMES!


Production proven!




                                                                                     16
Inspired by CC Shadow Volumes


First pass: From light


Cull hidden
Clamp visible to occluders




                                17
Second pass: From camera


Test clamped shafts
Can reuse the HZB from the main render


Used for cascaded shadows




                                         18
Rough 360 stats:


~0.35ms for all the queries (worst case – not all levels have this many)


Plus
~0.1ms for downsample (512x256 - could possibly be lower)
Also not counting occluder rendering (maybe another ~0.1ms – can be CPU bound at
the moment)


versus ~0.05ms per full-screen occlusion query. Think about that for a second!


It’s so fast that we didn’t even bother with a shallow hierarchy pre-pass


Could use this to drive pre-computed visibility too


<rant>I can’t believe some developers suffer 6h+ static PVS pre-processing steps for
their levels, even if they’re aiming for 60FPS.</rant>




                                                                                       19
20
Not perfect
Humans get in the way


Cull the vast majority of objects
Big object != expensive object


Occluder mesh != collision mesh


Testers will find these problems
But only right at the end!


Visual & occluder need to be in sync.




                                        21
We’d like to use these more in the main engine…
Determinism was an issue – P2P COOP, particularly on PC


Several passes
Rasterisation?


But what’s my main goal?…




                                                          22
Take artists out of the loop as much as possible. There’s no such thing as pretty
visibility
Minimal production overhead. One less thing to worry about
No cheating. 100% correctness


Perhaps just have artists tag structural meshes, then we weld them all up, possibly
simplify and convert to fixed-size chunks / minimise overdraw.




                                                                                      23
What is AO? This is AO


Average shadowing at a point. How much light can get there
Less flat ambient. Contact shadows
Constant/low-frequency ambient otherwise washes things out
Poor man’s GI. We decouple colour and luminance changes as an approximation


We bake everything but it’s still dynamic
NOT SSAO… (although it is accumulated in screen space )




                                                                              24
No SSAO in 2005
But this gives us control, flexibility
Competitive
Not a crease shader




                                         25
The first component is static baking for self occlusion (rigid bodies) and ‘structural’
meshes (big meshes that don’t move)


Artists can control the falloff/cutoff, which is important for interiors


This is generated with a mini-renderer
Essentially accumulating shadow maps, with depth peeling to support falloff/cutoff


<rant>Put the time in to ensure that artists have fast tools. So they can iterate quickly.
So nothing gets out of sync.
It’s fun to boast about having awesome server farms, but you’re doing your artists a
disservice if you think a round trip time of a few hours is a good idea. Same goes for
PVS.</rant>




                                                                                             26
Inspired by AO Fields paper


We use volumes in order to capture concave occlusion (e.g. under a table)


Average + directional visibility (like second order SH, but the scale factors cancel)


Generated offline as with self AO




                                                                                        27
Analytical
Second order zonal harmonics
1D Texture – unit sphere on Z
Attached to primary bones
Used for self occlusion too


Those blue pills are just an artistic representation. They’re really ellipsoids.




                                                                                   28
We combine (splat) fields in screen-space using special blending
Composited like deferred lighting




                                                                   29
Smooth
Rendered at ¼ res.
Masking by ID for fields
Edge-aware up-sampling




                           30
Dot product in the lighting pass. Uses per-pixel normal


We’ve decoupled again: High-frequency surface normal vs. smoothly-varying AO


For our ‘look’, we scale regular diffuse/spec too and even apply contrast to the AO




                                                                                      31
32
33
This didn’t make it in…
The reverse: lighting




                          34
This is a highly active field of research
RGB occlusion/bounce/light? (see earlier)
Combine with Crytek’s GI?


We should have streamed in higher-res. volumes


I can’t imagine hardware supporting cubic interpolation of volume textures anytime
soon, but a developer can dream.




                                                                                     35
36
I owe a debt of gratitude to all of these guys


All those artists
Josh and Jeremy for inspiration
Michael: Initial AO work
Everyone else for feedback on this talk




                                                 37
38
39

Más contenido relacionado

La actualidad más candente

Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1Ki Hyunwoo
 
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
 
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lightsPrecomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lightsSeongdae Kim
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2Guerrilla
 
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
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Johan Andersson
 
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
 
Lighting Shading by John Hable
Lighting Shading by John HableLighting Shading by John Hable
Lighting Shading by John HableNaughty Dog
 
Cascades Demo Secrets
Cascades Demo SecretsCascades Demo Secrets
Cascades Demo Secretsicastano
 
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
 
【Unite Tokyo 2019】Unityプログレッシブライトマッパー2019
【Unite Tokyo 2019】Unityプログレッシブライトマッパー2019【Unite Tokyo 2019】Unityプログレッシブライトマッパー2019
【Unite Tokyo 2019】Unityプログレッシブライトマッパー2019UnityTechnologiesJapan002
 
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color CourseFilmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Coursehpduiker
 
OIT to Volumetric Shadow Mapping, 101 Uses for Raster-Ordered Views using Dir...
OIT to Volumetric Shadow Mapping, 101 Uses for Raster-Ordered Views using Dir...OIT to Volumetric Shadow Mapping, 101 Uses for Raster-Ordered Views using Dir...
OIT to Volumetric Shadow Mapping, 101 Uses for Raster-Ordered Views using Dir...Gael Hofemeier
 
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
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space MarinePope Kim
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonAMD Developer Central
 
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...JP Lee
 
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
 

La actualidad más candente (20)

Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1
 
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
 
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lightsPrecomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2
 
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
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
 
Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3
 
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
 
Lighting Shading by John Hable
Lighting Shading by John HableLighting Shading by John Hable
Lighting Shading by John Hable
 
Cascades Demo Secrets
Cascades Demo SecretsCascades Demo Secrets
Cascades Demo Secrets
 
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
 
【Unite Tokyo 2019】Unityプログレッシブライトマッパー2019
【Unite Tokyo 2019】Unityプログレッシブライトマッパー2019【Unite Tokyo 2019】Unityプログレッシブライトマッパー2019
【Unite Tokyo 2019】Unityプログレッシブライトマッパー2019
 
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color CourseFilmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
 
OIT to Volumetric Shadow Mapping, 101 Uses for Raster-Ordered Views using Dir...
OIT to Volumetric Shadow Mapping, 101 Uses for Raster-Ordered Views using Dir...OIT to Volumetric Shadow Mapping, 101 Uses for Raster-Ordered Views using Dir...
OIT to Volumetric Shadow Mapping, 101 Uses for Raster-Ordered Views using Dir...
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space Marine
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
 
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...
 
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)
 

Destacado (20)

Convocatoria
ConvocatoriaConvocatoria
Convocatoria
 
Mantra3
Mantra3Mantra3
Mantra3
 
EPR OIS Offshore Installation Services
EPR OIS Offshore Installation ServicesEPR OIS Offshore Installation Services
EPR OIS Offshore Installation Services
 
Test Nan
Test NanTest Nan
Test Nan
 
testing add
testing addtesting add
testing add
 
tiwari
tiwaritiwari
tiwari
 
Create a Rain garden
Create a Rain gardenCreate a Rain garden
Create a Rain garden
 
sdfsdf
sdfsdfsdfsdf
sdfsdf
 
UNEP_Pitches6
UNEP_Pitches6UNEP_Pitches6
UNEP_Pitches6
 
Election Process(Vikas)
Election Process(Vikas)Election Process(Vikas)
Election Process(Vikas)
 
latest slide
latest slidelatest slide
latest slide
 
ADS-Weidenhausen
ADS-WeidenhausenADS-Weidenhausen
ADS-Weidenhausen
 
latest slide
latest slidelatest slide
latest slide
 
Ud 2 TectóNica De Placas Proba
Ud 2 TectóNica De Placas ProbaUd 2 TectóNica De Placas Proba
Ud 2 TectóNica De Placas Proba
 
latest slide
latest slidelatest slide
latest slide
 
first pitch
first pitchfirst pitch
first pitch
 
What Is E Commerce
What Is E CommerceWhat Is E Commerce
What Is E Commerce
 
Interpreting Geologic History Outline
Interpreting Geologic History OutlineInterpreting Geologic History Outline
Interpreting Geologic History Outline
 
organic
organicorganic
organic
 
Epic Weekend
Epic WeekendEpic Weekend
Epic Weekend
 

Similar a Hill Stephen Rendering Tools Splinter Cell Conviction

Umbra Ignite 2015: Alex Evans – Learning from failure – prototypes, R&D, iter...
Umbra Ignite 2015: Alex Evans – Learning from failure – prototypes, R&D, iter...Umbra Ignite 2015: Alex Evans – Learning from failure – prototypes, R&D, iter...
Umbra Ignite 2015: Alex Evans – Learning from failure – prototypes, R&D, iter...Umbra Software
 
GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)Michael Heron
 
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
 
The Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsThe Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsJohan Andersson
 
Introduction occlusion
Introduction occlusionIntroduction occlusion
Introduction occlusionVisCircle
 
The John Henry lens design challenge
The John Henry lens design challengeThe John Henry lens design challenge
The John Henry lens design challengeDave Shafer
 
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" DemoThe Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demodrandom
 
Epic_GDC2011_Samaritan
Epic_GDC2011_SamaritanEpic_GDC2011_Samaritan
Epic_GDC2011_SamaritanMinGeun Park
 
Presentation at SMI 2023
Presentation at SMI 2023Presentation at SMI 2023
Presentation at SMI 2023Joaquim Jorge
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for GamesUmbra
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for GamesSampo Lappalainen
 
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)Mark Kilgard
 
Drupal product 3 is the magic number
Drupal product 3 is the magic numberDrupal product 3 is the magic number
Drupal product 3 is the magic numberRoy Scholten
 
NVIDIA effects GDC09
NVIDIA effects GDC09NVIDIA effects GDC09
NVIDIA effects GDC09IGDA_London
 
Killzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemKillzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemGuerrilla
 
PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdf
PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdfPapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdf
PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdfAdam Hill
 
Implementing a modern, RenderMan compliant, REYES renderer
Implementing a modern, RenderMan compliant, REYES rendererImplementing a modern, RenderMan compliant, REYES renderer
Implementing a modern, RenderMan compliant, REYES rendererDavide Pasca
 
Lightspeed Preprint
Lightspeed PreprintLightspeed Preprint
Lightspeed Preprintjustanimate
 
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated RenderingPractical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated RenderingMark Kilgard
 

Similar a Hill Stephen Rendering Tools Splinter Cell Conviction (20)

Umbra Ignite 2015: Alex Evans – Learning from failure – prototypes, R&D, iter...
Umbra Ignite 2015: Alex Evans – Learning from failure – prototypes, R&D, iter...Umbra Ignite 2015: Alex Evans – Learning from failure – prototypes, R&D, iter...
Umbra Ignite 2015: Alex Evans – Learning from failure – prototypes, R&D, iter...
 
GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)
 
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
 
Reyes
ReyesReyes
Reyes
 
The Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsThe Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next Steps
 
Introduction occlusion
Introduction occlusionIntroduction occlusion
Introduction occlusion
 
The John Henry lens design challenge
The John Henry lens design challengeThe John Henry lens design challenge
The John Henry lens design challenge
 
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" DemoThe Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
 
Epic_GDC2011_Samaritan
Epic_GDC2011_SamaritanEpic_GDC2011_Samaritan
Epic_GDC2011_Samaritan
 
Presentation at SMI 2023
Presentation at SMI 2023Presentation at SMI 2023
Presentation at SMI 2023
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for Games
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for Games
 
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
 
Drupal product 3 is the magic number
Drupal product 3 is the magic numberDrupal product 3 is the magic number
Drupal product 3 is the magic number
 
NVIDIA effects GDC09
NVIDIA effects GDC09NVIDIA effects GDC09
NVIDIA effects GDC09
 
Killzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemKillzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo Postmortem
 
PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdf
PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdfPapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdf
PapersWeLove - Rendering Synthetic Objects Into Real Scenes - Paul Debevec.pdf
 
Implementing a modern, RenderMan compliant, REYES renderer
Implementing a modern, RenderMan compliant, REYES rendererImplementing a modern, RenderMan compliant, REYES renderer
Implementing a modern, RenderMan compliant, REYES renderer
 
Lightspeed Preprint
Lightspeed PreprintLightspeed Preprint
Lightspeed Preprint
 
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated RenderingPractical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering
 

Más de ozlael ozlael

Unity & VR (Unity Roadshow 2016)
Unity & VR (Unity Roadshow 2016)Unity & VR (Unity Roadshow 2016)
Unity & VR (Unity Roadshow 2016)ozlael ozlael
 
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)ozlael ozlael
 
Optimizing mobile applications - Ian Dundore, Mark Harkness
Optimizing mobile applications - Ian Dundore, Mark HarknessOptimizing mobile applications - Ian Dundore, Mark Harkness
Optimizing mobile applications - Ian Dundore, Mark Harknessozlael ozlael
 
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , 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
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.ozlael ozlael
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.ozlael ozlael
 
Infinity Blade and beyond
Infinity Blade and beyondInfinity Blade and beyond
Infinity Blade and beyondozlael ozlael
 
스티브잡스처럼 프레젠테이션하기
스티브잡스처럼 프레젠테이션하기스티브잡스처럼 프레젠테이션하기
스티브잡스처럼 프레젠테이션하기ozlael ozlael
 
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)ozlael ozlael
 
Introduce coco2dx with cookingstar
Introduce coco2dx with cookingstarIntroduce coco2dx with cookingstar
Introduce coco2dx with cookingstarozlael ozlael
 
Deferred rendering case study
Deferred rendering case studyDeferred rendering case study
Deferred rendering case studyozlael ozlael
 
Kgc make stereo game on pc
Kgc make stereo game on pcKgc make stereo game on pc
Kgc make stereo game on pcozlael ozlael
 
Modern gpu optimize blog
Modern gpu optimize blogModern gpu optimize blog
Modern gpu optimize blogozlael ozlael
 
Bickerstaff benson making3d games on the playstation3
Bickerstaff benson making3d games on the playstation3Bickerstaff benson making3d games on the playstation3
Bickerstaff benson making3d games on the playstation3ozlael ozlael
 
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)ozlael ozlael
 
Deferred rendering in_leadwerks_engine[1]
Deferred rendering in_leadwerks_engine[1]Deferred rendering in_leadwerks_engine[1]
Deferred rendering in_leadwerks_engine[1]ozlael ozlael
 

Más de ozlael ozlael (20)

Unity & VR (Unity Roadshow 2016)
Unity & VR (Unity Roadshow 2016)Unity & VR (Unity Roadshow 2016)
Unity & VR (Unity Roadshow 2016)
 
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
 
Optimizing mobile applications - Ian Dundore, Mark Harkness
Optimizing mobile applications - Ian Dundore, Mark HarknessOptimizing mobile applications - Ian Dundore, Mark Harkness
Optimizing mobile applications - Ian Dundore, Mark Harkness
 
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , 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! -...
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
 
Infinity Blade and beyond
Infinity Blade and beyondInfinity Blade and beyond
Infinity Blade and beyond
 
스티브잡스처럼 프레젠테이션하기
스티브잡스처럼 프레젠테이션하기스티브잡스처럼 프레젠테이션하기
스티브잡스처럼 프레젠테이션하기
 
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
 
Introduce coco2dx with cookingstar
Introduce coco2dx with cookingstarIntroduce coco2dx with cookingstar
Introduce coco2dx with cookingstar
 
Deferred rendering case study
Deferred rendering case studyDeferred rendering case study
Deferred rendering case study
 
Kgc make stereo game on pc
Kgc make stereo game on pcKgc make stereo game on pc
Kgc make stereo game on pc
 
mssao presentation
mssao presentationmssao presentation
mssao presentation
 
Modern gpu optimize blog
Modern gpu optimize blogModern gpu optimize blog
Modern gpu optimize blog
 
Modern gpu optimize
Modern gpu optimizeModern gpu optimize
Modern gpu optimize
 
Bickerstaff benson making3d games on the playstation3
Bickerstaff benson making3d games on the playstation3Bickerstaff benson making3d games on the playstation3
Bickerstaff benson making3d games on the playstation3
 
DOF Depth of Field
DOF Depth of FieldDOF Depth of Field
DOF Depth of Field
 
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
 
Deferred rendering in_leadwerks_engine[1]
Deferred rendering in_leadwerks_engine[1]Deferred rendering in_leadwerks_engine[1]
Deferred rendering in_leadwerks_engine[1]
 
Deferred shading
Deferred shadingDeferred shading
Deferred shading
 

Último

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Último (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

Hill Stephen Rendering Tools Splinter Cell Conviction

  • 1. 5 years is a long time Particularly for one game But finally I can talk about the renderer 1
  • 2. Think Different How we tried to take Conviction in a new direction How this motivated two new (different) approaches… A completely dynamic visibility system A unique, semi-dynamic Ambient Occlusion approach 2
  • 3. Inspiration: Bourne series, 24 Initial design: “Nowhere to hide” (out in the open), improvisation, less reliance on gadgets. MacGyver-esque. Blending into the crowd. Destruction. Stuff blowing up. Hollywood action. In terms of rendering: Outdoor environments HQ ambient lighting Lots of dynamic objects Radical departure… 3
  • 4. No threading Interiors High-contrast lighting High cost to rendering objects Bolted down Plus, also carrying a little ‘extra weight’ - code bloat The great temptation? To start from scratch… 4
  • 5. A prime example: BSP An integral part of Unreal Engine Showing its age Messy implementation (we’d hacked on it) Won’t meet our goals – dynamic and/or localised occlusion (particularly outside) But we had a solution… [By the way, this is me back then getting messy with the code. As I said, 5 years is a long time. ] 5
  • 6. Fairly new to the scene We had naïve expectations Just render lots of queries – yay! 6
  • 7. Whilst we were busy rewriting the renderer, back on the farm… Removing the BSP: Caused major disruption for LDs. They were used to blocking out maps with BSP brushes, not making meshes in 3ds Max! Robbed engine of an acceleration structure Should have distilled what we had! The BSP geometry could have been converted to static mesh chunks and also used for collision, occlusion. 7
  • 8. Avoid disruptive changes (rewrites) -> Resistance, confusion, distrust But… you have to push boundaries Fail Early, Fail Often. Get good at this and you reduce risk. Try 100 ways to find that one way… An amazing personal experience 8
  • 9. What is visibility? Cull what you can’t see Ideally everything Effectively render more Before & after 9
  • 10. Query problems: Latency Popping Can’t batch Grouping? Complicated Nothing worked fully <rant>You’ll see these issues or their side effects even in commercial middleware. Either there’s popping (‘latent’ queries) or the tests must be interleaved with regular rendering, which can complicate things or restrict you.</rant> 10
  • 11. Had plenty of ideas One was the “Hierarchical Z Buffer”, Greene et al., Siggraph 93 But: Ran out of time Worried about performance Unproved solutions (HZB in particular) Thought we could work around every problem Barriers lifted… More time + inspiration (Josh & Jeremy at Siggraph ’08 – Froblins talk) 11
  • 12. Simple, elegant Render occluders - doing this anyway? Build depth MIP chain Test objects against this [Besides read-back, all of this happens on the GPU] 12
  • 13. These are our occluders Typically decoupled from the visual meshes Pretty abstract You’ll see this market scene again shortly in context 13
  • 14. This is your z-buffer on steroids Take max of 4 texels when generating next level Skybox (white) begins to dominate 14
  • 15. Take the objects’ bounds (blue) Find the screen bounds (green) Find the right level of the HZB (orange) – the one that covers the screen bounds with <= N texels Visibility test: Is object min_z < HZB (overlapping texels) Advantages: Fixed cost, single batch (one big POINTLIST VB of bounds), extremely fast, in our case no frame delay Trade off: Small objects are accurate, big objects are inaccurate. This is probabilistic. Big objects (in screen terms) are more likely to be visible anyway 15
  • 16. We wait for the results, you could defer CPU typically has some work to do (light re-association) GPU can be idle as results are processed by the CPU (try to move most of this work until later in the frame) We also test: Lights, AO fields, decals, deferred queries for main engine We also check: Does object need to stream textures?, can it be screen-size faded/culled?, what tiles does it cover? (360) 360: No predicated tiling, no BUFFER_2_FRAMES! Production proven! 16
  • 17. Inspired by CC Shadow Volumes First pass: From light Cull hidden Clamp visible to occluders 17
  • 18. Second pass: From camera Test clamped shafts Can reuse the HZB from the main render Used for cascaded shadows 18
  • 19. Rough 360 stats: ~0.35ms for all the queries (worst case – not all levels have this many) Plus ~0.1ms for downsample (512x256 - could possibly be lower) Also not counting occluder rendering (maybe another ~0.1ms – can be CPU bound at the moment) versus ~0.05ms per full-screen occlusion query. Think about that for a second! It’s so fast that we didn’t even bother with a shallow hierarchy pre-pass Could use this to drive pre-computed visibility too <rant>I can’t believe some developers suffer 6h+ static PVS pre-processing steps for their levels, even if they’re aiming for 60FPS.</rant> 19
  • 20. 20
  • 21. Not perfect Humans get in the way Cull the vast majority of objects Big object != expensive object Occluder mesh != collision mesh Testers will find these problems But only right at the end! Visual & occluder need to be in sync. 21
  • 22. We’d like to use these more in the main engine… Determinism was an issue – P2P COOP, particularly on PC Several passes Rasterisation? But what’s my main goal?… 22
  • 23. Take artists out of the loop as much as possible. There’s no such thing as pretty visibility Minimal production overhead. One less thing to worry about No cheating. 100% correctness Perhaps just have artists tag structural meshes, then we weld them all up, possibly simplify and convert to fixed-size chunks / minimise overdraw. 23
  • 24. What is AO? This is AO Average shadowing at a point. How much light can get there Less flat ambient. Contact shadows Constant/low-frequency ambient otherwise washes things out Poor man’s GI. We decouple colour and luminance changes as an approximation We bake everything but it’s still dynamic NOT SSAO… (although it is accumulated in screen space ) 24
  • 25. No SSAO in 2005 But this gives us control, flexibility Competitive Not a crease shader 25
  • 26. The first component is static baking for self occlusion (rigid bodies) and ‘structural’ meshes (big meshes that don’t move) Artists can control the falloff/cutoff, which is important for interiors This is generated with a mini-renderer Essentially accumulating shadow maps, with depth peeling to support falloff/cutoff <rant>Put the time in to ensure that artists have fast tools. So they can iterate quickly. So nothing gets out of sync. It’s fun to boast about having awesome server farms, but you’re doing your artists a disservice if you think a round trip time of a few hours is a good idea. Same goes for PVS.</rant> 26
  • 27. Inspired by AO Fields paper We use volumes in order to capture concave occlusion (e.g. under a table) Average + directional visibility (like second order SH, but the scale factors cancel) Generated offline as with self AO 27
  • 28. Analytical Second order zonal harmonics 1D Texture – unit sphere on Z Attached to primary bones Used for self occlusion too Those blue pills are just an artistic representation. They’re really ellipsoids. 28
  • 29. We combine (splat) fields in screen-space using special blending Composited like deferred lighting 29
  • 30. Smooth Rendered at ¼ res. Masking by ID for fields Edge-aware up-sampling 30
  • 31. Dot product in the lighting pass. Uses per-pixel normal We’ve decoupled again: High-frequency surface normal vs. smoothly-varying AO For our ‘look’, we scale regular diffuse/spec too and even apply contrast to the AO 31
  • 32. 32
  • 33. 33
  • 34. This didn’t make it in… The reverse: lighting 34
  • 35. This is a highly active field of research RGB occlusion/bounce/light? (see earlier) Combine with Crytek’s GI? We should have streamed in higher-res. volumes I can’t imagine hardware supporting cubic interpolation of volume textures anytime soon, but a developer can dream. 35
  • 36. 36
  • 37. I owe a debt of gratitude to all of these guys All those artists Josh and Jeremy for inspiration Michael: Initial AO work Everyone else for feedback on this talk 37
  • 38. 38
  • 39. 39