Download - Mobile optimization techniques
Transcript
- 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 [email protected] [email protected] norde.us/unite2015 Q&A
- 53. THANK YOU! MOBILE OPTIMIZATION TECHNIQUES