SlideShare a Scribd company logo
1 of 39
Download to read offline
Optimizing Unity Games
for Mobile Platforms
Angelo Theodorou
Software Engineer
Unite 2013, 28th
-30th
August
2
Agenda
 Introduction
 The author and ARM
 Preliminary knowledge
 Unity Pro, OpenGL ES 3.0
 Identify the bottleneck
 CPU
 Vertex processing
 Fragment processing
 Bandwidth
 Profiling tools
 The Unity Profiler (Pro only)
 ARM DS-5 Streamline Performance Analyzer
 Example application overview
3
Introduction
4
The Author
 Angelo Theodorou
 Software Engineer
 Media Processing Division, ARM®
Ltd.
 Mali™
Ecosystem Use-Cases team
 B.Sc. In Computer Science
 Studied at Università degli Studi di Napoli “Federico II”, Italy
 Worked on the game From Cheese in the past
 Website: http://www.fromcheese.com
 Grand Prize winner at the Samsung Smart App Challenge 2012
 Made with Unity™
Pro 3.5
 Responsible for SPen integration and additional programming
5
ARM Ltd.
 Founded at the end of 1990, 13 engineers and a CEO
 Main goal was to design low power embedded 32bit
processors, but to never build them
 Now more than 2500 employees
 More than 1000 in Cambridge, the headquarters
 Hundreds of partners, a fundamental part of our business
 The business model is based on licenses and royalties
 ARM technology is everywhere: mobile, embedded,
enterprise, home
6
Mali GPUs
Performance
2012 2013 2014
Mali-T604
First Midgard
architecture product
OpenGL ES 3.0 support
Scalable to 4 cores
Mali-T624
Mali-T628
50% performance uplift
OpenGL ES 3.0 support
Scalable to 8 cores
Mali-T678
High end solution
Max compute capability
Date of production chips
Performance
2009 2010 2011 2012 2013
Mali-400 MP
First OpenGL ES 2.0 multicore GPU
Scalable from 1 to 4 cores
Low cost solution with Mali-300
Mali-300
OpenGL® ES 2.0 compliant
Mali-450 MP
2x Mali-400 performance
Scalable up to 8 cores
Leading OpenGL ES 2.0
performance
Date of production chips
7
Preliminary knowledge
 What is a draw call?
 A call to a function of the underlying API (e.g. OpenGL ES) to draw
something on screen
 What is a fragment?
 A candidate pixel which may or may not end up on screen for different
reasons (e.g. being discarded, being overwritten, etc.)
 Differences between opaque and transparent render queue
 Objects in the first queue are rendered in front to back order to make
use of depth testing and minimize the overdraw, transparent ones are
rendered afterwards in back to front order to preserve correctness
 What does batching mean?
 To group similar draw calls in one call operating on the whole data set
 Why mobile platforms are different?
 Immediate vs deferred rendering
8
Why mobile platforms are different?
 Desktop platforms
 Immediate mode: graphics commands are executed when issued
 Huge amount of bandwidth available between GPU and dedicated
video memory (>100 GB/s)
 No strict limits in size, power consumption or heat generation
 Mobile platforms
 Deferred mode: graphics commands are collected by the driver and
issued later
 Tile based: rendering occurs in a small on-chip buffer before being
written to memory
 Bandwidth is severely reduced (~5 GB/s) and transferring data needs
a great amount of power
 Memory is unified and shared between CPU and GPU
9
Unity Pro
 Pro only optimization features:
 Profiler
 Level of Detail
 Occlusion Culling
 Light Probes
 Static Batching
10
OpenGL ES 3.0
 Available with Unity 4.2, Android 4.3 and Mali-T6xx
 Transform feedback
 Can write vertex shader output to a buffer object for data reuse
 ETC2 and EAC texture compression formats
 Support for RGBA (ETC2) and one/two channels textures (EAC)
 Occlusion queries
 Can query the number of samples drawn to determine visibility
 Geometry instancing
 Plenty of instances of the same object but with unique properties
 Primitive restart, Uniform Buffer Objects, Pixel Buffer Objects,
Fences, FP/3D/depth textures, Multiple Render Targets, …
11
Identify the bottleneck
12
Identify the bottleneck
 CPU
 Too many draw calls
 Complex scripts or physics
 Vertex processing
 Too many vertices
 Too much computation per vertex
 Fragment processing
 Too many fragments, overdraw
 Too much computation per fragment
 Bandwidth
 Big and uncompressed textures
 High resolution framebuffer
13
CPU Bound
 Too many draw calls
 Static batching (Unity Pro only)
 Dynamic batching (automatic)
 Frustum culling (automatic)
 Occlusion culling (Unity Pro only)
 Complex scripts
 Component caching
 Pool of objects
 Reduced Unity GUI calls
 OnBecomeVisible()/OnBecomeInvisible()
 Timed coroutines instead of per frame updates
 Complex physics
 Compound colliders instead of mesh ones
 Increased duration of “Fixed Timestep” (TimeManager)
