SlideShare une entreprise Scribd logo
1  sur  31
Practical Occlusion Culling in
          Killzone 3
           Michal Valient
      Lead Tech, Guerrilla B.V.
Talk takeaway
Occlusion culling system used in Killzone 3
The reasons why to use software rasterization
(Some) technical details
How to pick good occluders
Q&A
Talk takeaway
Occlusion culling system used in Killzone 3
You’ll love software rasterization
(Some) technical details
How to pick good occluders
Q&A
Talk takeaway
Occlusion culling system used in Killzone 3
You’ll love software rasterization
(Some) technical details
How to pick good occluders
Q&A



                             Huge environments
Talk takeaway
Occlusion culling system used in Killzone 3
You’ll love software rasterization
(Some) technical details
How to pick good occluders
Q&A



                             Armed JetPacks
Talk takeaway
Occlusion culling system used in Killzone 3
You’ll love software rasterization
(Some) technical details
How to pick good occluders
Q&A



                             Giant Spider Robots
Killzone 3 visibility solution
Software rasterization running on SPUs
Render occluders into depth buffer
 –Use simplified version of the scene geometry
Conservatively scale down
 –To make it fit into SPU memory
 –To make it faster to test against
Test all objects against small depth buffer
 –Test bounding boxes
Why software rasterization
Previous solution did not scale well
 –Manually placed portals
Why software rasterization
Previous solution did not scale well
 –Manually placed portals
Works automatically
 –Can be enabled early in production
Why software rasterization
Previous solution did not scale well
 –Manually placed portals
Works automatically
 –Can be enabled early in production
Completely dynamic solution
 –Any object can become an occluder
Why software rasterization
Previous solution did not scale well
 –Manually placed portals
Works automatically
 –Can be enabled early in production
Completely dynamic solution
 –Any object can become an occluder
Maps well to SPUs
 –No sync issues
 –No GPU costs related to visibility testing
Implementation overview
Occluder setup
First stage, not parallel
Outputs clipped + projected triangles
 –One list of triangle data
 –One “index” DMA list per rasterizer job
Caches are important at this stage
 –2KB vertex array cache (90% hit rate)
 –32-entry post-transform cache (60% hit rate)
 –Various double-buffered output caches
Rasterization
Split 640x360p depth buffer into 16 pixel-high strips
 –Rasterize in parallel, one SPU job per strip
 –Load triangles using the prepared DMA list
Traditional scanline rasterizer
 –Fill internal 640x16 floating point depth buffer
Vectorization is the key
 –Set up three or four edges at once
 –Generate 4x1 pixels at once
 –Optimize in assembly
Rasterization
Compress depth buffer
 –One output pixel is maximum depth of 16x16 block.
  –But patch single pixel holes first.
 –Encode as uint16, reserve 0xffffu for infinity
Output single scanline of 40x23 occlusion buffer
Occlusion tests
Tests happen in parallel
Each object consists of one or more parts
First test object bounding box
 –Skip for objects visible last frame
Then test individual parts
Continue with submesh culling
 –Small Spatial Kd-Tree inside most meshes
 –Allows for culling arbitrarily small mesh chunks
Occlusion tests
Accurate tests
 –Bounding box rasterization and depth test
 –Working on small depth buffer, be conservative
Fast bounding sphere tests
 –Precomputed hierarchical reject data
 –Constant time test for small spheres
 –Only used for fast reject
Generating good occluders
Where to get occluders
Aiming for automated solution
Originally wanted to use scene geometry
 –Reduced polygon count
 –Too many errors, in general does not work
 Now using physics mesh
 –Closed, low polygon meshes
 –Not always conservative in the right sense
  –Visual mesh can be inside physics mesh causing drops
Where to get occluders
How to select good occluders
Simple heuristics to identify good occluders
 –Discard anything which is small
 –Discard by meta data
  –clutter, set dressing, foliage, railings…
 –Discard if surface area is significantly smaller than
 bounding box surface area
Artists can override the process
 –Still creating the best occluders by hand
Artist generated occluders
Artist generated occluders
Conclusion
Software rasterization is great
 –Fast on SPUs
 –Easy to integrate
 –Very accurate (if occluders are accurate)
Creating occluders is hard
 –Automatic system was not enough
 –Plan for this in content creation
 –Define workflow for finding and fixing leaks
Voxelization anyone?
Conclusion
Special thanks to Will Vale (Second Intention Ltd) for
implementing this system for us.
Statistics
100 occluders, 1500 triangles
Test 1000 objects, 2700 parts
Timings
 –Setup job: 0.5ms
 –Rasterize job: 2.0ms (on 5 SPUs)
 –Query job: 4.5ms (on 5 SPUs)
 –Overall latency: ~2ms

Contenu connexe

Tendances

Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunElectronic Arts / DICE
 
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
 
More Performance! Five Rendering Ideas From Battlefield 3 and Need For Speed:...
More Performance! Five Rendering Ideas From Battlefield 3 and Need For Speed:...More Performance! Five Rendering Ideas From Battlefield 3 and Need For Speed:...
More Performance! Five Rendering Ideas From Battlefield 3 and Need For Speed:...Colin Barré-Brisebois
 
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
 
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
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect AndromedaElectronic Arts / DICE
 
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
 
Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Tiago Sousa
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingElectronic Arts / DICE
 
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
 
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...Johan Andersson
 
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
 
