OpenGL ES 3.0 and Beyond How To Deliver Desktop Graphics on Mobile Platforms. Chris Kirkpatrick, Jon Kennedy

Similar documents
OpenCL* and Microsoft DirectX* Video Acceleration Surface Sharing

Intel RealSense Depth Module D400 Series Software Calibration Tool

Intel RealSense D400 Series Calibration Tools and API Release Notes

Krzysztof Laskowski, Intel Pavan K Lanka, Intel

OpenGL Status - November 2013 G-Truc Creation

MICHAL MROZEK ZBIGNIEW ZDANOWICZ

Bitonic Sorting. Intel SDK for OpenCL* Applications Sample Documentation. Copyright Intel Corporation. All Rights Reserved

Drive Recovery Panel

Intel SDK for OpenCL* - Sample for OpenCL* and Intel Media SDK Interoperability

Dave Shreiner, ARM March 2009

Intel Cache Acceleration Software for Windows* Workstation

2013 Intel Corporation

How to Create a.cibd File from Mentor Xpedition for HLDRC

How to Create a.cibd/.cce File from Mentor Xpedition for HLDRC

Intel USB 3.0 extensible Host Controller Driver

Intel Atom Processor D2000 Series and N2000 Series Embedded Application Power Guideline Addendum January 2012

Theory and Practice of the Low-Power SATA Spec DevSleep

Intel Iris Graphics Quick Sync Video Innovation Behind Quality and Performance Leadership

Intel Atom Processor E6xx Series Embedded Application Power Guideline Addendum January 2012

Sample for OpenCL* and DirectX* Video Acceleration Surface Sharing

Intel Xeon Phi Coprocessor. Technical Resources. Intel Xeon Phi Coprocessor Workshop Pawsey Centre & CSIRO, Aug Intel Xeon Phi Coprocessor

Intel Open Source HD Graphics, Intel Iris Graphics, and Intel Iris Pro Graphics

Working with Metal Overview

Software Occlusion Culling

Intel Atom Processor E3800 Product Family Development Kit Based on Intel Intelligent System Extended (ISX) Form Factor Reference Design

Best practices for effective OpenGL programming. Dan Omachi OpenGL Development Engineer

Intel Integrated Native Developer Experience 2015 (OS X* host)

Desktop 4th Generation Intel Core, Intel Pentium, and Intel Celeron Processor Families and Intel Xeon Processor E3-1268L v3

Intel Core TM i7-4702ec Processor for Communications Infrastructure

Jomar Silva Technical Evangelist

Collecting OpenCL*-related Metrics with Intel Graphics Performance Analyzers

Intel and the Future of Consumer Electronics. Shahrokh Shahidzadeh Sr. Principal Technologist

Intel Cache Acceleration Software - Workstation

Intel Core TM Processor i C Embedded Application Power Guideline Addendum

Intel Core 4 DX11 Extensions Getting Kick Ass Visual Quality out of the Latest Intel GPUs

Achieving Performance with OpenCL 2.0 on Intel Processor Graphics. Robert Ioffe, Sonal Sharma, Michael Stoner

Bring Intelligence to the Edge with Intel Movidius Neural Compute Stick

A Trip Down The (2011) Rasterization Pipeline

Intel Open Source HD Graphics Programmers' Reference Manual (PRM)

Intel Stereo 3D SDK Developer s Guide. Alpha Release

Get the most out of the new OpenGL ES 3.1 API. Hans-Kristian Arntzen Software Engineer

Ernesto Su, Hideki Saito, Xinmin Tian Intel Corporation. OpenMPCon 2017 September 18, 2017

Introduction to OpenGL ES 3.0

Copyright Khronos Group Page 1

OIT to Volumetric Shadow Mapping, 101 Uses for Raster Ordered Views using DirectX 12

Intel Atom Processor Based Platform Technologies. Intelligent Systems Group Intel Corporation

Case Study: Optimizing King of Soldier* with Intel Graphics Performance Analyzers on Intel HD Graphics 4000

Starting out with OpenGL ES 3.0. Jon Kirkham, Senior Software Engineer, ARM

