SlideShare a Scribd company logo
1 of 69
Terrain in Battlefield 3:
A modern, complete and scalable system

Mattias Widmark
Software Engineer, EA Digital Illusions (DICE), Stockholm
Overview
•   Scalability – hierarchies, payloads and limitations
•   Workflows – realtime in-game editing
•   CPU and GPU performance
•   Procedural virtual texturing – powerful GPU optimization
•   Data streaming – minimizing memory footprint
•   Robustness – global prioritization
•   Procedural mesh generation
•   Conclusions
But first...
• ... what are we talking about?


• Frostbite terrain has many aspects other than the terrain mesh itself
    – Let’s look at them!
• Heightfield-based
• Mesh procedurally generated at runtime
•   Surface rendering with
    procedual shader splatting
     – Arbitrary shaders splatted
       according to painted masks
• Spline and quad decals
•   Terrain decoration
     –   Automatic distribution of meshes
         (trees, rocks, grass) according to
         mask
     –   Billboards supported
§




• Terrain decoration
    – Important as the terrain
      surface itself
•   Destruction/dynamic terrain
     –   Destruction depth map
           •   Controls crater depth around ie static models
     –   Physics material map
           •   Controls surface effects, audio, crater depth and width
• Rivers/lakes
   – Implemented as free-floating decals
   – Water depth in pixel shader
Terrain raster resources
• Multiple raster resources used
   –   Heightfield
   –   Shader splatting masks
   –   Colormap, used as an overlay on top of shader splatting
   –   Physics materials
   –   Destruction depth mask
   –   Albedo map for bounce light
   –   Additional mask channels
Overview
•   Scalability – hierarchies, payloads and limitations
•   Workflows – realtime in-game editing
•   CPU and GPU performance
•   Procedural virtual texturing – powerful GPU optimization
•   Data streaming – minimizing memory footprint
•   Robustness – global prioritization
•   Procedural mesh generation
•   Conclusions
Scalability
•   Our definition of scalability
     –   Arbitrary view distance (0.06m to 30 000m)
     –   Arbitrary level of detail (0.0001m and lower)
     –   Arbitrary velocity (supercars and jets)
•   Main observation
     –   It is all about hierarchies!
     –   Consistent use of hierarchies gives scalability ”for free”
•   Hierarchies not new to terrain rendering
     –   Frostbite approach similar to flight simulators
•   Quadtree hierarchies used for all spatial
    representations

•   Assuming knowledge of quadtrees, we jump right into
    Frostbite specifics!
Quadtree node payload
• The node payload is a central concept
• A quadtree node can be attributed with a ”data blob”; the payload
• Payload is                             Nodes (white circle)
   – a tile of raster data                          Payload (red dot)
   – a cell of terrain decoration
       • A list of instances (rock, grass, trees)
   – a piece of decal mesh
• All nodes have payload...
   – ... but only a few have it loaded
Nodes with and without payload
• Payloads are constantly in motion
   – They are loaded (streamed), generated or freed evey frame
   – Only a fraction of the nodes have payload resident
• Payload movement is governed by prioritization mechanisms...
   – ... but more of that later
LOD payload
• Non-leaf nodes have payload too
• These payloads are used as LODs
• Detail level depends on payload depth
    – Nodes closer to root represent lower detail

Payload (red dot)
LOD payload (orange dot)


                                                    Increasing LOD
View-dependent payload usage
Set of payloads (green dots) used       Observer moves and another set is
for a certain observer position         used
   – Note area to the left is distant      – Area to the left now use higher
     and use lower LOD                       LOD




                                        Observer
                  Observer
Motivation for LOD payloads
• With LOD                            • Without LOD
   – cost (payload count) is mostly      – cost depend on terrain size
     independent of terrain size         – Not scalable!
   – Scalable!
Generation of raster LOD payload
• Source data and workflows on leaf level
• LODs generated automatically by pipeline
• Requirements
    – Tile overlap (borders) for rendering algorithms
    – Continuity
• Recursive (reverse) depth first algorithm
    – Green LOD tile is generated
    – Four children (red) and up to 12 neighbor tiles
      (blue) are used
Terrain decoration payloads
• Terrain decoration payload
   – Is a list of instance transforms (for grass, trees, rocks)
   – Is generated at runtime according to
       • scattering rules
       • shader splatted masks (position/density)
            – Note that we allow shaders to modify masks!
       • heightfield (ground-clamping and orientation)
Terrain decoration LOD payloads
• Quite unique (and slightly confusing) concept
• LOD payloads used for scalability
   – Near-root payloads provide high view distance
   – Near-leaf payloads provide high density
• Payloads can overlap
   – Providing high view distance and density
• <screenshot from Frosted w/ game view>

                                                        High distance low density trees
                                                        Payload at level N

  Medium distance medium density trees
  Payload at level N+1
  Adds to payload at level N for increased density

                                                     Lower distance bushes
                                                     Payload at level N+2


                                              More leaves added (level N+4)
Trees Bushes Leaves                           and branches
             Level N+3
Overview
•   Scalability – hierarchies, payloads and limitations
•   Workflows – realtime in-game editing
•   CPU and GPU performance
•   Procedural virtual texturing – powerful GPU optimization
•   Data streaming – minimizing memory footprint
•   Robustness – global prioritization
•   Procedural mesh generation
•   Conclusions
Real time editing in FrostEd
• FrostEd is Frostbite editor
• Game View is game rendering inside editor
• Terrain editing with realtime feedback in game view
   –   Heightfield sculpting
   –   Mask and color painting
   –   Decal editing
   –   Terrain decoration
External tools
• When tools are not enough terrain can be exported and imported
   – Select all or part of terrain
   – Metadata + raw file
   – Edit raw file and reimport
       • Metadata will import to right area
   – Puts WorldMachine, GeoControl in the loop
       • A common workflow
Workflow issues
• Conflict between data compression and realtime editing
• Realtime editing bypass pipeline
• Clever update scheme for procedural content needed
    – We already had one (destruction)
• Frostbite terrains too large for some popular tools
    – GeoControl and WorldMachine do not like 8k+ rasters
Overview
•   Scalability – hierarchies, payloads and limitations
•   Workflows – realtime in-game editing
•   CPU and GPU performance
•   Procedural virtual texturing – powerful GPU optimization
•   Data streaming – minimizing memory footprint
•   Robustness – global prioritization
•   Procedural mesh generation
•   Conclusions
Efficient on CPU




•   All work done in jobs, most on SPU and many wide
     – Early unoptimized versions consumed 10ms+ PPU time
    •   BF3 final measurements (PS3)
         –   1-2ms SPU (peaks at ~8ms when lots of terrain decoration is
             happening)
         –   <1ms PPU
Efficient on GPU
• Pre-baked shader permutations to avoid multi-pass
• Procedual virtual texturing exploit frame-to-frame coherency
• Typical figures (PS3):
   – Full screen GBuffer laydown (w/o detail overlay and terrain decoration):
     2.5-3ms
   – Full screen GBuffer laydown (w/ detail overlay): 2.5-7ms
   – Terrain decoration: 1-4ms
   – Virtual texture tile compositing: 0.2-0.5ms
Overview
•   Scalability – hierarchies, payloads and limitations
•   Workflows – realtime in-game editing
•   CPU and GPU performance
•   Procedural virtual texturing – powerful GPU optimization
•   Data streaming – minimizing memory footprint
•   Robustness – global prioritization
•   Procedural mesh generation
•   Conclusions
GPU optimization: Procedural virtual texturing

• Motivations
    – With shader splatting, artists can create beautiful terrains…
        • … rendering very slowly (10-20ms)
    – Shader splatting not scalable in view distance
        • Cannot afford multi-pass
• By splatting into a texture
    – we leverage frame-to-frame coherency (performance)
    – can render in multiple passes (scalability)
• Rendering full screen using the texture cost 2.5-3ms (PS3)
Virtual texture key values
•   32 samples per meter
•   256x256 tiles with integrated two pixel border
•   Atlas storage with default size 4k x 2k
•   Two DXT5 textures
    R           G           B           A          R             G          B          A
    Diffuse R   Diffuse G   Diffuse B   Normal X   Smoothness/   Normal Y   Specular   Normal Z
                                                   Destruction