Star Ocean 4 - Flexible Shader Managment and Post-processing
Star Ocean 4 - Flexible Shader Managment and Post-processingStar Ocean 4 - Flexible Shader Managment and Post-processing
Star Ocean 4 - Flexible Shader Managment and Post-processingumsl snfrzb
 
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
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility bufferWolfgang Engel
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현민웅 이
 
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
 
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
 
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
 

Tendances (20)

Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
 
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
 
More Performance! Five Rendering Ideas From Battlefield 3 and Need For Speed:...
More Performance! Five Rendering Ideas From Battlefield 3 and Need For Speed:...More Performance! Five Rendering Ideas From Battlefield 3 and Need For Speed:...
More Performance! Five Rendering Ideas From Battlefield 3 and Need For Speed:...
 
Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3
 
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
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
 
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...
 
Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based Rendering
 
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
 
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
 
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
 
Star Ocean 4 - Flexible Shader Managment and Post-processing
Star Ocean 4 - Flexible Shader Managment and Post-processingStar Ocean 4 - Flexible Shader Managment and Post-processing
Star Ocean 4 - Flexible Shader Managment and Post-processing
 
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
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility buffer
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
 
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)
 
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
 
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
 

Similaire à Practical Occlusion Culling in Killzone 3

Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for GamesSampo Lappalainen
 
Software Engineering Advice from Google's Jeff Dean for Big, Distributed Systems
Software Engineering Advice from Google's Jeff Dean for Big, Distributed SystemsSoftware Engineering Advice from Google's Jeff Dean for Big, Distributed Systems
Software Engineering Advice from Google's Jeff Dean for Big, Distributed Systemsadrianionel
 
Garbage Collection in Hotspot JVM
Garbage Collection in Hotspot JVMGarbage Collection in Hotspot JVM
Garbage Collection in Hotspot JVMjaganmohanreddyk
 
The Diabolical Developers Guide to Performance Tuning
The Diabolical Developers Guide to Performance TuningThe Diabolical Developers Guide to Performance Tuning
The Diabolical Developers Guide to Performance TuningjClarity
 
SnappyData Ad Analytics Use Case -- BDAM Meetup Sept 14th
SnappyData Ad Analytics Use Case -- BDAM Meetup Sept 14thSnappyData Ad Analytics Use Case -- BDAM Meetup Sept 14th
SnappyData Ad Analytics Use Case -- BDAM Meetup Sept 14thSnappyData
 
Data Applications and Infrastructure at LinkedIn__HadoopSummit2010
Data Applications and Infrastructure at LinkedIn__HadoopSummit2010Data Applications and Infrastructure at LinkedIn__HadoopSummit2010
Data Applications and Infrastructure at LinkedIn__HadoopSummit2010Yahoo Developer Network
 
Explore big data at speed of thought with Spark 2.0 and Snappydata
Explore big data at speed of thought with Spark 2.0 and SnappydataExplore big data at speed of thought with Spark 2.0 and Snappydata
Explore big data at speed of thought with Spark 2.0 and SnappydataData Con LA
 
MRT 2018: reflecting on the past and the present with temporal graph models
MRT 2018: reflecting on the past and the present with temporal graph modelsMRT 2018: reflecting on the past and the present with temporal graph models
MRT 2018: reflecting on the past and the present with temporal graph modelsAntonio García-Domínguez
 
Deep learning to the rescue - solving long standing problems of recommender ...
Deep learning to the rescue - solving long standing problems of recommender ...Deep learning to the rescue - solving long standing problems of recommender ...
Deep learning to the rescue - solving long standing problems of recommender ...Balázs Hidasi
 
The Art Of Performance Tuning - with presenter notes!
The Art Of Performance Tuning - with presenter notes!The Art Of Performance Tuning - with presenter notes!
The Art Of Performance Tuning - with presenter notes!Jonathan Ross
 
Distributed applications using Hazelcast
Distributed applications using HazelcastDistributed applications using Hazelcast
Distributed applications using HazelcastTaras Matyashovsky
 
The Art Of Performance Tuning
The Art Of Performance TuningThe Art Of Performance Tuning
The Art Of Performance TuningJonathan Ross
 
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK toolsHaribabu Nandyal Padmanaban
 
Structured Forests for Fast Edge Detection [Paper Presentation]
Structured Forests for Fast Edge Detection [Paper Presentation]Structured Forests for Fast Edge Detection [Paper Presentation]
Structured Forests for Fast Edge Detection [Paper Presentation]Mohammad Shaker
 
Infrastructure as Code to Maintain your Sanity
Infrastructure as Code to Maintain your SanityInfrastructure as Code to Maintain your Sanity
Infrastructure as Code to Maintain your SanityDewey Sasser
 
Dock ir incident response in a containerized, immutable, continually deploy...
Dock ir   incident response in a containerized, immutable, continually deploy...Dock ir   incident response in a containerized, immutable, continually deploy...
Dock ir incident response in a containerized, immutable, continually deploy...Shakacon
 
Introduction occlusion
Introduction occlusionIntroduction occlusion
Introduction occlusionVisCircle
 