CS195V Week 6. Image Samplers and Atomic Operations

Show Me the Money: Monetization Strategies for Apps. Scott Crabtree moderator

Using the Intel VTune Amplifier 2013 on Embedded Platforms

Achieving High-performance Graphics on Mobile With the Vulkan API

Programming with OpenGL Shaders I. Adapted From: Ed Angel Professor of Emeritus of Computer Science University of New Mexico

Mali & OpenGL ES 3.0. Dave Shreiner Jon Kirkham ARM. Game Developers Conference 27 March 2013

Customizing an Android* OS with Intel Build Tool Suite for Android* v1.1 Process Guide

DEFERRED RENDERING STEFAN MÜLLER ARISONA, ETH ZURICH SMA/

Bitonic Sorting Intel OpenCL SDK Sample Documentation

Vulkan on Mobile. Daniele Di Donato, ARM GDC 2016

Programming Guide. Aaftab Munshi Dan Ginsburg Dave Shreiner. TT r^addison-wesley

Specification Update. January 2014

Intel Graphics Virtualization Technology. Kevin Tian Graphics Virtualization Architect

CSE 167: Introduction to Computer Graphics Lecture #7: GLSL. Jürgen P. Schulze, Ph.D. University of California, San Diego Spring Quarter 2016

OpenGL SUPERBIBLE. Fifth Edition. Comprehensive Tutorial and Reference. Richard S. Wright, Jr. Nicholas Haemel Graham Sellers Benjamin Lipchak

High Dynamic Range Tone Mapping Post Processing Effect Multi-Device Version

Intel Open Source HD Graphics Programmers' Reference Manual (PRM)

Shaders. Slide credit to Prof. Zwicker

VR Rendering Improvements Featuring Autodesk VRED

GDC 2014 Barthold Lichtenbelt OpenGL ARB chair

OpenGL Performances and Flexibility. Visual Computing Laboratory ISTI CNR, Italy

Today s Agenda. Basic design of a graphics system. Introduction to OpenGL

Intel Open Source HD Graphics. Programmer's Reference Manual

Real-Time Rendering (Echtzeitgraphik) Michael Wimmer

Intel Embedded Media and Graphics Driver v1.12 for Intel Atom Processor N2000 and D2000 Series

Programming with OpenGL Part 3: Shaders. Ed Angel Professor of Emeritus of Computer Science University of New Mexico

The Intel Processor Diagnostic Tool Release Notes

Compute Shaders. Christian Hafner. Institute of Computer Graphics and Algorithms Vienna University of Technology

Next-Generation Graphics on Larrabee. Tim Foley Intel Corp

Grafica Computazionale: Lezione 30. Grafica Computazionale. Hiding complexity... ;) Introduction to OpenGL. lezione30 Introduction to OpenGL

Product Change Notification

Product Change Notification

Profiling and Debugging Games on Mobile Platforms

Metal Feature Set Tables

More frames per second. Alex Kan and Jean-François Roy GPU Software

Why modern versions of OpenGL should be used Some useful API commands and extensions

Kirk Skaugen Senior Vice President General Manager, PC Client Group Intel Corporation

Deferred Rendering Due: Wednesday November 15 at 10pm

Real - Time Rendering. Graphics pipeline. Michal Červeňanský Juraj Starinský

Programming with OpenGL Shaders I. Adapted From: Ed Angel Professor of Emeritus of Computer Science University of New Mexico

Product Change Notification

OpenGL BOF Siggraph 2011

Intel Cache Acceleration Software (Intel CAS) for Linux* v2.9 (GA)

Analyze and Optimize Windows* Game Applications Using Intel INDE Graphics Performance Analyzers (GPA)

The Transition to PCI Express* for Client SSDs

CSE 167: Lecture #8: GLSL. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

Product Change Notification

Graphics Programming. Computer Graphics, VT 2016 Lecture 2, Chapter 2. Fredrik Nysjö Centre for Image analysis Uppsala University

Product Change Notification

Product Change Notification

True Scale Fabric Switches Series

The Application Stage. The Game Loop, Resource Management and Renderer Design

