ArcGIS Runtime: Maximizing Performance of Your Apps. Will Jarvis and Ralf Gottschalk

Similar documents
ArcGIS Runtime: Styling Maps. Ralf Gottschalk, Daniel Lee, Lucas Danzinger

Dynamic Display Tips and Tricks. John Hauck and Ralf Gottschalk

ArcGIS Runtime: Styling Maps. Lucas Danzinger and Michael Wilburn

Building Basemaps: MapCaches and VectorTiles. Matthias Schenker Gerhard Trichtl

Desktop Mapping: Creating Vector Tiles. Craig Williams

Bringing your Data to Life in the ArcGIS API for JavaScript: Vector Tiles. Craig Williams &

Desktop Mapping: Creating Vector Tiles. Craig Williams &

ArcGIS Runtime: Building 3D Apps. Rex Hansen Adrien Meriaux

Designing and Using Basemaps. Jennifer Hughey

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June

ArcGIS Runtime SDK for.net Getting Started. Jo Fraley

Copyright Khronos Group, Page Graphic Remedy. All Rights Reserved

LPGPU Workshop on Power-Efficient GPU and Many-core Computing (PEGPUM 2014)

What should y you expect in this session? Basic to advanced topics Outline What is map caching? Why should I cache? Caching workflow How to create a c

Shadows for Many Lights sounds like it might mean something, but In fact it can mean very different things, that require very different solutions.

Building Apps with the ArcGIS Runtime SDK for ios

ArcGIS Runtime SDK for Java: A Beginner s Guide. Mark Baird JC Malott

Enabling High-Quality Printing in Web Applications. Tanu Hoque & Craig Williams

Working with Metal Overview

3D in the Browser with WebGL. Chris Andrews 3D Product Manager Javier Gutierrez 3D Product Engineer

Coding OpenGL ES 3.0 for Better Graphics Quality

ArcGIS Runtime: Building Cross-Platform Apps. Rex Hansen Mark Baird Michael Tims Morten Nielsen

PowerVR Hardware. Architecture Overview for Developers

Caching Imagery Using ArcGIS

Visual HTML5. Human Information Interaction for Knowledge Extraction, Interaction, Utilization, Decision making HI-I-KEIUD

Profiling and Debugging Games on Mobile Platforms

ArcGIS Runtime: Working with Maps Online and Offline. Will Crick Justin Colville [Euan Cameron]

Integrating CAD Data with ArcGIS

Getting Started with ArcGIS Runtime SDK for Java SE

Vulkan: Architecture positive How Vulkan maps to PowerVR GPUs Kevin sun Lead Developer Support Engineer, APAC PowerVR Graphics.

Mapbox GL. Modern, Robust, Open Source Maps on Mobile & Web. I did a talk like this at OSB 15, but today we ve realized the promise of a lot of this.

Whiz-Bang Graphics and Media Performance for Java Platform, Micro Edition (JavaME)

Esri Developer Summit in Europe Building Applications with ArcGIS Runtime SDK for Java

Cartographic Techniques and Representations

Optimisation. CS7GV3 Real-time Rendering

NVIDIA Parallel Nsight. Jeff Kiel

ArcGIS Multi-Scale and Generalization

ArcGIS Runtime SDK for WPF

Hit the Ground Running. ArcGIS Runtime SDK for Android

Advanced tips & tricks for building powerful ios/mac apps Divesh Goyal Mark Dostal

Creating 2D Map Caches with

Streaming Massive Environments From Zero to 200MPH

ArcGIS Runtime: Building Cross-Platform Apps. Mike Branscomb Michael Tims Tyler Schiewe

Graphics Performance Optimisation. John Spitzer Director of European Developer Technology

Geographical Information Systems Institute. Center for Geographic Analysis, Harvard University. LAB EXERCISE 1: Basic Mapping in ArcMap

POWERVR MBX. Technology Overview

Best Practices for Designing Effective Map Services

Jomar Silva Technical Evangelist

Web Map Caching and Tiling. Overview David M. Horwood June 2011

ArcGIS Online: Best Practices for High-Demand Web Applications. Kelly Gerrow-Wilcox Bonnie Stayer Beth Romero

Next Generation OpenGL Neil Trevett Khronos President NVIDIA VP Mobile Copyright Khronos Group Page 1

ArcGIS Runtime SDK for.net: Building Xamarin Apps. Rich Zwaap Thad Tilton

Hardware Accelerated Graphics for High Performance JavaFX Mobile Applications

BROWSER. LuciadRIA DATA SHEET

Designing and Using Cached Map Services

Getting Started with the ArcGIS API for JavaScript. Julie Powell, Paul Hann

OpenGL ES 2.0 : Start Developing Now. Dan Ginsburg Advanced Micro Devices, Inc.

ArcGIS Runtime SDK for Android An Introduction. Xueming

Developing Cross-Platform Native Apps with AppStudio for ArcGIS. Jo Fraley Erwin Soekianto

Programming and Design Patterns for the ArcGIS Mobile SDK

Free Downloads OpenGL ES 3.0 Programming Guide

2: Introducing image synthesis. Some orientation how did we get here? Graphics system architecture Overview of OpenGL / GLU / GLUT