Parallel run selenium tests in a good way
Parallel run selenium tests in a good  wayParallel run selenium tests in a good  way
Parallel run selenium tests in a good wayCOMAQA.BY
 

Similaire à Practical Occlusion Culling in Killzone 3 (20)

Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for Games
 
Software Engineering Advice from Google's Jeff Dean for Big, Distributed Systems
Software Engineering Advice from Google's Jeff Dean for Big, Distributed SystemsSoftware Engineering Advice from Google's Jeff Dean for Big, Distributed Systems
Software Engineering Advice from Google's Jeff Dean for Big, Distributed Systems
 
Garbage Collection in Hotspot JVM
Garbage Collection in Hotspot JVMGarbage Collection in Hotspot JVM
Garbage Collection in Hotspot JVM
 
The Diabolical Developers Guide to Performance Tuning
The Diabolical Developers Guide to Performance TuningThe Diabolical Developers Guide to Performance Tuning
The Diabolical Developers Guide to Performance Tuning
 
SnappyData Ad Analytics Use Case -- BDAM Meetup Sept 14th
SnappyData Ad Analytics Use Case -- BDAM Meetup Sept 14thSnappyData Ad Analytics Use Case -- BDAM Meetup Sept 14th
SnappyData Ad Analytics Use Case -- BDAM Meetup Sept 14th
 
Data Applications and Infrastructure at LinkedIn__HadoopSummit2010
Data Applications and Infrastructure at LinkedIn__HadoopSummit2010Data Applications and Infrastructure at LinkedIn__HadoopSummit2010
Data Applications and Infrastructure at LinkedIn__HadoopSummit2010
 
Explore big data at speed of thought with Spark 2.0 and Snappydata
Explore big data at speed of thought with Spark 2.0 and SnappydataExplore big data at speed of thought with Spark 2.0 and Snappydata
Explore big data at speed of thought with Spark 2.0 and Snappydata
 
MRT 2018: reflecting on the past and the present with temporal graph models
MRT 2018: reflecting on the past and the present with temporal graph modelsMRT 2018: reflecting on the past and the present with temporal graph models
MRT 2018: reflecting on the past and the present with temporal graph models
 
Deep learning to the rescue - solving long standing problems of recommender ...
Deep learning to the rescue - solving long standing problems of recommender ...Deep learning to the rescue - solving long standing problems of recommender ...
Deep learning to the rescue - solving long standing problems of recommender ...
 
The Art Of Performance Tuning - with presenter notes!
The Art Of Performance Tuning - with presenter notes!The Art Of Performance Tuning - with presenter notes!
The Art Of Performance Tuning - with presenter notes!
 
Distributed applications using Hazelcast
Distributed applications using HazelcastDistributed applications using Hazelcast
Distributed applications using Hazelcast
 
The Art Of Performance Tuning
The Art Of Performance TuningThe Art Of Performance Tuning
The Art Of Performance Tuning
 
IMAGE PROCESSING
IMAGE PROCESSINGIMAGE PROCESSING
IMAGE PROCESSING
 
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
 
10 Ways To Improve Your Code
10 Ways To Improve Your Code10 Ways To Improve Your Code
10 Ways To Improve Your Code
 
Structured Forests for Fast Edge Detection [Paper Presentation]
Structured Forests for Fast Edge Detection [Paper Presentation]Structured Forests for Fast Edge Detection [Paper Presentation]
Structured Forests for Fast Edge Detection [Paper Presentation]
 
Infrastructure as Code to Maintain your Sanity
Infrastructure as Code to Maintain your SanityInfrastructure as Code to Maintain your Sanity
Infrastructure as Code to Maintain your Sanity
 
Dock ir incident response in a containerized, immutable, continually deploy...
Dock ir   incident response in a containerized, immutable, continually deploy...Dock ir   incident response in a containerized, immutable, continually deploy...
Dock ir incident response in a containerized, immutable, continually deploy...
 
Introduction occlusion
Introduction occlusionIntroduction occlusion
Introduction occlusion
 
Parallel run selenium tests in a good way
Parallel run selenium tests in a good  wayParallel run selenium tests in a good  way
Parallel run selenium tests in a good way
 

Plus de Guerrilla

Horizon Zero Dawn: An Open World QA Case Study
Horizon Zero Dawn: An Open World QA Case StudyHorizon Zero Dawn: An Open World QA Case Study
Horizon Zero Dawn: An Open World QA Case StudyGuerrilla
 
Horizon Zero Dawn: A Game Design Post-Mortem
Horizon Zero Dawn: A Game Design Post-MortemHorizon Zero Dawn: A Game Design Post-Mortem
Horizon Zero Dawn: A Game Design Post-MortemGuerrilla
 
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero DawnPutting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero DawnGuerrilla
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnGuerrilla
 
Building Non-Linear Narratives in Horizon Zero Dawn
Building Non-Linear Narratives in Horizon Zero DawnBuilding Non-Linear Narratives in Horizon Zero Dawn
Building Non-Linear Narratives in Horizon Zero DawnGuerrilla
 
Player Traversal Mechanics in the Vast World of Horizon Zero Dawn
Player Traversal Mechanics in the Vast World of Horizon Zero DawnPlayer Traversal Mechanics in the Vast World of Horizon Zero Dawn
Player Traversal Mechanics in the Vast World of Horizon Zero DawnGuerrilla
 
