gdc16: improving geometry culling for deus ex: mankind divided by nicolas trudel
TRANSCRIPT
Labs - Siggraph15 - TRX
Improving geometry culling for Deus Ex : Mankind DividedGDC 2016
Otso Mkinen Sampo Lappalainen
Nicolas Trudel
100 GBMANUAL WORK FROM EXPERTS100 MB
Current solutions require a lot of manual work and ad-hoc methods to optimize the content to be consumed without signifacant lag or delay. It is also very time consuming thus expensive and still doesnt scale up to large 3D models.
Existing solution is to use ad-hoc methods and hand optimization to figure out which part of content is transmitted. This requires special skills, is very time consuming and expensive, and does not scale to large 3D models.
Thats why Umbra is now expanding its expertise in gaming to other industries as well to provide solutions to these challenges weve talked about. Im very proud to introduce The Umbra Cloud
3
WHY UMBRA?BETTER FRAME RATESLARGER AND MORE DETAILEDLEVELSAUTOMATESMANUAL WORKALL PLATFORMS
OCCLUSION CULLING
UMBRA OCCLUSION CULLING OVERVIEW
POLYGON SOUP
VISIBLE OBJECTSPre-process
Visibility query
SPATIAL DATABASE
GlossaryObject typesOccluderTargetGateVolume
TomeUmbras spatial database
UP NEXT: SHOW LIVE DEMO FROM FAKE / SIDE BY SIDE COMPARISON7
POLYGON SOUP
VOXELS
CELLS AND PORTALS
VISIBILITY QUERYRasterize portal graph
OCCLUSION BUFFER
RAYCAST & SPATIAL CONNECTIVITY
RaycastAI spatial awarenessSpawn locationsAudio occlusion
Spatial connectivityTopological distanceScripted event activationAudio propagation
Eidos-Montreal Studio14HistoryFounded in 2007Located inyou guessed it!Focus on mature AAA gamesGames developedDeus Ex: Human Revolution (2011)Tomb Raider (2013) Multiplayer ModeThief (2014)Rise of the Tomb Raider (2015) Co-developerDeus Ex : Mankind DividedLabs department : R&D tech for multiple studios/games
v
IMPROVING GEOMETRY CULLING
Dawn EngineEvolution of technologyHeavily modified version of IO Interactives Glacier 2 engineTailored for the needs of Deus Ex franchiseMiddlewares used:UmbraPhysXAPEXBinkScaleformFMODNav Powerv
IMPROVING GEOMETRY CULLING
Dawn Engine - Rendering
vTiled lightingDeferred lighting for opaqueForward lighting for transparentTemporal anti-aliasingfixes a lot of the specular flickering, and smooth out smaller details in objectsTemporal ambient occlusionAlso gave us the best results. Computing ambient occlusion half res, then upsampling over multiple frames
IMPROVING GEOMETRY CULLING
Visuals ExamplesCopyright 2016 Square Enix & Eidos-Montreal. All Rights Reserved
Example SceneWITHOUT TAA
Example SceneWITH TAA
Example SceneSSAO
Dawn Engine - RenderingReflectionUsing SSR with localized cubemapsGlobal illuminationNo lightmapsBaking data with spherical harmonicsPer pixel lighting for opaque1 probe per object for transparentProbes placement: multi-levels, variable density
v
IMPROVING GEOMETRY CULLING
22
Dawn Engine - Rendering
vHairDeveloped by LabsImproved Version of TressFX (see GDC 2015 Presentation)
IMPROVING GEOMETRY CULLING
IMPROVING GEOMETRY CULLING
Deus Ex : Mankind DividedGame InformationRelease date: August 23rd, 2016Urban areas, both indoor and outdoorArtistic vision: create a tangible anticipation, as much with our lighting & material process, as with crafting highly cluttered environmentsOur biggest level is 1 km2, 300M polysv
IMPROVING GEOMETRY CULLING
Occlusion CullingBefore using UmbraPlacement of portals by handToo tedious for map sizesDifficult to know where to place portalsFallback on frustum culling
Motivations for another methodAutomationFaster queries
v
IMPROVING GEOMETRY CULLING
ToolsUmbra parameters, adjustable per scene
By default, whole scene taken into account
vIntegrating Umbra in Dawn Engine
IMPROVING GEOMETRY CULLING
27
ToolsRegions of interest (view volumes)
vIntegrating Umbra in Dawn Engine
IMPROVING GEOMETRY CULLING
28
ToolsRegions of interestUsage of volumesAllows to adjust parameters for a particular regionVisibility options on objectsStaticOccluderOccluder onlyDynamicBakingIn-editor or standaloneAutomatized by build machinesBaking time: ~20 minutes
vIntegrating Umbra in Dawn Engine
IMPROVING GEOMETRY CULLING
29
ToolsBakingOne tome per scene: no streamingExcept one level split in twoUmbra scene and tome data between 15-50 mbHad to create unique ID per objectTransparent objects (objects with at least one transparent material)How to keep one unique ID per object?Add opaque primitives with object ID == 0, as occluders Add all primitives with unique object ID, as targets
vIntegrating Umbra in Dawn Engine
IMPROVING GEOMETRY CULLING
RuntimePortal QueriesMain cameraShadow maps: most of our lights are staticWater reflectionRain accessibilitySome post filtersvIntegrating Umbra in Dawn Engine
IMPROVING GEOMETRY CULLING
RuntimeOcclusion buffersGenerated from queries on static entitiesThen used to accelerate queries for dynamic entitiesCacheUsed for camera independent queriesClient gives a cache IDThe cache is composed ofPointer to occlusion bufferList of visible nodesInvalidate cache when:Registering static entities (could be optimized)Shadow caster data changes (mostly editor)
vIntegrating Umbra in Dawn Engine
IMPROVING GEOMETRY CULLING
Integrating Umbra in Dawn EngineCacheClientClientClientUmbraStatic QueryStatic QueryStatic QueryDynamic Query(object grid and occlusion buffer)Client
IMPROVING GEOMETRY CULLING
RuntimeDynamic objectsOctree used to store themOcclusion buffer used to determine visible cellsIf cell visible, test on objectsWhen no occlusion bufferSame done, but with frustum testOctree also used for static objects not registered to UmbraSky domes, vistas
vIntegrating Umbra in Dawn Engine
IMPROVING GEOMETRY CULLING
RuntimeParallelismPortal queries are split in 4 jobsResult is mergedObject listOcclusion bufferGlobal illuminationBaking offlineHundreds of thousands of probesFirst, simple frustum testCould not use portal queriesUmbra frustum queries improved bake time
vIntegrating Umbra in Dawn Engine
IMPROVING GEOMETRY CULLING
Integrating Umbra in Dawn EngineDEBUGGING TOOLS
IMPROVING GEOMETRY CULLING
Frozen Culling - FrustumDEBUGGING TOOLS
IMPROVING GEOMETRY CULLING
Frozen Culling - UmbraDEBUGGING TOOLS
IMPROVING GEOMETRY CULLINGChallengesUmbra integrated when lots of assets were already createdAt first, too many objects were tagged occluderReduced tome size by halfReduced bake time by halfSometimes difficult to determine if occluder or notContext dependent
vIntegrating Umbra in Dawn Engine
IMPROVING GEOMETRY CULLING
CHALLENGES
IMPROVING GEOMETRY CULLING
CHALLENGES
IMPROVING GEOMETRY CULLINGChallengesVoxelization settingsTrade-off between performance/memory and resultLots of small holes in some mapsReducing detail in lots of sections => micro manage volumes to increase detailAir ventsUsage of occluder only
vIntegrating Umbra in Dawn Engine
IMPROVING GEOMETRY CULLING
CHALLENGES
IMPROVING GEOMETRY CULLING
BENCHMARKS
IMPROVING GEOMETRY CULLING
BENCHMARKS
IMPROVING GEOMETRY CULLING
Simple frustum culling: 6 fps6200 draw calls
With Umbra:30 fps2600 draw calls
Queries (typical frame)Main Camera: 4ms (static: 2ms, dynamic: 2ms)Shadow Casters : 1.4ms (7 shadows casters, dynamic)
vIMPROVING GEOMETRY CULLINGPS4 Benchmarks
IMPROVING GEOMETRY CULLING
Improvements46Bake part of the sceneHave a kind of level of detail for voxelizationHave volumes to exclude voxelization dataBe able to see the voxelization
v
IMPROVING GEOMETRY CULLING
Eidos-Montral is hiring
Eidos-Montral is always looking for the best talent.At Eidos-Montral, you'll find a team of talented and passionate people who aim for the best and are determined to achieve their goals.
vwww.eidosmontreal.com
IMPROVING GEOMETRY CULLING
Any 3D Content, Any Device
IMPROVING GEOMETRY CULLING
48
FEATURESFASTER PRE-PROCESS
IMPROVEDCULLING
MORE ROBUST LESSTWEAKINGUMBRA 3.4soonOCCLUSION CULLING
SPATIAL CONNECTIVITY
RAYCASTQUERYUMBRA 3.3nowVISIBILITY-BASED 3D STREAMING AND OPTIMIZATIONUMBRA 4.0Q3Q4
4.0 Overview
52
Streaming and Rendering of Large 3D Worlds
54
It all starts with the user (e.g. game designer) creating 3D worlds.How It Works
With their tool of choice (Unity, Unreal etc.), they can umbrafy these worlds. This means that they are sent to the Umbra Cloud......or the Umbra Optimizer on a local computer.
Umbra then automatically restructures the data...... and creates an optimized database that is stored locally or in the Umbra Cloud.
When the game, is running, Umbra will...
...tell what to render next with 3D content streaming...report what is visible with occlusion culling...define which version of assets to use (level of detail)
Questions & AnswersThank you for your time & see you next year.