• Very large, can easily reach 1M x 1M (= 1Tpixel)!
     – Typical virtual textures are 64k x 64k
Indirection texture format
• RGBA8                                   R         G         B        A
                                          Index X   Index Y   Scale    CLOD fade
• Indices into virtual texture
  tile atlas
• Scale factor for low-res areas...
    – ... where a tile covers more than one indirection sample
• CLOD fade factor
    – Used to smoothly fade in a newly composited tile (fade-to tile)
    – Previous LOD (fade-from tile) is already in atlas and fetched using
      indirection mips
    – CLOD factor updated each frame
The ”Teratexture”
• How do we reach 1M x 1M?
   – Indirection texture can easily go 4k x 4k
       • Way too large!
• Clipmap indirection texture
   – Clipmap – early virtual texture
     implementation
   – Replace 4k indirection texture with 6
     64x64 clipmap layers
Clipmap indirection
• Clipmap level is resolved on CPU for each draw call
    – Avoids additional pixel shader logic
    – Requires each 64x64 map to have its own mip chain
• Texture space has to be roughly organized with world space
    – Not an issue for terrain
    – More generic use cases are probably better off with multiple classic
      virtual textures
Tile compositing
•   Tiles are composited on GPU and compressed on GPU or SPU
•   Benefits (compared to streaming from disc)
    – Small disc footprint – data magnification
        • Source raster data magnified ~1000x
    – Low latency
        • Tile is ready to use next frame
    – Dynamic updates
        • Destruction
        • Realtime editing
    – Efficient workflow
        • Artists don’t have to paint hundreds of square kilometers down to every last
          pebble
Virtual texture issues
• Blurriness (consoles have too small tile pool)
• Runtime texture compression quality
• GPU tile compositing cost offset some of the gain
   – ~0.25ms/frame on Xenon
• Limited hardware filtering support
   – Expensive software and/or lower-quality filtering
• Compositing latency
• Tile compositing render target memory usage
Virtual texture issues
• Virtual texture has practical limit at around 32
  samples per meter
    – Detail shader splatting fills in to required
      sharpness (500-1000 samples per meter)
• We now have two shader splatting methods
    – Diffuse/Normal/Specular/Smoothness splats
      into virtual texture
    – Direct* splats details into Gbuffer
• Performance concerns
    – Have to limit detail view distance
    – Typically 50m-100m
Virtual texture issues
• Indirection update performance
   – Updating indirection maps is expensive      Observer
       • 4-6 64x64 maps with mips
                                                 Clipmap
   – Do in job (SPU)
   – Update only dirty areas
       • New tile
       • CLOD fade factor
       • Recentering when clipmap region moves
   – Wraparound
       • Only edges affected on
                                                 Updated
         recentering (bottom image)              clipmap
                                                 area
Overview
•   Scalability – hierarchies, payloads and limitations
•   Workflows – realtime in-game editing
•   CPU and GPU performance
•   Procedural virtual texturing – powerful GPU optimization
•   Data streaming – minimizing memory footprint
•   Robustness – global prioritization
•   Procedural mesh generation
•   Conclusions
Data streaming




•   Frostbite 1 did not stream terrain
•   Streaming required for larger Battlefield 3 and NFS: The Run
    levels
Streaming basics
• Streaming unit: Raster tiles (aka node payloads)
    – Typical tile sizes
        • Heightfield: 133x133x2 bytes
        • Mask: 66x66x1 bytes x 0-50 tiles per payload
        • Color: 264x264x0.5 bytes
• Fixed-size tile pools (atlases)
    – Typical atlas sizes
        • Heightfield: 2048x2048
        • Mask: 2048x1024
        • Color: 2048x2048
Streaming modes
• Tile-by-tile (aka free) streaming
    – For slower gameplay
• Tile bundle (aka push-based) streaming
    – For faster games
    – Tiles associated with a layout are bundled
    – Based on terrain resolution layouts
• Hybrid streaming (most common)
    – Bundles used at selected spawn points and transitions
    – Free streaming fill in the rest
Spawn point




Layout of all data on level
Data subset loaded at spawn point
A Terrain resolution layout defines the subset
Subsets loaded (and unloaded) as user progresses
through level
Resident set size: Powerful blurriness
• Streaming does not remove memory footprint
    – A resident set is still needed
• Resident set can be huge
    – Theoretical value for BF3 level on PS3: 70+Mb!
• Blurriness feature shrinks resident set significantly
    – Increase blurriness by one and save around 70%
    – Very important memory saver for BF3
    – Shipped with 32Mb terrain resident set
Blurriness
• Blurriness is mip bias applied to terrain raster streaming
    – Blurriness = 0:
        • Streaming continues until raster is sharp
    – Blurriness = 1:
        • Streaming stops when raster is slightly blurry (texel covers 2x2 pixels)
    – Blurriness = 2:
        • Streaming stops when raster is significantly blurry (texel covers 4x4 pixels)
Blurriness: Implementation by pipeline trick
• For each level of blurriness
      – cut tile size in half
      – add one leaf level
• No data is lost – it is only shifted downwards




Blurriness 0                     Blurriness 1
 256x256-sized tiles              128x128-sized tiles
 8 resident tiles (500kpixel)     14 nodes added
 13 nodes                         10 resident tiles (164kpixel, saves 68%)
                                  27 nodes
BF3 blurriness use case
• Blur expensive rasters
    – Heightfield (2 bytes per sample)
    – Mask (1 byte per sample)
• Keep cheap rasters
    – Colormap (DXT1, 0.5byte per sample)
• Put detail (for example occlusion) in colormap to hide blurry
  heightfield/normal map
•   Physics
    – Wrong streaming setup gives strange artifacts
        •   Vehicles spawning in air or in ground
        •   Invisible and disappearing walls and holes
Reducing disc seeks
• Often main reason for latency
   – Can seek maybe four files per second
   – A terrain can have hundreds of files (tiles/payloads)
• Methods to reduce the number of seeks
   – Use terrain resolution layouts at spawn
       • Otherwise minutes can pass before stabilization (waiting for file seeks)!
   – Co-locate overlapping tiles of different types
       • Store heightfield tile together with color and mask tiles
Reducing disc seeks
• Methods to reduce the number of seeks (cont’d)
   – Co-locate nearby tiles
       • Group leaf node payloads as second LOD in ancestor node
       • Saves 20-50% seeks in typical scenario




      Full dataset require 13 seeks        Second LOD stored in parent nodes
      Leaf nodes subject for move in red   Full dataset is now 10 seeks
Improving throughput
• Data tiles are compressed by pipeline
   – Color tiles are optionally DXT1-compressed
   – Mask compression
       • Source tiles (256x256) are chopped up into smaller pieces (66x66)
       • Empty tile culling
       • Identical (constant value) tile merging
   – Physics materials and destruction depth are packed to four bits and
     RLE-compressed
   – All tiles are z-compressed
Improving throughput
•     A quadtree node has zero or four children
• Incomplete quadtree
       – We allow zero through four payload children
       – Reduces bundle size by some 20%+




    Complete quadtree with 32            Incomplete quadtree with only
    tiles at red LOD                     20 tiles. Incompleteness saves
                                         12 tiles (37%)
Latency under the rug
• Even with mentioned improvements, streaming is not instant
• General ways of hiding latency
   – CLOD to smooth most streaming LOD transitions
   – Global prioritization helps distribute punishment
Overview
•   Scalability – hierarchies, payloads and limitations
•   Workflows – realtime in-game editing
•   CPU and GPU performance
•   Procedural virtual texturing – powerful GPU optimization
•   Data streaming – minimizing memory footprint
•   Robustness – global prioritization
•   Procedural mesh generation
•   Conclusions
Global prioritization
• Compute priority for each frame and each quadtree node
• Update streaming, virtual texturing and terrain decoration
    – According to priority
• Priority value
    – 1.0: On target
        • One pixel per texel
        • Terrain decoration at specified view distance
    – < 1.0: Node doesn’t need payload
    – > 1.0: Node need payload