The Real-time Volumetric Cloudscapes of Horizon Zero Dawn
The Real-time Volumetric Cloudscapes of Horizon Zero DawnThe Real-time Volumetric Cloudscapes of Horizon Zero Dawn
The Real-time Volumetric Cloudscapes of Horizon Zero DawnGuerrilla
 
The Production and Visual FX of Killzone Shadow Fall
The Production and Visual FX of Killzone Shadow FallThe Production and Visual FX of Killzone Shadow Fall
The Production and Visual FX of Killzone Shadow FallGuerrilla
 
Out of Sight, Out of Mind: Improving Visualization of AI Info
Out of Sight, Out of Mind: Improving Visualization of AI InfoOut of Sight, Out of Mind: Improving Visualization of AI Info
Out of Sight, Out of Mind: Improving Visualization of AI InfoGuerrilla
 
The Next-Gen Dynamic Sound System of Killzone Shadow Fall
The Next-Gen Dynamic Sound System of Killzone Shadow FallThe Next-Gen Dynamic Sound System of Killzone Shadow Fall
The Next-Gen Dynamic Sound System of Killzone Shadow FallGuerrilla
 
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
Killzone Shadow Fall: Creating Art Tools For A New Generation Of GamesKillzone Shadow Fall: Creating Art Tools For A New Generation Of Games
Killzone Shadow Fall: Creating Art Tools For A New Generation Of GamesGuerrilla
 
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
 
Killzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemKillzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemGuerrilla
 
Lighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow FallLighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow FallGuerrilla
 
A Hierarchically-Layered Multiplayer Bot System for a First-Person Shooter
A Hierarchically-Layered Multiplayer Bot System for a First-Person ShooterA Hierarchically-Layered Multiplayer Bot System for a First-Person Shooter
A Hierarchically-Layered Multiplayer Bot System for a First-Person ShooterGuerrilla
 
Practical Occlusion Culling on PS3
Practical Occlusion Culling on PS3Practical Occlusion Culling on PS3
Practical Occlusion Culling on PS3Guerrilla
 
Release This! Tools for a Smooth Release Cycle
Release This! Tools for a Smooth Release CycleRelease This! Tools for a Smooth Release Cycle
Release This! Tools for a Smooth Release CycleGuerrilla
 
Killzone 2 Multiplayer Bots
Killzone 2 Multiplayer BotsKillzone 2 Multiplayer Bots
Killzone 2 Multiplayer BotsGuerrilla
 
Automatic Annotations in Killzone 3 and Beyond
Automatic Annotations in Killzone 3 and BeyondAutomatic Annotations in Killzone 3 and Beyond
Automatic Annotations in Killzone 3 and BeyondGuerrilla
 
The Creation of Killzone 3
The Creation of Killzone 3The Creation of Killzone 3
The Creation of Killzone 3Guerrilla
 

Plus de Guerrilla (20)

Horizon Zero Dawn: An Open World QA Case Study
Horizon Zero Dawn: An Open World QA Case StudyHorizon Zero Dawn: An Open World QA Case Study
Horizon Zero Dawn: An Open World QA Case Study
 
Horizon Zero Dawn: A Game Design Post-Mortem
Horizon Zero Dawn: A Game Design Post-MortemHorizon Zero Dawn: A Game Design Post-Mortem
Horizon Zero Dawn: A Game Design Post-Mortem
 
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero DawnPutting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero Dawn
 
Building Non-Linear Narratives in Horizon Zero Dawn
Building Non-Linear Narratives in Horizon Zero DawnBuilding Non-Linear Narratives in Horizon Zero Dawn
Building Non-Linear Narratives in Horizon Zero Dawn
 
Player Traversal Mechanics in the Vast World of Horizon Zero Dawn
Player Traversal Mechanics in the Vast World of Horizon Zero DawnPlayer Traversal Mechanics in the Vast World of Horizon Zero Dawn
Player Traversal Mechanics in the Vast World of Horizon Zero Dawn
 
The Real-time Volumetric Cloudscapes of Horizon Zero Dawn
The Real-time Volumetric Cloudscapes of Horizon Zero DawnThe Real-time Volumetric Cloudscapes of Horizon Zero Dawn
The Real-time Volumetric Cloudscapes of Horizon Zero Dawn
 
The Production and Visual FX of Killzone Shadow Fall
The Production and Visual FX of Killzone Shadow FallThe Production and Visual FX of Killzone Shadow Fall
The Production and Visual FX of Killzone Shadow Fall
 
Out of Sight, Out of Mind: Improving Visualization of AI Info
Out of Sight, Out of Mind: Improving Visualization of AI InfoOut of Sight, Out of Mind: Improving Visualization of AI Info
Out of Sight, Out of Mind: Improving Visualization of AI Info
 
The Next-Gen Dynamic Sound System of Killzone Shadow Fall
The Next-Gen Dynamic Sound System of Killzone Shadow FallThe Next-Gen Dynamic Sound System of Killzone Shadow Fall
The Next-Gen Dynamic Sound System of Killzone Shadow Fall
 
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
Killzone Shadow Fall: Creating Art Tools For A New Generation Of GamesKillzone Shadow Fall: Creating Art Tools For A New Generation Of Games
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
 
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
 
Killzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo PostmortemKillzone Shadow Fall Demo Postmortem
Killzone Shadow Fall Demo Postmortem
 
Lighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow FallLighting of Killzone: Shadow Fall
Lighting of Killzone: Shadow Fall
 
A Hierarchically-Layered Multiplayer Bot System for a First-Person Shooter
A Hierarchically-Layered Multiplayer Bot System for a First-Person ShooterA Hierarchically-Layered Multiplayer Bot System for a First-Person Shooter
A Hierarchically-Layered Multiplayer Bot System for a First-Person Shooter
 
Practical Occlusion Culling on PS3
Practical Occlusion Culling on PS3Practical Occlusion Culling on PS3
Practical Occlusion Culling on PS3
 
Release This! Tools for a Smooth Release Cycle
Release This! Tools for a Smooth Release CycleRelease This! Tools for a Smooth Release Cycle
Release This! Tools for a Smooth Release Cycle
 
Killzone 2 Multiplayer Bots
Killzone 2 Multiplayer BotsKillzone 2 Multiplayer Bots
Killzone 2 Multiplayer Bots
 
Automatic Annotations in Killzone 3 and Beyond
Automatic Annotations in Killzone 3 and BeyondAutomatic Annotations in Killzone 3 and Beyond
Automatic Annotations in Killzone 3 and Beyond
 
The Creation of Killzone 3
The Creation of Killzone 3The Creation of Killzone 3
The Creation of Killzone 3
 

Dernier

Gripping Adult Web Series You Can't Afford to Miss
Gripping Adult Web Series You Can't Afford to MissGripping Adult Web Series You Can't Afford to Miss
Gripping Adult Web Series You Can't Afford to Missget joys
 
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCRdollysharma2066
 
Amil Baba in Pakistan Kala jadu Expert Amil baba Black magic Specialist in Is...
Amil Baba in Pakistan Kala jadu Expert Amil baba Black magic Specialist in Is...Amil Baba in Pakistan Kala jadu Expert Amil baba Black magic Specialist in Is...
Amil Baba in Pakistan Kala jadu Expert Amil baba Black magic Specialist in Is...Amil Baba Company
 
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa Escorts
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa EscortsCash Payment Contact:- 7028418221 Goa Call Girls Service North Goa Escorts
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa EscortsApsara Of India
 
The Fine Line Between Honest and Evil Comics by Salty Vixen
The Fine Line Between Honest and Evil Comics by Salty VixenThe Fine Line Between Honest and Evil Comics by Salty Vixen
The Fine Line Between Honest and Evil Comics by Salty VixenSalty Vixen Stories & More
 
Low Rate Call Girls In Budh Vihar, Call Us :-9711106444
Low Rate Call Girls In Budh Vihar, Call Us :-9711106444Low Rate Call Girls In Budh Vihar, Call Us :-9711106444
Low Rate Call Girls In Budh Vihar, Call Us :-9711106444CallGirlsInSouthDelh1
 
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...Amil Baba Dawood bangali
 
Aesthetic Design Inspiration by Slidesgo.pptx
Aesthetic Design Inspiration by Slidesgo.pptxAesthetic Design Inspiration by Slidesgo.pptx
Aesthetic Design Inspiration by Slidesgo.pptxsayemalkadripial4
 
GRADE 7 NEW PPT ENGLISH 1 [Autosaved].pp
GRADE 7 NEW PPT ENGLISH 1 [Autosaved].ppGRADE 7 NEW PPT ENGLISH 1 [Autosaved].pp
GRADE 7 NEW PPT ENGLISH 1 [Autosaved].ppJasmineLinogon
 
原版1:1复刻卡尔加里大学毕业证UC毕业证留信学历认证
原版1:1复刻卡尔加里大学毕业证UC毕业证留信学历认证原版1:1复刻卡尔加里大学毕业证UC毕业证留信学历认证
原版1:1复刻卡尔加里大学毕业证UC毕业证留信学历认证gwhohjj
 
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Service
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls ServiceCall Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Service
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Servicedollysharma2066
 
NO1 WorldWide Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi ...
NO1 WorldWide Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi ...NO1 WorldWide Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi ...
NO1 WorldWide Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi ...Amil Baba Dawood bangali
 
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...Amil Baba Company
 
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort Services
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort ServicesHi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort Services
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort ServicesApsara Of India
 
NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...
NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...
NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...Amil baba
 
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...Amil baba
 
Zoom In Game for ice breaking in a training
Zoom In Game for ice breaking in a trainingZoom In Game for ice breaking in a training
Zoom In Game for ice breaking in a trainingRafik ABDI
 
Udaipur Call Girls 9602870969 Call Girl in Udaipur Rajasthan
Udaipur Call Girls 9602870969 Call Girl in Udaipur RajasthanUdaipur Call Girls 9602870969 Call Girl in Udaipur Rajasthan
Udaipur Call Girls 9602870969 Call Girl in Udaipur RajasthanApsara Of India
 

Dernier (20)

Gripping Adult Web Series You Can't Afford to Miss
Gripping Adult Web Series You Can't Afford to MissGripping Adult Web Series You Can't Afford to Miss
Gripping Adult Web Series You Can't Afford to Miss
 
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR
 