16
Vertex Bound
 Too many vertices in geometry
 Remove unnecessary vertices
 Remove unnecessary hard edges and UV seams
 Use LOD switching through LODGroup (Unity Pro only)
 Frustum culling (automatic)
 Occlusion culling (Unity Pro only)
 Too much computation per vertex
 Use the mobile version of Unity shaders whenever you can
17
Vertex Bound – Level of Detail
 Use LODGroup to limit vertex count when geometric detail is
not strictly needed (very far or small objects)
 Geometric objects can be replaced by billboards at long distance
18
Fragment Bound
 Overdraw
 When you are drawing to each pixel on screen more than once
 Drawing your objects front to back instead of back to front reduces
overdraw, thanks to depth testing
 Limit the amount of transparency in the scene (beware of particles!)
 Unity has a render mode to show the amount of overdraw per pixel
 Too much computation per fragment
 Bake as much as you can (lightmaps, light probes, etc.)
 Contain the number of per-pixel lights
 Limit real-time shadows (only high end mobile devices, Unity 4 Pro)
 Try to avoid full screen post-processing
 Use the mobile version of Unity shaders whenever you can
19
Fragment Bound – Overdraw
 Use the specific render mode to check the overdraw amount
22
Bandwidth Bound
 Use texture compression
 ETC1 with OpenGL ES 2.0, ETC2 and EAC with OpenGL ES 3.0
 ASTC is the new Khronos standard soon to be supported by Unity
 Use MIP maps
 More memory but improved image quality (less aliasing artefacts)
 Optimized memory bandwidth (when sampling from smaller maps)
 Use 16bits textures where you can cope with reduced detail
 Use trilinear and anisotropic filtering in moderation
23
Bandwidth Bound – Mipmaps
 Use the specific render mode to check mipmaps levels
24
Profiling tools
25
Unity Profiler
 It instruments the code to provide detailed per-frame
performance data
 It provides specific data about:
 CPU Usage
 Rendering
 GPU Usage
 Memory
 Physics
 Audio
 Can profile content running on mobile devices
 Only available in Unity Pro
26
Unity Profiler – CPU Usage
 It shows CPU utilization for rendering, scripts, physics,
garbage collection, etc.
 It shows detailed info about how the time was spent
 You can enable Deep Profile for additional data about all the
function calls occurring in your scripts
 You can manually instrument specific blocks of code with
Profiler.BeginSample()and Profiler.EndSample()
27
Unity Profiler – Rendering
 Statistics about the rendering subsystem
 Draw calls
 Triangles
 Vertices
 The lower pane shows data similar to the rendering statistics
window of the editor
28
Unity Profiler – Memory
 It shows memory used/reserved on a higher level
 Unity native allocations
 Garbage collected Mono managed allocations
 Graphics and audio total used memory estimation
 Memory used by the profiler data itself
 It also shows memory used by assets/objects
 Textures
 Meshes
 Materials
 Animation clips
 Audio clips
 New detailed breakdown since Unity 4.1
29
Unity Profiler – GPU Usage
 It shows a contribution breakdown similar to the CPU profiler
 Rendering of opaque objects
 Rendering of transparent objects
 Shadows
 Deferred shading passes
 Post processing
 Not yet available on mobile platforms 
32
ARM Streamline Performance Analyzer
Filmstrip
CPU Activity
S/W Counters
H/W Counters
GPU Activity
API Events
Heatmap
34
Example application overview
35
Example application overview
 Composed of seven different scenes
 Geometry (high vertex count, frustum culling)
 LOD (using level of detail through LODGroup)
 Particles (transparent rendering)
 Texture (MIP mapping and compression)
 Overdraw (alpha blending and alpha test)
 Lights (vertex and pixel lighting)
 Atlas (texture atlas)
 Most of them are based on a Prefab and Instantiate()
 All instances are created at once in the beginning and deactivated
 Number of active instances can adapt to maintain a target FPS value
 Positioning is made in screen space and based on camera aspect
36
Geometry Scene
 Stressing the vertex units with lots of high poly objects
 You can set the amount of visible objects or a target FPS value
 It is possible to rotate and translate the camera to show
frustum culling in action (and lack of occlusion culling)
Increasing the number
of visible objects
Most of the objects are
out of camera view,
frustum culling is working
Most of the objects are
hidden behind front ones,
but occlusion culling is
not enabled
More time spent on
rendering (green)
37
LOD Scene
 LODGroup with three different levels
 Triangles and Vertices spikes match LOD level switch, draw
calls are dependent on frustum culling
Switching LOD
38
Particles Scene
 All the rendering is done in the “Transparent Queue”
 Perfect case of geometry batching (one draw call per emitter)
Geometry Scene Particles Scene
39
Texture Scene
 Compressed texture with MIP maps (right) takes less
memory and looks better than uncompressed one (left)
Uncompressed, bilinear filtering ETC compressed, trilinear filtering, MIP mapped
40
Overdraw Scene
 Alpha blended quads are rendered in the transparent queue,