Transcription:

OpenGL ES 3.0 and Beyond How To Deliver Desktop Graphics on Mobile Platforms Chris Kirkpatrick, Jon Kennedy

Legal Copyright 2014 Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. A "Mission Critical Application" is any application in which failure of the Intel Product could result, directly or indirectly, in personal injury or death. SHOULD YOU PURCHASE OR USE INTEL'S PRODUCTS FOR ANY SUCH MISSION CRITICAL APPLICATION, YOU SHALL INDEMNIFY AND HOLD INTEL AND ITS SUBSIDIARIES, SUBCONTRACTORS AND AFFILIATES, AND THE DIRECTORS, OFFICERS, AND EMPLOYEES OF EACH, HARMLESS AGAINST ALL CLAIMS COSTS, DAMAGES, AND EXPENSES AND REASONABLE ATTORNEYS' FEES ARISING OUT OF, DIRECTLY OR INDIRECTLY, ANY CLAIM OF PRODUCT LIABILITY, PERSONAL INJURY, OR DEATH ARISING IN ANY WAY OUT OF SUCH MISSION CRITICAL APPLICATION, WHETHER OR NOT INTEL OR ITS SUBCONTRACTOR WAS NEGLIGENT IN THE DESIGN, MANUFACTURE, OR WARNING OF THE INTEL PRODUCT OR ANY OF ITS PARTS. Intel may make changes to specifications and product descriptions at any time, without notice. All products, dates, and figures specified are preliminary based on current expectations, and are subject to change without notice. Intel processors, chipsets, and desktop boards may contain design defects or errors known as errata, which may cause the product to deviate from published specifications. Current characterized errata are available on request. Any code names featured are used internally within Intel to identify products that are in development and not yet publicly announced for release. Customers, licensees and other third parties are not authorized by Intel to use code names in advertising, promotion or marketing of any product or services and any such use of Intel's internal code names is at the sole risk of the user. Intel product plans in this presentation do not constitute Intel plan of record product roadmaps. Please contact your Intel representative to obtain Intel s current plan of record product roadmaps. Performance claims: Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. For more information go to http://www.intel.com/performance Iris graphics is available on select systems. Consult your system manufacturer. Intel, Intel Inside, the Intel logo, Intel Core and Iris are trademarks of Intel Corporation in the United States and other countries. 2

Why is OpenGL ES 3.0 and Beyond Important? Android is dominant in the market OpenGL ES 3.1 specification is released at GDC 2014. http://www.khronos.org/registry/gles/ Android 62% OpenGL ES 3.1 is reaching parity with desktop Microsoft 2% IOS 36% Worldwide Tablet Sales to End Users 2013 http://www.gartner.com/newsroom/id/2674215 (Feb 2014) GL1.x GL2.x GL3.x GL4.x OpenGL ES 3.0 is gaining market share ES1.x ES2.0 ES3.0 ES3.1 DX8 DX9 DX10 DX11 92 03 07 12 14 ES 2.0 92% ES 3.0 8% Android OpenGL ES Version Support Distribution https://developer.android.com/about/dashboards/index.html (Feb 2014) 3

New Features for OpenGL ES 3.0 Main new features Multiple Render Targets Occlusion Queries Instanced rendering Uniform Buffer Objects (UBO) and Uniform Blocks Transform feedback Primitive restart Program Binary Enhanced texturing functionality Swizzles, 3D textures, 2D array textures, LOD/MIP level clamps, seamless cube maps, immutable textures, NPOT textures, sampler objects New renderbuffer and texture formats Floating point formats Shared exponent RGB formats ETC/EAC texture compression Depth and depth/stencil formats Single and dual channel texture (R and RG ) ES Shading Language Version 3.00 Full support for 32 bit integer/floating point data types (IEEE754) In/out storage qualifier value copied to/from subsequent/previous pipeline stage Array constructors and operations New built-in functions 4

OpenGL ES 3.0 - Multi-Render Targets What is it? Enables writing to multiple framebuffer color buffer attachment points with a single pass Why is it useful? Techniques requiring multiple passes can be condensed into a single pass to save redundant execution of the vertex shader Useful for Deferred Shading and Screen Space Ambient Occlusion 5