Amil Baba in Pakistan Kala jadu Expert Amil baba Black magic Specialist in Is...
Amil Baba in Pakistan Kala jadu Expert Amil baba Black magic Specialist in Is...Amil Baba in Pakistan Kala jadu Expert Amil baba Black magic Specialist in Is...
Amil Baba in Pakistan Kala jadu Expert Amil baba Black magic Specialist in Is...
 
Environment Handling Presentation by Likhon Ahmed.pptx
Environment Handling Presentation by Likhon Ahmed.pptxEnvironment Handling Presentation by Likhon Ahmed.pptx
Environment Handling Presentation by Likhon Ahmed.pptx
 
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa Escorts
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa EscortsCash Payment Contact:- 7028418221 Goa Call Girls Service North Goa Escorts
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa Escorts
 
The Fine Line Between Honest and Evil Comics by Salty Vixen
The Fine Line Between Honest and Evil Comics by Salty VixenThe Fine Line Between Honest and Evil Comics by Salty Vixen
The Fine Line Between Honest and Evil Comics by Salty Vixen
 
Low Rate Call Girls In Budh Vihar, Call Us :-9711106444
Low Rate Call Girls In Budh Vihar, Call Us :-9711106444Low Rate Call Girls In Budh Vihar, Call Us :-9711106444
Low Rate Call Girls In Budh Vihar, Call Us :-9711106444
 
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...
 
Aesthetic Design Inspiration by Slidesgo.pptx
Aesthetic Design Inspiration by Slidesgo.pptxAesthetic Design Inspiration by Slidesgo.pptx
Aesthetic Design Inspiration by Slidesgo.pptx
 
GRADE 7 NEW PPT ENGLISH 1 [Autosaved].pp
GRADE 7 NEW PPT ENGLISH 1 [Autosaved].ppGRADE 7 NEW PPT ENGLISH 1 [Autosaved].pp
GRADE 7 NEW PPT ENGLISH 1 [Autosaved].pp
 
原版1:1复刻卡尔加里大学毕业证UC毕业证留信学历认证
原版1:1复刻卡尔加里大学毕业证UC毕业证留信学历认证原版1:1复刻卡尔加里大学毕业证UC毕业证留信学历认证
原版1:1复刻卡尔加里大学毕业证UC毕业证留信学历认证
 
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Service
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls ServiceCall Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Service
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Service
 
NO1 WorldWide Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi ...
NO1 WorldWide Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi ...NO1 WorldWide Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi ...
NO1 WorldWide Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi ...
 
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...
 
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort Services
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort ServicesHi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort Services
Hi Class Call Girls In Goa 7028418221 Call Girls In Anjuna Beach Escort Services
 
NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...
NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...
NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...
 
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...
 
young call girls in Hari Nagar,🔝 9953056974 🔝 escort Service
young call girls in Hari Nagar,🔝 9953056974 🔝 escort Serviceyoung call girls in Hari Nagar,🔝 9953056974 🔝 escort Service
young call girls in Hari Nagar,🔝 9953056974 🔝 escort Service
 
Zoom In Game for ice breaking in a training
Zoom In Game for ice breaking in a trainingZoom In Game for ice breaking in a training
Zoom In Game for ice breaking in a training
 
Udaipur Call Girls 9602870969 Call Girl in Udaipur Rajasthan
Udaipur Call Girls 9602870969 Call Girl in Udaipur RajasthanUdaipur Call Girls 9602870969 Call Girl in Udaipur Rajasthan
Udaipur Call Girls 9602870969 Call Girl in Udaipur Rajasthan
 