Priority depends on distance and size
•   Closer nodes have higher priority
•   Larger nodes have higher priority




    Observer

Priority
• Red > 1
• Green = 1
• Blue < 1
Priority modified by culling, updates and speed

                           Normal node

                           Node in motion

              Occluder      Node being updated (crater added)
Observer

                            Occluded node
Priority
• Red > 1
• Green = 1
• Blue < 1                  Node outside frustum
Prioritized update algorithm                Pool size (keep pool full)
  Low prio                                                                 High prio

Frame 0:                                                                   Nodes
Steady state

Frame 1:
Observer moved
Bidirectional                                 Look for payloads to fetch
               Look for payloads to release
update
Frame 1:
Payload released

Frame 2:
New payload fetched
Prioritized update cost
• Priority evaluation and sorting done on SPU
   – <1ms
• Update done on PPU
   – <0.5ms
Overview
•   Scalability – hierarchies, payloads and limitations
•   Workflows – realtime in-game editing
•   CPU and GPU performance
•   Procedural virtual texturing – powerful GPU optimization
•   Data streaming – minimizing memory footprint
•   Robustness – global prioritization
•   Procedural mesh generation
•   Conclusions
Mesh
•   Mesh generated from heightfield
•   Straight-forward tessellation
     – Rendered in patches of 16x16 triangle pairs
     – Projected triangle size rougly constant - support destruction everywhere
     – Blocky crestlines (on console)
•   PC, Xenon:
     – Heightfield sampled in vertex shader
•   PS3:
     – Vertex shader texture fetch is too slow
           • Heightfield samples stored in vertex attribute
           • Heightfield sampled in pixel shader
Mesh stitching
• A job analyze mesh quadtree and detect LOD switch edges
• Edges are stitched by index permutations
   – Vertices are unchanged




       No stitch              Stitch left   Stitch left and bottom
DX11 tessellation




•   Displacement mapping from heightfield
     –   No additional memory needs (heightfield used as normal map)
•   Straightforward hull and domain shaders
•   Tessellation factor derived from projected patch edge bounding sphere
     –   Tries to maintain a constant screen-space triangle width
Displacement mapping ON
                     OFF
Overview
•   Scalability – hierarchies, payloads and limitations
•   Workflows – realtime in-game editing
•   CPU and GPU performance
•   Procedural virtual texturing – powerful GPU optimization
•   Data streaming – minimizing memory footprint
•   Robustness – global prioritization
•   Procedural mesh generation
•   Conclusions
Conclusions
• Frostbite 2 has a robust and competent terrain system
   – Heightfield, shading, decals, water, terrain decoration
• Most aspects scale well
   – View distance, data resolution, decoration density and distance
• Slick workflow
   – In-game editing
   – Good range of tools
• Good performance (CPU, GPU, memory)
   – Parallelized, streaming, procedural virtual texture
Special thanks
•   The Frostbite team
•   Black Box
     – Andy Routledge
     – Cody Ritchie
     – Brad Gour
•   Criterion
     – Tad Swift
     – Matthew Jones
     – Richard Parr
•   Dice
     – Andrew Hamilton
Questions?




             mattias.widmark@dice.se
             EA Digital Illusions (DICE)

More Related Content

What's hot

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
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteElectronic Arts / DICE
 
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
 
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
 
Destruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsDestruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsElectronic Arts / DICE
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Tiago Sousa
 
Rendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderRendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderEidos-Montréal
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The SurgeMichele Giacalone
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility bufferWolfgang Engel
 
An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Co...
An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Co...An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Co...
An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Co...Codemotion
 
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
 
The Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsThe Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsJohan Andersson
 
A Bit More Deferred Cry Engine3
A Bit More Deferred   Cry Engine3A Bit More Deferred   Cry Engine3
A Bit More Deferred Cry Engine3guest11b095
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3Electronic Arts / DICE
 
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)Johan Andersson
 
Past, Present and Future Challenges of Global Illumination in Games
Past, Present and Future Challenges of Global Illumination in GamesPast, Present and Future Challenges of Global Illumination in Games
Past, Present and Future Challenges of Global Illumination in GamesColin Barré-Brisebois
 
Lighting Shading by John Hable
Lighting Shading by John HableLighting Shading by John Hable
Lighting Shading by John HableNaughty Dog
 

What's hot (20)

Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
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
 
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)
 
Destruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsDestruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance Fields
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)
 
Lighting the City of Glass
Lighting the City of GlassLighting the City of Glass
Lighting the City of Glass
 
Rendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderRendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb Raider
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility buffer
 
An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Co...
An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Co...An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Co...
An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Co...
 
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 ...
 
The Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next StepsThe Rendering Pipeline - Challenges & Next Steps
The Rendering Pipeline - Challenges & Next Steps
 
A Bit More Deferred Cry Engine3
A Bit More Deferred   Cry Engine3A Bit More Deferred   Cry Engine3
A Bit More Deferred Cry Engine3
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
 
Light prepass
Light prepassLight prepass
Light prepass
 
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)
 
Past, Present and Future Challenges of Global Illumination in Games
Past, Present and Future Challenges of Global Illumination in GamesPast, Present and Future Challenges of Global Illumination in Games
Past, Present and Future Challenges of Global Illumination in Games
 
Lighting Shading by John Hable
Lighting Shading by John HableLighting Shading by John Hable
Lighting Shading by John Hable
 

Similar to Terrain in Battlefield 3: A Modern, Complete and Scalable System

Using Imagery in ArcGIS
Using Imagery in ArcGISUsing Imagery in ArcGIS
Using Imagery in ArcGISEsri
 
Modern Graphics Pipeline Overview
Modern Graphics Pipeline OverviewModern Graphics Pipeline Overview
Modern Graphics Pipeline Overviewslantsixgames
 
Building Mosaics
Building MosaicsBuilding Mosaics
Building MosaicsEsri
 
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
 
High Dimensional Indexing using MongoDB (MongoSV 2012)
High Dimensional Indexing using MongoDB (MongoSV 2012)High Dimensional Indexing using MongoDB (MongoSV 2012)
High Dimensional Indexing using MongoDB (MongoSV 2012)Nicholas Knize, Ph.D., GISP
 
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Jarosław Pleskot
 
GIS and Remote sensing CIvil Engg by Mrunmayee
GIS and Remote sensing CIvil Engg by MrunmayeeGIS and Remote sensing CIvil Engg by Mrunmayee
GIS and Remote sensing CIvil Engg by MrunmayeeMrunmayee Manjari
 
DSD-INT 2018 Realtime classification of lidar pointclouds - Pronk
DSD-INT 2018 Realtime classification of lidar pointclouds - PronkDSD-INT 2018 Realtime classification of lidar pointclouds - Pronk
DSD-INT 2018 Realtime classification of lidar pointclouds - PronkDeltares
 
Hadoop performance optimization tips
Hadoop performance optimization tipsHadoop performance optimization tips
Hadoop performance optimization tipsSubhas Kumar Ghosh
 
Terrain Rendering using GPU-Based Geometry Clipmaps
Terrain Rendering usingGPU-Based Geometry ClipmapsTerrain Rendering usingGPU-Based Geometry Clipmaps
Terrain Rendering using GPU-Based Geometry Clipmapsnone299359
 
Building Worlds - Codebits
Building Worlds - CodebitsBuilding Worlds - Codebits
Building Worlds - CodebitsFilipe Varela
 
Le projet “Canadian Spatial Data Foundry”: Introduction à PostGIS WKT Raster
Le projet “Canadian Spatial Data Foundry”: Introduction à PostGIS WKT RasterLe projet “Canadian Spatial Data Foundry”: Introduction à PostGIS WKT Raster
Le projet “Canadian Spatial Data Foundry”: Introduction à PostGIS WKT RasterACSG Section Montréal
 
L19CloudMapReduce introduction for cloud computing .ppt
L19CloudMapReduce introduction for cloud computing .pptL19CloudMapReduce introduction for cloud computing .ppt
L19CloudMapReduce introduction for cloud computing .pptMaruthiPrasad96
 