OpenGL ES 3.0 - Multi-Render Targets Enabled by attaching framebuffer-attachable images to GL_COLOR_ATTACHMENTi of a created FBO Support for at least 4 attachment points Intel supports 8 Maximum specified by GL_MAX_COLOR_ATTACHMENTS Most often used in deferred shading i.e. 1 colour buffer for the surface colours 1 colour buffer for the surface normals 1 colour buffer for the depth values 1 colour buffer for extra lighting information, such as specular or ambient occlusion 6

OpenGL ES 3.0 - Multi-Render Targets Sample GL ES API Code Snippet // Create FBO and bind it glgenframebuffers(1, &fbo); glbindframebuffer(gl_framebuffer, fbo); // Create 2 textures, allocate storage and attach to FBO glgentextures(2, texbuf); glframebuffertexture2d(gl_framebuffer, GL_COLOR_ATTACHMENT0, texbuf[0], 0); glframebuffertexture2d(gl_framebuffer, GL_COLOR_ATTACHMENT1, texbuf[1], 0); GLSL Fragment Shader Snippet out vec4 my_fragdata[2]; void main(void) { my_fragdata[0] = vec4(1.0, 0.0, 0.0, 1.0); my_fragdata[1] = vec4(0.0, 1.0, 0.0, 1.0); } // Set the list of draw buffers. Glenum drawbuffers[2] = {GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1}; gldrawbuffers(2, drawbuffers); 7

OpenGL ES 3.0 - Occlusion Queries What is it? A hardware method for detecting whether an object is visible Works by testing if samples pass the depth test Queries are asynchronous, but blocking call available if required Why is it useful? Remove complex scene geometry by culling large batches of geometry via bounding box tests Best on large scenes with large nearby occluders 8

OpenGL ES 3.0 - Occlusion Queries Sample GL ES API Code Snippet glgenqueries(1, &query); glbeginquery(gl_any_samples_passed, query); // Draw some primitives glendquery(query); // Check if the result is available glgetqueryobjectuiv(query, GL_QUERY_RESULT_AVAILABLE, &result); if (result == GL_TRUE) { // This is a blocking call glgetqueryobjectuiv(query, GL_QUERY_RESULT, &anypassed); } 9

OpenGL ES 3.0 - Instanced Rendering What is it? Enables rendering multiple geometry instances with a single draw call Instances may be provided with unique attributes (transformation, bones, etc.) Why is it useful? Reduces API call overhead when rendering duplicate meshes 10

OpenGL ES 3.0 - Instanced Rendering Non-instanced BO s store Vertex, Normal, Tex data Transformations stored as uniform data Set per-instance with gluniformmatrix*... Vertex0 Vertex1 VertexN... Norm0 Norm1 NormN... Tex0 Tex1 TexN...... Attrib0 Attrib1 Attrib2 Mat0 Mat1 MatN Uniform0 for (int i = 0; i < NumInstances; ++i) { gluniformmatrix4fv( );. gldrawelements( ); } Instanced BO s store Vertex, Normal, Tex data Transformations stored in a BO glvertexattribdivisor handles the creation of instanced attributes... Vertex0 Vertex1 VertexN... Norm0 Norm1 NormN Tex0 Tex1... TexN Attrib0 Attrib1 Attrib2 Mat0 Mat1... MatN Attrib3-6 glvertexattribdivisor(3, 1); gldrawelementsinstanced(, NumInstances); 11

OpenGL ES 3.0 - Instanced Rendering Sample GL ES API Code Snippet // Attrib 0 (vertex information) changes per vertex glvertexattribdivisor(0,0) // Attrib 1 (matrix data) changes per instance glvertexattribdivisor(1,1) // When rendering gldrawarraysinstanced(mode, First, Count, NumberOfInstances); // or gldrawelementsinstanced(mode, Count, IndType, Indicies, NumOfInstances); GLES Vertex Shader Code Snippet // By default attributes have a divisor of zero advancing per vertex // Attributes with a positive divisor will advance every divisor instances // The built-in variable gl_instanceid holds the current instance // Default value is zero; safe to reference when not using instanced draw // calls in vec3 Position; // Takes attribute positions 1,2,3,4 in mat4 WorldPosition; // Pass the instance id on to the pixel shader flat out int InstanceID; void main() { gl_position = vec4(worldposition + Position, 1.0); InstanceID = gl_instanceid; }; 12