alpha tested ones in the opaque queue, same performances
Overdraw
render mode
41
Lights Scene (1/2)
 Per-pixel lighting uses a draw call per light (forward
rendering)
 Per-vertex lighting uses one geometric pass per object,
lighting information is a vertex attribute
4 lights, adding
more objects
4x250
lights, 1198
draw calls
3x250
lights, 966
draw calls
2x250
lights, 734
draw calls
250 lights,
502 draw
calls
No lights, 39
draw calls (232
batched)
Per-pixel: 4x250 lights, 1198 draw calls
Per-vertex: 4x250 lights, 270 draw calls
42
Lights Scene (2/2)
 MeshRenderer.Render takes 5 times the amount of ms
when performing per-pixel lighting (one pass per light)
Per-pixel lighting
Per-vertex lighting
43
Atlas Scene (1/2)
 No Atlas rendering
 Each instance has its own texture
 Same material if multiple instances share the same texture
 One draw call per material (multiple instances)
 Atlas rendering changing material UV
 Each instance share the same texture atlas
 UV coordinates are changed using mainTextureScale and
mainTextureOffset
 Leads to a new unique material per instance and breaks instancing
 One draw call per instance
 Atlas rendering changing mesh UV
 Each instance share the same texture atlas
 UV coordinates are changed accessing the instance mesh
 One draw call for all the instances (single material)
44
Atlas Scene (2/2)
No Atlas texture
 60 FPS
 50 draw calls, 374 batched
 21 materials
Atlas with material UV
 40 FPS
 408 draw calls, 0 batched
 395 materials
No batching, lots of materials!
Atlas with mesh UV
 60 FPS
 35 draw calls, 374 batched
 21 materials
Batching works, less draw calls
45
Links
 Practical Guide to Optimization for Mobiles (Unity Manual)
 Optimizing Graphics Performance (Unity Manual)
 Profiler (Unity Manual)
 ShadowGun: Optimizing for Mobile Sample Level (Unity Blog)
 “Fast Mobile Shaders” talk at SIGGRAPH 2011 (Unity Blog)
 Introducing the new Memory Profiler (Unity Blog)
 Unity 4.2 has arrived (Unity Blog)
 http://malideveloper.arm.com/
 OpenGL ES 3.0 Developer Resources (Mali Developer Center)
 ASTC Texture Compression: ARM Pushes the Envelope in Graphics
Technology (ARM Blogs)
46
The End

More Related Content

What's hot

Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingElectronic Arts / DICE
 
Mobile Performance Tuning: Poor Man's Tips And Tricks
Mobile Performance Tuning: Poor Man's Tips And TricksMobile Performance Tuning: Poor Man's Tips And Tricks
Mobile Performance Tuning: Poor Man's Tips And TricksValentin Simonov
 
Practical guide to optimization in Unity
Practical guide to optimization in UnityPractical guide to optimization in Unity
Practical guide to optimization in UnityDevGAMM Conference
 
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
 
GDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham OriginsGDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham OriginsColin Barré-Brisebois
 
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Unity Technologies
 
Optimization in Unity: simple tips for developing with "no surprises" / Anton...
Optimization in Unity: simple tips for developing with "no surprises" / Anton...Optimization in Unity: simple tips for developing with "no surprises" / Anton...
Optimization in Unity: simple tips for developing with "no surprises" / Anton...DevGAMM Conference
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game EngineJohan Andersson
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
 
The Next Generation of PhyreEngine
The Next Generation of PhyreEngineThe Next Generation of PhyreEngine
The Next Generation of PhyreEngineSlide_N
 
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
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2Guerrilla
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Johan Andersson
 
Taking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationTaking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationGuerrilla
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14AMD Developer Central
 

What's hot (20)

DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
Moving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based RenderingMoving Frostbite to Physically Based Rendering
Moving Frostbite to Physically Based Rendering
 
Mobile Performance Tuning: Poor Man's Tips And Tricks
Mobile Performance Tuning: Poor Man's Tips And TricksMobile Performance Tuning: Poor Man's Tips And Tricks
Mobile Performance Tuning: Poor Man's Tips And Tricks
 
Practical guide to optimization in Unity
Practical guide to optimization in UnityPractical guide to optimization in Unity
Practical guide to optimization in Unity
 
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
 
GDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham OriginsGDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
 
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
 
Optimization in Unity: simple tips for developing with "no surprises" / Anton...
Optimization in Unity: simple tips for developing with "no surprises" / Anton...Optimization in Unity: simple tips for developing with "no surprises" / Anton...
Optimization in Unity: simple tips for developing with "no surprises" / Anton...
 
Lighting you up in Battlefield 3
Lighting you up in Battlefield 3Lighting you up in Battlefield 3
Lighting you up in Battlefield 3
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game Engine
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 
Lighting the City of Glass
Lighting the City of GlassLighting the City of Glass
Lighting the City of Glass
 