Bigdata and Hadoop
 Bigdata and Hadoop Bigdata and Hadoop
Bigdata and HadoopGirish L
 
Cloud infrastructure. Google File System and MapReduce - Andrii Vozniuk
Cloud infrastructure. Google File System and MapReduce - Andrii VozniukCloud infrastructure. Google File System and MapReduce - Andrii Vozniuk
Cloud infrastructure. Google File System and MapReduce - Andrii VozniukAndrii Vozniuk
 
Distributed Data processing in a Cloud
Distributed Data processing in a CloudDistributed Data processing in a Cloud
Distributed Data processing in a Cloudelliando dias
 

Similar to Terrain in Battlefield 3: A Modern, Complete and Scalable System (20)

Felwyrld Tech
Felwyrld TechFelwyrld Tech
Felwyrld Tech
 
Using Imagery in ArcGIS
Using Imagery in ArcGISUsing Imagery in ArcGIS
Using Imagery in ArcGIS
 
Modern Graphics Pipeline Overview
Modern Graphics Pipeline OverviewModern Graphics Pipeline Overview
Modern Graphics Pipeline Overview
 
Building Mosaics
Building MosaicsBuilding Mosaics
Building Mosaics
 
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
 
High Dimensional Indexing using MongoDB (MongoSV 2012)
High Dimensional Indexing using MongoDB (MongoSV 2012)High Dimensional Indexing using MongoDB (MongoSV 2012)
High Dimensional Indexing using MongoDB (MongoSV 2012)
 
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
 
GIS and Remote sensing CIvil Engg by Mrunmayee
GIS and Remote sensing CIvil Engg by MrunmayeeGIS and Remote sensing CIvil Engg by Mrunmayee
GIS and Remote sensing CIvil Engg by Mrunmayee
 
DSD-INT 2018 Realtime classification of lidar pointclouds - Pronk
DSD-INT 2018 Realtime classification of lidar pointclouds - PronkDSD-INT 2018 Realtime classification of lidar pointclouds - Pronk
DSD-INT 2018 Realtime classification of lidar pointclouds - Pronk
 
Hadoop performance optimization tips
Hadoop performance optimization tipsHadoop performance optimization tips
Hadoop performance optimization tips
 
Terrain Rendering using GPU-Based Geometry Clipmaps
Terrain Rendering usingGPU-Based Geometry ClipmapsTerrain Rendering usingGPU-Based Geometry Clipmaps
Terrain Rendering using GPU-Based Geometry Clipmaps
 
Hadoop
HadoopHadoop
Hadoop
 
Building Worlds - Codebits
Building Worlds - CodebitsBuilding Worlds - Codebits
Building Worlds - Codebits
 
Le projet “Canadian Spatial Data Foundry”: Introduction à PostGIS WKT Raster
Le projet “Canadian Spatial Data Foundry”: Introduction à PostGIS WKT RasterLe projet “Canadian Spatial Data Foundry”: Introduction à PostGIS WKT Raster
Le projet “Canadian Spatial Data Foundry”: Introduction à PostGIS WKT Raster
 
L19CloudMapReduce introduction for cloud computing .ppt
L19CloudMapReduce introduction for cloud computing .pptL19CloudMapReduce introduction for cloud computing .ppt
L19CloudMapReduce introduction for cloud computing .ppt
 
Bigdata and Hadoop
 Bigdata and Hadoop Bigdata and Hadoop
Bigdata and Hadoop
 
RTree Spatial Indexing with MongoDB - MongoDC
RTree Spatial Indexing with MongoDB - MongoDC RTree Spatial Indexing with MongoDB - MongoDC
RTree Spatial Indexing with MongoDB - MongoDC
 
Cloud infrastructure. Google File System and MapReduce - Andrii Vozniuk
Cloud infrastructure. Google File System and MapReduce - Andrii VozniukCloud infrastructure. Google File System and MapReduce - Andrii Vozniuk
Cloud infrastructure. Google File System and MapReduce - Andrii Vozniuk
 
External memory
External memoryExternal memory
External memory
 
Distributed Data processing in a Cloud
Distributed Data processing in a CloudDistributed Data processing in a Cloud
Distributed Data processing in a Cloud
 

More from Electronic Arts / DICE

GDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game DevelopmentGDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game DevelopmentElectronic Arts / DICE
 
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeSIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeElectronic Arts / DICE
 
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray TracingSyysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray TracingElectronic Arts / DICE
 
Khronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and VulkanKhronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and VulkanElectronic Arts / DICE
 
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time RaytracingCEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time RaytracingElectronic Arts / DICE
 
CEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and ProceduralismCEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and ProceduralismElectronic Arts / DICE
 
SIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA TuringSIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA TuringElectronic Arts / DICE
 
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingSIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingElectronic Arts / DICE
 
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsHPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsElectronic Arts / DICE
 
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...Electronic Arts / DICE
 
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time RenderingDD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time RenderingElectronic Arts / DICE
 
Creativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural SystemsCreativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural SystemsElectronic Arts / DICE
 
Shiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEEDShiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEEDElectronic Arts / DICE
 
Future Directions for Compute-for-Graphics
Future Directions for Compute-for-GraphicsFuture Directions for Compute-for-Graphics
Future Directions for Compute-for-GraphicsElectronic Arts / DICE
 
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...Electronic Arts / DICE
 
High Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in FrostbiteHigh Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in FrostbiteElectronic Arts / DICE
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect AndromedaElectronic Arts / DICE
 
Photogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontPhotogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontElectronic Arts / DICE
 
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
 

More from Electronic Arts / DICE (20)

GDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game DevelopmentGDC2019 - SEED - Towards Deep Generative Models in Game Development
GDC2019 - SEED - Towards Deep Generative Models in Game Development
 
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's EdgeSIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
SIGGRAPH 2010 - Style and Gameplay in the Mirror's Edge
 
SEED - Halcyon Architecture
SEED - Halcyon ArchitectureSEED - Halcyon Architecture
SEED - Halcyon Architecture
 
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray TracingSyysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
Syysgraph 2018 - Modern Graphics Abstractions & Real-Time Ray Tracing
 
Khronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and VulkanKhronos Munich 2018 - Halcyon and Vulkan
Khronos Munich 2018 - Halcyon and Vulkan
 
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time RaytracingCEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
CEDEC 2018 - Towards Effortless Photorealism Through Real-Time Raytracing
 
CEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and ProceduralismCEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
CEDEC 2018 - Functional Symbiosis of Art Direction and Proceduralism
 
SIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA TuringSIGGRAPH 2018 - PICA PICA and NVIDIA Turing
SIGGRAPH 2018 - PICA PICA and NVIDIA Turing
 
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time RaytracingSIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
 
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open ProblemsHPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
HPG 2018 - Game Ray Tracing: State-of-the-Art and Open Problems
 
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
EPC 2018 - SEED - Exploring The Collaboration Between Proceduralism & Deep Le...
 
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time RenderingDD18 - SEED - Raytracing in Hybrid Real-Time Rendering
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
 
Creativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural SystemsCreativity of Rules and Patterns: Designing Procedural Systems
Creativity of Rules and Patterns: Designing Procedural Systems
 
Shiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEEDShiny Pixels and Beyond: Real-Time Raytracing at SEED
Shiny Pixels and Beyond: Real-Time Raytracing at SEED
 
Future Directions for Compute-for-Graphics
Future Directions for Compute-for-GraphicsFuture Directions for Compute-for-Graphics
Future Directions for Compute-for-Graphics
 
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
 
High Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in FrostbiteHigh Dynamic Range color grading and display in Frostbite
High Dynamic Range color grading and display in Frostbite
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
 
Photogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontPhotogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars Battlefront
 
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
 

Recently uploaded

Independent Hatiara Escorts ✔ 8250192130 ✔ Full Night With Room Online Bookin...
Independent Hatiara Escorts ✔ 8250192130 ✔ Full Night With Room Online Bookin...Independent Hatiara Escorts ✔ 8250192130 ✔ Full Night With Room Online Bookin...
Independent Hatiara Escorts ✔ 8250192130 ✔ Full Night With Room Online Bookin...Riya Pathan
 