RELEASE NOTES FOR TERRAEXPLORER FOR WEB 7.1

ArcGIS Runtime SDKs Building Offline Apps. Nick Furness

RSX Best Practices. Mark Cerny, Cerny Games David Simpson, Naughty Dog Jon Olick, Naughty Dog

Graphics Hardware. Graphics Processing Unit (GPU) is a Subsidiary hardware. With massively multi-threaded many-core. Dedicated to 2D and 3D graphics

Beyond Programmable Shading. Scheduling the Graphics Pipeline

Building Applications with the ArcGIS Runtime SDK for WPF

Architecting ArcGIS Server Solutions for Performance and Scalability

OPENGL RENDERING PIPELINE

Getting Started with the ArcGIS Runtime SDKs. Dave, Will, Euan

Dynamic Situational Awareness. Through Developer Applications

Bringing AAA graphics to mobile platforms. Niklas Smedberg Senior Engine Programmer, Epic Games

Could you make the XNA functions yourself?

Per-Pixel Lighting and Bump Mapping with the NVIDIA Shading Rasterizer

Broken Age's Approach to Scalability. Oliver Franzke Lead Programmer, Double Fine Productions

Bringing it all together: The challenge in delivering a complete graphics system architecture. Chris Porthouse

ArcGIS Desktop The Road Ahead. Amadea Azerki

ArcGIS for Developers: An Introduction. Moey Min Ken

Geographic Information Systems. using QGIS

Introduction to ArcGIS API for Flex. Bjorn Svensson Lloyd Heberlie

How to Work on Next Gen Effects Now: Bridging DX10 and DX9. Guennadi Riguer ATI Technologies

LOD and Occlusion Christian Miller CS Fall 2011

Building Java Apps with ArcGIS Runtime SDK

Building scalable 3D applications. Ville Miettinen Hybrid Graphics

Real - Time Rendering. Pipeline optimization. Michal Červeňanský Juraj Starinský

PowerVR Series5. Architecture Guide for Developers

BEST PRACTICES FOR MAP DESIGN: ADVANCED

Raise your VR game with NVIDIA GeForce Tools

Render-To-Texture Caching. D. Sim Dietrich Jr.

ArcGIS Online: Three-and-a-Half Ways to Create Tile Layers. Eric Anderson & Adam Eversole Esri Support Services

ICIT. Brian Hiller ESRI Account Manger. What s new in ArcGIS 10

Drone2Map: an Introduction. October 2017

Rendering Objects. Need to transform all geometry then

OPENGL AND GLSL. Computer Graphics

Sparkling Effect. February 2007 WP _v01

DOOM 3 : The guts of a rendering engine

Best Development Practices and Patterns Using ArcGIS Runtime SDK for Android. Xueming Wu Puneet Prakash

Advanced Map Labeling using Maplex. Wendy Harrison & Samuel Troth

GPGPU, 1st Meeting Mordechai Butrashvily, CEO GASS

Transcription:

ArcGIS Runtime: Maximizing Performance of Your Apps Will Jarvis and Ralf Gottschalk

Agenda ArcGIS Runtime Version 100.0 Architecture How do we measure performance? We will use our internal Runtime Core Test App and NVIDIA Nsight to understand how we render data in the Runtime - Static vs Dynamic Rendering Mode - Vector Tiles vs Raster Tiles Quick Demo of some rendering improvements we are working on

ArcGIS Runtime v100.0 new Architecture Most of the Runtime implementation has been moved down to C++ - APIs can now focus on platform specific logic - We build functionality once in C++ - New functionality can happen faster Public API Redesign - Unified API design across all platforms - Simplify developer workflows Thins the interop - Positive impact on performance (Java /.NET).NET ios macos Android Java Qt ArcGIS Runtime core

Runtime Display Architecture Powered by the Core Powered by the Runtime Core - Supports DirectX 11, OpenGL, OpenGL ES 2 and 3, and Angle (for Qt) Active display - Operates on a pulse - Runtime determines what, if anything needs to draw - Executes draw commands CPU or GPU The time it takes to execute each pulse determines the refresh interval of the display - Measured as Fames Per Second (FPS) - More frames = smoother interaction with the map

Runtime Display Architecture - Rendering Performance Map interaction starts to suffer when there is more for the GPU to do - Amount of data to process - Loosely related to number of draw calls - Type of draw call Free Memory # of Draw calls Data on GPU Used Memory Frames Per Second

How does the type of call affect performance? Execution occurs on the GPU in an asynchronous queue until State change is required - Think of this as a context switch - We have to switch the shader - Runtime example: drawing points then drawing lines or drawing tiles and then drawing graphics - When a state change occurs - Finish off all remaining draw calls - Runtime batches drawing as much as possible to keep the UI interactive and reduce the number of state changes State changes are normal and unavoidable - But the decisions you make with your data can help minimize their occurrence and maximize the performance of your app

Rendering 2 Modes CPU and GPU based rendering CPU - Tons of processing power - Uses the system memory - Powerful processing at the expense of heat generation and battery usage GPU - Extremely efficient certain types of processing - A smaller amount of dedicated memory, or could share system memory - Uses less battery and generates less heat