OpenGL ES 3.1 13

OpenGL ES 3.1 Intel announced support for the OpenGL ES 3.1 specification on the Bay Trail platform for Android. http://blogs.intel.com/technology/2014/03/open-gl-es-gdc-2104-sweet-spot-mobilegraphics-evolution/ Product is based on a published Khronos Specification, and is expected to pass the Khronos Conformance Testing Process when available. Current conformance status can be found at www.khronos.org/conformance. Intel has extended support beyond the core specification to include Geometry Shaders, Tesselation and Intel Pixel Sync Technology. OpenGL ES 3.1 Specification and header files can be found here : http://www.khronos.org/registry/gles/ 14

OpenGL ES 3.1 on Intel s Bay Trail Platform Shader Stages Shader I/O Shader Synchronisation API Helpers Textures Blending GLSL GLSL Extensions Compute Shaders Shader Image Load Store Atomic Counters Indirect Draw Commands Texture Storage Multisample KHR: Blend Equation Advanced Array of Arrays OES: Shader Multisample Interpolation EXT: Tesselation Shader Storage Buffer Objects OES: Shader Image Atomics Framebuffer No Attachments OES: Texture Stencil 8 Explicit Uniform Locations OES: Sample Shading EXT: Geometry Shaders INTEL: Fragment Shader Ordering Program Interface Query Shader Bitfield Operation OES: Sample Variables Separate Shader Objects Shader Layout Binding Core Vertex Attribute Binding Texture Gather Extension Stencil Texturing 15

OpenGL ES 3.1 - Compute Shaders What are they? A compute shader is used for general compute on shader defined inputs with shader defined outputs. Run logically independent of the 3D pipeline. Although well pipelined with 3D primitives. Run at a user defined frequency. Similar to OpenCL Kernels. Allow better integration into 3D applications. Can directly access OpenGL ES textures, images and buffer objects. Can be efficiently pipelined with 3D primitives. Lightweight. HDR using compute shaders Why are they useful? Compute shaders are frequently used on the desktop for image postprocessing, deferred rendering, visibility culling, computer vision, particle physics, etc Cloth using compute shaders 16

OpenGL ES 3.1 - Compute Shaders Compute shaders work on: Workgroups Each workgroups consists of a number of compute shader threads, The user defines the workgroup size and number of workgroups. Both parameters are in 3 dimensions. The workgroup size is fixed at compilation time, The number of workgroups is specified at dispatch time. Compute Shader Threads Each thread can share data with other members of the workgroup via special shared variables, Each thread can issue memory and control barriers to synchronise with other members of the workgroup, Data can not be effectively shared between workgroups, unless via images, buffer objects or atomic counters, Each thread can uniquely identify itself within a workgroup and globally with builtin variables. This is the only method for a thread to determine where to get its input and where to write its output. 17

OpenGL ES 3.1 - Compute Shaders GL ES API Code Snippet Compute shaders also bring: Shader Image Load Store Random read/write access to a single level of a texture map Atomic operations Shader Storage Buffer Objects Random read/write access to variables stored within a buffer object Atomic operations Shader Atomic Counters Backed by buffer object memory They allow the proper sequencing of memory accesses between workgroups These are also available to other shader stages. glgentextures(1, &texhandle); glbindtexture(gl_texture_2d, texhandle); glteximage2d(gl_texture_2d, 0, GL_R32F, 512, 512, 0, GL_RED, GL_FLOAT, NULL); // Bind the texture to an image so it can be written to glbindimagetexture(0, texhandle, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_R32F); gluseprogram(computehandle); GLuint loc = glgetuniformlocation(computehandle, "roll"); gluniform1f(loc, frame*0.01f); // 512^2 threads in blocks of 16^2 gldispatchcompute(512/16, 512/16, 1); GLSL Compute Shader Code Snippet uniform float roll; uniform image2d desttex; layout (local_size_x = 16, local_size_y = 16) in; // 16x16 threads per workgroup void main() { ivec2 storepos = ivec2(gl_globalinvocationid.xy); float localcoef = length(vec2(ivec2(gl_localinvocationid.xy)-8)/8.0); float globalcoef = sin(float(gl_workgroupid.x+gl_workgroupid.y)*0.1 + roll)*0.5; imagestore(desttex, storepos, vec4(1.0-globalcoef*localcoef, 0.0, 0.0, 0.0)); } 18