The Next Generation of PhyreEngine
The Next Generation of PhyreEngineThe Next Generation of PhyreEngine
The Next Generation of PhyreEngine
 
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
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
 
Taking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationTaking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next Generation
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
Vertex Shader Tricks by Bill Bilodeau - AMD at GDC14
 
Frostbite on Mobile
Frostbite on MobileFrostbite on Mobile
Frostbite on Mobile
 

Viewers also liked

유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.ozlael ozlael
 
NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기
NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기
NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기석의 임
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기MinGeun Park
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.ozlael ozlael
 

Viewers also liked (6)

Devtree illu
Devtree illuDevtree illu
Devtree illu
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
 
NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기
NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기
NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
 

Similar to Unite 2013 optimizing unity games for mobile platforms

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
 
FGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie TycoonFGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie Tycoonmochimedia
 
PhD defense talk (portfolio of my expertise)
PhD defense talk (portfolio of my expertise)PhD defense talk (portfolio of my expertise)
PhD defense talk (portfolio of my expertise)Gernot Ziegler
 
OpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI PlatformsOpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI PlatformsPrabindh Sundareson
 
Realtime 3D Visualization without GPU
Realtime 3D Visualization without GPURealtime 3D Visualization without GPU
Realtime 3D Visualization without GPUTobias G
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Johan Andersson
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for GamesUmbra
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for GamesSampo Lappalainen
 
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016 OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016 otoyinc
 
Gpu presentation
Gpu presentationGpu presentation
Gpu presentationspartasoft
 
Unity best practices (2013)
Unity best practices (2013)Unity best practices (2013)
Unity best practices (2013)Benjamin Robert
 
GFX Part 1 - Introduction to GPU HW and OpenGL ES specifications
GFX Part 1 - Introduction to GPU HW and OpenGL ES specificationsGFX Part 1 - Introduction to GPU HW and OpenGL ES specifications
GFX Part 1 - Introduction to GPU HW and OpenGL ES specificationsPrabindh Sundareson
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Prabindh Sundareson
 
graphics processing unit ppt
graphics processing unit pptgraphics processing unit ppt
graphics processing unit pptNitesh Dubey
 
Your Game Needs Direct3D 11, So Get Started Now!
Your Game Needs Direct3D 11, So Get Started Now!Your Game Needs Direct3D 11, So Get Started Now!
Your Game Needs Direct3D 11, So Get Started Now!Johan Andersson
 
Commandlistsiggraphasia2014 141204005310-conversion-gate02
Commandlistsiggraphasia2014 141204005310-conversion-gate02Commandlistsiggraphasia2014 141204005310-conversion-gate02
Commandlistsiggraphasia2014 141204005310-conversion-gate02RubnCuesta2
 
XLcloud 3-d remote rendering
XLcloud 3-d remote renderingXLcloud 3-d remote rendering
XLcloud 3-d remote renderingMarius Preda PhD
 
Cogent3 d master slides (12 april 2009)
Cogent3 d master slides (12 april 2009)Cogent3 d master slides (12 april 2009)
Cogent3 d master slides (12 april 2009)Danny Bronson
 

Similar to Unite 2013 optimizing unity games for mobile platforms (20)

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 ...
 
FGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie TycoonFGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie Tycoon
 
PhD defense talk (portfolio of my expertise)
PhD defense talk (portfolio of my expertise)PhD defense talk (portfolio of my expertise)
PhD defense talk (portfolio of my expertise)
 
OpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI PlatformsOpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI Platforms
 
Realtime 3D Visualization without GPU
Realtime 3D Visualization without GPURealtime 3D Visualization without GPU
Realtime 3D Visualization without GPU
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for Games
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for Games
 
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016 OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
OTOY Presentation - 2016 NVIDIA GPU Technology Conference - April 5 2016
 
Gpu presentation
Gpu presentationGpu presentation
Gpu presentation
 
Unity best practices (2013)
Unity best practices (2013)Unity best practices (2013)
Unity best practices (2013)
 
GFX Part 1 - Introduction to GPU HW and OpenGL ES specifications
GFX Part 1 - Introduction to GPU HW and OpenGL ES specificationsGFX Part 1 - Introduction to GPU HW and OpenGL ES specifications
GFX Part 1 - Introduction to GPU HW and OpenGL ES specifications
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011
 
FIR filter on GPU
FIR filter on GPUFIR filter on GPU
FIR filter on GPU
 
graphics processing unit ppt
graphics processing unit pptgraphics processing unit ppt
graphics processing unit ppt
 
Your Game Needs Direct3D 11, So Get Started Now!
Your Game Needs Direct3D 11, So Get Started Now!Your Game Needs Direct3D 11, So Get Started Now!
Your Game Needs Direct3D 11, So Get Started Now!
 
Commandlistsiggraphasia2014 141204005310-conversion-gate02
Commandlistsiggraphasia2014 141204005310-conversion-gate02Commandlistsiggraphasia2014 141204005310-conversion-gate02
Commandlistsiggraphasia2014 141204005310-conversion-gate02
 