Call Girl Nagpur Roshni Call 7001035870 Meet With Nagpur Escorts
Call Girl Nagpur Roshni Call 7001035870 Meet With Nagpur EscortsCall Girl Nagpur Roshni Call 7001035870 Meet With Nagpur Escorts
Call Girl Nagpur Roshni Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
𓀤Call On 6297143586 𓀤 Sonagachi Call Girls In All Kolkata 24/7 Provide Call W...
𓀤Call On 6297143586 𓀤 Sonagachi Call Girls In All Kolkata 24/7 Provide Call W...𓀤Call On 6297143586 𓀤 Sonagachi Call Girls In All Kolkata 24/7 Provide Call W...
𓀤Call On 6297143586 𓀤 Sonagachi Call Girls In All Kolkata 24/7 Provide Call W...rahim quresi
 
👙 Kolkata Call Girls Park Circus 💫💫7001035870 Model escorts Service
👙  Kolkata Call Girls Park Circus 💫💫7001035870 Model escorts Service👙  Kolkata Call Girls Park Circus 💫💫7001035870 Model escorts Service
👙 Kolkata Call Girls Park Circus 💫💫7001035870 Model escorts Serviceanamikaraghav4
 
Dakshineswar Call Girls ✔ 8005736733 ✔ Hot Model With Sexy Bhabi Ready For Se...
Dakshineswar Call Girls ✔ 8005736733 ✔ Hot Model With Sexy Bhabi Ready For Se...Dakshineswar Call Girls ✔ 8005736733 ✔ Hot Model With Sexy Bhabi Ready For Se...
Dakshineswar Call Girls ✔ 8005736733 ✔ Hot Model With Sexy Bhabi Ready For Se...aamir
 
↑Top Model (Kolkata) Call Girls Rajpur ⟟ 8250192130 ⟟ High Class Call Girl In...
↑Top Model (Kolkata) Call Girls Rajpur ⟟ 8250192130 ⟟ High Class Call Girl In...↑Top Model (Kolkata) Call Girls Rajpur ⟟ 8250192130 ⟟ High Class Call Girl In...
↑Top Model (Kolkata) Call Girls Rajpur ⟟ 8250192130 ⟟ High Class Call Girl In...noor ahmed
 
Book Paid Sonagachi Call Girls Kolkata 𖠋 8250192130 𖠋Low Budget Full Independ...
Book Paid Sonagachi Call Girls Kolkata 𖠋 8250192130 𖠋Low Budget Full Independ...Book Paid Sonagachi Call Girls Kolkata 𖠋 8250192130 𖠋Low Budget Full Independ...
Book Paid Sonagachi Call Girls Kolkata 𖠋 8250192130 𖠋Low Budget Full Independ...noor ahmed
 
5* Hotels Call Girls In Goa {{07028418221}} Call Girls In North Goa Escort Se...
5* Hotels Call Girls In Goa {{07028418221}} Call Girls In North Goa Escort Se...5* Hotels Call Girls In Goa {{07028418221}} Call Girls In North Goa Escort Se...
5* Hotels Call Girls In Goa {{07028418221}} Call Girls In North Goa Escort Se...Apsara Of India
 
👙 Kolkata Call Girls Sonagachi 💫💫7001035870 Model escorts Service
👙  Kolkata Call Girls Sonagachi 💫💫7001035870 Model escorts Service👙  Kolkata Call Girls Sonagachi 💫💫7001035870 Model escorts Service
👙 Kolkata Call Girls Sonagachi 💫💫7001035870 Model escorts Serviceanamikaraghav4
 
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser... Shivani Pandey
 
College Call Girls New Alipore - For 7001035870 Cheap & Best with original Ph...
College Call Girls New Alipore - For 7001035870 Cheap & Best with original Ph...College Call Girls New Alipore - For 7001035870 Cheap & Best with original Ph...
College Call Girls New Alipore - For 7001035870 Cheap & Best with original Ph...anamikaraghav4
 
Science City Kolkata ( Call Girls ) Kolkata ✔ 6297143586 ✔ Hot Model With Sex...
Science City Kolkata ( Call Girls ) Kolkata ✔ 6297143586 ✔ Hot Model With Sex...Science City Kolkata ( Call Girls ) Kolkata ✔ 6297143586 ✔ Hot Model With Sex...
Science City Kolkata ( Call Girls ) Kolkata ✔ 6297143586 ✔ Hot Model With Sex...rahim quresi
 
Verified Trusted Call Girls Tambaram Chennai ✔✔7427069034 Independent Chenna...
Verified Trusted Call Girls Tambaram Chennai ✔✔7427069034  Independent Chenna...Verified Trusted Call Girls Tambaram Chennai ✔✔7427069034  Independent Chenna...
Verified Trusted Call Girls Tambaram Chennai ✔✔7427069034 Independent Chenna... Shivani Pandey
 
𓀤Call On 6297143586 𓀤 Ultadanga Call Girls In All Kolkata 24/7 Provide Call W...
𓀤Call On 6297143586 𓀤 Ultadanga Call Girls In All Kolkata 24/7 Provide Call W...𓀤Call On 6297143586 𓀤 Ultadanga Call Girls In All Kolkata 24/7 Provide Call W...
𓀤Call On 6297143586 𓀤 Ultadanga Call Girls In All Kolkata 24/7 Provide Call W...rahim quresi
 
Call Girls In Goa 9316020077 Goa Call Girl By Indian Call Girls Goa
Call Girls In Goa  9316020077 Goa  Call Girl By Indian Call Girls GoaCall Girls In Goa  9316020077 Goa  Call Girl By Indian Call Girls Goa
Call Girls In Goa 9316020077 Goa Call Girl By Indian Call Girls Goasexy call girls service in goa
 
VIP Call Girls Nagpur Megha Call 7001035870 Meet With Nagpur Escorts
VIP Call Girls Nagpur Megha Call 7001035870 Meet With Nagpur EscortsVIP Call Girls Nagpur Megha Call 7001035870 Meet With Nagpur Escorts
VIP Call Girls Nagpur Megha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
👙 Kolkata Call Girls Shyam Bazar 💫💫7001035870 Model escorts Service
👙  Kolkata Call Girls Shyam Bazar 💫💫7001035870 Model escorts Service👙  Kolkata Call Girls Shyam Bazar 💫💫7001035870 Model escorts Service
👙 Kolkata Call Girls Shyam Bazar 💫💫7001035870 Model escorts Serviceanamikaraghav4
 
Call Girls in Barasat | 7001035870 At Low Cost Cash Payment Booking
Call Girls in Barasat | 7001035870 At Low Cost Cash Payment BookingCall Girls in Barasat | 7001035870 At Low Cost Cash Payment Booking
Call Girls in Barasat | 7001035870 At Low Cost Cash Payment Bookingnoor ahmed
 

Recently uploaded (20)

Independent Hatiara Escorts ✔ 8250192130 ✔ Full Night With Room Online Bookin...
Independent Hatiara Escorts ✔ 8250192130 ✔ Full Night With Room Online Bookin...Independent Hatiara Escorts ✔ 8250192130 ✔ Full Night With Room Online Bookin...
Independent Hatiara Escorts ✔ 8250192130 ✔ Full Night With Room Online Bookin...
 
Call Girls Chirag Delhi Delhi WhatsApp Number 9711199171
Call Girls Chirag Delhi Delhi WhatsApp Number 9711199171Call Girls Chirag Delhi Delhi WhatsApp Number 9711199171
Call Girls Chirag Delhi Delhi WhatsApp Number 9711199171
 
Call Girl Nagpur Roshni Call 7001035870 Meet With Nagpur Escorts
Call Girl Nagpur Roshni Call 7001035870 Meet With Nagpur EscortsCall Girl Nagpur Roshni Call 7001035870 Meet With Nagpur Escorts
Call Girl Nagpur Roshni Call 7001035870 Meet With Nagpur Escorts
 