OpenGL ES 3.1 EXT Extensions Tessellation Shaders What is it? An optional stage in the rendering pipeline that is capable of generating additional geometry More efficient than geometry shaders for high levels of geometry expansion; tessellation can not be used for culling patches. The control shader operates on control points and is responsible for specifying tessellation levels, per-control point position and per patch varyings for the evaluation shader. The evaluation shader outputs the positions/normal/etc. using abstract coordinates from the tesselator Each invocation operates on a single vertex within the tessellated patch Why do you want it? Reduces memory bandwidth/footprint What can you do with it? Progressive LOD, Displacement mapping, Sub-D surfaces, Complex hair modelling Vertex Shader Tessellation Control Shader Tessellator Tessellation Evaluation Shader Geometry Shader Clipping Rasterization 19

OpenGL ES 3.1 EXT Extensions - Geometry Shaders Vertex Shader What are they? A shader which processes the output of the primitive assembler (or the tessellation evaluation shader) Full access to the assembled primitive (points, lines, lines with adjacency, triangles, triangles with adjacency) Output new geometry (points, line strips, triangle strips) does not have to match the input stage Why are they useful? Impostors, Wireframe rendering, NPR, Procedural Geometry, Shadow Volume Extrusion, Geometry Culling Layered rendering(with the appropriate extensions) rendering a single primitive to multiple images without changing render targets Tessellation Control Shader Tessellator Tessellation Evaluation Shader Geometry Shader Clipping Rasterization 20

OpenGL ES 3.1 Intel Extensions Pixel Sync What is it? An Intel OpenGL ES Extension: GL_INTEL_fragment_shader_ordering Adaptive Volumetric Shadow Maps (AVSM) Allows synchronisation to unordered memory accesses from within a shader Add a single builtin to your shader at the point of synchronization beginfragmentshaderorderingintel(); No AVSM Why do you want it? Fragments mapping to the same pixel using unordered memory accesses can cause data races Fragments can be shaded out-of-order What can you do with it? Order independent transparency With AVSM Programmable blending Adaptive volumetric shadow maps Etc http://software.intel.com/en-us/articles/pixel-synchronization-solving-old-graphics-problems-with-new-data-structures Codemasters Grid 2 in-game screenshots 21

OpenGL ES 3.1 More Information More demos can be seen at the Intel Booth (#1016) in the South Hall. You can hear more about OpenGL ES 3.1 and its use in real games by visiting further Intel talks entitled: SSX: Bringing a PS3 game to Android Thursday 10-11AM Adding High-end Graphical Effects to GT Racing 2 on Android x86 Thursday 2:30-3:30 Rendering in Codemasters GRID2 and beyond: Achieving the ultimate graphics on both PC and tablet Thursday 4-5PM 22

Ready for More? Look Inside. Keep in touch with us at GDC and beyond: Game Developer Conference Visit our Intel booth #1016 in Moscone South Intel University Games Showcase Marriott Marquis Salon 7, Thursday 5:30pm RSVP at bit.ly/intelgame Intel Developer Forum, San Francisco September 9-11, 2014 intel.com/idf14 Intel Software Adrenaline @inteladrenaline Intel Developer Zone software.intel.com @intelsoftware 24

Up Next 3:30 4:30 Multi-player, multi-touch game development: Developing games for the fastest growing segment in desktop! Presented by: Alex Guo - Symbio Games & Faisal Habib - Intel 25