GPU vs CPU Based Rendering Why not use the GPU for everything? - Well it gets complicated Most maps in the Runtime are created on a Desktop - This mean we have to render any data you throw at us - Cartographic quality is important - Runtime supports a large variety of devices - Some great and some not so great - GPU memory and processing power can be and issue - We are working on scaled functionality, but there still is a lot of work to do Transferring data between the CPU and GPU is expensive - It s a onetime hit, but still a hit

Static and Dynamic Rendering Modes Static Mode: - CPU based rendering - On demand rendering - Designed for cartographic quality - The amount of data doesn t really impact your frames per second Dynamic Mode: - GPU based rendering - Always rendering - We can do cool things directly on the GPU - The amount of data does impact your frames per second

Static Rendering Mode for Graphics Graphics rendered as paths onto an image - Cartography is maintained - Great for Advanced Symbology Multilayered Pro Symbology / Military Symbology Image is broken into blocks for partial updates Blocks are converted into textures Triangles are created based on textures for proper placement All static graphics layers will render together - No state change required System Memory GPU Memory

Dynamic Rendering Mode for Graphics We convert the symbols into textures and store them in a texture mosaic on the GPU Geometries are converted to triangles - Could lead to a lot of triangles - Geometry complexity will use more GPU resources At render time the textures are applied to the triangles Moving or rotating dynamic graphics performs great because - Dynamic graphics are always drawing System Memory GPU Memory

Dynamic Rendering Mode Symbol Rendering Symbol Texture Texture Mosaic Points symbols pushed to the texture map Lines and Polygons - Snapshot of the the symbol pattern Texture is overlaid on the geometry - Extremely fast and inexpensive to render - Slight compromise in cartographic quality for lines and polygons (Advanced Symbols) - Gaps in textures from extreme angles are smoothed - Does require additional processing - At v100.0 this processing has been moved to the GPU

Static vs Dynamic Mode - Graphics Will Jarvis

Static vs Dynamic Mode for Graphics CPU Static Rendering GPU Dynamic Rendering Map View Pulse Dynamic Data Draws every pulse Static Data Only draws on change Resulting image pushed to GPU

Polygon Rendering Polygons are effectively 2 geometries - Polygon and it s outline - This could lead to lots and lots of triangles - Ultimately leads to more data to process on the GPU - Does that mean there is a state change when switching between polygons and lines? - Yes and no - Polygons with Simple Symbols as the outline rendered with one shader - No state change required - Polygons with Advanced Symbols - Due to the complexity of the symbol more processing is required for cartographic accuracy Static Mode - Same number of textures regardless of number of polygons or outlines

Polygon Rendering Will Jarvis

Static vs Dynamic Tile Rendering Raster Tile Layers - Static Mode of Tiled Layers - Collection of Image Tiles cooked with a set schema at specific Levels of Detail (LOD) - Fast performance - It s just an image no client level processing is required Vector Tile Layers - Dynamic Mode of Tiled Layers - Highly compressed vector data cooked with a set schema at specific Levels of Detail (LOD) - Client must render the data on the fly

Raster vs Vector Tiles Raster Tile Layers Images cooked at a specific DPI - Easily converted to textures - Extremely fast rendering performance - Large areas might take up quite a bit of disk space - Depending on the DPI they might not looks that great on high res devices - Map authoring does not matter as the entire map is backed into tiles At v100.0 they behave slightly different depending on the layer collection the tiles reside in

Raster vs Vector Tiles Raster Tile Layers When used in the Basemap Layers collection We use Skin of the Earth style rendering - Coarse tiles are resampled as a place holder for missing tiles until they become available - This way we will always render something Designed specifically for continuous coverage data LOD 0 Coarse tile Resampled Current Scale LOD 11 Missing tile

Raster vs Vector Tiles Raster Tile Layers When used in the Reference Layers collection - Designed to only render the LOD we are at - Specifically for tiles with lots of transparency - Place names, streets, etc - When zooming to a new LOD previous LOD is cleared out When used in the Operational Layers collection - Basically a mix of both Basemap and Reference layers - Resampling is much less - Keep older tiles around when necessary to avoid the data from flashing

Raster vs Vector Tiles Vector Tile Layers Work great on high DPI devices - Small in size - Indexed vector tiles are even smaller - Data is more dynamic - Labels and point data stay screen aligned Performance is data driven - Client needs to process and render the data, just like dynamic graphics Proper map authoring is critical to Vector Tile performance - More data, more layer result in more draw calls - These draw calls are fairly inexpensive, but the more your have

Raster vs Vector Tile Rendering Will Jarvis

Fonts Wait, Fonts? What does that have to do with performance? ArcGIS Runtime v100.0 has an automatic font fallback mechanism - We try to find the font specified by the developer - If it does not exist we leverage the platform to find the next suitable font - If a font does not have a glyph we find the most suitable font that does - Example: Korean text, but your font has no Korean glyphs - This can take time depending on the text No font is universal for all platforms - It is the author / developer's responsibility to verify if the font exists

A Sneak Peek Into the Future Ralf Gottschalk