Graphics processing unit
Graphics processing unitGraphics processing unit
Graphics processing unit
 
XLcloud 3-d remote rendering
XLcloud 3-d remote renderingXLcloud 3-d remote rendering
XLcloud 3-d remote rendering
 
Cogent3 d master slides (12 april 2009)
Cogent3 d master slides (12 april 2009)Cogent3 d master slides (12 april 2009)
Cogent3 d master slides (12 april 2009)
 

More from ナム-Nam Nguyễn

Application parallelisation Android - Klaas Vangend
Application parallelisation Android - Klaas VangendApplication parallelisation Android - Klaas Vangend
Application parallelisation Android - Klaas Vangendナム-Nam Nguyễn
 
AI in Games- Steering, Wander and Flocking behavior
AI in Games- Steering, Wander and Flocking behaviorAI in Games- Steering, Wander and Flocking behavior
AI in Games- Steering, Wander and Flocking behaviorナム-Nam Nguyễn
 
Improved Alpha-Tested Magnification for Vector Textures and Special Effects
Improved Alpha-Tested Magnification for Vector Textures and Special EffectsImproved Alpha-Tested Magnification for Vector Textures and Special Effects
Improved Alpha-Tested Magnification for Vector Textures and Special Effectsナム-Nam Nguyễn
 
China mobile games and entertainment group
China mobile games and entertainment group China mobile games and entertainment group
China mobile games and entertainment group ナム-Nam Nguyễn
 
Success stories compilation of game-based learning initiatives in adults educ...
Success stories compilation of game-based learning initiatives in adults educ...Success stories compilation of game-based learning initiatives in adults educ...
Success stories compilation of game-based learning initiatives in adults educ...ナム-Nam Nguyễn
 
CEO Survey Report of Japanese Video Game Developers - Mirko Ernkvist
CEO Survey Report of Japanese Video Game Developers - Mirko ErnkvistCEO Survey Report of Japanese Video Game Developers - Mirko Ernkvist
CEO Survey Report of Japanese Video Game Developers - Mirko Ernkvistナム-Nam Nguyễn
 
Possibilities of non commercial game
Possibilities of non commercial gamePossibilities of non commercial game
Possibilities of non commercial gameナム-Nam Nguyễn
 
Children's Books, Stories and Songs - Children literature
Children's Books, Stories and Songs - Children literatureChildren's Books, Stories and Songs - Children literature
Children's Books, Stories and Songs - Children literatureナム-Nam Nguyễn
 
Physics for Game Programmers: Spatial Data Structures
Physics for Game Programmers: Spatial Data StructuresPhysics for Game Programmers: Spatial Data Structures
Physics for Game Programmers: Spatial Data Structuresナム-Nam Nguyễn
 
The Economics of the “China Price”
The Economics of the “China Price”The Economics of the “China Price”
The Economics of the “China Price”ナム-Nam Nguyễn
 
Playability and Player Experience Research
Playability and Player Experience ResearchPlayability and Player Experience Research
Playability and Player Experience Researchナム-Nam Nguyễn
 
Android Lifecycle Basics in Practice.
Android Lifecycle Basics in Practice.Android Lifecycle Basics in Practice.
Android Lifecycle Basics in Practice.ナム-Nam Nguyễn
 
Practical Source Code for Ship Motions Time Domain Numerical Analysis and Its...
Practical Source Code for Ship Motions Time Domain Numerical Analysis and Its...Practical Source Code for Ship Motions Time Domain Numerical Analysis and Its...
Practical Source Code for Ship Motions Time Domain Numerical Analysis and Its...ナム-Nam Nguyễn
 
Luoc su duc phat thich nu hue ngan core- da chuyen
Luoc su duc phat   thich nu hue ngan core- da chuyenLuoc su duc phat   thich nu hue ngan core- da chuyen
Luoc su duc phat thich nu hue ngan core- da chuyenナム-Nam Nguyễn
 

More from ナム-Nam Nguyễn (20)

Application parallelisation Android - Klaas Vangend
Application parallelisation Android - Klaas VangendApplication parallelisation Android - Klaas Vangend
Application parallelisation Android - Klaas Vangend
 
Getting Native with NDK
Getting Native with NDKGetting Native with NDK
Getting Native with NDK
 
AI in Games- Steering, Wander and Flocking behavior
AI in Games- Steering, Wander and Flocking behaviorAI in Games- Steering, Wander and Flocking behavior
AI in Games- Steering, Wander and Flocking behavior
 
Bullet Physic Engine SDK
Bullet Physic Engine SDKBullet Physic Engine SDK
Bullet Physic Engine SDK
 
Improved Alpha-Tested Magnification for Vector Textures and Special Effects
Improved Alpha-Tested Magnification for Vector Textures and Special EffectsImproved Alpha-Tested Magnification for Vector Textures and Special Effects
Improved Alpha-Tested Magnification for Vector Textures and Special Effects
 
