gdc16: improving geometry culling for deus ex: mankind divided by nicolas trudel

59
Improving geometry culling for Deus Ex : Mankind Divided GDC 2016 Otso Mäkinen Sampo Lappalainen Nicolas Trudel

Upload: umbra-software

Post on 16-Apr-2017

2.611 views

Category:

Technology


1 download

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.