𓀤Call On 6297143586 𓀤 Sonagachi Call Girls In All Kolkata 24/7 Provide Call W...
𓀤Call On 6297143586 𓀤 Sonagachi Call Girls In All Kolkata 24/7 Provide Call W...𓀤Call On 6297143586 𓀤 Sonagachi Call Girls In All Kolkata 24/7 Provide Call W...
𓀤Call On 6297143586 𓀤 Sonagachi Call Girls In All Kolkata 24/7 Provide Call W...
 
👙 Kolkata Call Girls Park Circus 💫💫7001035870 Model escorts Service
👙  Kolkata Call Girls Park Circus 💫💫7001035870 Model escorts Service👙  Kolkata Call Girls Park Circus 💫💫7001035870 Model escorts Service
👙 Kolkata Call Girls Park Circus 💫💫7001035870 Model escorts Service
 
Dakshineswar Call Girls ✔ 8005736733 ✔ Hot Model With Sexy Bhabi Ready For Se...
Dakshineswar Call Girls ✔ 8005736733 ✔ Hot Model With Sexy Bhabi Ready For Se...Dakshineswar Call Girls ✔ 8005736733 ✔ Hot Model With Sexy Bhabi Ready For Se...
Dakshineswar Call Girls ✔ 8005736733 ✔ Hot Model With Sexy Bhabi Ready For Se...
 
↑Top Model (Kolkata) Call Girls Rajpur ⟟ 8250192130 ⟟ High Class Call Girl In...
↑Top Model (Kolkata) Call Girls Rajpur ⟟ 8250192130 ⟟ High Class Call Girl In...↑Top Model (Kolkata) Call Girls Rajpur ⟟ 8250192130 ⟟ High Class Call Girl In...
↑Top Model (Kolkata) Call Girls Rajpur ⟟ 8250192130 ⟟ High Class Call Girl In...
 
Book Paid Sonagachi Call Girls Kolkata 𖠋 8250192130 𖠋Low Budget Full Independ...
Book Paid Sonagachi Call Girls Kolkata 𖠋 8250192130 𖠋Low Budget Full Independ...Book Paid Sonagachi Call Girls Kolkata 𖠋 8250192130 𖠋Low Budget Full Independ...
Book Paid Sonagachi Call Girls Kolkata 𖠋 8250192130 𖠋Low Budget Full Independ...
 
5* Hotels Call Girls In Goa {{07028418221}} Call Girls In North Goa Escort Se...
5* Hotels Call Girls In Goa {{07028418221}} Call Girls In North Goa Escort Se...5* Hotels Call Girls In Goa {{07028418221}} Call Girls In North Goa Escort Se...
5* Hotels Call Girls In Goa {{07028418221}} Call Girls In North Goa Escort Se...
 
👙 Kolkata Call Girls Sonagachi 💫💫7001035870 Model escorts Service
👙  Kolkata Call Girls Sonagachi 💫💫7001035870 Model escorts Service👙  Kolkata Call Girls Sonagachi 💫💫7001035870 Model escorts Service
👙 Kolkata Call Girls Sonagachi 💫💫7001035870 Model escorts Service
 
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...
Model Call Girls In Pazhavanthangal WhatsApp Booking 7427069034 call girl ser...
 
College Call Girls New Alipore - For 7001035870 Cheap & Best with original Ph...
College Call Girls New Alipore - For 7001035870 Cheap & Best with original Ph...College Call Girls New Alipore - For 7001035870 Cheap & Best with original Ph...
College Call Girls New Alipore - For 7001035870 Cheap & Best with original Ph...
 
Science City Kolkata ( Call Girls ) Kolkata ✔ 6297143586 ✔ Hot Model With Sex...
Science City Kolkata ( Call Girls ) Kolkata ✔ 6297143586 ✔ Hot Model With Sex...Science City Kolkata ( Call Girls ) Kolkata ✔ 6297143586 ✔ Hot Model With Sex...
Science City Kolkata ( Call Girls ) Kolkata ✔ 6297143586 ✔ Hot Model With Sex...
 
Verified Trusted Call Girls Tambaram Chennai ✔✔7427069034 Independent Chenna...
Verified Trusted Call Girls Tambaram Chennai ✔✔7427069034  Independent Chenna...Verified Trusted Call Girls Tambaram Chennai ✔✔7427069034  Independent Chenna...
Verified Trusted Call Girls Tambaram Chennai ✔✔7427069034 Independent Chenna...
 
𓀤Call On 6297143586 𓀤 Ultadanga Call Girls In All Kolkata 24/7 Provide Call W...
𓀤Call On 6297143586 𓀤 Ultadanga Call Girls In All Kolkata 24/7 Provide Call W...𓀤Call On 6297143586 𓀤 Ultadanga Call Girls In All Kolkata 24/7 Provide Call W...
𓀤Call On 6297143586 𓀤 Ultadanga Call Girls In All Kolkata 24/7 Provide Call W...
 