China mobile games and entertainment group
China mobile games and entertainment group China mobile games and entertainment group
China mobile games and entertainment group
 
Success stories compilation of game-based learning initiatives in adults educ...
Success stories compilation of game-based learning initiatives in adults educ...Success stories compilation of game-based learning initiatives in adults educ...
Success stories compilation of game-based learning initiatives in adults educ...
 
CEO Survey Report of Japanese Video Game Developers - Mirko Ernkvist
CEO Survey Report of Japanese Video Game Developers - Mirko ErnkvistCEO Survey Report of Japanese Video Game Developers - Mirko Ernkvist
CEO Survey Report of Japanese Video Game Developers - Mirko Ernkvist
 
Abusing mobilegames
Abusing mobilegamesAbusing mobilegames
Abusing mobilegames
 
Possibilities of non commercial game
Possibilities of non commercial gamePossibilities of non commercial game
Possibilities of non commercial game
 
Children's Books, Stories and Songs - Children literature
Children's Books, Stories and Songs - Children literatureChildren's Books, Stories and Songs - Children literature
Children's Books, Stories and Songs - Children literature
 
MGI Big data full report
MGI Big data full reportMGI Big data full report
MGI Big data full report
 
Ai.game.wisdom
Ai.game.wisdomAi.game.wisdom
Ai.game.wisdom
 
Physics for Game Programmers: Spatial Data Structures
Physics for Game Programmers: Spatial Data StructuresPhysics for Game Programmers: Spatial Data Structures
Physics for Game Programmers: Spatial Data Structures
 
The Economics of the “China Price”
The Economics of the “China Price”The Economics of the “China Price”
The Economics of the “China Price”
 
Smoothed Particle Hydrodynamics
Smoothed Particle HydrodynamicsSmoothed Particle Hydrodynamics
Smoothed Particle Hydrodynamics
 
Playability and Player Experience Research
Playability and Player Experience ResearchPlayability and Player Experience Research
Playability and Player Experience Research
 
Android Lifecycle Basics in Practice.
Android Lifecycle Basics in Practice.Android Lifecycle Basics in Practice.
Android Lifecycle Basics in Practice.
 
Practical Source Code for Ship Motions Time Domain Numerical Analysis and Its...
Practical Source Code for Ship Motions Time Domain Numerical Analysis and Its...Practical Source Code for Ship Motions Time Domain Numerical Analysis and Its...
Practical Source Code for Ship Motions Time Domain Numerical Analysis and Its...
 
Luoc su duc phat thich nu hue ngan core- da chuyen
Luoc su duc phat   thich nu hue ngan core- da chuyenLuoc su duc phat   thich nu hue ngan core- da chuyen
Luoc su duc phat thich nu hue ngan core- da chuyen
 

Recently uploaded

A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 

Recently uploaded (20)

Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 

