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

Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility bufferWolfgang Engel
 
Terrain in Battlefield 3: A Modern, Complete and Scalable System
Terrain in Battlefield 3: A Modern, Complete and Scalable SystemTerrain in Battlefield 3: A Modern, Complete and Scalable System
Terrain in Battlefield 3: A Modern, Complete and Scalable SystemElectronic Arts / DICE
 
Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Takahiro Harada
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14AMD Developer Central
 
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Physically Based Sky, Atmosphere and Cloud Rendering in FrostbitePhysically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Physically Based Sky, Atmosphere and Cloud Rendering in FrostbiteElectronic 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
 
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)Johan Andersson
 
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
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The SurgeMichele Giacalone
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
 
Z Buffer Optimizations
Z Buffer OptimizationsZ Buffer Optimizations
Z Buffer Optimizationspjcozzi
 
Lighting Shading by John Hable
Lighting Shading by John HableLighting Shading by John Hable
Lighting Shading by John HableNaughty Dog
 
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 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
 
Taking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationTaking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationGuerrilla
 
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
 
Masked Software Occlusion Culling
Masked Software Occlusion CullingMasked Software Occlusion Culling
Masked Software Occlusion CullingIntel® Software
 
Approaching zero driver overhead
Approaching zero driver overheadApproaching zero driver overhead
Approaching zero driver overheadCass Everitt
 

La actualidad más candente (20)

Ssao
SsaoSsao
Ssao
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility buffer
 
Terrain in Battlefield 3: A Modern, Complete and Scalable System
Terrain in Battlefield 3: A Modern, Complete and Scalable SystemTerrain in Battlefield 3: A Modern, Complete and Scalable System
Terrain in Battlefield 3: A Modern, Complete and Scalable System
 
Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
 
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Physically Based Sky, Atmosphere and Cloud Rendering in FrostbitePhysically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
 
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)
 
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
 
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
 
D2 Hdr
D2 HdrD2 Hdr
D2 Hdr
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 
Z Buffer Optimizations
Z Buffer OptimizationsZ Buffer Optimizations
Z Buffer Optimizations
 
Lighting Shading by John Hable
Lighting Shading by John HableLighting Shading by John Hable
Lighting Shading by John Hable
 
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 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
 
Taking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationTaking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next Generation
 
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
 
Masked Software Occlusion Culling
Masked Software Occlusion CullingMasked Software Occlusion Culling
Masked Software Occlusion Culling
 
Approaching zero driver overhead
Approaching zero driver overheadApproaching zero driver overhead
Approaching zero driver overhead
 

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
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2Guerrilla
 
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
 

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)
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 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
 

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

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

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