CHEAP Call Girls in Malviya Nagar, (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in  Malviya Nagar, (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in  Malviya Nagar, (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Malviya Nagar, (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Call Girls In Goa 9316020077 Goa Call Girl By Indian Call Girls Goa
Call Girls In Goa  9316020077 Goa  Call Girl By Indian Call Girls GoaCall Girls In Goa  9316020077 Goa  Call Girl By Indian Call Girls Goa
Call Girls In Goa 9316020077 Goa Call Girl By Indian Call Girls Goa
 
VIP Call Girls Nagpur Megha Call 7001035870 Meet With Nagpur Escorts
VIP Call Girls Nagpur Megha Call 7001035870 Meet With Nagpur EscortsVIP Call Girls Nagpur Megha Call 7001035870 Meet With Nagpur Escorts
VIP Call Girls Nagpur Megha Call 7001035870 Meet With Nagpur Escorts
 
👙 Kolkata Call Girls Shyam Bazar 💫💫7001035870 Model escorts Service
👙  Kolkata Call Girls Shyam Bazar 💫💫7001035870 Model escorts Service👙  Kolkata Call Girls Shyam Bazar 💫💫7001035870 Model escorts Service
👙 Kolkata Call Girls Shyam Bazar 💫💫7001035870 Model escorts Service
 
Call Girls in Barasat | 7001035870 At Low Cost Cash Payment Booking
Call Girls in Barasat | 7001035870 At Low Cost Cash Payment BookingCall Girls in Barasat | 7001035870 At Low Cost Cash Payment Booking
Call Girls in Barasat | 7001035870 At Low Cost Cash Payment Booking
 

Terrain in Battlefield 3: A Modern, Complete and Scalable System

  • 1. Terrain in Battlefield 3: A modern, complete and scalable system Mattias Widmark Software Engineer, EA Digital Illusions (DICE), Stockholm
  • 2. Overview • Scalability – hierarchies, payloads and limitations • Workflows – realtime in-game editing • CPU and GPU performance • Procedural virtual texturing – powerful GPU optimization • Data streaming – minimizing memory footprint • Robustness – global prioritization • Procedural mesh generation • Conclusions
  • 3. But first... • ... what are we talking about? • Frostbite terrain has many aspects other than the terrain mesh itself – Let’s look at them!
  • 4. • Heightfield-based • Mesh procedurally generated at runtime
  • 5. Surface rendering with procedual shader splatting – Arbitrary shaders splatted according to painted masks
  • 6. • Spline and quad decals
  • 7. Terrain decoration – Automatic distribution of meshes (trees, rocks, grass) according to mask – Billboards supported
  • 8. § • Terrain decoration – Important as the terrain surface itself
  • 9. Destruction/dynamic terrain – Destruction depth map • Controls crater depth around ie static models – Physics material map • Controls surface effects, audio, crater depth and width
  • 10. • Rivers/lakes – Implemented as free-floating decals – Water depth in pixel shader
  • 11. Terrain raster resources • Multiple raster resources used – Heightfield – Shader splatting masks – Colormap, used as an overlay on top of shader splatting – Physics materials – Destruction depth mask – Albedo map for bounce light – Additional mask channels
  • 12. Overview • Scalability – hierarchies, payloads and limitations • Workflows – realtime in-game editing • CPU and GPU performance • Procedural virtual texturing – powerful GPU optimization • Data streaming – minimizing memory footprint • Robustness – global prioritization • Procedural mesh generation • Conclusions
  • 13. Scalability • Our definition of scalability – Arbitrary view distance (0.06m to 30 000m) – Arbitrary level of detail (0.0001m and lower) – Arbitrary velocity (supercars and jets) • Main observation – It is all about hierarchies! – Consistent use of hierarchies gives scalability ”for free” • Hierarchies not new to terrain rendering – Frostbite approach similar to flight simulators • Quadtree hierarchies used for all spatial representations • Assuming knowledge of quadtrees, we jump right into Frostbite specifics!
  • 14. Quadtree node payload • The node payload is a central concept • A quadtree node can be attributed with a ”data blob”; the payload • Payload is Nodes (white circle) – a tile of raster data Payload (red dot) – a cell of terrain decoration • A list of instances (rock, grass, trees) – a piece of decal mesh • All nodes have payload... – ... but only a few have it loaded
  • 15. Nodes with and without payload • Payloads are constantly in motion – They are loaded (streamed), generated or freed evey frame – Only a fraction of the nodes have payload resident • Payload movement is governed by prioritization mechanisms... – ... but more of that later
  • 16. LOD payload • Non-leaf nodes have payload too • These payloads are used as LODs • Detail level depends on payload depth – Nodes closer to root represent lower detail Payload (red dot) LOD payload (orange dot) Increasing LOD
  • 17. View-dependent payload usage Set of payloads (green dots) used Observer moves and another set is for a certain observer position used – Note area to the left is distant – Area to the left now use higher and use lower LOD LOD Observer Observer
  • 18. Motivation for LOD payloads • With LOD • Without LOD – cost (payload count) is mostly – cost depend on terrain size independent of terrain size – Not scalable! – Scalable!
  • 19. Generation of raster LOD payload • Source data and workflows on leaf level • LODs generated automatically by pipeline • Requirements – Tile overlap (borders) for rendering algorithms – Continuity • Recursive (reverse) depth first algorithm – Green LOD tile is generated – Four children (red) and up to 12 neighbor tiles (blue) are used
  • 20. Terrain decoration payloads • Terrain decoration payload – Is a list of instance transforms (for grass, trees, rocks) – Is generated at runtime according to • scattering rules • shader splatted masks (position/density) – Note that we allow shaders to modify masks! • heightfield (ground-clamping and orientation)
  • 21. Terrain decoration LOD payloads • Quite unique (and slightly confusing) concept • LOD payloads used for scalability – Near-root payloads provide high view distance – Near-leaf payloads provide high density • Payloads can overlap – Providing high view distance and density
  • 22. • <screenshot from Frosted w/ game view> High distance low density trees Payload at level N Medium distance medium density trees Payload at level N+1 Adds to payload at level N for increased density Lower distance bushes Payload at level N+2 More leaves added (level N+4) Trees Bushes Leaves and branches Level N+3
  • 23. Overview • Scalability – hierarchies, payloads and limitations • Workflows – realtime in-game editing • CPU and GPU performance • Procedural virtual texturing – powerful GPU optimization • Data streaming – minimizing memory footprint • Robustness – global prioritization • Procedural mesh generation • Conclusions
  • 24. Real time editing in FrostEd • FrostEd is Frostbite editor • Game View is game rendering inside editor • Terrain editing with realtime feedback in game view – Heightfield sculpting – Mask and color painting – Decal editing – Terrain decoration
  • 25. External tools • When tools are not enough terrain can be exported and imported – Select all or part of terrain – Metadata + raw file – Edit raw file and reimport • Metadata will import to right area – Puts WorldMachine, GeoControl in the loop • A common workflow
  • 26. Workflow issues • Conflict between data compression and realtime editing • Realtime editing bypass pipeline • Clever update scheme for procedural content needed – We already had one (destruction) • Frostbite terrains too large for some popular tools – GeoControl and WorldMachine do not like 8k+ rasters
  • 27. Overview • Scalability – hierarchies, payloads and limitations • Workflows – realtime in-game editing • CPU and GPU performance • Procedural virtual texturing – powerful GPU optimization • Data streaming – minimizing memory footprint • Robustness – global prioritization • Procedural mesh generation • Conclusions
  • 28. Efficient on CPU • All work done in jobs, most on SPU and many wide – Early unoptimized versions consumed 10ms+ PPU time • BF3 final measurements (PS3) – 1-2ms SPU (peaks at ~8ms when lots of terrain decoration is happening) – <1ms PPU
  • 29. Efficient on GPU • Pre-baked shader permutations to avoid multi-pass • Procedual virtual texturing exploit frame-to-frame coherency • Typical figures (PS3): – Full screen GBuffer laydown (w/o detail overlay and terrain decoration): 2.5-3ms – Full screen GBuffer laydown (w/ detail overlay): 2.5-7ms – Terrain decoration: 1-4ms – Virtual texture tile compositing: 0.2-0.5ms
  • 30. Overview • Scalability – hierarchies, payloads and limitations • Workflows – realtime in-game editing • CPU and GPU performance • Procedural virtual texturing – powerful GPU optimization • Data streaming – minimizing memory footprint • Robustness – global prioritization • Procedural mesh generation • Conclusions
  • 31. GPU optimization: Procedural virtual texturing • Motivations – With shader splatting, artists can create beautiful terrains… • … rendering very slowly (10-20ms) – Shader splatting not scalable in view distance • Cannot afford multi-pass • By splatting into a texture – we leverage frame-to-frame coherency (performance) – can render in multiple passes (scalability) • Rendering full screen using the texture cost 2.5-3ms (PS3)
  • 32. Virtual texture key values • 32 samples per meter • 256x256 tiles with integrated two pixel border • Atlas storage with default size 4k x 2k • Two DXT5 textures R G B A R G B A Diffuse R Diffuse G Diffuse B Normal X Smoothness/ Normal Y Specular Normal Z Destruction • Very large, can easily reach 1M x 1M (= 1Tpixel)! – Typical virtual textures are 64k x 64k
  • 33. Indirection texture format • RGBA8 R G B A Index X Index Y Scale CLOD fade • Indices into virtual texture tile atlas • Scale factor for low-res areas... – ... where a tile covers more than one indirection sample • CLOD fade factor – Used to smoothly fade in a newly composited tile (fade-to tile) – Previous LOD (fade-from tile) is already in atlas and fetched using indirection mips – CLOD factor updated each frame
  • 34. The ”Teratexture” • How do we reach 1M x 1M? – Indirection texture can easily go 4k x 4k • Way too large! • Clipmap indirection texture – Clipmap – early virtual texture implementation – Replace 4k indirection texture with 6 64x64 clipmap layers
  • 35. Clipmap indirection • Clipmap level is resolved on CPU for each draw call – Avoids additional pixel shader logic – Requires each 64x64 map to have its own mip chain • Texture space has to be roughly organized with world space – Not an issue for terrain – More generic use cases are probably better off with multiple classic virtual textures
  • 36. Tile compositing • Tiles are composited on GPU and compressed on GPU or SPU • Benefits (compared to streaming from disc) – Small disc footprint – data magnification • Source raster data magnified ~1000x – Low latency • Tile is ready to use next frame – Dynamic updates • Destruction • Realtime editing – Efficient workflow • Artists don’t have to paint hundreds of square kilometers down to every last pebble
  • 37. Virtual texture issues • Blurriness (consoles have too small tile pool) • Runtime texture compression quality • GPU tile compositing cost offset some of the gain – ~0.25ms/frame on Xenon • Limited hardware filtering support – Expensive software and/or lower-quality filtering • Compositing latency • Tile compositing render target memory usage
  • 38. Virtual texture issues • Virtual texture has practical limit at around 32 samples per meter – Detail shader splatting fills in to required sharpness (500-1000 samples per meter) • We now have two shader splatting methods – Diffuse/Normal/Specular/Smoothness splats into virtual texture – Direct* splats details into Gbuffer • Performance concerns – Have to limit detail view distance – Typically 50m-100m
  • 39. Virtual texture issues • Indirection update performance – Updating indirection maps is expensive Observer • 4-6 64x64 maps with mips Clipmap – Do in job (SPU) – Update only dirty areas • New tile • CLOD fade factor • Recentering when clipmap region moves – Wraparound • Only edges affected on Updated recentering (bottom image) clipmap area
  • 40. Overview • Scalability – hierarchies, payloads and limitations • Workflows – realtime in-game editing • CPU and GPU performance • Procedural virtual texturing – powerful GPU optimization • Data streaming – minimizing memory footprint • Robustness – global prioritization • Procedural mesh generation • Conclusions
  • 41. Data streaming • Frostbite 1 did not stream terrain • Streaming required for larger Battlefield 3 and NFS: The Run levels
  • 42. Streaming basics • Streaming unit: Raster tiles (aka node payloads) – Typical tile sizes • Heightfield: 133x133x2 bytes • Mask: 66x66x1 bytes x 0-50 tiles per payload • Color: 264x264x0.5 bytes • Fixed-size tile pools (atlases) – Typical atlas sizes • Heightfield: 2048x2048 • Mask: 2048x1024 • Color: 2048x2048
  • 43. Streaming modes • Tile-by-tile (aka free) streaming – For slower gameplay • Tile bundle (aka push-based) streaming – For faster games – Tiles associated with a layout are bundled – Based on terrain resolution layouts • Hybrid streaming (most common) – Bundles used at selected spawn points and transitions – Free streaming fill in the rest
  • 44. Spawn point Layout of all data on level Data subset loaded at spawn point A Terrain resolution layout defines the subset Subsets loaded (and unloaded) as user progresses through level
  • 45. Resident set size: Powerful blurriness • Streaming does not remove memory footprint – A resident set is still needed • Resident set can be huge – Theoretical value for BF3 level on PS3: 70+Mb! • Blurriness feature shrinks resident set significantly – Increase blurriness by one and save around 70% – Very important memory saver for BF3 – Shipped with 32Mb terrain resident set
  • 46. Blurriness • Blurriness is mip bias applied to terrain raster streaming – Blurriness = 0: • Streaming continues until raster is sharp – Blurriness = 1: • Streaming stops when raster is slightly blurry (texel covers 2x2 pixels) – Blurriness = 2: • Streaming stops when raster is significantly blurry (texel covers 4x4 pixels)
  • 47. Blurriness: Implementation by pipeline trick • For each level of blurriness – cut tile size in half – add one leaf level • No data is lost – it is only shifted downwards Blurriness 0 Blurriness 1 256x256-sized tiles 128x128-sized tiles 8 resident tiles (500kpixel) 14 nodes added 13 nodes 10 resident tiles (164kpixel, saves 68%) 27 nodes
  • 48. BF3 blurriness use case • Blur expensive rasters – Heightfield (2 bytes per sample) – Mask (1 byte per sample) • Keep cheap rasters – Colormap (DXT1, 0.5byte per sample) • Put detail (for example occlusion) in colormap to hide blurry heightfield/normal map
  • 49. Physics – Wrong streaming setup gives strange artifacts • Vehicles spawning in air or in ground • Invisible and disappearing walls and holes
  • 50. Reducing disc seeks • Often main reason for latency – Can seek maybe four files per second – A terrain can have hundreds of files (tiles/payloads) • Methods to reduce the number of seeks – Use terrain resolution layouts at spawn • Otherwise minutes can pass before stabilization (waiting for file seeks)! – Co-locate overlapping tiles of different types • Store heightfield tile together with color and mask tiles
  • 51. Reducing disc seeks • Methods to reduce the number of seeks (cont’d) – Co-locate nearby tiles • Group leaf node payloads as second LOD in ancestor node • Saves 20-50% seeks in typical scenario Full dataset require 13 seeks Second LOD stored in parent nodes Leaf nodes subject for move in red Full dataset is now 10 seeks
  • 52. Improving throughput • Data tiles are compressed by pipeline – Color tiles are optionally DXT1-compressed – Mask compression • Source tiles (256x256) are chopped up into smaller pieces (66x66) • Empty tile culling • Identical (constant value) tile merging – Physics materials and destruction depth are packed to four bits and RLE-compressed – All tiles are z-compressed
  • 53. Improving throughput • A quadtree node has zero or four children • Incomplete quadtree – We allow zero through four payload children – Reduces bundle size by some 20%+ Complete quadtree with 32 Incomplete quadtree with only tiles at red LOD 20 tiles. Incompleteness saves 12 tiles (37%)
  • 54. Latency under the rug • Even with mentioned improvements, streaming is not instant • General ways of hiding latency – CLOD to smooth most streaming LOD transitions – Global prioritization helps distribute punishment
  • 55. Overview • Scalability – hierarchies, payloads and limitations • Workflows – realtime in-game editing • CPU and GPU performance • Procedural virtual texturing – powerful GPU optimization • Data streaming – minimizing memory footprint • Robustness – global prioritization • Procedural mesh generation • Conclusions
  • 56. Global prioritization • Compute priority for each frame and each quadtree node • Update streaming, virtual texturing and terrain decoration – According to priority • Priority value – 1.0: On target • One pixel per texel • Terrain decoration at specified view distance – < 1.0: Node doesn’t need payload – > 1.0: Node need payload
  • 57. Priority depends on distance and size • Closer nodes have higher priority • Larger nodes have higher priority Observer Priority • Red > 1 • Green = 1 • Blue < 1
  • 58. Priority modified by culling, updates and speed Normal node Node in motion Occluder Node being updated (crater added) Observer Occluded node Priority • Red > 1 • Green = 1 • Blue < 1 Node outside frustum
  • 59. Prioritized update algorithm Pool size (keep pool full) Low prio High prio Frame 0: Nodes Steady state Frame 1: Observer moved Bidirectional Look for payloads to fetch Look for payloads to release update Frame 1: Payload released Frame 2: New payload fetched
  • 60. Prioritized update cost • Priority evaluation and sorting done on SPU – <1ms • Update done on PPU – <0.5ms
  • 61. Overview • Scalability – hierarchies, payloads and limitations • Workflows – realtime in-game editing • CPU and GPU performance • Procedural virtual texturing – powerful GPU optimization • Data streaming – minimizing memory footprint • Robustness – global prioritization • Procedural mesh generation • Conclusions
  • 62. Mesh • Mesh generated from heightfield • Straight-forward tessellation – Rendered in patches of 16x16 triangle pairs – Projected triangle size rougly constant - support destruction everywhere – Blocky crestlines (on console) • PC, Xenon: – Heightfield sampled in vertex shader • PS3: – Vertex shader texture fetch is too slow • Heightfield samples stored in vertex attribute • Heightfield sampled in pixel shader
  • 63. Mesh stitching • A job analyze mesh quadtree and detect LOD switch edges • Edges are stitched by index permutations – Vertices are unchanged No stitch Stitch left Stitch left and bottom
  • 64. DX11 tessellation • Displacement mapping from heightfield – No additional memory needs (heightfield used as normal map) • Straightforward hull and domain shaders • Tessellation factor derived from projected patch edge bounding sphere – Tries to maintain a constant screen-space triangle width
  • 66. Overview • Scalability – hierarchies, payloads and limitations • Workflows – realtime in-game editing • CPU and GPU performance • Procedural virtual texturing – powerful GPU optimization • Data streaming – minimizing memory footprint • Robustness – global prioritization • Procedural mesh generation • Conclusions
  • 67. Conclusions • Frostbite 2 has a robust and competent terrain system – Heightfield, shading, decals, water, terrain decoration • Most aspects scale well – View distance, data resolution, decoration density and distance • Slick workflow – In-game editing – Good range of tools • Good performance (CPU, GPU, memory) – Parallelized, streaming, procedural virtual texture
  • 68. Special thanks • The Frostbite team • Black Box – Andy Routledge – Cody Ritchie – Brad Gour • Criterion – Tad Swift – Matthew Jones – Richard Parr • Dice – Andrew Hamilton
  • 69. Questions? mattias.widmark@dice.se EA Digital Illusions (DICE)

Editor's Notes

  1. BF3 use 32 samples per meterGoing above gives too low frame-to-frame coherency and often unacceptable latencies.