Transcript of Mobile optimization techniques
- 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
- 39. Try #2 - Mirror texture reads TILING MOBILE OPTIMIZATION
TECHNIQUES
- 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
- 46. MOBILE OPTIMIZATION TECHNIQUES
- 47. MOBILE OPTIMIZATION TECHNIQUES Vertex shader complexity
Mesh memory norde.us/unite2015 INSTANCING
- 48. TREES MOBILE OPTIMIZATION TECHNIQUESMOBILE OPTIMIZATION
TECHNIQUES
- 49. BILLBOARDS Pivot Colors? Normals! #pragma
glsl_no_auto_normalization Offset Vertex position Transform matrix
in shader Rotate vertices MOBILE OPTIMIZATION TECHNIQUES
- 50. MOBILE OPTIMIZATION TECHNIQUES Tradeoff Vertex shader
complexity Doesnt work with transparency norde.us/unite2015
BILLBOARDS
- 51. MOBILE OPTIMIZATION TECHNIQUES Measure Improve No silver
bullet CONCLUSION
- 52. MOBILE OPTIMIZATION TECHNIQUES tomislavr@nordeus.eu
srdjas@nordeus.eu norde.us/unite2015 Q&A
- 53. THANK YOU! MOBILE OPTIMIZATION TECHNIQUES