Unite 2013 optimizing unity games for mobile platforms

  • 1. Optimizing Unity Games for Mobile Platforms Angelo Theodorou Software Engineer Unite 2013, 28th -30th August
  • 2. 2 Agenda  Introduction  The author and ARM  Preliminary knowledge  Unity Pro, OpenGL ES 3.0  Identify the bottleneck  CPU  Vertex processing  Fragment processing  Bandwidth  Profiling tools  The Unity Profiler (Pro only)  ARM DS-5 Streamline Performance Analyzer  Example application overview
  • 4. 4 The Author  Angelo Theodorou  Software Engineer  Media Processing Division, ARM® Ltd.  Mali™ Ecosystem Use-Cases team  B.Sc. In Computer Science  Studied at Università degli Studi di Napoli “Federico II”, Italy  Worked on the game From Cheese in the past  Website: http://www.fromcheese.com  Grand Prize winner at the Samsung Smart App Challenge 2012  Made with Unity™ Pro 3.5  Responsible for SPen integration and additional programming
  • 5. 5 ARM Ltd.  Founded at the end of 1990, 13 engineers and a CEO  Main goal was to design low power embedded 32bit processors, but to never build them  Now more than 2500 employees  More than 1000 in Cambridge, the headquarters  Hundreds of partners, a fundamental part of our business  The business model is based on licenses and royalties  ARM technology is everywhere: mobile, embedded, enterprise, home
  • 6. 6 Mali GPUs Performance 2012 2013 2014 Mali-T604 First Midgard architecture product OpenGL ES 3.0 support Scalable to 4 cores Mali-T624 Mali-T628 50% performance uplift OpenGL ES 3.0 support Scalable to 8 cores Mali-T678 High end solution Max compute capability Date of production chips Performance 2009 2010 2011 2012 2013 Mali-400 MP First OpenGL ES 2.0 multicore GPU Scalable from 1 to 4 cores Low cost solution with Mali-300 Mali-300 OpenGL® ES 2.0 compliant Mali-450 MP 2x Mali-400 performance Scalable up to 8 cores Leading OpenGL ES 2.0 performance Date of production chips
  • 7. 7 Preliminary knowledge  What is a draw call?  A call to a function of the underlying API (e.g. OpenGL ES) to draw something on screen  What is a fragment?  A candidate pixel which may or may not end up on screen for different reasons (e.g. being discarded, being overwritten, etc.)  Differences between opaque and transparent render queue  Objects in the first queue are rendered in front to back order to make use of depth testing and minimize the overdraw, transparent ones are rendered afterwards in back to front order to preserve correctness  What does batching mean?  To group similar draw calls in one call operating on the whole data set  Why mobile platforms are different?  Immediate vs deferred rendering
  • 8. 8 Why mobile platforms are different?  Desktop platforms  Immediate mode: graphics commands are executed when issued  Huge amount of bandwidth available between GPU and dedicated video memory (>100 GB/s)  No strict limits in size, power consumption or heat generation  Mobile platforms  Deferred mode: graphics commands are collected by the driver and issued later  Tile based: rendering occurs in a small on-chip buffer before being written to memory  Bandwidth is severely reduced (~5 GB/s) and transferring data needs a great amount of power  Memory is unified and shared between CPU and GPU
  • 9. 9 Unity Pro  Pro only optimization features:  Profiler  Level of Detail  Occlusion Culling  Light Probes  Static Batching
  • 10. 10 OpenGL ES 3.0  Available with Unity 4.2, Android 4.3 and Mali-T6xx  Transform feedback  Can write vertex shader output to a buffer object for data reuse  ETC2 and EAC texture compression formats  Support for RGBA (ETC2) and one/two channels textures (EAC)  Occlusion queries  Can query the number of samples drawn to determine visibility  Geometry instancing  Plenty of instances of the same object but with unique properties  Primitive restart, Uniform Buffer Objects, Pixel Buffer Objects, Fences, FP/3D/depth textures, Multiple Render Targets, …
  • 12. 12 Identify the bottleneck  CPU  Too many draw calls  Complex scripts or physics  Vertex processing  Too many vertices  Too much computation per vertex  Fragment processing  Too many fragments, overdraw  Too much computation per fragment  Bandwidth  Big and uncompressed textures  High resolution framebuffer
  • 13. 13 CPU Bound  Too many draw calls  Static batching (Unity Pro only)  Dynamic batching (automatic)  Frustum culling (automatic)  Occlusion culling (Unity Pro only)  Complex scripts  Component caching  Pool of objects  Reduced Unity GUI calls  OnBecomeVisible()/OnBecomeInvisible()  Timed coroutines instead of per frame updates  Complex physics  Compound colliders instead of mesh ones  Increased duration of “Fixed Timestep” (TimeManager)
  • 14. 16 Vertex Bound  Too many vertices in geometry  Remove unnecessary vertices  Remove unnecessary hard edges and UV seams  Use LOD switching through LODGroup (Unity Pro only)  Frustum culling (automatic)  Occlusion culling (Unity Pro only)  Too much computation per vertex  Use the mobile version of Unity shaders whenever you can
  • 15. 17 Vertex Bound – Level of Detail  Use LODGroup to limit vertex count when geometric detail is not strictly needed (very far or small objects)  Geometric objects can be replaced by billboards at long distance
  • 16. 18 Fragment Bound  Overdraw  When you are drawing to each pixel on screen more than once  Drawing your objects front to back instead of back to front reduces overdraw, thanks to depth testing  Limit the amount of transparency in the scene (beware of particles!)  Unity has a render mode to show the amount of overdraw per pixel  Too much computation per fragment  Bake as much as you can (lightmaps, light probes, etc.)  Contain the number of per-pixel lights  Limit real-time shadows (only high end mobile devices, Unity 4 Pro)  Try to avoid full screen post-processing  Use the mobile version of Unity shaders whenever you can
  • 17. 19 Fragment Bound – Overdraw  Use the specific render mode to check the overdraw amount
  • 18. 22 Bandwidth Bound  Use texture compression  ETC1 with OpenGL ES 2.0, ETC2 and EAC with OpenGL ES 3.0  ASTC is the new Khronos standard soon to be supported by Unity  Use MIP maps  More memory but improved image quality (less aliasing artefacts)  Optimized memory bandwidth (when sampling from smaller maps)  Use 16bits textures where you can cope with reduced detail  Use trilinear and anisotropic filtering in moderation
  • 19. 23 Bandwidth Bound – Mipmaps  Use the specific render mode to check mipmaps levels
  • 21. 25 Unity Profiler  It instruments the code to provide detailed per-frame performance data  It provides specific data about:  CPU Usage  Rendering  GPU Usage  Memory  Physics  Audio  Can profile content running on mobile devices  Only available in Unity Pro
  • 22. 26 Unity Profiler – CPU Usage  It shows CPU utilization for rendering, scripts, physics, garbage collection, etc.  It shows detailed info about how the time was spent  You can enable Deep Profile for additional data about all the function calls occurring in your scripts  You can manually instrument specific blocks of code with Profiler.BeginSample()and Profiler.EndSample()
  • 23. 27 Unity Profiler – Rendering  Statistics about the rendering subsystem  Draw calls  Triangles  Vertices  The lower pane shows data similar to the rendering statistics window of the editor
  • 24. 28 Unity Profiler – Memory  It shows memory used/reserved on a higher level  Unity native allocations  Garbage collected Mono managed allocations  Graphics and audio total used memory estimation  Memory used by the profiler data itself  It also shows memory used by assets/objects  Textures  Meshes  Materials  Animation clips  Audio clips  New detailed breakdown since Unity 4.1
  • 25. 29 Unity Profiler – GPU Usage  It shows a contribution breakdown similar to the CPU profiler  Rendering of opaque objects  Rendering of transparent objects  Shadows  Deferred shading passes  Post processing  Not yet available on mobile platforms 
  • 26. 32 ARM Streamline Performance Analyzer Filmstrip CPU Activity S/W Counters H/W Counters GPU Activity API Events Heatmap
  • 28. 35 Example application overview  Composed of seven different scenes  Geometry (high vertex count, frustum culling)  LOD (using level of detail through LODGroup)  Particles (transparent rendering)  Texture (MIP mapping and compression)  Overdraw (alpha blending and alpha test)  Lights (vertex and pixel lighting)  Atlas (texture atlas)  Most of them are based on a Prefab and Instantiate()  All instances are created at once in the beginning and deactivated  Number of active instances can adapt to maintain a target FPS value  Positioning is made in screen space and based on camera aspect
  • 29. 36 Geometry Scene  Stressing the vertex units with lots of high poly objects  You can set the amount of visible objects or a target FPS value  It is possible to rotate and translate the camera to show frustum culling in action (and lack of occlusion culling) Increasing the number of visible objects Most of the objects are out of camera view, frustum culling is working Most of the objects are hidden behind front ones, but occlusion culling is not enabled More time spent on rendering (green)
  • 30. 37 LOD Scene  LODGroup with three different levels  Triangles and Vertices spikes match LOD level switch, draw calls are dependent on frustum culling Switching LOD
  • 31. 38 Particles Scene  All the rendering is done in the “Transparent Queue”  Perfect case of geometry batching (one draw call per emitter) Geometry Scene Particles Scene
  • 32. 39 Texture Scene  Compressed texture with MIP maps (right) takes less memory and looks better than uncompressed one (left) Uncompressed, bilinear filtering ETC compressed, trilinear filtering, MIP mapped
  • 33. 40 Overdraw Scene  Alpha blended quads are rendered in the transparent queue, alpha tested ones in the opaque queue, same performances Overdraw render mode
  • 34. 41 Lights Scene (1/2)  Per-pixel lighting uses a draw call per light (forward rendering)  Per-vertex lighting uses one geometric pass per object, lighting information is a vertex attribute 4 lights, adding more objects 4x250 lights, 1198 draw calls 3x250 lights, 966 draw calls 2x250 lights, 734 draw calls 250 lights, 502 draw calls No lights, 39 draw calls (232 batched) Per-pixel: 4x250 lights, 1198 draw calls Per-vertex: 4x250 lights, 270 draw calls
  • 35. 42 Lights Scene (2/2)  MeshRenderer.Render takes 5 times the amount of ms when performing per-pixel lighting (one pass per light) Per-pixel lighting Per-vertex lighting
  • 36. 43 Atlas Scene (1/2)  No Atlas rendering  Each instance has its own texture  Same material if multiple instances share the same texture  One draw call per material (multiple instances)  Atlas rendering changing material UV  Each instance share the same texture atlas  UV coordinates are changed using mainTextureScale and mainTextureOffset  Leads to a new unique material per instance and breaks instancing  One draw call per instance  Atlas rendering changing mesh UV  Each instance share the same texture atlas  UV coordinates are changed accessing the instance mesh  One draw call for all the instances (single material)
  • 37. 44 Atlas Scene (2/2) No Atlas texture  60 FPS  50 draw calls, 374 batched  21 materials Atlas with material UV  40 FPS  408 draw calls, 0 batched  395 materials No batching, lots of materials! Atlas with mesh UV  60 FPS  35 draw calls, 374 batched  21 materials Batching works, less draw calls
  • 38. 45 Links  Practical Guide to Optimization for Mobiles (Unity Manual)  Optimizing Graphics Performance (Unity Manual)  Profiler (Unity Manual)  ShadowGun: Optimizing for Mobile Sample Level (Unity Blog)  “Fast Mobile Shaders” talk at SIGGRAPH 2011 (Unity Blog)  Introducing the new Memory Profiler (Unity Blog)  Unity 4.2 has arrived (Unity Blog)  http://malideveloper.arm.com/  OpenGL ES 3.0 Developer Resources (Mali Developer Center)  ASTC Texture Compression: ARM Pushes the Envelope in Graphics Technology (ARM Blogs)