Practical Occlusion Culling in Killzone 3

  • 1.
  • 2. Practical Occlusion Culling in Killzone 3 Michal Valient Lead Tech, Guerrilla B.V.
  • 3. Talk takeaway Occlusion culling system used in Killzone 3 The reasons why to use software rasterization (Some) technical details How to pick good occluders Q&A
  • 4. Talk takeaway Occlusion culling system used in Killzone 3 You’ll love software rasterization (Some) technical details How to pick good occluders Q&A
  • 5. Talk takeaway Occlusion culling system used in Killzone 3 You’ll love software rasterization (Some) technical details How to pick good occluders Q&A Huge environments
  • 6. Talk takeaway Occlusion culling system used in Killzone 3 You’ll love software rasterization (Some) technical details How to pick good occluders Q&A Armed JetPacks
  • 7. Talk takeaway Occlusion culling system used in Killzone 3 You’ll love software rasterization (Some) technical details How to pick good occluders Q&A Giant Spider Robots
  • 8. Killzone 3 visibility solution Software rasterization running on SPUs Render occluders into depth buffer –Use simplified version of the scene geometry Conservatively scale down –To make it fit into SPU memory –To make it faster to test against Test all objects against small depth buffer –Test bounding boxes
  • 9. Why software rasterization Previous solution did not scale well –Manually placed portals
  • 10. Why software rasterization Previous solution did not scale well –Manually placed portals Works automatically –Can be enabled early in production
  • 11. Why software rasterization Previous solution did not scale well –Manually placed portals Works automatically –Can be enabled early in production Completely dynamic solution –Any object can become an occluder
  • 12. Why software rasterization Previous solution did not scale well –Manually placed portals Works automatically –Can be enabled early in production Completely dynamic solution –Any object can become an occluder Maps well to SPUs –No sync issues –No GPU costs related to visibility testing
  • 13.
  • 14.
  • 15.
  • 16.
  • 18. Occluder setup First stage, not parallel Outputs clipped + projected triangles –One list of triangle data –One “index” DMA list per rasterizer job Caches are important at this stage –2KB vertex array cache (90% hit rate) –32-entry post-transform cache (60% hit rate) –Various double-buffered output caches
  • 19. Rasterization Split 640x360p depth buffer into 16 pixel-high strips –Rasterize in parallel, one SPU job per strip –Load triangles using the prepared DMA list Traditional scanline rasterizer –Fill internal 640x16 floating point depth buffer Vectorization is the key –Set up three or four edges at once –Generate 4x1 pixels at once –Optimize in assembly
  • 20. Rasterization Compress depth buffer –One output pixel is maximum depth of 16x16 block. –But patch single pixel holes first. –Encode as uint16, reserve 0xffffu for infinity Output single scanline of 40x23 occlusion buffer
  • 21. Occlusion tests Tests happen in parallel Each object consists of one or more parts First test object bounding box –Skip for objects visible last frame Then test individual parts Continue with submesh culling –Small Spatial Kd-Tree inside most meshes –Allows for culling arbitrarily small mesh chunks
  • 22. Occlusion tests Accurate tests –Bounding box rasterization and depth test –Working on small depth buffer, be conservative Fast bounding sphere tests –Precomputed hierarchical reject data –Constant time test for small spheres –Only used for fast reject
  • 24. Where to get occluders Aiming for automated solution Originally wanted to use scene geometry –Reduced polygon count –Too many errors, in general does not work  Now using physics mesh –Closed, low polygon meshes –Not always conservative in the right sense –Visual mesh can be inside physics mesh causing drops
  • 25. Where to get occluders
  • 26. How to select good occluders Simple heuristics to identify good occluders –Discard anything which is small –Discard by meta data –clutter, set dressing, foliage, railings… –Discard if surface area is significantly smaller than bounding box surface area Artists can override the process –Still creating the best occluders by hand
  • 29. Conclusion Software rasterization is great –Fast on SPUs –Easy to integrate –Very accurate (if occluders are accurate) Creating occluders is hard –Automatic system was not enough –Plan for this in content creation –Define workflow for finding and fixing leaks Voxelization anyone?
  • 30. Conclusion Special thanks to Will Vale (Second Intention Ltd) for implementing this system for us.
  • 31. Statistics 100 occluders, 1500 triangles Test 1000 objects, 2700 parts Timings –Setup job: 0.5ms –Rasterize job: 2.0ms (on 5 SPUs) –Query job: 4.5ms (on 5 SPUs) –Overall latency: ~2ms

