1. MOBILE OPTIMISATION TECHNIQUES TOMISLAV RAKI SRA TETI-KOZI
Unite Europe 2015
2. INTRODUCTION Nordeus Belgrade based Developer of Top Eleven
MOBILE OPTIMIZATION TECHNIQUES
3. Scene loading time Draw calls Batching Instancing MOBILE
OPTIMIZATION TECHNIQUES OVERVIEW
4. Our flagship product 110 million registered users Global 5
years old MOBILE OPTIMIZATION TECHNIQUES
5. MOBILE OPTIMIZATION TECHNIQUES One codebase GUI heavy game
Fragmented mobile market Custom GUI framework TIME TO UPDATE: T11
2015
6. TOP ELEVEN 2015 Unity! MOBILE OPTIMIZATION TECHNIQUES
7. MOBILE OPTIMIZATION TECHNIQUES
8. MOBILE OPTIMIZATION TECHNIQUES Unity Profiler
System.Stopwatch norde.us/unite2015 PROFILING
9. MOBILE OPTIMIZATION TECHNIQUES Discoveries private vs public
fields null fields Hierarchy overhead Fixed costs All fixed in
Unity 5! DESERIALIZATION
10. MOBILE OPTIMIZATION TECHNIQUES Solutions Custom binary
format Code generation Almost there... DESERIALIZATION
11. MOBILE OPTIMIZATION TECHNIQUES Well known problem
Instantiation is slow Use GameObject pools norde.us/unite2015
INSTANTIATION
12. Bottom-up TRANSFORM HIERARCHY MOBILE OPTIMIZATION
TECHNIQUES
13. Top- down MOBILE OPTIMIZATION TECHNIQUES TRANSFORM
HIERARCHY
14. Transform setup order matters TRANSFORM HIERARCHY MOBILE
OPTIMIZATION TECHNIQUES 10000 msBOTTOM - UP TOP - DOWN 200 ms t
[ms]
15. MOBILE OPTIMIZATION TECHNIQUES
16. ARRAY RESIZING MOBILE OPTIMIZATION TECHNIQUES
17. SIZE REFERENCE DATA ARRAY RESIZING MOBILE OPTIMIZATION
TECHNIQUES
18. SIZE DATA REFERENCE Pointers? ARRAY RESIZING MOBILE
OPTIMIZATION TECHNIQUES
19. MOBILE OPTIMIZATION TECHNIQUES You can have pointers in C#
Create smcs.rsp -unsafe Write unsafe code norde.us/unite2015 ARRAY
RESIZING
20. MOBILE OPTIMIZATION TECHNIQUESMOBILE OPTIMIZATION
TECHNIQUES
21. MOBILE OPTIMIZATION TECHNIQUESMOBILE OPTIMIZATION
TECHNIQUES
22. MOBILE OPTIMIZATION TECHNIQUES Expensive on mobile devices
The future Metal OpenGL AEP Vulkan The present DRAW CALLS
23. MOBILE OPTIMIZATION TECHNIQUES Huge scene Lots of vertices
Fast moving camera Lots of objects DRAW CALLS
24. Atlasing NVIDIA - Improve Batching Using Texture Atlases
STATIC BATCHING MOBILE OPTIMIZATION TECHNIQUES
25. MOBILE OPTIMIZATION TECHNIQUES Tiling Vertex approach
STATIC BATCHING
26. Vertex tiling TILING MOBILE OPTIMIZATION TECHNIQUES
27. TILING Tiling Vertex approach Fragment approach MOBILE
OPTIMIZATION TECHNIQUES
28. Fragment tiling TILING MOBILE OPTIMIZATION TECHNIQUES
29. MOBILE OPTIMIZATION TECHNIQUES Script - Batch meshes ???
Shader - Read tiling data TILING
30. MOBILE OPTIMIZATION TECHNIQUES Color Normals UV0..3
Tangents VERTEX ATTRIBUTES
31. MOBILE OPTIMIZATION TECHNIQUES Script - Batch meshes Script
- Bake tiling data to tangents Shader - Read tiling data
TILING
32. MOBILE OPTIMIZATION TECHNIQUES Mipmaps problem TILING
33. MOBILE OPTIMIZATION TECHNIQUES
34. MOBILE OPTIMIZATION TECHNIQUES Mipmaps problem TILING Mip 0
Mip 9
35. MOBILE OPTIMIZATION TECHNIQUES PREVIOUS CURRENT
36. MOBILE OPTIMIZATION TECHNIQUES PREVIOUS CURRENT
37. MOBILE OPTIMIZATION TECHNIQUES Mipmaps problem Obvious
solution - ddx, ddy GL_EXT_shader_texture_lod Supported on iOS
Supported on Mali TILING
38. MOBILE OPTIMIZATION TECHNIQUES Try #1 - Expand texture to
the edge of atlas TILING
40. Try #3 - Sort textures by color TILING MOBILE OPTIMIZATION
TECHNIQUES
41. MOBILE OPTIMIZATION TECHNIQUES Environments look nicer Less
draw calls than before Added complexity in fragment shader
TILING
42. MOBILE OPTIMIZATION TECHNIQUES Scenario - Traffic MOVING
OBJECTS
43. INSTANCING MOBILE OPTIMIZATION TECHNIQUES
44. MOBILE OPTIMIZATION TECHNIQUES Static batching? Unitys
dynamic batching? OpenGL ES 3.0 - Instancing OpenGL ES 2.0? MOVING
OBJECTS
45. MOBILE OPTIMIZATION TECHNIQUES OpenGL ES 3.0 Instance ID
Draw Elements Instanced Instance ID - tangents Draw elements
Instanced - custom mesh Shader for each N INSTANCING