Notes de l'éditeur

  1. \n
  2. \n
  3. I’ll first describe the occlusion system in Killzone 3\n and the reasons why we chose it and why should you\n\nThen I’ll talk about some technical details\n and heuristics for picking good occluders.\n\nAnd I hope we’ll have some time for questions.\n\n... but let’s first take look at what Killzone 3 actually is.\n
  4. Killzone 3 is a first person shooter released \n earlier this year exclusively for Playstation 3.\n\nAnd it's essentially about space marines trying to escape \n from the planet full of space Nazis.\n
  5. The game is set in huge detailed outdoor environments…\n Where you can fly around with an armed jetpack...\n And you get to fight giant spider robot.\n Twice.\n\nKillzone 3 is a big game\n and we needed good object visibility solution \n that works well with these diverse settings.\n\n
  6. The game is set in huge detailed outdoor environments…\n Where you can fly around with an armed jetpack...\n And you get to fight giant spider robot.\n Twice.\n\nKillzone 3 is a big game\n and we needed good object visibility solution \n that works well with these diverse settings.\n\n
  7. The game is set in huge detailed outdoor environments…\n Where you can fly around with an armed jetpack...\n And you get to fight giant spider robot.\n Twice.\n\nKillzone 3 is a big game\n and we needed good object visibility solution \n that works well with these diverse settings.\n\n
  8. \n
  9. We chose to try software rasterization running completely on SPUs. \n \nWe render the simplified version of the level geometry \n into a depth buffer (these are the occluders)\n\nAnd we then use scaled down version of this depth buffer \n to test visibility of all objects or lights in the current view frustum.\n The test itself uses bounding box of the objects.\n
  10. I'll try to summarize the reasons why we chose this solution \n and I'm sure you recognize some of your own experiences here.\n\nFirst and foremost we saw that our solution based on portals \n does not scale well with the big outdoor levels.\n\nEspecially since our portals were hand placed by artists and we were \n running into production stalls.\n\n Very important issue if you try to create the game in two years.\n
  11. The process of occluder creation can be made largely \n automatic and can be enabled from the early days of production.\n\nThe whole concept of occluders is very similar to building \n of regular geometry and it's easy to understand by artists. \n\nThis makes it very easy to step in and manually create occluders where needed.\n\n
  12. Unlike most other approaches, this one is completely dynamic.\n\nAny sufficiently large object on screen can serve as a good occluder. \n If you're hiding behind a destructible barrel or a metal plate in our \n game, it is an occluder.\n\nDoors can open and close and they perfectly block the visibility \n without you having to write special code for such case.\n\n
  13. Software rasterization maps well onto SPUs - it's easy to distribute \n and SPUs are generic enough to allow us to run complicated object culling logic.\n\nAnd unlike GPU based solutions, you get exact results \n within the same frame without complicated synchronization logic.\n
  14. Let’s look at the example of how the occlusion system works.\n\n
  15. If we look from the side, you see we don’t \n render anything behind the closed door.\n\nBut as soon as the door open...\n
  16. ...we start to render the rest of the visible scene. \n As I mentioned earlier, this \n happens entirely automatically.\n\nAnd since I forgot to record the occlusion \n depth buffer, you’ll have to trust on this one.\n
  17. We implemented the system as series of SPU jobs.\n Most run in parallel to do the heavy lifting.\n\n
  18. The first SPU job loads visible occluder primitives and \n outputs clipped and projected triangles for rasterization. \n\nA single list of triangles is shared between the rasterizer jobs, and each job\n has its own DMA list pointing to the subset of triangles it needs to draw.\n\nThe occluder primitives are identical to visual meshes, with vertex and index arrays.\n Therefore we introduced several caches to \n reduce bandwidth and vertex transformation costs. \n This setup is very similar to what you find in a GPU.\n
  19. We split our depth buffer into 16-pixel-high strips and\n run one rasterize job per strip in parallel.\n\nEach rasterize job loads the list of triangles that intersect with its\n strip using the DMA list prepared by the setup job.\n\nWe perform standard scanline rasterization \n into an internal floating point buffer.\n \nThe rasterize jobs are compute-bound, and the code is \n extensively vectorized to improve throughput.\n Inner loops are written in SPA assembler.\n\n
  20. For output, we conservatively compress the depth buffer.\n Each output pixel is the maximum depth value of a 16x16 pixel tile in the depth buffer.\n\nBefore compression, we patch single pixel holes to avoid leaks \n when the occluders are not water-tight.\n This is a bit of a cheat, but it’s necessary otherwise\n such hole pushes the tile way into the background.\n\nThe last step encodes depth into 16 bits, \n Occluder frustum is shorter than visual frustum so we \n reserve one bit for points behind occluder far plane.\n\n
  21. The last step is the actual visibility testing.\n We have one job that gathers all objects in the camera frustum\n and then spawns an occlusion test job for each batch of objects.\n\nWe have a two level hierarchy of objects and meshes\n objects live in the scene, and meshes are what we send to the GPU.\n We test objects first to avoid testing meshes.\n\nIf a mesh has many triangles, we can continue with submesh culling.\n This uses the mesh’s Kd-tree to cull away whole ranges of mesh triangles.\n Visible meshes form new primitive sent to GPU.\n\nThe output of these jobs is the final result of the occlusion query, and is sent for rendering.\n\n
  22. We have two kinds of visibility test we can use to cull objects and parts.\n\nThe basic test is the most accurate, but also the most expensive.\n It rasterizes a bounding box with depth testing against the small occlusion buffer.\n\nWe also have constant-time tests for small objects.\n We precompute several versions of the occlusion buffer by \n conservatively dilating the depth values.\n This allows us to perform very quick bounding sphere tests.\n\nIf an object passes the fast test, or if it is too large, we do the accurate test.\n\n
  23. In the final part of the presentation I’d like \n to explain how we create occluders.\n\n
  24. We didn’t want artists to hand-make occluders \n for the entire level, so we looked for an automatic solution.\n\nWe experimented with using visual meshes,\n but the good polygon reduction proved \n to be difficult to get right.\n\nPhysics mesh is much better choice.\n It’s available for each mesh in the game\n and it’s cleaned and sufficiently low polygon count.\n\nUnfortunately the physics meshes can be slightly larger \n than visual meshes causing objects to disappear.\n Worst offenders have to be fixed manually.\n
  25. Here’s an example of occluders \n generated automatically from physics mesh.\n You can notice there’s some unnecessary detail, \n but in general the quality is pretty good.\n
  26. Even using physics mesh there was too much occluder geometry.\n\nWe needed to reject occluders that were unlikely to \n contribute much to the occlusion buffer.\n Our simple heuristics rejects all small objects or \n objects where the name suggests that they are not good occluders.\n\nWe also reject meshes whose surface area suggests\n that they are thin or with too many holes.\n\nArtists can of course step in and override the heuristics\n or provide their custom occluders for difficult cases and optimization.\n
  27. Here’s an example of KZ3 multiplayer level where the \n automatic heuristics did not work well.\n
  28. And here’s the highly optimized occluder mesh created by artist.\n
  29. We like this system, it’s simple, efficient and fits well with our pipeline.\n\nUnfortunately the content creation proved to be a problem.\n The automated solution did not work well enough in some cases\n and artists had to create custom occluders for entire levels.\n Luckily the geometry is easy to create.\n\nUsing scene voxelization might be a good way \n to generate simple, robust occluders automatically.\n
  30. I’d like to thank Will Vale for implementing the \n system for us and help with this presentation.\n
  31. Questions?\n